dzmitryf

dzmitryf

На Пикабу
поставил 473 плюса и 237 минусов
Награды:
5 лет на Пикабу
140 рейтинг 2 подписчика 4 подписки 4 поста 0 в горячем

Mario vs Pac-Man

Mario vs Pac-Man

Дзэн

Дзэн

Thank you meter

На случай важных переговоров. Когда не хватает слов благодарности.

Случайно наткнулся на вот такой Thank you meter (flash).

Thank you meter Flash, Спасибо, Метр, Собака

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок.

Пока кто то пилит свой вариант игры "Цивилизация", я решил дать ещё один шанс своей игре. Делюсь историей с подробностями и кучей всяких картинок с процесса разработки. А также рассчитываю на помощь в тестировании.

Некоторые изображения могут быть слегка шакалистыми, т.к создавались во время разработки.


Предыстория


В декабре 2015 года проект решено остановить и захоронить в глубине Google Play, рядом с такими же неудачниками. Надо было двигаться дальше. Спустя 4 месяца, успешная продажа первой небольшой игры дала некоторый стимул ещё на 4 месяца занять себя разработкой следующего проекта. Но осадок незавершённости оставался. Мысль о том что время было потрачено впустую не пропадала. Спустя целых 8 месяцев игра получила шанс на доработку.


Геймплей


Геймплей - смесь бильярда и старой русской вариации игры в шашки "Чапаев", где на шахматной доске предстояло щелчком выбить чужие шашки. Собственно сами шашки были заменены забавными персонажами, а бой состоял из 2 раундов. К такому простому геймлею был сделан режим онлайн на базе Node js. Всё было протестировано и работало как надо.


Работа над ошибками


Ещё тогда в 2015 за неделю до публикации в Google Play появились сомнения, получится ли заинтересовать такой игрой кого либо. Вроде бы и завершённый проект, а ему чего не хватало. И получив некоторый фидбек от пользователей, было понятно, что нужно усилить графическую составляющую, разбавить как то геймплей, а также первичной сделать веб-версию. Художника тогда как и сейчас не было. А продолжать тратить время на сомнительную на тот момент идею я не решился. Отодвинув в сторону проект, я двигался дальше набираться опыта в проектировании и рисовании.


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

- перенести всё на новую версию движка;

- оптимизировать ресурсы игры;

- портировать проект под веб;

- переделать серверную часть с Node js на p2p/Node js;

- перерисовать весь UI;

- добавить немного нового в геймплей.

- добавить возможность играть с примитивным AI;

- добавить новый режим на прохождения;

- добавить достижения, хоть пару штук;

- локализация на русский и английский;

- простой вариант туториала при первом запуске.


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

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Используемые технологии:

- платформа: Flash/AIR (web/mobile);

- язык: Actionscript 3;

- движок: CitrusEngine + Box2D;

- фреймворк: Straling 2.1;

- костная анимация: DragonBones 4.6;

- шрифты: ShoeBox;

- атласы: TexturePacker;

- контроль версий: Git;

- управление проектом: Trello.


Детали реализации задач


Перенести всё на новую версию движка, портировать для веб и оптимизировать оказалось менее болезненно, чем предполагалось. Ушло пару дней.

Учитывая первичность веб-версии и ряд нюансов, было решено переделать серверную часть на пару p2p + Node js, для онлайн режима. Реализация не отняла много времени, поскольку готовых решений было полно.

Перед тем как перейти к графической составляющей хотелось бы остановиться на реализации игровой панели внизу.

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

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

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

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры
История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Якорь - теперь прицел закреплён на экране, и выстрел осуществляется кнопкой. Очень помогает при игре на мобильном устройстве.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры
История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Лазерный прицел - иногда просто поражаешься своей, казалось бы, на 100% уверенной точности. Помогает выбивать противника на далеко удалённых углах игрового поля.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры
История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

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

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Возможно, принцип реализации кому-то покажется нестандартным, но вместо отрисовки с помощью какого-нибудь graphics/canvas я использовал mesh-подход. Почему такой выбор? Не создаёт дополнительных drawcalls. Думаю независимо от используемого языка и движка принцип реализации, так или иначе, применим. Берётся обычный квадратный mesh из двух треугольников. Заполняются координаты вершин, координаты текстуры. Смещаем вершины в виде рогатки. Подгоняем uv-координаты текстуры.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Далее двигаем вершины как нам нужно, основное направление задаёт вершина с индексом 2. Относительно вершины 2 вычисляем координаты остальных вершин. 0 и 3 будут перпендикулярны вершине 2, а 1 всегда равноудалена от 2.Вычисление координат относится к базовым знаниям математики.

Для цветовой индикации берём цветовую модель HSV (или HSB) и смотрим, какой цветовой оттенок (H - hue) нам подходит. SV оставляем без изменений. Мне требовалось от красного до зелёного.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Чем больше сила тем ближе к красному. Получилась простая формула получения цвета:

hue = (120 - 0) * distance / maxDistance= 120 * distance / maxDistance

Лазерный прицел сделан по той же только упрощённой схеме: форма прямоугольника, а не рогатки, и постоянный красный цвет.

Это всё касательно изменений геймплея.


Перерисовка UI


Перейдём к графической части. Пункт, на который ушло наверно 60% всего времени. На момент релиза в 2015 году вся графика была куплена в сумме за 11$ и тогда было просто лень всё рисовать. Постепенно получая опыт на протяжении 8 месяцев, теперь я был готов перерисовать всё заново.


Начав с панелей игрового поля, я пытался сформировать хоть какой то стиль или дизайн, но получалось как то криво.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Всё стало на свои места когда панели были закреплены к верхнему и нижнему краям экрана. Сразу нарисовался и бэкраунд который потом использовался для всех меню.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

После написания примитивного AI, был добавлен режим "Приключения". Пройдя 15 уровней, игрок получал награду в 1000 золота на аккаунт онлайн режима.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

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

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

В режиме "2 игрока" была добавлена возможность играть против AI. Внешний вид также изменился в лучшую сторону.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Каждая победа должна была радовать игрока и визуально. Говоря простым языком, "не хватало свистелок и перделок". Добавлены фанфары и хлопушки. Думаю, задача была выполнена.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Что касается онлайн части. Освежил меню подключения к серверу.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

А также перекомпоновал игровое окно онлайн режима.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Почти все задачи были реализованы, а логотипа всё ещё не было. Хотя и ушёл целый день на логотип и окончательную компоновку главного меню игры, результатом я остался доволен.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Иконка получила новый образ. 4-й по счёту.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Большой баннер для Google Play теперь более привлекателен.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Ачивки хоть и в малом количестве, но были добавлены в игру вместе с иконкой, красующейся в углу экрана. Всё что приходилось рисовать, старался делать в векторе, чтобы не потерять цветовой стиль, да и как то проще всего даётся. Помимо этого было много чего перерисовано, но углубляться в каждый рисунок не хочется.

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Локализация


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


Туториал


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

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Первое тестирование


Тестирования мало не бывает. Когда я был уверен, что критичных багов быть не может, я запустил небольшой открытый тест веб-версии. После тестирования и получения фидбека, я кое-что исправил исходя из пожеланий пользователей:

- добавил отправку эмоций, для режима "Онлайн";

- описание "Ожидание хода противника...";

- для режима "Онлайн" добавил индикатор с выделением того кем целится противник;

- добавил мигающие лампочки у кнопки "Магазин", для большей заметности;

- перетасовал уровни в режиме "Приключения", чтобы проще проходить;

- отключил засыпание экрана в мобильной версии, при игре "Онлайн".


Игра хоть и простая, но прислушиваться к пользователям всегда стоит. Ну и вот такая картинка по функционалу "Эмоции".

История разработки. Помощь в тестировании. Длиннопост. Очень много картинок. Gamedev, Инди, Длиннопост, Игры, Android, Мобильные игры

Что дальше?


Дошлифовка проекта, после которой я перешёл к этапу продажи. Если с веб-версией принцип монетизации был более-менее понятен, то с мобильной версией всё не так однозначно. Ведь на этот раз веб-версия была первостепенной, а мобильная шла в бонус. Обученный на ошибках, учитывая ряд факторов и наличие ресурсов которыми я обладаю, я выбрал вариант полностью бесплатной и свободной мобильной версии проекта. Без рекламы, без покупок, абсолютно бесплатной. Кому то покажется это странным, но выбор такой.


Пока веб-версия игры проходит модерацию и ищет своего спонсора, мобильная версия открыта для всех и теперь доступна на Google Play. Бесплатная, без рекламы и прочих неудобств. Играйте на здоровье =)


P.S. Не вставляю ссылку на игру, т.к всегда найдутся рекламные модераторы. Если кого заинтересовало ищите по названию.


Следить здесь


Спасибо за внимание.

Показать полностью 25
Отличная работа, все прочитано!