1. ホーム
  2. c#

.NETアプリケーションへのスクリプト機能追加

2023-07-07 11:02:41

質問

私はC#で書かれた小さなゲームを持っています。それはバックエンドとしてデータベースを使用します。それは a トレーディングカードゲーム で、カードの機能をスクリプトとして実装したいと思いました。

どういうことかというと、本質的にインターフェイスがあるんです。 ICard があり、それをカードクラスが実装している ( public class Card056: ICard ) を実装したもので、ゲームから呼び出される関数が含まれています。

さて、保守性/変更性を高めるために、各カードのクラスをデータベース内のソースコードとして持ち、本質的に最初の使用時にそれをコンパイルしたいと思います。したがって、カードを追加/変更する必要があるときは、データベースに追加し、アプリケーションに更新を指示するだけで、アセンブリを展開する必要はありません (特に、カードごとに 1 つのアセンブリについて話すことになるため、何百ものアセンブリを意味することになります)。

それは可能ですか?ソース ファイルからクラスを登録し、それをインスタンス化する、など。

ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);

言語はC#ですが、任意の.NET言語でスクリプトを書くことが可能であれば、さらにボーナスがあります。

どのように解決するのですか?

Oleg ShiloのC#スクリプトによる解決策(The Code Projectにて ) は、アプリケーションにスクリプト機能を提供するための素晴らしい入門書です。

別のアプローチとして、次のようなスクリプト用に特別に作られた言語を検討することもできます。 IronRuby , パイソン または ルア .

IronPythonとIronRubyの両方が今日から利用可能です。

IronPythonを埋め込むためのガイドについては 10の簡単なステップで既存のアプリにIronPythonのスクリプトサポートを埋め込む方法 .

Luaはゲームでよく使われるスクリプト言語です。.NET用のLuaコンパイラがあり、CodePlexから入手可能です --。 http://www.codeplex.com/Nua

このコードベースは、.NETでコンパイラを構築することについて学びたいのであれば、とても良い読み物です。

全く別の角度から PowerShell . PowerShellをアプリケーションに埋め込む例は数多くあります -- このトピックに関する徹底的なプロジェクトはこちらです。 Powershellトンネル