28 мая 2023 28.05.23 7 2360

«Нет такой вещи как идеальная игра»: Марк Дарра о разработке Baldur's Gate

+32

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

Марк Дарра поделился некоторыми занимательными аспектами разработки легендарной RPG. Например, он написал скриптовый язык BGScript для диалогов, чтоб определять, какую фразу показывать. Там не было ни for-цикла, ни булевого оператора OR.

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

Марк Дарра

Тот же BGScript стали использовать не только для диалогов, но и для ИИ существ. Касательно системы диалогов...в игре есть персонаж Biff the Understudy (который позже и в других играх серии стал использоваться), появляющийся, если NPC отсутствует, когда игра требует от него произнести реплики. Вместо этого персонажа реплику произносит Бифф.

В контексте этого Марк поднимает тему проверок на null и адресов в памяти в целом, как говорится «лучше перебдеть, чем недобдеть». Естественно, не нужно пихать такие проверки в Update основного игрового цикла, если их будет тысячи, т. к. это может повлиять на производительность.

Марк также работал над основным игровым боевым циклом. BG основана на правилах D&D 2, в которой боевая система использует 6-секундные раунды. В игре был небольшой эксплойт, связанные с тем, что раунды кастов заклинаний и атаки оружием считались отдельно. Как следствие, после каста заклинания можно было использовать очень медленное оружие, атака которого пройдёт в рамках этого же раунда.

Среди его разработок формат файлов 2DA, который, по сути, являл собой двумерный массив. Позволяло добавлять новые данные в проект. 2DA подразумевался как промежуточный формат, который парсился бы в другой. Не было задумано, чтоб он держался открытым и чтоб на него ссылались. Такой формат хорошо подходил для табличек из D&D. И...позже его начали использовать для совсем разных вещей, в том числе хранили ссылки на другие 2DA, что в итоге приводило к четырёхмерным массивам. Если учесть, что файлы держались открытыми, то производительность была такая себе.

Во всех их движках была возможность переопределять директории. Файлы в таких папках использовались вместо встроенных в структуры данных. Судя по всему, похоже на то, как работает тот же htaccess в Апаче, когда переопределяет конфиги из директорий выше по иерархии.

Прям перед релизом у них всё ещё был баг, который приводил к крашу. Проявлялся именно в релизном билде и случайным образом. В итоге они взяли дебажную версия игру, причесали и оптимизировали как могли, а потом именно её и релизнули 😂

Логика AI прогонялась каждый фрейм. Для Минска была отдельная проверка, чтобы выловить баг, которая на фпс сильно влияла. В BG2 убрали проверку, что добавило 3 фрейма в секунду.

Иногда тебе просто нужно делать то, что ты должен, чтобы выпустить игру. Нет такой вещи как «идеальная игра».

Марк Дарра

Весь последний год команда кранчила. Марк говорит, что это был самый длительный период переработок в его карьере.

Работая над дополнением Tales of the Sword Coast уже в роли лида, Марк усвоил важный урок — твои эмоции это тоже инструмент. Если ты на лид позиции, то должен быть осторожен с их проявлением внутри команды.

 


Baldur's Gate

Платформы
PC | Mac | Linux | PS4 | PS5 | XONE | XBOXSX | NSW | iOS | Android | J2ME
Жанр
Дата выхода
21 декабря 1998
602
4.3
325 оценок
Моя оценка

Лучшие комментарии

Лайк поставил, но получил не совсем то, что ожидал. По превью я думал, что будет этакий сборник историй разработчиков, а в статье разбирают технические тонкости скриптов и ЯП. Без негатива.

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

Удивлён, что статья могла настолько не понравиться, что вы решили создать новый акк ради этого.

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

Читай также