私のC++ゲームエンジンにスクリプト機能を追加したいと思います。ゲームエンジンのスクリプト言語としてのラケット
私はEngine.exe
、Physics.dll
、Audio.dll
を持っていると私は、高レベルのラケットのラッパーであるScripting.dll
を追加しています。
Engine.exe
ロードPhysics.dll
物理ワールドを設定し、ロードAudio.dll
を設定し、オーディオワールドを設定します。バインディングをPhysics.dll
,Audio.dll
に設定し、ゲームスクリプトをロードするには、Scripting.dll
をロードすることになっています。 C++プログラムにラケットを埋め込むための2つの方法があります私の知る限り
:Foreign Interfaceを使用して
はPhysics.dll
、Audio.dll
2回ロードすることにより、必要に奇妙なようです。まずEngine.exe
から、次にゲームスクリプトから。
書くことExtensionsは、C++側でスクリプトのバインディングを実行できるため、より魅力的です。一方、raco ctool
で拡張機能を構築しなければなりません。mzdyn
オブジェクトファイルとリンクする必要があります。これは厄介なものです。mzdyn
は静的ライブラリですか?
私は単一のメソッドを実装したいと思います。 setupScriptBindings()
、Physics.dll
およびAudio.dll
の両方で使用し、起動時にEngine.exe
から呼び出します。
これを行う簡単な方法はありますか?
Hm、多分[this](http://docs.racket-lang.org/inside/embedding.html)の説明が役に立ちます。 –
Hm ...あなたが提供するリンクは、** RacketプログラムにC /その他のコードを埋め込むことについて話します**。あなたからの説明から、あなたはそれを他の方法で欲しいと思います。あなたのC++アプリケーションにラケットを埋め込む:http://docs.racket-lang.org/inside/embedding.html 最も簡単でおそらく最もクリーンな解決策は、あなたのゲームエンティティを制御するための何らかのプロトコルを定義し、ラケットを開始することです新しいプロセスとして、ソケットやその他のIPCメカニズムを使用して通信します。 –
Offtopic:RacketはNaughty Dogのビデオゲーム制作に成功しました。 [«Racket on the Playstation 3»](http://www.youtube.com/watch?v=oSmqbnhHp1c)と[«未知の2の国家ベースのスクリプト作成»:泥棒の中で»](http://www.gameenginebook .com/resources/gdc09-statescripting-uncharted2.pdf)。 –