C ++で記述されたゲームがあるとします。しかし、私はそれにいくつかの改造またはスクリプト機能を追加したいと思います。ゲームにスクリプト機能を追加するにはどうすればよいですか?
C ++で記述されたゲームがあるとします。しかし、私はそれにいくつかの改造またはスクリプト機能を追加したいと思います。ゲームにスクリプト機能を追加するにはどうすればよいですか?
回答:
まず、ゲームのどの部分をスクリプト化するかを決定する必要があります。1つの選択肢は、タイムクリティカルなバックエンド操作がC ++でコーディングされているのに対し、すべてのゲームロジックはスクリプト言語であるという意味で、完全にスクリプト化されたゲームにすることです。設計者は、バックエンドを高レベルのスクリプト言語から呼び出されるAPIとして使用します。逆に、ユーザーインターフェイスやスクリプトシーケンスなど、スクリプトが使用される特定の場所はほとんどなく、ゲームコードの大部分はまだC ++のままです。各アプローチには利点(速度、柔軟性、コンパイル時間、ゲームの範囲など)がありますが、事前に決定する必要があります。
スクリプトの使用方法を理解したら、既存のスクリプト言語を使用するか、独自のドメイン固有言語を使用するかを決定する必要があります。今日、さまざまな設計目標と対象読者を選択できる多くのスクリプト言語が存在するため、独自の言語を作成する価値があるかどうかはわかりません。独自の実装を決定する場合、以下のリソースがあります。
Luaは、人気のある軽量で埋め込みが簡単なスクリプト言語です。ホストと埋め込み言語間の通信にスタックを使用し、多くのプロのゲームで使用されました。Sol2は、LuaとC ++をバインドするプロセスを簡素化します。Luaの構文が好きではない場合、MoonscriptはLuaにコンパイルされ、素晴らしい機能セットを追加する言語です。
その他のオプションにはAngelCodeがあり、これによりCおよびC ++関数を直接呼び出すことができます。PythonとRubyは埋め込むのが少し複雑ですが、プログラミングするのは非常に快適です。Pythonを埋め込む場合は、Boost.Pythonを見てください。別のアイデアは、ブラウザー用に開発された高速スクリプトエンジンを活用するためにJavaScriptを埋め込むことです(V8およびSpiderMonkeyを参照)。
ここで、 DragonFire SDKを使用してGameMonkeyスクリプトをゲームに埋め込むことについての投稿を書きました。
基本的には、C \ C ++関数を選択したスクリプト言語に公開し、スクリプトから使用するという考え方です。チュートリアルでは、DragonFire SDKから2つの関数を公開しました。ゲームの開始時に、スクリプトからonStart関数を呼び出し、更新時に、スクリプトからonTimer関数を呼び出します。
お役に立てば幸いです!