ゲームでスクリプトをサポートするための様々な方法があります。それはスライディングスケールです。
スクリプト言語を使用して実際にすべてを実行することができます。そのため、スクリプトを使用してすべてのデータ、ロジックなどを定義し、C/C++のコアエンジン機能を使用します。このスキームでは、C/C++ *側のほぼすべてが、効率を十分に高めるために、または既にその言語で書かれており、再実装するのに費用がかかるため、分割のちょうど側にあります。
ほとんどのゲームコード&をC/C++で定義し、バインドやコールバックを実装して、スクリプトを使用したカスタマイズを行うことができます。バインディング(例:LuaBind)を使用すると、スクリプトコードで定義されていないC/C++側で値/呼び出し関数を取得して設定することができます。コールバックはスクリプトがトリガーされているゲームイベントをリッスンすることを許可します。たとえば、エンティティが被害を受けようとしているときに呼び出されるスクリプトがあります。スクリプトを使ってゲームロジックをカスタマイズ/拡張することができます。
書籍Game Engine Architectureは、サンプルコードなどは含まれていませんが、可能性を説明するうまく機能します。
どのようにのスクリプトは、あなたの実装スタイルが何で、どのコア&スクリプト言語を選択するかに非常に依存します。より具体的なものをご希望の場合は、いくつかの言語の選択肢(例:C++ & Lua)を入力し、this oneのようなチュートリアルを探してみてください。
なぜがアプローチに依存するのですか?一般的には、ゲームプレイの機能/動作/データをゲームエンジンの邪魔にすることです。これにより、プロジェクトの残りの部分を再構築することなく、実行時にスクリプトをリロードできるので、変更が容易になります。うまく実装されたスクリプティングシステムは、プログラマーに迷惑をかけることなく、人々がゲームに参加したり、ゲームを変更したり、拡張したりするのを容易にします。
具体的な例:
あなたは、彼らがラウンドにわたって扱ってどのくらいのダメージプレイヤーに伝える機能の一部を構築する場合があります。
これをC++ /コア側で行う場合は、非常に特定の機能を提供するために非常に特定のコードをロードし、プロジェクト全体を再構築して新しいバージョンをデプロイすることをプログラマに任せることを意味します。彼らはその後、デザイナーとすべてが壮大であることを確認します。そうでなければ、彼らは再コード化して再構築しなければならず、多くの時間を浪費します。
うまく設計されたスクリプトシステムでは、それはround_damageを削除する場合に過ぎません。luaスクリプトをscriptsフォルダにコピーします。ゲームが開始されると、スクリプトが自動的に表示され、アクティブになり、プレーヤーがダメージを受けるたびに、 "OnDamageReceived"ハンドラがトリガされます。ラウンドが終了すると、OnRoundEndedコールバックがトリガされ、スクリプトによってメッセージが表示されます。
フックの豊富なセットが公開されている場合、スクリプタはプログラマの助けを借りずにこのすべてを行うことができます。彼らが間違いを犯したり、何か他のことを試してみたいのであれば、スクリプタはゲームを止めることなく直ちにスクリプトをリロードすることができます。
*これは一般的な選択であるため、コアエンジンにはC/C++と言いますが、目的に合った言語であれば十分です。
ゲームスクリプト言語を作成しようとしていますか?または、スクリプト言語を使用するゲームですか?後者の場合はどちらですか?ルア?すごい?これらの質問にはそれぞれ異なる回答があります。 –
http://gamedev.stackexchange.comに関するいくつかの関連する質問があります。 http://gamedev.stackexchange.com/questions/421/how-do-you-add-a-scripting-language-to-a-game- http://gamedev.stackexchange.com/questions/11/what-スクリプティング言語は私のためにゲームを選択してください –
このgamedev.stackexchangeに感謝、本当にそれについて知りませんでした。 – Draiken