Вы знаете, что игры бывают очень архитектурно "грязными" внутри? Но это не помешало им продаваться миллионами копий, или быть написаннами одним человеком на фреймворке для браузерок, или на Lua поверх библиотеки для геймджемов, или вообще ребенком в бесплатной версии юнити. При этом мощный кастомный движок с ECS, job-системой, своим рендером и рефлексией повсюду вы тоже знаете, но игра на нем, скорее всего лежит третий год у вас в беклоге, так и не сыграная даже пару часов.
Попросили меня по старой дружбе, где-то с полгода назад, помочь с разработкой и выводом игры в Steam. Ребята до этого занимались нефтью, и накопив деньжат, решили, что называется оставить след в индустрии. Если честно, я несколько отвык от такого "детского" кода и простых решений, что меня несколько удивило, хотя и вернуло на грешную землю из объятий ентрепрайза. Но я сразу оговорюсь, что простая архитектура это не оправдание плохого кода, а способ выбрать, где именно вы повзоляете себе быть сложным. Бюджет сложности конечен... прежде всего размером вашей натуральной оперативкой, и тратить его надо туда, где игрок это увидит.
Начнём с того, что переусложнение это не глупость/лень, но почти всегда результат ума и добросовестно выполненной работы. Человек прочитал грамотную статью, посмотрел сильный доклад, поработал в хорошей студии и пытается делать правильно, но «правильно» пришло из контекста большой или специализированной разработки, где по-другому уже не получается делать и есть "культура перформанса"…
До…