Які плюси і мінуси Lua vs. Python як мови сценаріїв для платформи XNA / C #? [зачинено]


9

Я замислююся над тим, щоб перейти до однієї зі своїх старовинних ідей для гри. Основним моментом цієї гри буде можливий рівень функціональної настройки ігрового середовища та предметів (наприклад, модифікація поведінки космічного корабля). Для цього гра повинна бути сценарієм. Крім того, я не прагну комерціалізувати це, це просто цікава програма програмування для мене.

Оскільки я здебільшого .NET хлопець, я буду використовувати XNA / C # для самої гри. Для сценаріїв я думаю про те, щоб поїхати з Python або Lua. Я мав попередній досвід роботи з Python і не маю нічого проти цього як мови. З іншого боку, Lua для мене майже абсолютно новий, окрім деяких незначних модифікацій доповнень World of Warcraft, які я робив тут і там, і це виглядає багатообіцяюче. Тож ось моє питання:

Які плюси і мінуси Lua vs. Python як мови сценаріїв для платформи XNA / C #?

Чи один із них значно простіший у використанні з XNA / C #? Чи має один з них певні переваги або недоліки при використанні з XNA / C #? Чому б ви рекомендували один за іншим для XNA / C #?


4
Я знаю, що ви не просите альтернативи, але про всяк випадок, коли ви не знаєте, C # також є дійсною мовою сценаріїв, і оскільки ви використовуєте C #, це дуже низьке обслуговування.
Вільям Маріагер

2
Навіщо вам навіть потрібна мова сценаріїв? Які беннефіти ви очікуєте?
Пітер Ølsted

2
Вони обидва користуються популярністю, професійно використовуються і, безумовно, здатні виконати сценарій. Це лише питання смаку для 99% застосувань. У Python є краща стандартна бібліотека, і на мою думку, більш зручна мова.
Cloudanger

1
Послів "ви вважали?" Ви вважали Бу ? Він призначений для сценаріїв, а не для того, щоб ставати мовою сценаріїв. Як і у IronPython, він має вбудовані помічники для хостингу (і навіть може інтерпретувати цілі, такі як XBox).
Джонатан Дікінсон

1
Також не нехтуйте візуальними сценаріями (подібно до Staredit - редактора Starcraft 1).
Джонатан Дікінсон

Відповіді:


11

Я не можу порівняти ці два, оскільки до цього часу я мав лише досвід вбудовування IronPython в грі C #. Ось, що мені подобається в цьому:

1) Це легко! Завантажте DLL-файли IronPython, додайте посилання в проект,

 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, де це можливо. результат скрипту - це System.Numerics.BigInteger, а не PyObject

3) dynamicКлючове слово в C # було створено для взаємозв'язків, коли у вас немає статичного типу:

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

+1 за гарний приклад, який показує, як легко отримати залізний пітон .... хоча це не було, ОП
просило

0

IronPython і C # добре поєднуються, IronPython можна додати до C #, щоб підвищити продуктивність. Отже, якщо ваші ігри для написання, то Python дзвінки в межах C # є перевагою. Сам Python не може використовувати XNA, але може використовувати Directx те, що C # не може зробити безпосередньо.


1
FWIW, Python також не може використовувати DirectX "безпосередньо" - він взаємодіє з ним через обгортки, виходячи з того, що D3D - це C / COM API. Саме так ви можете отримати доступ до DirectX також із C #.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.