Добавлен H,
опубликован
Всем привет, уже довольно долго по проекту не было новостей, так что я решил написать очередной отчет.
За это время я поработал над движком, сделал полный рефакторинг кода, оптимизировал игровой код.
За это время я поработал над движком, сделал полный рефакторинг кода, оптимизировал игровой код.
Оптимизация
Игры на 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 / браузер).
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
А чит-коды будут (для не честного прохождения)?
Lionardo, нет, кодов нет. Будет консоль разработчика, которую можно будет активировать для тестов (в том числе и своих уровней и модов). Через неё уже можно будет делать разные штуки, например
i_give LAW дает игроку базуку.
c_health 100 восстановит здоровье и т.п.