dzmitryf
Дзэн
Thank you meter
На случай важных переговоров. Когда не хватает слов благодарности.
Случайно наткнулся на вот такой 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 фулл тайм дней. Забегая вперёд, всё в результате преобразовалось в такой вид игрового экрана:
Используемые технологии:
- платформа: Flash/AIR (web/mobile);
- язык: Actionscript 3;
- движок: CitrusEngine + Box2D;
- фреймворк: Straling 2.1;
- костная анимация: DragonBones 4.6;
- шрифты: ShoeBox;
- атласы: TexturePacker;
- контроль версий: Git;
- управление проектом: Trello.
Детали реализации задач
Перенести всё на новую версию движка, портировать для веб и оптимизировать оказалось менее болезненно, чем предполагалось. Ушло пару дней.
Учитывая первичность веб-версии и ряд нюансов, было решено переделать серверную часть на пару p2p + Node js, для онлайн режима. Реализация не отняла много времени, поскольку готовых решений было полно.
Перед тем как перейти к графической составляющей хотелось бы остановиться на реализации игровой панели внизу.
Новая игровая панель хотя бы чуть-чуть разбавила геймплей. Игроку теперь доступны 3 абилки: кости, якорь и прицел.
Кости - вы бросаете кости, чтобы скинуть какой-то случайный мусор на игровое поле. При активации появляется шкала с быстро двигающимся прицелом. Кнопкой игрок останавливает прицел и скидывает один из вариантов мусора: старый сапог, бутылку рома, ящик или кусок сыра.
Якорь - теперь прицел закреплён на экране, и выстрел осуществляется кнопкой. Очень помогает при игре на мобильном устройстве.
Лазерный прицел - иногда просто поражаешься своей, казалось бы, на 100% уверенной точности. Помогает выбивать противника на далеко удалённых углах игрового поля.
Прицел - реализация такого пусть и не сложного пункта заслуживает отдельного внимания. Раньше прицел выглядел достаточно примитивно и незаметно для игрока. Белая стрелка и кружок прицела, без каких либо направляющих линий. Решено было переделать, во что-то более яркое и приятное.
Возможно, принцип реализации кому-то покажется нестандартным, но вместо отрисовки с помощью какого-нибудь graphics/canvas я использовал mesh-подход. Почему такой выбор? Не создаёт дополнительных drawcalls. Думаю независимо от используемого языка и движка принцип реализации, так или иначе, применим. Берётся обычный квадратный mesh из двух треугольников. Заполняются координаты вершин, координаты текстуры. Смещаем вершины в виде рогатки. Подгоняем uv-координаты текстуры.
Далее двигаем вершины как нам нужно, основное направление задаёт вершина с индексом 2. Относительно вершины 2 вычисляем координаты остальных вершин. 0 и 3 будут перпендикулярны вершине 2, а 1 всегда равноудалена от 2.Вычисление координат относится к базовым знаниям математики.
Для цветовой индикации берём цветовую модель HSV (или HSB) и смотрим, какой цветовой оттенок (H - hue) нам подходит. SV оставляем без изменений. Мне требовалось от красного до зелёного.
Чем больше сила тем ближе к красному. Получилась простая формула получения цвета:
hue = (120 - 0) * distance / maxDistance= 120 * distance / maxDistance
Лазерный прицел сделан по той же только упрощённой схеме: форма прямоугольника, а не рогатки, и постоянный красный цвет.
Это всё касательно изменений геймплея.
Перерисовка UI
Перейдём к графической части. Пункт, на который ушло наверно 60% всего времени. На момент релиза в 2015 году вся графика была куплена в сумме за 11$ и тогда было просто лень всё рисовать. Постепенно получая опыт на протяжении 8 месяцев, теперь я был готов перерисовать всё заново.
Начав с панелей игрового поля, я пытался сформировать хоть какой то стиль или дизайн, но получалось как то криво.
Всё стало на свои места когда панели были закреплены к верхнему и нижнему краям экрана. Сразу нарисовался и бэкраунд который потом использовался для всех меню.
После написания примитивного AI, был добавлен режим "Приключения". Пройдя 15 уровней, игрок получал награду в 1000 золота на аккаунт онлайн режима.
Потратить сумму можно было в магазине, который тоже претерпел небольшие изменения. Часть скинов требует достижение определённого уровня. Появилось 2 новых скина: вуду и боцман.
В режиме "2 игрока" была добавлена возможность играть против AI. Внешний вид также изменился в лучшую сторону.
Каждая победа должна была радовать игрока и визуально. Говоря простым языком, "не хватало свистелок и перделок". Добавлены фанфары и хлопушки. Думаю, задача была выполнена.
Что касается онлайн части. Освежил меню подключения к серверу.
А также перекомпоновал игровое окно онлайн режима.
Почти все задачи были реализованы, а логотипа всё ещё не было. Хотя и ушёл целый день на логотип и окончательную компоновку главного меню игры, результатом я остался доволен.
Иконка получила новый образ. 4-й по счёту.
Большой баннер для Google Play теперь более привлекателен.
Ачивки хоть и в малом количестве, но были добавлены в игру вместе с иконкой, красующейся в углу экрана. Всё что приходилось рисовать, старался делать в векторе, чтобы не потерять цветовой стиль, да и как то проще всего даётся. Помимо этого было много чего перерисовано, но углубляться в каждый рисунок не хочется.
Локализация
Чтобы хоть как то расширить аудиторию добавил возможность выбора между русским и английским языками. Возможно, в будущем будет перевод на другие языки. Пока этого достаточно.
Туториал
В любой, даже такой простой как эта, игре должен быть туториал. Я вставил небольшое обучение в самое начало, при первом запуске игры. Игроку даётся возможность потренироваться на чучелах. Прикреплю их напоследок.
Первое тестирование
Тестирования мало не бывает. Когда я был уверен, что критичных багов быть не может, я запустил небольшой открытый тест веб-версии. После тестирования и получения фидбека, я кое-что исправил исходя из пожеланий пользователей:
- добавил отправку эмоций, для режима "Онлайн";
- описание "Ожидание хода противника...";
- для режима "Онлайн" добавил индикатор с выделением того кем целится противник;
- добавил мигающие лампочки у кнопки "Магазин", для большей заметности;
- перетасовал уровни в режиме "Приключения", чтобы проще проходить;
- отключил засыпание экрана в мобильной версии, при игре "Онлайн".
Игра хоть и простая, но прислушиваться к пользователям всегда стоит. Ну и вот такая картинка по функционалу "Эмоции".
Что дальше?
Дошлифовка проекта, после которой я перешёл к этапу продажи. Если с веб-версией принцип монетизации был более-менее понятен, то с мобильной версией всё не так однозначно. Ведь на этот раз веб-версия была первостепенной, а мобильная шла в бонус. Обученный на ошибках, учитывая ряд факторов и наличие ресурсов которыми я обладаю, я выбрал вариант полностью бесплатной и свободной мобильной версии проекта. Без рекламы, без покупок, абсолютно бесплатной. Кому то покажется это странным, но выбор такой.
Пока веб-версия игры проходит модерацию и ищет своего спонсора, мобильная версия открыта для всех и теперь доступна на Google Play. Бесплатная, без рекламы и прочих неудобств. Играйте на здоровье =)
P.S. Не вставляю ссылку на игру, т.к всегда найдутся рекламные модераторы. Если кого заинтересовало ищите по названию.
Спасибо за внимание.