2

私は C# で簡単なゲーム エンジンを作成しています (VB 2008 で、ほとんどが自分用です)。グラフィックスなどを処理するメイン アプリケーションがあり、実際のゲームのほとんどのデータは、ゲーム デザイナーに提供するツールで生成された dll に格納されます。

C# がスクリプティングに最適であるということはよく耳にします (そして、C# は他のどの方法よりも私のニーズに合っているようです)。私はこの問題に遭遇しました:

メインの exe のソース コードを公開したくないのは明らかですが、スクリプトに必要なすべての主要なメソッドが含まれています (メインの exe で動作するため)。

親exeで呼び出すメソッドの定義がない場合、どのようにdllを生成できますか? メインのexeには、それを使用するための依存関係としてdllがあります。つまり、dll は、ループを引き起こす exe に依存することはできません。

exe とライブラリの両方が使用する別の dll を作成できますが、そこにあるメソッドはそれを使用するメインの exe に直接作用できません。

私が思いついた唯一の論理的な解決策はこれです:

  • 私が必要とするクラスの骨組みを備えた dll。
  • ゲームデータを含む dll。これには、dll A から継承されたクラスがあります。
  • Exe は A と B の両方に依存します。B にある A メソッドをオーバーライドして、本来の動作をさせます。

ただし、これはあまりエレガントではないようです。

疲れて読み進める前に、研究で多くの単語 (MAF、MEF、Roslyn など) を見てきました。私はこれだけで数時間を費やしました。

あなたの意見では、これを行うにはどうすればよいですか? 私が見落としているものはありますか?

4

2 に答える 2

1

C# がスクリプト作成に「優れている」とどこで聞いたのかわかりません。Rosyln の中途半端な試みは、実際には「スクリプト」ではありません。

IronPython や IronRuby などの DLR 言語を試してみませんか?

また、.NET 用の Lua バインディングもあります。最近のほとんどのゲーム開発者は、Lua でスクリプトを作成しています。したがって、モッダー コミュニティは、あなたのゲーム エンジンをクローズド ソースのままにしておくことを計画していれば、間違いなく気に入るはずです。

于 2013-03-17T04:23:46.200 に答える
0
于 2013-03-17T04:29:59.450 に答える