Разработчик оригинальной Fallout объяснил, почему "спагетти-код" не связан с ленивыми программистами

Тим Кейн – один из оригинальных создателей Fallout, поделился на своем канале новым видео, где объяснил природу "спагетти-кода" – запутанного и нечитаемого программного кода. По его словам, проблема не в недисциплинированности или низкой квалификации разработчиков, а в постоянной нехватке времени на выполнение задач. В качестве примера он привед собственный опыт работы в Interplay.

Он описал гипотетическую ситуацию с системой сопротивления урону (DR – damage resistance), концепция которой предельно проста: при 10% сопротивления урона атака на 20 единиц наносит лишь 18, так как 10% от 20 составляет 2.

https://youtu.be/YG4i-F67YOk

Согласно первоначальному дизайн-документу, DR зависел только от одного элемента брони, который носит персонаж. Кейн написал функцию "item armor get DR", которая считывала показатель сопротивления с надетой брони и возвращала значение.

Всё написано. Код великолепный, безупречный. Бриллиант

Но затем приходят изменения.

Сначала дизайнер решает, что DR должен учитывать несколько элементов брони, а не один. Программист дорабатывает код. Потом добавляются импланты, влияющие на показатель. Код усложняется. После появляются временные эффекты от стимуляторов и баффов. Функция разрастается дальше. Затем приходит дизайнер интерфейса инвентаря и спрашивает почему UI показывает неправильные значения. На что программист отвечает:

Это дополнительные бонусы от статусных эффектов.

На что дизайнер реагирует:

Мне это не нужно. Я никогда не просил этого, ты тупой ленивый программист!

И именно тут код начинает закручиваться в спагетти. Каждое новое изменение требований добавляет код в функцию, которая изначально создавалась для простой задачи. Безупречный "бриллиант" превращается в запутанный клубок логики, где каждая модификация накладывается на предыдущую. Разработчик вынужден латать систему на ходу, не имея времени на рефакторинг всей архитектуры.

Я всегда объяснял это всем с начала 80-х и до сих пор: игры – не продукты. Они настолько же искусство, насколько и продукт

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

Больше статей на Shazoo
Тэги: