ゲームにスクリプト言語を追加するにはどうすればよいですか?


25

C ++で記述されたゲームがあるとします。しかし、私はそれにいくつかの改造またはスクリプト機能を追加したいと思います。ゲームにスクリプト機能を追加するにはどうすればよいですか?


最も人気のある言語:参照のLua(プログラミング言語)のLua(langugaeプログラミング) - C API の例: IBMは、この上の素晴らしい記事があります:埋め込みLUA
タマラWijsman

正確な手順は、追加する言語に大きく依存します。見ていgamedev.stackexchange.com/questions/11/...を
tenpn

回答:


27

まず、ゲームのどの部分をスクリプト化するかを決定する必要があります。1つの選択肢は、タイムクリティカルなバックエンド操作がC ++でコーディングされているのに対し、すべてのゲームロジックはスクリプト言語であるという意味で、完全にスクリプト化されたゲームにすることです。設計者は、バックエンドを高レベルのスクリプト言語から呼び出されるAPIとして使用します。逆に、ユーザーインターフェイスやスクリプトシーケンスなど、スクリプトが使用される特定の場所はほとんどなく、ゲームコードの大部分はまだC ++のままです。各アプローチには利点(速度、柔軟性、コンパイル時間、ゲームの範囲など)がありますが、事前に決定する必要があります。

スクリプトの使用方法を理解したら、既存のスクリプト言語を使用するか、独自のドメイン固有言語を使用するかを決定する必要があります。今日、さまざまな設計目標と対象読者を選択できる多くのスクリプト言語が存在するため、独自の言語を作成する価値があるかどうかはわかりません。独自の実装を決定する場合、以下のリソースがあります。

Luaは、人気のある軽量で埋め込みが簡単なスクリプト言語です。ホストと埋め込み言語間の通信にスタックを使用し、多くのプロのゲームで使用されました。Sol2は、LuaとC ++をバインドするプロセスを簡素化します。Luaの構文が好きではない場合、MoonscriptはLuaにコンパイルされ、素晴らしい機能セットを追加する言語です。

その他のオプションにはAngelCodeがあり、これによりCおよびC ++関数を直接呼び出すことができます。PythonRubyは埋め込むのが少し複雑ですが、プログラミングするのは非常に快適です。Pythonを埋め込む場合は、Boost.Pythonを見てください。別のアイデアは、ブラウザー用に開発された高速スクリプトエンジンを活用するためにJavaScriptを埋め込むことです(V8およびSpiderMonkeyを参照)。


2
現在のゲームプロジェクトにスクリプト言語を実装しましたが、主な利点は言語プリミティブを完全に制御できることです。事前に構築されたスクリプトソリューションは汎用的であり、それらが提供するすべての機能が必要なわけではありません。既存のソリューションよりもゲームに適したものを作成できることが確実でない限り、独自の言語を展開することを絶対に考えないでください。
ジョンパーディ

個人的に私はGuileが好きで、Cとの素晴らしい統合があります。問題は速度だけですが、今後数か月の2.0リリースでは改善されるはずです。
ジョーD

素晴らしい答え。最初の段落は、「ゲーム開発者がコンテンツ用に消費されるAPIを作成する」と要約できます。
ashes999

カスタム言語(スクリプティングなど)の一般的な用語はDSLです。これは、読みたいかどうかを知るのに役立ちます。
パトリックヒューズ

2

ここで、 DragonFire SDKを使用してGameMonkeyスクリプトをゲームに埋め込むことについての投稿を書きました。

基本的には、C \ C ++関数を選択したスクリプト言語に公開し、スクリプトから使用するという考え方です。チュートリアルでは、DragonFire SDKから2つの関数を公開しました。ゲームの開始時に、スクリプトからonStart関数を呼び出し、更新時に、スクリプトからonTimer関数を呼び出します。

お役に立てば幸いです!


1
ビデオデモもここにアップロードしました:bit.ly/dnCkar
astk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.