Почему мы используем скрипты в разработке?

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

65 голосов | спросил Kim 18 PM00000040000005731 2010, 16:57:57

6 ответов


73

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

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

Часто скриптовый язык также используется для сценариев в реальном времени . Это пригодится для настройки некоторых элементов игрового процесса или даже для отладки. Многие игры предоставляют консоль для этой цели (главным образом внутри).

Очень хорошо, что вы создаете игру с использованием существующего игрового движка, просто по сценарию. Таким образом, слой игрового движка полностью отделяется от игрового логического уровня . Современные двигатели обычно можно использовать для создания игр FPS или RTS, как это, но это невозможно для любого жанра. Для MMO, вероятно, потребуется другой тип движка.

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

ответил Nef 18 PM00000050000003931 2010, 17:16:39
38

Вы задали неправильный вопрос. Я считаю, что реальный вопрос заключается в том, почему мы терпим «не-скриптовые» языки, такие как C, C ++, Java и т. Д.? И ответ - одна из причин: производительность. (И, может быть, инерция, но эта инерция существует из-за производительности, и любой, кто может писать хороший C /C ++ /Java, может писать хотя бы пассивные Ruby /Python /Lua /JavaScript.)

Мы используем «скриптовые» языки (что на самом деле означает, что на самом высоком уровне, сборщик мусора и, как правило, некоторая форма более легкого набора текста и динамическая компиляция), поскольку они, как правило, являются более легкими для любого человека - включая программистов - для написания кода в Есть меньше глупых вещей , например, вспоминая освобождение после того, как вы malloc или убедитесь, что ваш код безопасен для вас, или не забудьте сделать все ваши деструкторы виртуальными. Если бы наши компьютеры были бесконечно быстрыми, мы бы использовали «скриптовые» языки для всего.

ответил 18 PM00000060000003331 2010, 18:44:33
10

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

ответил Tetrad 18 PM00000060000003931 2010, 18:47:39
8
  1. Каждый новый класс lua - две строки. Каждый новый класс C ++ является болью.
  2. Не скулить о типах, когда все, что вам нужно, это перемешать значения вокруг.
  3. Сбор мусора.
  4. Код сценария прекрасно изолирован в виртуальных машинах, вдали от всех этих неприятных странствий segfaults и массивов.
ответил zaratustra 19 AM00000030000003131 2010, 03:18:31
5

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

Также языки сценариев часто просты в понимании и легко программируются, поэтому вам не нужны «хардкорные» разработчики (те, которые занимаются управлением памятью /указателями и оптимизация уровня процессора) для большинства кодов (если большие RPG, скрипты для AI, Spells, Item Effects и самого мира часто больше, чем код двигателя). Языки скриптов позволяют гораздо больше сосредоточиться на «чем», а не на «как» из-за коллекции мусора (в случае Lua) и более высоком уровне абстракции.

ответил Michael Stum 25 +04002010-10-25T06:40:59+04:00312010bEurope/MoscowMon, 25 Oct 2010 06:40:59 +0400 2010, 06:40:59
4

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

Отличным примером этого является игра World of Warcraft. У этого есть тысячи добавлений, созданных сообществом. Эти аддоны записываются с использованием LUA + XML.

ответил Dani 17 FriEurope/Moscow2010-12-17T20:51:45+03:00Europe/Moscow12bEurope/MoscowFri, 17 Dec 2010 20:51:45 +0300 2010, 20:51:45

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

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

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