「ゲームプログラミング/RPG」の版間の差分

削除された内容 追加された内容
1,897 行
で試しても、同様の結果です。
 
 
 
=== 画像や音声の埋め込み方法あれこれ ===
ツクールやウディタやその他の各種の日本産のゲーム制作ツールなどのゲームをプレイすると、実行ファイルかせいぜいあと1つのデータファイルしかなく、画像ファイルや音声ファイルなどのアイコンはゲームフォルダの中には見つかりません。
 
windowsの Visual Studio には、一応、実行ファイルに画像ファイルや音声ファイルなどの埋め込みをする昨日がありますので、Visual Studio でゲーム制作する場合はそれを使えば済みます。
 
 
なので、この説明でこの章を終わりしてもいいのですが、しかしツクールやウディタが、C言語コンパイラの機能もないのに、どうやって何十枚や何百枚もある画像や、あるいは合計で何曲もある音声ファイルなどを埋め込んでいるのか、それはそれで読者は気になると思います。
 
なので、ツクールの方法かは分かりませんんが(ツクールの製作元企業の企業秘密なので)、画像などをファイルに埋め込む方法を調べてみて、まとめます。
 
調べた結果、下記のように、Visual Stduio 以外にも、幾つかの方法があるようです。
:方法1. 実行ファイルを機械語で編集して、実行ファイルの末尾に画像ファイルなどの機械語(機械語は簡単に読み取れる)をつけたし、使用時にはC言語のfopenなどを使って読み込む。
:方法2. windowsの実行ファイルexe形式のPEフォーマットという仕様を解析して、正攻法で書く。(しかし難度は激高)
:方法3. 独自の画像フォーマットや音声フォーマットを作り、それを使用時に変換(エンコード)する方法。(難度は激高。しかも、エンコードの手間が掛かる
などの方式があるようです。
 
難易度的には、機械語を用いる方法が簡単なようです。しかし、そのような動作はマイクロソフトはそのような使い方を未保証にしていま。しかし、他のPEフォーマット方式や、独自フォーマットはとても難しいというとか、ほとんどOS開発に近いので、あまりオススメできないです。総合的に考えて、機械語が無難かと思います。
 
RPGのほかアクションゲームなどでも、無料のゲーム制作ツールを作って配布している人達は日本に数人ほどいますが、それらの無料ゲームエンジンはどれも、画像や音声などの埋め込み機能があります。
 
さすがに、そんなに多くの人達が、音声ファイルの独自フォーマットやら、PEフォーマットの仕様に精通しているとは思えませんので、おそらくは、ほとんどの無料ゲームエンジンの場合、画像などリソースの埋め込みは、機械語の方式だと思います。
 
 
ただし、暗号化のつもりなので機械語化などをしても、それでも第三者によって復号されるツールなどは出回っています。
 
 
かといって、たとえば画像ファイルを、プレイヤー視点では画像ファイルだとばれないように、ファイル冒頭の機械語にあるファイル形式の情報を書き換えると(たとえばビットマップファイルには冒頭にファイルヘッダを示す文字列「BM」がある)、windowsの画像用API関数では処理できなくなってしまうでしょう(処理時にヘッダファイルを読み取る必要があるので)。また仮に、ヘッダファイルを偽装したまま読み取らせる事がもし出来たとしても今度は、最悪の場合、外部のセキュリティセフトによってウイルス判定されるかもしれません。なぜならファイル偽装は、コンピュータウイルスによくある手口だからです。
 
 
あるいは、もし使用の瞬間にだけ画像ファイルを機械語リソース集などから取り出してファイル出力などで作成して読み込み終わったら消す方式にしたりする方式にすると、今度は頻繁に画像を作成・消去をする事になるので、処理速度が低下して、あまり好ましくありません。特に、SSDフラッシュメモリの普及している現代、頻繁にファイルの作成・消去することはSSDを消耗するので製品寿命を損なってしまいます。
 
実際にハードディスクに書き込まずにメモリ上で仮想のファイルやフォルダを作る方法については、この版のwikibooks著者が知りません。また、そのようなメモリ上の仮想化は、仮に出来たとしても、膨大な画像ファイルや音声ファイルをメモリ上に常駐させる事になるので、だいぶメモリに負担になるだろうし、処理速度なども低下させるのだろうから、あまり好ましくないと思います。
 
== (※: 未確認)戦闘中のモンスター隊列 ==