XNA / C # platformu için bir betik dili olarak Lua ve Python'un artıları ve eksileri nelerdir? [kapalı]


9

Bir oyun için eski fikirlerimden birine gitmeyi düşünüyorum. Bu oyunun temel noktası, oyun ortamının ve nesnelerin (örneğin bir uzay gemisi silahının davranışını değiştirmek gibi) işlevsel özelleştirmenin olası seviyesi olacaktır. Bunun için oyunun yazılabilir olması gerekir. Ayrıca ticarileştirmeyi de hedeflemiyorum, bu sadece benim için ilginç bir programlama zorluğu.

Ben çoğunlukla bir .NET adam olduğum için oyunun kendisi için XNA / C # kullanacağım. Senaryo yazmak için Python veya Lua ile gitmeyi düşünüyorum. Python ile daha önce deneyimliyim ve dil olarak buna karşı hiçbir şeyim yok. Öte yandan Lua benim için neredeyse tamamen yeni, burada ve orada yaptığım bazı küçük World of Warcraft eklentileri eklentileri var ve umut verici görünüyor. Benim sorum budur:

XNA / C # platformu için bir betik dili olarak Lua ve Python'un artıları ve eksileri nelerdir?

Bunlardan biri XNA / C # ile kullanımı oldukça kolay mı? XNA / C # ile kullanıldığında bunlardan birinin belirli avantajları veya dezavantajları var mı? Neden XNA / C # için diğerini önermelisiniz?


4
Alternatif istemediğinizi biliyorum, ancak bilmemeniz durumunda, C # da geçerli bir betik dilidir ve C # kullandığınız için çok az bakım gerektirir.
William Mariager

2
Neden bir betik diline ihtiyacınız var? Hangi faydaları bekliyorsunuz?
Peter Ølsted

2
Her ikisi de popüler, profesyonel olarak kullanılan ve komut dosyası bölümünü kesinlikle yapabilir. Uygulamaların% 99'u için sadece bir zevk meselesi. Python daha iyi bir standart kütüphaneye sahiptir ve bence daha kullanıcı dostu bir dildir.
Cloudanger

1
'Düşündün mü?' Boo'yu düşündün mü ? Bir betik dili haline gelmek yerine, betik için tasarlanmıştır. IronPython'a benzer şekilde, barındırma için yerleşik yardımcıları vardır (ve hatta XBox gibi hedefler için yorumlayabilir).
Jonathan Dickinson

1
Ayrıca, görsel komut dizilerini de ihmal etmeyin (Staredit'e benzer - Starcraft 1 editörü).
Jonathan Dickinson

Yanıtlar:


11

Ben şimdiye kadar sadece bir C # oyunda IronPython gömme deneyimi yaşadım ikisini karşılaştıramazsınız. İşte ben bu konuda ne gibi:

1) Çok kolay! IronPython DLL'lerini indirin, projeye başvuru ekleyin,

 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) Yukarıdaki örnekten de görebileceğiniz gibi, IronPython aslında BCL sınıflarına dönüşebilir. komut dosyasının sonucu, PyObject yerine System.Numerics.BigInteger olur

3) dynamicC # 'daki anahtar kelime, statik türün kullanılabilir olmadığı birlikte çalışma durumları için yapılmıştır:

    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);

Demir python runnning almanın ne kadar kolay olduğunu gösteren iyi örnek için +1 .... bu OP değildi ;-) istedi
tobsen

0

IronPython ve C # birlikte iyi gider, IronPython performans artışı sağlamak için C # 'a eklenebilir. Eğer yazı oyunlarınız varsa C # içindeki Python çağrıları bir avantajdır. Python'un kendisi XNA'yı kullanamaz ancak Direct # 'in C #' ın doğrudan yapamayacağı bir şey kullanabilir.


1
FWIW, Python DirectX'i "doğrudan" da kullanamaz - D3D'nin bir C / COM API'sı olmasına bağlı olarak sarmalayıcılarla etkileşime girer. Bu, DirectX'e C # üzerinden de tam olarak nasıl erişebileceğinizdir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.