«Нет такой вещи как идеальная игра»: Марк Дарра о разработке 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 в Апаче, когда переопределяет конфиги из директорий выше по иерархии.
Прям перед релизом у них всё ещё был баг, который приводил к крашу. Проявлялся именно в релизном билде и случайным образом. В итоге они взяли дебажную версия игру, причесали и оптимизировали как могли, а потом именно её и релизнули 😂
Логика AI прогонялась каждый фрейм. Для Минска была отдельная проверка, чтобы выловить баг, которая на фпс сильно влияла. В BG2 убрали проверку, что добавило 3 фрейма в секунду.
Иногда тебе просто нужно делать то, что ты должен, чтобы выпустить игру. Нет такой вещи как «идеальная игра».
Весь последний год команда кранчила. Марк говорит, что это был самый длительный период переработок в его карьере.
Работая над дополнением Tales of the Sword Coast уже в роли лида, Марк усвоил важный урок — твои эмоции это тоже инструмент. Если ты на лид позиции, то должен быть осторожен с их проявлением внутри команды.
Комментарий недоступен
Комментарий недоступен
Особенно первые акты (те что до тюрьмы) :)
Нет такой вещи как идеальная играОн просто не играл в балдурс гейт 3.
если вы пишете свой скриптовый язык для игры, то будьте уверены, что его будут использовать длятого, чтобы романсить Имоэн
И правильно делают.
Зато у них идеальная коробка была, с pdf книжечкой где все правила игры описаны, история ключевых npc и т.п. Жаль сейчас так игры не делают. Сиди гадай что как и почему.