XNA / C#プラットフォームのスクリプト言語としてのLuaとPythonの長所と短所は何ですか?[閉まっている]


9

私はゲームの私の古代のアイデアの1つに挑戦することを考えています。このゲームの中核となるのは、ゲーム環境とオブジェクトの機能的なカスタマイズのレベル(宇宙船の武器の動作の変更など)です。このため、ゲームはスクリプト対応である必要があります。また、私はそれを商業化することを目指していません、それは私にとって興味深いプログラミングの挑戦にすぎません。

私は主に.NETの人なので、ゲーム自体にはXNA / C#を使用します。スクリプトについては、PythonまたはLuaを使用することを考えています。私は以前にPythonの経験があり、言語としてそれに対して何もしていません。一方、Luaは私にとってはほぼ完全に新しいものですが、World of Warcraftのアドオンのマイナーな変更がいくつかありますが、それは期待できるようです。だからここに私の質問です:

XNA / C#プラットフォームのスクリプト言語としてのLuaとPythonの長所と短所は何ですか?

それらの1つはXNA / C#で使用する方がはるかに簡単ですか?XNA / C#と一緒に使用すると、そのうちの1つに特定の利点または欠点がありますか?XNA / C#を他のどれよりも推奨するのはなぜですか?


4
私はあなたが代替案を求めていないことを知っていますが、あなたが知らない場合に備えて、C#も有効なスクリプト言語であり、C#を使用しているため、メンテナンスが非常に簡単です。
William Mariager、2012年

2
なぜスクリプト言語が必要なのですか?どのベネフィットを期待していますか?
PeterØlsted2012年

2
どちらも人気があり、専門的に使用されており、スクリプトの部分を確実に実行できます。これは、99%のアプリケーションにとって単なる好みの問題です。Pythonにはより優れた標準ライブラリがあり、私の意見ではよりユーザーフレンドリーな言語です。
Cloudanger、2012年

1
「あなたは考えましたか?」という言葉に沿って あなたはブーを考えましたか?たまたまスクリプト言語になるのではなく、スクリプト用に設計されています。IronPythonと同様に、ホスティング用の組み込みヘルパーを備えています(XBoxなどのターゲットを解釈することもできます)。
ジョナサンディキンソン

1
また、ビジュアルスクリプトを無視しないでください(Staredit-Starcraft 1エディターと同様)。
ジョナサンディキンソン

回答:


11

これまでC#ゲームにIronPythonを埋め込んだ経験があるので、2つを比較することはできません。ここで私がそれについて好きなものは次のとおりです。

1)簡単です!IronPython DLLをダウンロードし、プロジェクトに参照を追加します。

 using IronPython.Hosting;

 var engine = Python.CreateEngine();
 var product = engine.Execute<System.Numerics.BigInteger>(@"
 print ' '.join(['hello', 'from', 'ironpython!'])
 a = 123456789
 b = 10
 a**b
 ");
 Console.WriteLine("a**b={0}", product);

2)上記の例からわかるように、IronPythonは実際にBCLクラスに変換します。スクリプトの結果は、PyObjectではなくSystem.Numerics.BigIntegerです。

3)dynamicC#のキーワードは、静的型が利用できない相互運用状況用に作成されました。

    dynamic example = engine.Execute(@"
class Example(object):
  def __init__(self):
    self.breakfast = ['ham','spam','eggs']
    self.lunch = 'BRAIINNNZ'
Example() # return an example");

    foreach(string item in example.breakfast)
        Console.WriteLine(item);
    Console.WriteLine(example.lunch);

鉄のpythonを実行するのがいかに簡単かを示す良い例の+1 ...それはOPが求めていたわけではありませんでした;-)
tobsen

0

IronPythonとC#を組み合わせると、C#にIronPythonを追加してパフォーマンスを向上させることができます。したがって、ゲームを作成する場合、C#内でのPython呼び出しが有利です。Python自体はXNAを利用できませんが、C#では直接実行できないDirectxを利用できます。


1
FWIW、PythonもDirectXを「直接」使用することはできません。D3DがC / COM APIであるという事実に基づいて、ラッパーを介して対話します。これは、まさにC#からDirectXにアクセスする方法でもあります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.