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

Я думаю о том, чтобы дать одну из моих древних идей для игры. Основной темой этой игры был бы возможный уровень функциональной настройки игровой среды и объектов (таких как изменение поведения корабля космического корабля). Для этого игра должна быть доступна для сценариев. Также я не стану стремиться к коммерциализации, это просто интересная задача программирования для меня.

Поскольку я в основном парень .NET, я буду использовать XNA /C # для самой игры. Для сценариев я думаю о переходе с Python или Lua. У меня есть предыдущий опыт работы с Python и нет ничего против него как языка. Lua, с другой стороны, почти совершенно новичок, кроме некоторых незначительных модификаций дополнений World of Warcraft, которые я делал здесь и там, и выглядит многообещающим. Итак, вот мой вопрос:

Каковы преимущества и недостатки Lua vs. Python в качестве языка сценариев для платформы XNA /C #?

Является ли один из них значительно проще в использовании с XNA /C #? Имеет ли один из них некоторые конкретные преимущества или недостатки при использовании с XNA /C #? Почему вы рекомендуете один за другим для XNA /C #?

9 голосов | спросил famousgarkin 5 Jpm1000000pmThu, 05 Jan 2012 18:48:51 +040012 2012, 18:48:51

2 ответа


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);
ответил Jimmy 5 Jpm1000000pmThu, 05 Jan 2012 22:36:18 +040012 2012, 22:36:18
0

IronPython и C # хорошо сочетаются, IronPython можно добавить в C #, чтобы повысить производительность. Так что, если ваши игры для записи, то Python вызывает внутри C #. Сам Python не может использовать XNA, но может использовать DirectX, что C # не может делать напрямую.

ответил Meh 22 Jam1000000amSun, 22 Jan 2012 10:51:26 +040012 2012, 10:51:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132