4

ゲームを作成してスクリプトを実装しようとしています。これにより、開発の後半で数値を変更したいときにすべてを再コンパイルする必要がなくなります。

私の問題は、スクリプトがゲームとどのように連携するべきかわからないことです。私が使用しているスクリプト言語はangelscriptです。

現在、状態があります。イントロ状態です。これは、ゲームの「エンジン」のほとんどのモジュールのテストとして使用しています (クラスの緩やかなコレクションのようなものです)。ロードして画像とテキストを描画し、スクリプトを使用してそれ自体を更新し、後でダミー状態に切り替えて状態マネージャーをテストします。

これを書いているときに、スクリプトを使用してほとんどの更新を行うには、ゲーム エンジンのモジュールのほとんどをスクリプトに登録し、コードの大部分をスクリプト言語に移動する必要があることに気付きました。個人的には、C++ の部分で大部分の作業を行い、スクリプト言語で式や図面などで使用する数値を考え出してもらいたいと考えています。

ただし、私が正しければ、そのようにすると、ゲーム内の更新が必要なものの大部分に対して多数の異なる更新モジュールが必要になり、それらすべてをロードする必要があり、C++ コードには各更新機能を個別に実行します。

または、見落としているスクリプトとプログラムの相互運用性を実現する方法があります。いずれにせよ、誰かが私のゲームにスクリプトを実装するための最良の方法を理解するのを手伝ってくれませんか?

4

4 に答える 4

6

こんなに大きな問題に正解はありません。これは、C++ でエンジン/ゲーム ロジックを分離するのと同じ方法で行います。スクリプトが実行できるようにする API を定義します。スクリプトでその API に関数を登録し、angelscript で API を使用します。その API がどうあるべきかは、あなたのニーズと、スクリプターにどのような力を与えたいかによって完全に異なります。

于 2009-12-07T03:40:57.377 に答える
2

GarryのmodやUnrealScriptで記述されたゲームなどの実際の例を見ると、最新のゲームのかなりのロジックがスクリプトに実装されていることがわかります。C / C ++コードは、レンダラー、物理エンジン、低レベルネットワークなど、エンジンの「静的」でボトルネックが発生しやすい部分に最適です。スクリプトはコンテンツ(つまり、ゲームロジック)に最適です。

余談ですが、最高のゲームスクリプト言語であるIMHOはLuaです。これは、C / C ++との簡単な統合を提供し、非常によく文書化されており、Javascriptのユーザーにはなじみがあります。

私はまさにこの目的のためにLuaを使用しました、そしてそれは素晴らしい仕事をします。Luaを使用してプログラムされたすべてのゲームを見てください。 また、それは非常に高速です。

編集:私は質問を完全に読んでいませんでした...ごめんなさい。これが私の本当の答えです;)

于 2009-12-08T07:36:00.700 に答える
2

AngelCode (または任意の他のスクリプト アプローチ) で「いくつかの数値を考え出す」ようにしたい場合は、そのように使用してください。たとえば、AngelCode では、単一の C++ 関数をスクリプトに公開してスクリプトをコンパイルします。 、「void ProvideNumberFor(string reason, number value)」と言うと、スクリプトは「数値を提供する」ために必要な回数だけその関数を呼び出す責任があり、それ以上のことはありません。

于 2009-12-07T03:44:17.280 に答える
1

Qt4 / JavaScriptに精通している場合は、いつでもQtScripthttp ://qt.nokia.com/doc/4.5/qtscript.htmlを使用できます。

于 2009-12-07T03:49:52.430 に答える