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

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

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

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

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

Марк Дарра

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

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

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

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

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

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

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

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

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

Марк Дарра

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

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

105105
26 комментариев

Комментарий недоступен

18
Ответить

Комментарий недоступен

7
Ответить

Особенно первые акты (те что до тюрьмы) :)

Ответить

Нет такой вещи как идеальная играОн просто не играл в балдурс гейт 3.

4
Ответить

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

3
Ответить

И правильно делают.

3
Ответить

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

1
Ответить