Apa pro dan kontra dari Lua vs Python sebagai bahasa scripting untuk platform XNA / C #? [Tutup]

9

Saya berpikir untuk mencoba ide kuno saya untuk sebuah game. Titik inti dari game ini adalah kemungkinan tingkat penyesuaian fungsional lingkungan dan objek game (seperti memodifikasi perilaku persenjataan kapal ruang angkasa). Untuk ini, gim harus bisa dituliskan. Juga saya tidak bermaksud mengkomersialkannya, itu hanya tantangan pemrograman yang menarik bagi saya.

Karena saya kebanyakan adalah seorang NET. Saya akan menggunakan XNA / C # untuk game itu sendiri. Untuk skrip saya berpikir tentang pergi dengan Python atau Lua. Saya memiliki pengalaman sebelumnya dengan Python dan tidak menentangnya sebagai bahasa. Lua di sisi lain hampir sepenuhnya baru bagi saya, selain beberapa modifikasi tambahan World of Warcraft kecil yang saya lakukan di sana-sini, dan itu terlihat menjanjikan. Jadi inilah pertanyaan saya:

Apa pro dan kontra dari Lua vs Python sebagai bahasa scripting untuk platform XNA / C #?

Apakah salah satunya jauh lebih mudah digunakan dengan XNA / C #? Apakah ada di antara mereka beberapa keuntungan atau kerugian spesifik ketika digunakan dengan XNA / C #? Mengapa Anda merekomendasikan satu di atas yang lain untuk XNA / C #?

gin terkenal
sumber
4
Saya tahu Anda tidak meminta alternatif, tetapi kalau-kalau Anda tidak tahu, C # juga merupakan bahasa scripting yang valid, dan karena Anda menggunakan C # itu adalah pemeliharaan yang sangat rendah.
William Mariager
2
Mengapa Anda bahkan membutuhkan bahasa scripting? Manfaat apa yang Anda harapkan?
Peter Ølsted
2
Keduanya populer, digunakan secara profesional dan pasti mampu melakukan bagian scripting. Ini hanya masalah selera untuk 99% aplikasi. Python memiliki pustaka standar yang lebih baik dan menurut saya adalah bahasa yang lebih ramah pengguna.
Cloudanger
1
Sepanjang garis 'sudahkah Anda mempertimbangkan?' Sudahkah Anda mempertimbangkan Boo ? Ini dirancang untuk scripting, bukannya kebetulan menjadi bahasa scripting. Mirip dengan IronPython, ia memiliki pembantu untuk hosting (dan bahkan dapat mengartikan target seperti XBox).
Jonathan Dickinson
1
Juga, jangan abaikan skrip visual (mirip dengan Staredit - editor Starcraft 1).
Jonathan Dickinson

Jawaban:

11

Saya tidak dapat membandingkan keduanya, karena saya hanya memiliki pengalaman menanamkan IronPython dalam game C # sejauh ini. Inilah yang saya sukai tentang itu:

1) Mudah! Unduh IronPython DLL, tambahkan referensi dalam proyek,

 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) Seperti yang Anda lihat dari contoh di atas, IronPython sebenarnya mengkonversi ke kelas BCL di mana ia bisa. hasil skrip adalah System.Numerics.BigInteger daripada PyObject

3) Kata dynamickunci dalam C # dibuat untuk situasi interop di mana Anda tidak memiliki tipe statis yang tersedia:

    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);
Jimmy
sumber
+1 untuk contoh yang baik yang menunjukkan betapa mudahnya untuk mendapatkan iron python runnning .... meskipun itu bukan OP yang meminta ;-)
tobsen
0

IronPython dan C # berjalan bersama dengan baik, IronPython dapat ditambahkan ke C # untuk meningkatkan kinerja. Jadi jika game penulisan Anda maka panggilan Python dalam C # adalah keuntungan. Python sendiri tidak dapat menggunakan XNA tetapi dapat menggunakan Directx sesuatu yang C # tidak dapat lakukan secara langsung.

Ah
sumber
1
FWIW, Python juga tidak dapat menggunakan DirectX "secara langsung" - ia berinteraksi dengannya melalui pembungkus berdasarkan fakta bahwa D3D adalah API C / COM. Ini adalah persis bagaimana Anda dapat mengakses DirectX dari C # juga.