Языки сценариев игрового движка - PullRequest
4 голосов
/ 18 сентября 2008

Я пытаюсь создать полезный движок для трехмерной игры из движка рендеринга Ogre3d, чтобы смоделировать некоторые из идей, которые я выдвинул и попал на перепутье. Есть несколько языков сценариев, которые доступны, и мне было интересно, были ли один или два, которые были проверены и имели надлежащее следование.

Луа и Белка кажутся более проверенными, но я открыт для всех и каждого.

В лучшем случае было бы лучше, если бы существовала скомпилированная форма для языка для распространения и облегчения загрузки.

Ответы [ 9 ]

6 голосов
/ 18 сентября 2008

Один интересный вариант stackless-python . Это было использовано в игре Eve-Online.

5 голосов
/ 18 сентября 2008

Синтаксис - дело вкуса, Lua похож на Javascript, но с фигурными скобками, замененными на Pascal-подобные ключевые слова. Он имеет приятную синтаксическую особенность, заключающуюся в том, что точки с запятой никогда не требуются, но пробел по-прежнему незначителен, так что вы можете даже удалить все разрывы строк и заставить его работать. Как человек, начавший с C, я бы сказал, что Python - это тот, кто имеет эзотерический синтаксис по сравнению со всеми другими языками.

LuaJIT также примерно в 10 раз быстрее Python, а интерпретатор Lua намного меньше (150 КБ или около 15 К строк C, которые вы можете прочитать и понять). Вы можете позволить пользователю создавать сценарии вашей игры без необходимости встраивания массивного языка. С другой стороны, если вы отрываете парсерную часть от Lua, она становится еще меньше.

4 голосов
/ 18 сентября 2008

Руководство по API Python / C длиннее, чем руководство целом Lua (включая API Lua / C).

Еще одной причиной для Lua является встроенная поддержка сопрограмм (совместная многозадачность в одном потоке ОС). Это позволяет иметь около тысячи, казалось бы, отдельных сценариев, которые работают очень быстро рядом друг с другом. Как один сценарий на монстра / оружие или около того.

(Почему люди пишут Lua в верхнем регистре так много на SO? Это "Lua" (см. здесь ).)

1 голос
/ 18 сентября 2008

Еще один голос за Луа. Небольшой, быстрый, простой в интеграции, что важно для современных консолей - вы можете легко управлять операциями с памятью.

0 голосов
/ 13 сентября 2015

Поскольку это библиотека C ++, я бы предложил либо JavaScript, либо Squirrel, последний из которых является моим личным фаворитом из-за того, что он даже ближе к C ++, в частности к тому, как он обрабатывает таблицы / структуры и классы. Было бы проще всего привыкнуть к кодеру C ++ из-за всех сходств.

Однако, если вы перейдете на JavaScript и найдете версию Ogre3D для HTML5, вы сможете переносить код игры прямо в веб-версию с минимальными (если таковые имеются) необходимыми изменениями.

Обе они являются хорошим выбором, и у обоих есть свои плюсы и минусы, но оба определенно будут просты в освоении, так как вы, вероятно, уже работаете в C ++. Если вы работаете с Java, то же самое может сохраняться, и если это Game Maker, вам не понадобится ни один из них, если вы не пытаетесь создать исполняемый файл, для которого людям не понадобится сам Game Maker для запуска, в котором случай, удачи в поиске расширения для запуска любого из них.

0 голосов
/ 26 апреля 2011

Python также хорош, потому что он имеет реальные привязки OGRE, на случай, если вам нужно изменить что-то более низкое на лету. Я не знаю каких-либо эквивалентных привязок для Lua.

0 голосов
/ 18 сентября 2008

Встраивание переводчика не проблема. Меня больше интересуют функции и производительность на данный момент. Обе интерпретируются как LUA и Squirrel, и это хорошо, потому что одна из игр, которые я создаю, состоит в том, чтобы включить модифицируемый код, в котором есть редактор.

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

0 голосов
/ 18 сентября 2008

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

Я бы, наверное, выбрал python. Обычно он компилируется в байт-код, поэтому вам необходимо встроить интерпретатор. Однако, если вам необходимо, вы можете использовать PyPy, например, чтобы перевести код на C, а затем скомпилировать его.

0 голосов
/ 18 сентября 2008

Я бы пошел с Lua, поскольку написание привязок чрезвычайно просто, лицензия очень дружелюбная (MIT), и существующие библиотеки также, как правило, находятся под указанной лицензией. Схему также приятно и легко связать, поэтому она была выбрана, например, для редактора изображений Gimp. Но Луа просто великолепен. World of Warcraft использует его в качестве очень громкого примера. LuaJIT дает вам скомпилированную производительность. Это меньше, чем на порядок от чистого C.

...