Костыли и пиксели #12
Всем привет! Продолжаю искать интересные костыли и хаки разработчиков игр. Сегодня мы вспомним Крутого Сэма.
В 2001 году жанр шутеров тяготел к закрытым пространствам. Пока Quake 3 и Unreal Tournament гоняли игроков по тесным аренам, Serious Sam выкидывал нас в огромную пустыню и спускал лавину из сотен камикадзе и скелетов. При этом игра умудрялась выдавать стабильный FPS даже на откровенно слабых машинах.
Секрет крылся в самописном движке Serious Engine и агрессивной оптимизации, где математика заменяла честный рендер.
Если бы компьютер попытался честно просчитать геометрию сотен бегущих моделей, процессор бы просто захлебнулся. Поэтому разработчики использовали метод агрессивного билбординга. На дальней дистанции толпа монстров — это просто набор плоских 2D-картинок, которые всегда повернуты к камере лицом.
Чтобы скрыть подвох, для каждого врага заранее отрендерили спрайты со всех ракурсов. Вы двигаетесь в сторону — движок мгновенно подменяет картинку монстра на кадр с нужным углом. И только когда враг подбегает на расстояние выстрела, картонка бесшовно превращается в 3D-модель. Этот фокус масштабируется до сих пор: в Serious Sam 4 по той же схеме рисуют до 100 000 врагов в кадре.
Второй технический трюк связан с физикой. Те, кто заходил в секретные комнаты, наверное помнят, что там можно было бегать по стенам и потолку вместе с врагами. Для 2001 года это было сложно реализовать — гравитация в движках обычно была жестко направлена вниз.
Чтобы заставить её работать в разные стороны и не перегрузить систему, Croteam максимально упростили обсчет столкновений. Классические хитбоксы-"коробки" вокруг моделей жрут много ресурсов на обсчет углов. Хорваты заменили их на сферы. Математически вычислить пересечение двух шаров в разы быстрее. Сэкономленную вычислительную мощность пустили на то, чтобы движок мог рассчитывать индивидуальные векторы гравитации для разных стен в одной комнате.
В итоге, разработчики не стали пытаться брать железо измором. Они сделали ставку на грамотные обманки и упрощенную физику, выдав масштаб, который тогдашним конкурентам даже не снился.