Термины сценарии и сценарии, по-видимому, используются взаимозаменяемо в Exchange Stack Exchange, но кроме чтения вопросов о выборе языка сценариев, я не понимаю взаимосвязи между сценариями и сценариями, а также основным языком. Что обычно делает сценарий, когда он будет использоваться, и отличаются ли сценарии в некоторых контекстах (согласно определению программистов игры) от языка сценариев?
13
Ответы:
Скрипты написаны для скриптового языка. Люди могут использовать слова в сленговых предложениях, чтобы получить путаницу, на которую вы ссылаетесь, но попросить кого-нибудь об определениях скрипта, языка сценариев и языка сценариев, и вы получите что-то вроде: Сценарии - это процесс написания сценариев с использованием языка сценариев.
Когда вы встраиваете язык сценариев в игровой движок или основной язык, на который ссылаетесь, вы выставляете не только объекты внутри игрового движка, но и позволяете писать логику для игрового движка. Следует также отметить, что это превращает вашу игру в виртуальную машину, так как языки сценариев редко компилируются в машинный язык и вместо этого переводятся в форму байтового кода и интерпретируются во время выполнения вашим игровым движком.
Это имеет некоторые огромные преимущества для команды разработчиков, некоторые из которых вы можете найти в следующем списке:
Я уверен, что список можно продолжать и продолжать, я уверен, особенно когда вы переходите на специализированные типы игр и то, как сценарии могут помочь определить правила формирования групп для перемещения групп единиц в RTS или как вы можете создать логику пользовательского интерфейса в язык сценариев для предоставления расширяемого пользовательского интерфейса вашим конечным пользователям и тому подобное.
источник
Использование сценариев имеет много преимуществ перед «основным языком». Некоторые из них включают в себя:
источник
Сценарий обычно представляет собой кусок кода, который запускается вне вашего основного движка. Обычно он содержится в текстовых файлах, где бы вы ни хотели их сохранить. Затем он обычно загружается двигателем, анализируется и выполняется во время выполнения.
Обычно происходит то, что независимо от того, какой язык вы используете (например, Lua, Angelscript), этот язык обычно имеет некоторые средства, которые позволяют программисту движка выставлять функции движка или даже целые классы экземпляру «движка сценариев», который работает в данный момент. ,
Например (совершенно глупый пример, но просто чтобы понять суть) ваш игровой код может иметь публичную функцию, которая порождает где-то зомби:
Используемый вами сейчас язык сценариев позволяет предоставить эту функцию запущенному анализатору сценариев. Это фактически означает, что вы можете открыть текстовый файл, написать «SpawnZombie (200,300,1337)», и как только ваш движок выполнит код, в этом месте появится Zombie.
В других ответах уже перечислено несколько хороших примеров того, как это обычно используется, но они опускают один момент, который я считаю очень важным:
Эти виды сценариев позволяют очень легко отлаживать или тестировать игровой процесс во время выполнения.
Допустим, вы хотите найти идеальный способ разместить зомби на карте, чтобы он оказывал максимальное влияние на игрока, когда тот его обнаружил. Без поддержки сценариев вам пришлось бы выйти из приложения, изменить некоторые магические числа в коде, перекомпилировать и протестировать его.
С поддержкой сценариев (при условии, что у вас уже есть какой-то метод ввода текста во время выполнения, например, консоль отладки), вы просто набираете «SpawnZombie (333,444,555)» и смотрите, как он выглядит.
Таким же образом вы можете создавать оружие, транспортные средства, загружать разные карты, изменять значения некоторых вещей в игре и т. Д., Убивать врагов, потому что вы не хотите тратить время на то, чтобы добраться до нужной части. проверено и т. д.
Это сэкономит вам кучу раз в более сложных играх.
источник
1) Сценарии часто намного легче изменить, чем код.
2) Скрипты часто модифицируются на месте. Это позволяет моддинг игры.
источник
Большинство языков сценариев намного более выразительны, чем язык ядра ядра. Часто движок написан на относительно низкоуровневом языке (например, C ++) по соображениям производительности, но код игрового процесса не обязательно должен быть настолько производительным, и поэтому приоритеты смещаются в сторону возможности легко выразить функциональность.
Например, динамическая или статическая типизация. Другой пример: сборка мусора против ручного управления памятью.
источник
Сценарии позволяют писать логику на более высоком уровне. Другими словами, вы пишете меньше кода с большей функциональностью.
Например, следующий пример показывает разницу между написанием чего-либо в коде и написанием на языке сценариев.
Код игры
}
Код сценария
Посмотрите, насколько меньше кода должен делать дизайнер, если вы используете язык сценариев?
Причина в том, что в игровом коде вы должны разделить событие на несколько кадров и написать код с точки зрения множества кадров. С другой стороны, сценарии позволяют вам рассматривать событие с несколькими кадрами как одну строку кода, поскольку все дополнительные коды абстрагируются от функции сценария.
Вы можете спросить, но разве эта функция не может быть записана и в игровом коде? Ну, да, но это означает, что дизайнерам придется открыть исходный код игрового движка и написать все коды там, и вы не хотите, чтобы ваши дизайнеры просматривали исходный код игрового движка (они могут случайно измениться). какой-то другой код и все это вылетает).
Вместо этого вы хотите, чтобы ваш дизайнер делал что-то вроде этого: щелкните правой кнопкой мыши автомобиль в Редакторе карт, выберите Вставить сценарий и введите коды сценариев. Там нет возиться с критическими исходными кодами игрового движка.
источник