Языки сценариев и Game Dev/Программирование

Хорошо, поэтому я занимаюсь разработкой/программированием 2D-игр, и многие игры, которые я видел, используют какой-то язык сценариев. Поэтому мне интересно - Какая цель использования скриптов в играх? Я знаю, что нет простой одной причины ответа, и я пытался рассмотреть все возможности. Вот что я думаю: "Я знаю до сих пор:

1) Скрипты позволяют изменять игру без повторной компиляции.

2) Скрипты легче использовать не программистам.

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

Что обо всем, что я знаю. Мой следующий вопрос: если я собираюсь быть Dev/программированием одной игры, мне действительно нужно использовать скрипты? Или я мог бы прототип игры с использованием чего-то вроде python или ruby, чтобы можно было быстро протестировать, а затем переписать код в С++ сэкономить время и ошибки компилятора и т.д.

Еще одна вещь, о которой мне интересно: мне лучше использовать Ruby или Python, так как я с ними больше всего знаком? Или я должен использовать Lua, Perl или что-то еще, если он лучше подходит для достижения цели? Говоря по этому поводу, для чего я должен использовать сценарии? следует ли использовать их для позиционирования и моделирования пользовательского интерфейса меню игры, записи/чтения файлов сохранения, уровней загрузки карт, хранения массивов или структур игровой терминологии, таких как "Новая игра" или "Выход", все вышеперечисленное, ни один из вышеперечисленных

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

В основном, мне интересно:

Для чего я должен использовать скрипты в своей игре? И почему?

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

Какой язык сценариев должен использовать, если я буду создавать платформеры, ролевые игры или что-нибудь еще?

Ответы

Ответ 1

ваши лучшие 3 причины все на 100% правильны и являются основными причинами использования языков сценариев вместе с движком вашей игры.

Лично у меня только был опыт работы с Lua через Luabind. Это немного сложно настроить, но это того стоило. Что вы можете делать с языками сценариев, так это раскрывать структуры данных и/или функциональные возможности, которые вы хотите, чтобы пользователь был в этом случае сам, чтобы иметь возможность использовать. Вообще говоря, единственная игровая механика и т.д., Которые можно редактировать, - это те, которые вы им разрешили.

Для чего я должен использовать скрипты в своей игре? И почему? Загрузка активов, экспонирование функций/типов, т.е. Для нашего игрового движка (написанного на С++), у нас был базовый уровень, а затем много разных типов наследования уровня от него, такие как уровень волны, соответствие смерти и т.д. Пользователь просто заявляет в script, какой тип уровня им нужен, а затем зажимает здесь активы. В моей демонстрации мы:

Level = "wavelevel"

- Уровень Начальное число врагов

EnemyNumbers = "3"

- Уровень Общее количество волн

волновых чисел = "4"

- Коэффициент волны

WaveCoeff = "1.1"

- Размер местности

TerrainSize = "256"

- Файл ландшафта

TerrainFile = "Ресурс/Модели/mountainous.raw"

Не беспокойтесь о цифрах и обо всем этом.

Как вы можете видеть, какая-то загрузка актива, а также определение типа уровня

Мы также дали большой контроль над ИИ сценариями, на самом деле структуры данных были почти полностью открыты для Lua.

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

Да нет? Конечно, мы все предпочитаем "реальное" кодирование. Если вы можете сделать свой игровой движок достаточно абстрактным, чтобы создавать совершенно разные игры только с Lua, значит, вы отлично поработали и разработали его очень хорошо.

Другая вещь, о которой вам нужно подумать, особенно если вы играете с движком игры, довольно велика и позволяет ей смотреть на нее, на самом деле не будет маленького, каждый раз, когда вы компилируете, это может занять несколько минут! Это линкер, который занимает здесь время.

Какой язык сценариев должен использовать, если я буду создавать платформеры, ролевые игры или что-нибудь еще?

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

Надеюсь, это полезная информация для вас.

Ответ 2

Честно говоря, поскольку это звучит как ваша первая попытка в игре, вы не должны даже беспокоиться об этом. Вместо этого я буду больше беспокоиться о том, чтобы свести объем вашего проекта до уровня, на котором у вас есть шанс снежного шара на самом деле что-то сделать. Если вы еще не сделали что-то на уровне Tic-Tac-Toe или Pong, сделайте это первым. То, что вы узнаете там, будет более ценным, чем беспокоиться о языке сценариев.

О, и если вы делаете RPG в качестве первой попытки игры. Не. Они, безусловно, являются самыми трудными типами игр, которые можно сделать даже для профессиональных разработчиков, много раз предоставляющих им ресурсы. Держите его простым и используйте его как опыт обучения.

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

Да/нет/зависит от вашего второго. Если объем вашей игры невелик, скрипты не так важны. Если вы делаете это самостоятельно, сценарии не так важны.

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

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

Я скажу, что хорошо продуманные скрипты и общая игровая система всегда будут бить прямое кодирование. Посмотрите на Unity на примере того, как скриптинг и код, а все остальное можно связать с гладким интерфейсом, который позволяет очень быстро разрабатывать игры.

Ответ 3

Для чего я должен использовать скрипты в своей игре? И почему?

Причины, которые вы указали, хороши. Одна вещь, которую вам, возможно, потребуется понять, это то, что большинство профессиональных игр по-прежнему построены на С++, и это далеко не гибкое, чтобы изменить, если база кода большая. Поэтому, если вы используете С++, вам понадобятся языки сценариев, чтобы быстро вносить изменения, когда им было позволено делать это в соответствии с приведенными вами причинами.

Если вы не используете С++, возможно, вы используете язык, который может быстро впитывать изменения, делая основной смысл сценариев не столь очевидным. Например, я не использовал бы скриптовый язык в игре Flash или Python.

Нужно ли мне использовать языки сценариев, если я работаю один или с программисты в отличие от Devs?

Как мой предыдущий ответ: это зависит от времени изменений. Подумайте, что основные правила игр редко меняются, но все, что касается дизайна уровней, будет и должно быть легко проверено. Если вы можете это сделать на языке программирования игр, зачем беспокоиться? Если вы не можете, то любой способ ускорить интеграцию изменений будет платить.

Какой язык сценариев должен "использовать", если я буду делать платформеры, ролевые игры или что-то-вы?

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

Ответ 4

Я дам вам быстрый и короткий ответ. Сценарии в основном для изменения вещей, пока игра все еще работает, и вы можете редактировать вещи быстрее. Это намного лучше, чем перекомпилировать, перезагрузить активы, перейти к определенному моменту игры, активировать определенные условные обозначения (элементы, разговаривать с людьми в определенном порядке и т.д.) И т.д.

Вещи, выполненные в script, - это речь персонажа, взаимодействие с NPC с триггерами (например, ходьба где-то останавливается, чтобы поговорить с другим NPC, затем бежать куда-нибудь, скрипты используются для синхронизации), триггеры или события в целом и статистика противника (здоровье, скорость, точность, иногда логика для указанного символа).

Ответ 5

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

Основными причинами, по которым С++ широко используется в играх, являются производительность, легкий доступ к низкоуровневым родным API или аппаратным средствам (на консолях) и инерции - большинство игр написаны на С++, поэтому большинство сторонних библиотек и промежуточного программного обеспечения для игр написаны на С++ и наиболее легко сопряжен с С++. Для многих задач, однако языки более высокого уровня, такие как Python, С# или Ruby, имеют преимущества производительности программистов над С++, которые могут перевесить преимущества С++ для кода, который не критичен по производительности или ему не нужно взаимодействовать с родными API.

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

Ответ 6

На самом деле, почти все игровые серверы MMORPG запрограммированы в script.

Все С++-engin будут внедрять язык script для логической обработки, lua - подходящий для него язык script.

В bigworld, python является встроенным языком по умолчанию.

И node.js также является хорошим кандидатом на программирование игрового сервера. Потому что его сетевая способность выше. В node.js есть среда с открытым исходным кодом: https://github.com/NetEase/pomelo/

Ответ 7

Я нашел бесполезным использование скриптов, как в тех случаях, когда я работал в большой игровой студии, так и в моей работе как инди-разработчик. С другой стороны, у меня есть друзья, которые успешно использовали профессиональные, современные двигатели со сценарием. Поскольку вы делаете самостоятельную разработку игр самостоятельно (или в небольшой команде), я думаю, вам следует избегать этого. Основные причины:

  • Он добавляет накладные расходы почти везде: еще один язык для освоения (для каждого разработчика в команде), производительность медленнее, чем native, а API - самая слабая ссылка, что означает, что вам часто приходится перестраивать двоичный файл.
  • Единственный реальный выигрыш с языком более высокого уровня - это меньше времени на разработку (если вы используете зрелый движок), но, по моему опыту, время съедается из-за трудоемких ошибок в конце.
  • Многие языки сценариев игр используют динамическую типизацию (Lua, Stackless Python, Pawn), которые я считаю уязвимыми по сравнению со статически типизированными языками. Если вы тоже чувствуете, что это только хорошо для простых вещей, вы также можете сделать это вместо этого.

В качестве примечания я считаю, что игры для сценариев игр исключительно полезны, но только для приложений с быстрым взломом/прототипом, а не для огромных компонентов в играх. См. Мой ответ здесь.

Ответ 8

Я не уверен, что интерфейсы сценариев для игр, которые вы пишете, настолько полезны. Однажды я немного поработал над Freeciv, и огромные усилия пошли на включение "modding", используя интерфейс сценариев. Функция, которая показалась малоиспользуемой. Я думаю, что существует опасность внутреннего эффекта платформы. Для настройки игры вам не нужен язык сценариев: у вас уже есть отличный язык программирования (С++, в вашем случае) для этого. Это WTF.

Ответ 9

Для чего я должен использовать скрипты в своей игре? И почему?

Как сказали все (включая вас), скрипты упрощают редактирование вашей игры. На больших командных сценариях также есть очень хороший эффект производительности: люди с техническими навыками могут продолжать полировать движок, в то время как творческие люди могут работать над реальной игрой, и обеим командам не нужно входить друг в друга.

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

Вам это не нужно, и в зависимости от конечной цели, на самом деле, это пустая трата времени для реализации сценариев. Я также разрабатываю 2D-скриптовую игру atm; Я один, но я делаю его сценарием также как личный вызов, а также потому, что хочу, чтобы игра была легко модифицируемой.

Какой язык сценариев должен использовать "я", если бы я создавал платформеры, ролевые игры или что-то еще?

Двумя наиболее популярными опциями являются Lua и Python. Большинство людей рекомендуют Lua, потому что это немного быстрее. Я пошел с Python, потому что он имеет (родную) поддержку для классов — который хорошо работает с моей существующей архитектурой С++ -— а также потому, что я считаю, что это гораздо более приятный язык для работы.

Ответ 10

Хорошо, я знаю, что это немного мертво, но я должен сказать это. В буквальном смысле нет такой вещи, как программирование без скриптов. Честно говоря, неважно, напишите ли вы сами в себе или нет, факт, кто-то написал эти сценарии. Как и ruby, для его использования вам нужна программа, например, "блокнот +", чтобы настроить ее, или какой-либо компьютерный RPG Maker от enterbrain использует форму рубина для работы. нравится это или нет, при использовании компьютеров для разработки игры узнайте script. Теперь, что касается языка, посмотрите немного и попробуйте разные. Не дешево с использованием предварительно скомпилированного движка, просто работайте с нуля. поверь мне, тебе будет лучше. Я все еще пытаюсь решить, что мне больше нравится, Lua (С++) или Ruby. Я могу просто использовать чистый С++