ZombieLab, дневники разработчиков за 12.12-18.12

Привет всем! Это очередной выпуск дневников разработчиков.Что планировали сделать за неделю: “Надеемся на появление новой графики, а так же будем дописывать концепт-документ, исправлять мелкие баги (зомби иногда начинают бесконечно крутиться вокруг своей оси) и пытаться найти альтернативу ProximityManager.”

Что было сделано

Графики, увы, так и не появилось, но зато эту неделю можно назвать неделей оптимизации кода и исправления багов. Прикрутили крутой профайлер TheMiner – всем рекомендую! Он нам лишний раз подтвердил, что у нас проблемы с ProximityManager – поиск соседей отжирал 70% всего времени работы демки. Написали простой редактор уровней! Ура! Осталось подкрутить совсем немного функций в нем и можно будет рисовать уровни. Так же добавлен автоматический зум и написан свой класс камеры.

Перепроверена вся логика (перемещение, вращение, поиск цели и т.д.), исправлены почти все баги. Осталось два мелких, которые пока не критичны. Знатно оптимизирован код – убраны все лишние вызовы, везде идет повторное использование объектов, исправлены циклы и т.д. Так же оптимизировали логику – например теперь не каждый зомби ищет жертв в каком-то радиусе, а жертвы сами ищут (вот мазохисты!) зомби и добавляют им ссылку на себя в отдельный массив жертв. Это помогло убрать множество запусков поиска соседей. Грани статических объектов разбиваются на много мелких отрезков, каждый из которых добавляется как отдельная сущность в сетку ProximityManager, что так же помогло еще меньше вызывать метод поиска соседей.

Напомню, что ProximityManager использует сетку, и ближайшими объектами для какого-то конкретного считаются все объекты из той же ячейки в которой находится целевой объект. То есть разбиение грани многоугольника (увидите на видео) дает лишние сущности, но уменьшает количество вычислений, так как не надо смотреть соседние клетки сетки, для поиска вершин большой грани – проще найти точки разбиения в конкретной ячейке.

Что касается ProximityManager, то его все же надо переписать. Мы разогнали его как могли, а так же обновление сетки и поиск соседей для всех объектов происходит не каждый кадр, а каждые пол секунды. Сейчас думаем в сторону связных списков и графов.

Из того, что не успели сделать – фон у нас, это большая текстура 2048х2048, при зуме и перемещении ее отрисовка тормозит, нужно будет разбить ее на много мелких текстур.

Видео с результатами работы

При просмотре видео стоит выбрать качество по лучше и смотреть в полный экран. ZombieLab, дневники разработчиков за 12.12 18.12

 

Планы на ближайшую неделю

Все еще надеемся на появление новой графики, а так же продолжим дописывать концепт-документ. И само собой будем придумывать альтернативное решение для ProximityManager. Так же планируется написать небольшую тулзу для замера времени работы кусков кода, используя getTimer() и отдельный Sprite с выводом графиков.

Похожие записи:

Leave a Reply

Your email address will not be published. Please enter your name, email and a comment.

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>