Какой язык сценариев я должен выбрать для своей игры? [закрыто]

В каких случаях языки сценариев лучше других?

Все ответы приветствуются, пожалуйста, дайте описание и опишите, в каких случаях язык превосходит.

(Помните, что один язык за каждый ответ)

53 голоса | спросил 3 revs, 2 users 100%
Linus Sjögren
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

14 ответов


39

Lua широко используется в игровой индустрии . От независимых игр ( Aquaria ) до названий AAA (Civilization).

Основная причина? Я бы сказал, потому что его легко освоить и легко включить в ваши игры. Но то же самое можно сказать и о Python, я уверен. Сценарии, в общем, не сложно. Я думаю, что настоящая причина, по которой вы должны пойти с Lua, состоит в том, что это доказано, что приводит к гораздо большему количеству ресурсов для вас, чтобы вы учились .. Если вам кажется, что вы экспериментируете с чем-то вне нормы, я бы начал возиться с другим языком.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
21

Белка

Белка имеет интересную историю. Он был построен после того, как у игрового архитектора возникли проблемы с непредсказуемой сборкой мусора Lua, а сумасшедшие все равно null, даже если оно не существует .

Squirrel - это язык sripting, используемый в Left 4 Dead 2 . API очень похож на lua (автор Squirrel любит дизайн Lua ).

Так что Белка - удивительный язык, так как это любопытное второе поколение Lua. Это взяло хорошие идеи и устранило раздражающие эксцентриситеты.

То же самое от Lua:

  • сопрограммы
  • таблицы и метаданные
  • динамическая типизация
  • больше.

Новое для белки:

  • Классы
  • массивы
  • regexs вместо синтаксиса соответствия Lua.
  • Язык стиля C /C ++ /Java /C # вместо стиля Pascal /Delphi.
  • больше.

Основной недостаток белки - это не Lua. Lua гораздо более широко используется. Но если это не проблема, Белка - легкая победа. Однако часто популярность языка - это полезная функция сама по себе, поэтому решение не так ясно разрезается.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
8

V8 Javascript из Google.

PRO:

Прост в использовании

Постоянно улучшается

Мощный и гибкий

Другие . Как уже упоминалось, javascript является обычным программным инструментом. Добавление его в мои игры открыло гораздо больше людей, которые чувствуют себя способными, чем другие языки. Он также поддерживает огромное количество кастингов и конверсий для экономии на работе для программиста, а также делает его очень простым в использовании, хорошо работает с STL.

Возможные CON:

Документация может сбивать с толку . Это действительно не самое лучшее.

Примеры Часто паутина странности. Не имея прочной простоты, он встречается как более высокий уровень, чем он.

Шаблоны Иногда их ненавидят или избегают.

Размер кода SDK . Сгенерированный размер кода может считаться раздутым.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
7

Это зависит от игры и ее целевой платформы.

Игра, в которой запущено 100 персонажей без игроков (игры RTS), имеет разные потребности в игре, которая работает только 2 (Street Fighter). Игра, которая работает на ПК, имеет разные потребности, чем игра, которая работает на консоли.

Lua популярна

GameMonkey используется несколькими командами. Это быстрее, чем Lua, и лучше при потоковании.

Python используется в нескольких играх.

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

Существуют также специализированные языки.

SCUMM использовался в нескольких приключенческих играх, и он особенно подходит для этих игр.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
4

Для полноты использования другой вариант - моно-скрипт , который позволяет использовать Novell реализация .NET framework для сценариев. Это то, что использует Unity . Вот еще одна страница о вложении моно в ваше приложение.

Структура Mono быстрее, чем большинство (возможно, всех?) языков сценариев, потому что это не интерпретируется, и поскольку между компилятором и набором команд есть слой, он позволяет вам программировать на разных языках, включая C # и диалекты Python, Lua и Javascript.

Я не уверен, что он свободен на всех платформах.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
3

Лично я нашел AngelScript (см. ссылку ниже) гораздо проще связать с C ++, чем Lua, когда я выбирал язык сценариев для своего собственного проекта. (Я на самом деле написал небольшую библиотеку-оболочку, чтобы сделать ее еще проще в использовании, за счет некоторой гибкости.)

http://www.angelcode.com/angelscript/

Как я уже сказал, я подозреваю, что у Lua есть несколько преимуществ, которые делают его привлекательным для разработчиков коммерческих игр:

(a) Он более зрелый и широко распространенный, чем AngelScript

(b) Его синтаксис проще для не-программистов (AngelScript очень похож на C ++)

(c) Он имеет меньший размер, чем AngelScript (по крайней мере, насколько я помню)

Если вы просто пишете проект для хобби, я бы сказал, что AngelScript, по крайней мере, стоит посмотреть.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
2

Вы должны выбрать язык сценариев, который имеет стабильные и хорошо поддерживаемые привязки к основному языку разработки вашей игры. Если вы пишете свою игру на C или C ++, то для Python и Lua существуют довольно прочные привязки. Если вы пишете свою игру для платформы .NET (используя C # или другой язык), я настоятельно рекомендую использовать IronPython или IronRuby. Оба являются полными языковыми реализациями, которые используют Microsoft Dynamic Language Runtime (DLR), что обеспечивает отличную производительность и очень тесную интеграцию с .NET Framework. Взаимодействие между C # и IronPython /IronRuby в наши дни довольно плавное, особенно с внедрением динамической привязки call-сайта в C # 4.0.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
2

Схема

Хорошо, guile специально.

С помощью guile вы можете иметь свой собственный DSL (Domain Specific Language) только для своей игры. Как только вы привыкнете к круглым скобкам и префиксным нотациям, схема рада работать.

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

ответил rackandboneman 6 Maypm12 2012, 22:57:05
1

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

Для более полноценного подхода я бы сказал, что Python - правильный выбор. Civ IV использовал его для достойного эффекта.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
0

Выбор одного языка сценариев над другим зависит от ваших конкретных требований.

Некоторые из вариантов, которые вы можете выбрать, могут быть:

Скорость интерпретатора - если функция сценариев используется исключительно, то есть разработчиками для статического поведения скрипта, скорость и полнофункциональный и расширяемый API могут быть наиболее важным аспектом. У меня был хороший опыт работы с LUA.

Простота в освоении, доступность - для контент-/leveldesigner может возникнуть трудность для изучения более сложных языков сценариев (в зависимости от фона) для генерации динамического поведения. В этом случае здесь может быть более удобным использование легко обучаемых (то есть широко используемых) и хорошо документированных языков. JavaScript или Python могут быть хорошим решением здесь.

Интеграция рабочего процесса - если у вас есть конкретный производственный конвейер с уже существующими инструментами, может быть плохой идеей использовать язык, который лучше всего подходит для данного случая, если другие инструменты работают с совершенно другим. Это особенно актуально, если у вас есть несколько программистов, работающих с различными инструментами. В этом случае было бы более эффективно использовать «не совсем подходящий» язык.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
0

Если вы работаете над заголовком для Windows и записываете управляемый код, работающий поверх Common Language Runtime (CLR) - скажем, например, в C # - я бы предложил вам взглянуть на интеграцию (Iron) Python в качестве языка сценариев.

По моему опыту, Python очень легко учить не-программистам /дизайнерам. Это еще проще подобрать для разработчиков, поскольку он по существу читается как псевдокод. Быть динамически типизированным - это лишь один из аспектов, который помогает людям с почти незашифрованным опытом кодирования работать и быстро работать с языком.

В дополнение к легкому обучению и сильному языку, CLR и языковые команды в Microsoft (Андерс Хейлсберг, Эрик Липперт, Mads Torgersen, Jim Hugunin и др.) проделали большую работу по раскрытию возможностей компилятора и исполнения через новый динамический язык Runtime (DLR) в .NET 4, что делает взаимодействие между статически типизированным кодом и динамически типизированным кодом гораздо более простым. Из того, что я видел и пытался до сих пор, код шаблона сводится к минимуму. Он сохранит вашу кодовую базу чистой и обслуживаемой.

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

ответил rackandboneman 6 Maypm12 2012, 22:57:05
0

Ответ очень сильно зависит от вашей среды. В настоящее время я работаю с Unity, поэтому я использую язык на основе моно (в моем случае C #, но Javascript и Boo также являются опциями). Ответ полностью зависит от ваших конкретных обстоятельств.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
-2

ActionScript - это гибридный динамический /статический типизированный язык, используемый для создания флеш-игр, которые могут широко распространяться в Интернете. Он довольно хорошо поддерживается библиотеками, такими как Flixel, FlashPunk и Box2d.

ответил rackandboneman 6 Maypm12 2012, 22:57:05
-2

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

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

ответил rackandboneman 6 Maypm12 2012, 22:57:05

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

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

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