Сценарий обычно представляет собой кусок кода, который запускается вне вашего основного движка. Обычно он содержится в текстовых файлах, где бы вы ни хотели их сохранить. Затем он обычно загружается двигателем, анализируется и выполняется во время выполнения.
Обычно происходит то, что независимо от того, какой язык вы используете (например, Lua, Angelscript), этот язык обычно имеет некоторые средства, которые позволяют программисту движка выставлять функции движка или даже целые классы экземпляру «движка сценариев», который работает в данный момент. ,
Например (совершенно глупый пример, но просто чтобы понять суть) ваш игровой код может иметь публичную функцию, которая порождает где-то зомби:
void SpawnZombie(int x, int y, int hp /* whatever else */)
{
//...
}
Используемый вами сейчас язык сценариев позволяет предоставить эту функцию запущенному анализатору сценариев. Это фактически означает, что вы можете открыть текстовый файл, написать «SpawnZombie (200,300,1337)», и как только ваш движок выполнит код, в этом месте появится Zombie.
В других ответах уже перечислено несколько хороших примеров того, как это обычно используется, но они опускают один момент, который я считаю очень важным:
Эти виды сценариев позволяют очень легко отлаживать или тестировать игровой процесс во время выполнения.
Допустим, вы хотите найти идеальный способ разместить зомби на карте, чтобы он оказывал максимальное влияние на игрока, когда тот его обнаружил. Без поддержки сценариев вам пришлось бы выйти из приложения, изменить некоторые магические числа в коде, перекомпилировать и протестировать его.
С поддержкой сценариев (при условии, что у вас уже есть какой-то метод ввода текста во время выполнения, например, консоль отладки), вы просто набираете «SpawnZombie (333,444,555)» и смотрите, как он выглядит.
Таким же образом вы можете создавать оружие, транспортные средства, загружать разные карты, изменять значения некоторых вещей в игре и т. Д., Убивать врагов, потому что вы не хотите тратить время на то, чтобы добраться до нужной части. проверено и т. д.
Это сэкономит вам кучу раз в более сложных играх.