>>5991755Удваиваю. В СХ туман добавлен в том числе и для ускорения рендера на открытых пространствах. Оптимизировали как могли.
https://www.youtube.com/watch?v=ofqhHrLgAFcПо сути, всё рендерится прямо перед носом у игрока, но это не заметно совсем и хорошо экономит время на отрисовку кадра.
Подобные хитрые техники оптимизации применялись, к примеру, в первой халфе на ПК - при компиляции карты в формат bsp из редактора QTools/ZonerTools - а конкретно утилита vis - просчитывают под каким углом взгляда какая часть карты видна или не видна игроку. Причем, активные объекты (entities) - к примеру, браш-стенка типа func
wall, на которую повешено действие по нажатию E или движущаяся текстура, или объект-дверь funcdoor - виз за преграду для взора не считает, и потому с энтитями надо аккуратнее. В особо запущенных случаях можно добиться эффекта, когда карта с вроде бы относительно простой геометрией сильно лагает. просто по тому, что маппер не удачно поставил дверь, и всё, что за ней рендерится, хотя и не должно. Опять же, верно подобранная длина коридоров и расположение поворотов и дверных проёмов могут сильно снизить r_speeds и повысить ФПС.
С другой стороны, есть грязные хаки. Дело в том, что когда два браша на карте примыкают друг другу - они дополнительно разбиваются движком на полигоны в плоскости соприкосновения. Квадратный браш 128 на 128 юнитов обычно разбивается на два треугольника-полигона. если поставить на него всерху кубик (ящик там или типа того) - он разобъется уже на 8 видимых полигонов и 2 невидимых (которые под кубиком). Можно поднять кубик на 1 юнит над брашем - тогда при верно расставленных источниках света будет не заметно, что ящик висит над полом на высоте в 1 юнит, и пол не разобъется на слишком много полигонов. Так сделаны стальные столбы на de_train, к примеру.
Еще там были фичи с подгонкой текстур под размер 240 на 240 - делов том, что движок по умолчанию разбивает большие браши на полигоны не по их размеру, а по размеру текстуры с шагом именно в 240 пикселей. Так что если натянуть текстуру 512 на 512 на ящик размером 64 на 64 на 64 юита - кажлдая его сторона разобъется не на 2 полигона, а на 18 полигонов.
Еще одна фича оптимизации - всё, что игрок точно не увидит - заливать текстурой скай-бокса. По умолчанию оно не рендерится и заменяется, собсна, скайбоксом. Поэтому при вылете за границу карты в старой каэсочке можно наблюдать забавные галюны - просто наружные поверхности карты залиты скайбоксом, и ты как-бы смотришь на небо снаружи, от чего движок сходит с ума немного.
Вообще, старые игры в плане оптимизации - это поэзия. Самый сок в том же маппинге под старую контру - граммотно совместить чисто геймплейную планировку карты с оптимизацией. Потому как не всё, что хорошо выглядит - хорошо играется, и не всё, что хорошо играется - хорошо выглядит. И даже если это и выглядит хорошо, и играется хорошо - скорее всего, это херово рендерится и тормозит.