понедельник, 18 ноября 2013 г.

DEVLOG 2.

Привет всем. DEVLOG’и это конечно хорошо, но на практике все упирается во время, которого, к сожалению, у меня в ближайшее время не будет. Связано это в первую очередь с моей профессиональной деятельностью, сейчас работаю над очень интересным проектом, который по своей сути является лучшим среди себе подобных и который приносит мне не мало опыта в разработке приложений для мобильных платформ, не говоря уже про финансовые вопросы.
К сожалению, многого я рассказать не могу, смогу хоть что-то рассказать только через три года после разрыва контракта, выбора по этому поводу у меня нет, хотя на самом деле хочется поделиться определенным опытом, но все-таки если уж дал слово молчать, то надо сдержать его. Впрочем, этот DEVLOG не об этом.
Что касается этого DEVLOG’а. Тут я расскажу о многом и начну наверное с очень интересной особенностью движка FlashPunk, который был выбран мною для разработки ROBOCAT.
У движка интересная работа с памятью, которая мне не нравятся, по той причине, что это не оптимальный вариант для логически законченного игрового движка. Весь эксперимент описан здесь, но если кому не понятно я расскажу об этом подробнее.
Для примера я создал один экземпляр класса Entity, и один экземпляр класса BitmapData. Далее я создал 160 экземпляров класса Image, которым в качестве параметра конструктора передавался созданный выше экземпляр класса BitmapData, потом к каждому экземпляру класса Image применялось “отображение по горизонтали”, и экземпляр добавлялся в выше созданный экземпляр класса Entity. В итоге для 160 изображений космического корабля размером 72х52 создавалось 320 экземпляров класса BitmapData. Когда я увидел все это в отладчике, я был очень огорчен происходящим, и мне пришлось писать свой аналог класса Image, который создавал всего 2 экземпляра класса  BitmapData для любого количества объектов Image. Сейчас у многих пользователей много оперативный памяти и волноваться по таким пустякам это не очень нужное занятие в наше время, но все же, у меня есть определенный “пунтик относительно оптимизации работы с памятью” и мне пришлось написать этот класс. О нем я расскажу в следующем DEVLOG’е, есть вероятность того что я возможно откажусь от этого класса так как есть определенные обстоятельства которые будут описаны ниже.
Работа над дизайн документом к проекту ROBOCAT очень далека до окончания, но в свободное время я писал немного кода на своем ноутбуке. Сделано очень мало, к заднему фону “города” добавлен эффект Параллакса и для оживления картинки добавлены летающие за фоном космические корабли. Все это можно увидеть, нажав на изображение ниже. Кстати обратите внимание на количество потребленной памяти. Да, это ужас.
Для просмотра нажмите на изображение.
Дальше я решил прикинуть примерные размеры уровня, я сошелся на размере 2000х1000 точек. Это мало, но “тайловая карта” такого размера в памяти “съедает” очень много места. Для просмотра нажмите на изображение.
 Для просмотра нажмите на изображение.
Вот такие вот дела, я даже не знаю, что с этим делать, вернее есть у меня определенные размышления, но времени для реализации своих эксперементов нет.
Еще я начал работать над различными “препятствиями” в игре, так появилось первое препятствие в игре – пресс. Для просмотра нажмите на изображение.
 Для просмотра нажмите на изображение.
Тут практически все так же само как с первым монстром. Вначале было очень мало параметров настроек, которые сводились лишь к задержке работы пресса. Для просмотра нажмите на изображение.
 Для просмотра нажмите на изображение.
Расширяя настройки элемента можно было создавать уже более интересные уровни. Для просмотра нажмите на изображение.
 Для просмотра нажмите на изображение.
Ну и финалом стало более шести разнообразных настроек, которые позволяют создавать интересные геймдизайнерские решения. Для просмотра нажмите на изображение.
 Для просмотра нажмите на изображение.
Работая примерно неделю над улучшением работы движка с памятью меня немного “осенило”. Технически во всем имеющемся сейчас арте нет одиночных пикселей, практически все точки и линии в игре имеют размер в 4 пикселя. У меня появилась идея уменьшить весь арт в игре в два раза, а в настройках камеры движка указать увеличение в 2 раза. Так я могу уменьшить количество потребляемой памяти в 4 раза, и все слои заднего фона будут занимать в памяти столько места, сколько сейчас занимает один слой. Но и тут есть подводные камни, в первых просто сжать в редакторе изображения в 2 раза не получиться, придется потратить время на удаление артефактов после сжатия, а так же, неизвестно как это скажется на производительности, ведь технически все равно будет изображено 640х480 пикселей. Я не знаю, когда у меня появится время чтобы продолжить разработку ROBOCAT дальше, но этот эксперимент самый приоритетный.
Вот как бы и все. В итоге мне не понравилась работа движка FlashPunk, в игру добавилось новое препятствие, у меня есть определенные планы относительно оптимизации и самое главное это то, что дизайн документ еще долек до своего написания. Как видно работы еще очень много, но времени нет, поэтому следующий DEVLOG будет как минимум через две недели, сейчас для меня в большом приоритете работа, которая кормит меня и дает очень нужным мне опыт, но я надеюсь, что на выходные у меня будет время заняться робокотом.
Все. Всем удачи. Пока.