Отчет #3 (29/01/15)

Добавлен , опубликован
Всем привет, уже довольно долго по проекту не было новостей, так что я решил написать очередной отчет.
За это время я поработал над движком, сделал полный рефакторинг кода, оптимизировал игровой код.

Оптимизация

Игры на html5 не могут похвастаться высокой производительностью выполнения, стоит только добавить немного графики, пару шейдеров и десяток объектов, как заветные 60fps сразу превратятся в 30, а то и меньше.
Что же делать для оптимизации, когда графоуни оставить хочется, но и 60 fps выжить из браузерки нужно?

1) Распределение нагрузки

Большинство функции не требует просчета каждый игровой кадр. Например свет можно просчитать только раз в 5 кадров, а оверлей с дебагом (текст, инфографику и т.п.), так и вообще только раз в секунду (или один раз за 60 кадров).
Следуя этому принципу, можно добиться существенной оптимизации игры.
Используя следующую функцию, вы сможете распределить нагрузку в C2:
floor(tickcount/g_NormalMapsTime)*g_NormalMapsTime
  • floor системная функция округления числа
  • tickcount системная переменная (содержит количество тиков с начала игры)
  • g_NormalMapsTime - наша переменная. (у меня она равна 5). Т.е это событие будет происходить только каждые 5 кадров.

2) Cleaner (чистильщик)

Обычно игровой движок просчитывает все объекты на игровом уровне, но какой в этом смысл если игрок все равно ничего не видит за пределами игрового экрана?
Для начала стоит проверять перед выполнением той или иной обработки, находится ли объект на экране или нет. (разумеется, это относится только к визуальной части), логика должна работать как обычно.
Также можно написать чистильщик, который будет отключать уже ненужные объекты и лишние полигоны коллизий:

3) Debug

Всегда полезно узнать какие функции в игре самые прожорливые. Для этого в C2 есть очень мощный и удобный инструмент, он рассчитывает нагрузку на CPU каждый кадр, и группирует все по вашим группам из редактора триггеров.
Если функция использует 0-1% от CPU, то не страшно, но если более то стоит попробовать её оптимизировать, либо переписать/отказаться от использования вовсе.

Workflow

Часто бывает что для тестирования игры требуется создать некоторые коды или горячие клавиши для быстрого прохождения, ведь довольно утомительно раз за разом проходить одно и тоже для тестировать новой локации, или сценария.
Что-бы облегчить себе жизнь, для проекта была написана игровая консоль, все команды создаются всего несколькими событиями. Достаточно указать имя, описание, и callback функцию которая будет вызвана и получит все указанные аргументы, что довольно удобно.
На этом пока все, разработка медленно, но верно движется. Что касается самого проекта, игровое разрешение было увеличено в 2 раза, теперь это 960х480 или 1920х960 (полноэкранный PC / браузер).
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
27
9 лет назад
0
Всё-таки пестроват задний план. Надо либо его "притушить" ещё, либо интерактивные объекты вроде персонажа больше оторвать от заднего плана графически.
0
14
9 лет назад
0
LongbowMan, может оно в динамике и не так пёстро? Хотя на скрине, согласен, кажется что задний план, это передний и главный герой будет ползти по стене, цепляясь за края этих листов металла.
0
27
9 лет назад
0
Kozinaka, в динамике обычно всё ещё больше пестрит)
0
34
9 лет назад
0
да я работаю над этим, сейчас просто отключил некоторые эффекты в том числе depth blur.
0
21
9 лет назад
0
Эту хотел поиграть. Неужели даже демки не будет?
0
3
9 лет назад
0
H, мда, и правда не было давно новостей (я даже забыл про игру). Жду, поиграть хочется.
А чит-коды будут (для не честного прохождения)?
0
34
9 лет назад
0
RiseD_Konst:
Эту хотел поиграть. Неужели даже демки не будет?
Lionardo:
H, мда, и правда не было давно новостей (я даже забыл про игру). Жду, поиграть хочется.
А чит-коды будут (для не честного прохождения)?
Скоро будет видеообзор от juspera (он попросил меня сделать небольшой ролик о текущем процессе разработки. Так что проект потихоньку делается, но выйдет точно не в ближайшие месяцы.
Lionardo, нет, кодов нет. Будет консоль разработчика, которую можно будет активировать для тестов (в том числе и своих уровней и модов). Через неё уже можно будет делать разные штуки, например
i_give LAW дает игроку базуку.
c_health 100 восстановит здоровье и т.п.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.