Blitz3Dのような「ゲームメーカー」ツールはどのようにして.exeファイルを作成しますか?


8

スクリプトやその他のゲームデータを単一の実行可能ファイルにコンパイルするBlitz3Dやその他の種類のゲーム構築ツールなど、いくつかのアプリケーションがあります。彼らはそれをどのように行うのですか?

回答:


10

さまざまなツールがさまざまな方法でそれにアプローチしますが、Blitz3Dが行う方法は、コードとインタープリターをバンドルにラップすることです。次に、exeを実行すると、インタープリターが起動され、バンドルされたコードが渡されます。たとえば、py2exeを使用した場合のPythonの動作とほとんど同じです。

多くのゲーム開発ツールでは、実行可能ファイルにバンドルされているコードは、インタプリタが解析する生のテキストです。ただし、一部はJavaのようなバイトコードアプローチを採用しており、ソースコードは仮想マシンが使用する中間形式に変換されます。Unityは後者のアプローチを使用していると思いますが、よくわかりません。

私の頭の中ですべてのゲーム開発ツールについて考えることができるすべてのゲーム開発ツールは、コアインタープリター/仮想マシンのこのアプローチに基づいており、それをコードと一緒にパッケージ化するか、Visual Studioなどでコンパイルするライブラリのいずれかです。


2番目のアプローチは最初のアプローチより速いですか?
Quazi Irfan、2011

長所と短所はありますが、速度に関して心に留めておかなければならない主なことは、本当に速度が重要なコード(レンダリングルーチンなど)はすべてインタープリターにあるため、インタープリターコードの速度はそれほど重要ではないということです。解釈されたコードは単にloadMesh()のような関数を呼び出し、インタプリタが残りを行います。これは、ゲームエンジンに埋め込まれたスクリプト言語を使用するのとまったく同じ状況です。実際、Blitz3Dのフォーラムでは、それが「ゲームエンジン」であるかどうかについて頻繁に議論されています。
ジョッキング

-1

プログラムフロー、変数処理などは純粋なマシンコードにコンパイルされますが、高レベルコマンドはC ++ライブラリ関数として実装され、Blitzで生成されたすべての実行可能ファイルにコンパイルされたランタイムライブラリから呼び出されます。Blitz Basicファミリー以外はPythonのように解釈されます。


「ランタイムライブラリから呼び出されるC ++ライブラリ関数として実装されている」という意味がわかりませんが、これは、ユーザーのコードがコアエンジンによって解釈されていると言っても、かしこい方法であるか、単に間違っているだけです。数年前、Blitz3D exeのユーザーコードを置き換えることで機能する、CoolBasicと呼ばれる短命な製品がありました(もちろん、これは疑わしい合法性のハッキングであったためシャットダウンされました)。ユーザーのコードがランタイムにコンパイルされている場合、これは機能しませんでした。
15
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.