Какой язык скриптов в игре я должен поддерживать? - PullRequest
2 голосов
/ 16 сентября 2009

Игровой скрипт будет управлять логикой NPC / AI.

Если бы я должен был реализовать функцию внутриигрового скриптинга, какой язык он должен поддерживать?

Имейте в виду, что моя реализация будет работать на нескольких платформах, таких как .net, flash, javascript и java.

Каковы плюсы и минусы перечисленных возможностей? Сколько времени потребуется, чтобы внедрить переводчика?

Какие функции ищут внутриигровые сценарии? Что реализуют другие игры?

Я думаю проголосовать за javascript из-за того, что каждый может прочитать и написать его.

Что ты думаешь?

Ответы [ 7 ]

5 голосов
/ 16 сентября 2009

Используйте Lua. Это прекрасный язык, широко распространенный в игровой индустрии .

Для большинства ваших платформ есть привязки Lua:

Существует также проект llvm-lua , который может быть полезен для переноса Lua на другие платформы.

Что касается JavaScript как хост-платформы ... Эта тема периодически появляется в списке рассылки Lua , но серьезного решения еще не было опубликовано. Если вам действительно нужно разместить Lua в JS, спросите в списке рассылки Lua, возможно, некоторые люди могли бы поделиться своим опытом по этому вопросу.

5 голосов
/ 16 сентября 2009

Я бы использовал Lua, потому что его очень легко вставить. Встраивание Python оказалось сложным, и я на самом деле этого не преследовал.

Эта ссылка может использоваться в дальнейшем, если вы хотите узнать больше о встраивании Lua и его преимуществах / недостатках.

3 голосов
/ 16 сентября 2009

Я бы предпочел Python для его привязки на многих языках.

0 голосов
/ 16 сентября 2009

Если вы хотите использовать Python, рассмотрите возможность использования Stackless , поскольку он лучше работает с многопоточностью, чем стандартный CPython. Он используется в некоторых MMORPG (EVE Online, IIRC), поэтому у него есть некоторый послужной список в играх. Кроме того, он очень хорош для продолжения (частично по той причине, что он был разработан в первую очередь), что является довольно хорошей моделью для логики типа «симуляция», которую можно использовать в играх.

0 голосов
/ 16 сентября 2009

Это зависит от того, насколько сложным будет ваш код (насколько сложным может стать поведение NPC). Tcl, Lua и JavaScript предназначены для простых задач. Написание больших кусков кода на этих языках быстро становится неприемлемым (особенно для случайных пользователей).

Squirrel использует C-подобный синтаксис, с которым большинству людей будет удобно, но как насчет поддержки инструментов? Если вам придется писать все с помощью Блокнота, это также сильно ограничит вас.

Python - это зрелый язык, который легко выучить (просто сравните «учебник» Lua с тем, который поставляется с Python). Хотя различные версии Python могут показаться пугающими (см. ответ Рохита ), код Python в вашей игре будет одинаковым для всех из них. Он поставляется с IDE (IDLE), и есть другие IDE, которые поддерживают Python, который обеспечивает завершение кода, отладку, выполнение тестовых примеров и т. Д.

0 голосов
/ 16 сентября 2009

Я точно знаю, что в Python и Lua есть привязки для .NET и Java - вы можете встраивать интерпретаторы. Не знаю, есть ли какие-либо привязки для Javascript и Flash.

Проблема с Python заключается в том, что есть три варианта, сделанные разными людьми.

  • IronPython для .NET
  • Jython для Java
  • и обычный CPython

Я не работал над Jython, поэтому я не буду комментировать это. Но есть некоторые проблемы с переносимостью между IronPython и CPython. Например: IronPython не поддерживает собственные расширения Си. Если есть скрипты, написанные на CPython, которые используют их, вам будет сложно портировать их на IronPython. Кроме того, если скрипты IronPython используют какие-либо библиотеки .NET, вам будет сложно портировать их на CPython.

Реализация Lua, с другой стороны, происходит из одного места, и я не ожидаю таких проблем.

0 голосов
/ 16 сентября 2009

Я думаю, что вы имеете в виду «интегрировать» интерпретатор, а не «внедрить» его. В зависимости от ваших навыков, создание переводчика для языка сценариев может занять много времени.

...