Оптимизация карты


Работая над своим проектом, я столкнулся с тем, что статьи по улучшению производительности просто нет. В таких ситуациях я лезу в оригинальные игровые карты, и разбираюсь что, почему и как там работает. Пару недель поизучав пути оптимизации, я составил список, который привожу здесь, с подробными инструкциями. Возможные способы оптимизации карты:


  • разбиение карты на сектора
  • обрезание ненужных полигонов террэйна
  • сведение использования PostProcessingEffect'ов к минимуму
  • использование дальности прорисовки crumbs
  • level precache (только SE4)

 


1) Разбить большую карту на сектора - очень важно. Это даст огромный плюс к производительности. Что означает разбиение на сектора? Всё просто. В свойствах моделей есть строка Custom Visibility Sectors. В этой строке прописываются сектора, в которых данная модель рендерится - т.е. её можно увидеть. Делать большое количество секторов довольно муторно, но, разбирая уровень Cloud_1_01.wld, я увидел другой способ, которым карта разбита на сектора.


Дело в том, что все эти сектора на самом деле являются лишь одной моделью. Вот она.

 


Каждый сектор - отдельная Polygon Map. Больше информации можно найти здесь: Статья о Visibility Mesh на википедии.

Если ваша карта маленькая, или просто нет желания разбираться, как делать сектора одной моделью, можно следовать этой статье: Создание простого сектора.


2) Террэйны, особенно детализированные (точнее - с большим количеством полигонов), всегда создают какую-никакую нагрузку на компьютер. Поэтому те полигоны террэйна, которые игрок не сможет увидеть НИКОГДА, следует удалить.

 

 


3) Post Processing Effect является одним из основных источников графона и тормозов. Конечно, отказываться от них не стоит. Но вполне возможно свести их использование к минимуму. Даже если их много, неиспользуемые следует отключить с помощью Event Animator'a. (подробнее: статья по Event Animator и Post Processing Effect)

Также добавлю про Streaks Source. Это источники лучей - тоже добавляют графонистости на карту, но настолько же нагружают машину. Обычно одной этой энтити хватает на всю карту.

4) Использование crumbs (обычно, травы), конечно, необходимо. Но необходимо ограничить их прогрузку. Делается это следующим путём: вместо одной энтити crumbs мы будем использовать две. Разница у них в дальности прорисовки и работы освещения.
Так выглядит настройка первой crumbs, которую игрок будет видеть у себя под ногами:

 

 

 


А это вторая crumbs, которая начинает прорисовываться там, где отгружается первая:

 


(подробнее: статья о crumbs)

5) Не видел подобного в SE3.5 (однако вполне мог пропустить, поправьте если что), но в SE4 используется предварительное кэширование уровней. В скрипте оно записано так: когда игрок начинает спускаться к переходу на группу уровней, то все они начинают грузиться. Поэтому при переходе на другой уровень в Талосе нет долгой загрузки - все переходы мгновенны. Я всё еще не знаю, как настроить предварительное кэширование в собственных уровнях. Позже я займусь и этим, а пока просто сообщу о наличии этого пункта.
______________________________________________________________________________

Итак, выходит, что самое главное в оптимизации - разбиение уровня на сектора. Сектора - главные убийцы тормозов. Хотя, как выразился Solais:

 

 


Вполне мог что-то забыть, с памятью у меня небольшие проблемы. Напомните, если что)

Всем удачного дня!

 

 



Комментарии   

№ 6  |  15.03.2016  |  0  
Ох блин. Не туда комментарий вставил.
Ответ Цитата

№ 5  |  15.03.2016  |  0  
Сейчас бы статью какую ни буть, для проверки. Всели работает. А то я вроде как сделал, а вот проверить как работает система не могу.
Ответ Цитата

№ 4  |  13.02.2016  |  +1  
Информативная лишь на половину статья.
Ответ Цитата

№ 2  |  12.02.2016  |  +1  
Ты забыл про LOD, который можно настроить в самих моделях, убирая ненужные полигоны и объединяя их.
Ответ Цитата

№ 3  |  12.02.2016  |  0  
Ну это я не забыл, это я не знал =)
Ответ Цитата

№ 1  |  12.02.2016  |  0  
спасибо, полезная штука cool_a
Ответ Цитата

Оставьте комментарий

Мини-профиль

Гость

Вы в группе: Гости
Ваш IP: 54.158.100.26

Информация

Прочее

Категории раздела

Croteam [3]
Материалы по студии разработчика игр CroTeam.
Интервью с разработчиками [9]
Интервью с разработчиками, а также их издателями.
Serious Sam 1 [10]
Статьи о Serious Sam 1
Serious Sam 2 [6]
Статьи о Serious Sam 2
Serious Sam HD [5]
Статьи о HD-серии, ремейков классических версий Сэма.
Serious Sam 3: BFE [9]
Статьи о Serious Sam 3: BFE
Уроки по Serious Editor 1 [54]
Уроки по Serious Editor 2 [2]
Самое серьёзное редактирование, на русском!
Уроки по Serious Editor 3 [33]
Уроки по работе с редактором.
Serious Engine [6]
Описание возможностей всех движков компании Croteam
Разное [24]
Всё что не подошло не под одну из вышеупомянутых категорий.
Serious Sam: Revolution [1]
Материалы по SS: Revolution, серьёзном обновлении классических Крутых Сэмов.
Serious Sam 1.05/1.07 SDK [10]
SDK - набор исходников для Serious Sam: The Second Encounter 1.05/1.07.

Голосование

Какая локализация (текст/звук) Serious Sam на ваше мнение лучшая?
1. Второе Пришествие (2002 год, под ред. Гоблина)
2. Serious Sam 3: BFE (2011 год, SnowBall)
3. Первая Кровь (2001 год, Логрус)
4. HD 2: BFM (???, ???)
5. Serious Sam 2 (2005 год, Логрус)
6. Золотое Издание (2004 год, Логрус)
7. HD: The Second Encounter (2010 год, Новый Диск)
8. HD: The First Encounter (2010 год, 1С)

Статистика



На сайте: 23
Гостей: 16
Пользователей: 7
Kadath, JuZeTixXx, Heming_Hitrowski, NickBakuridze, WereBull, Anatoliyfax, Manuelcix