История еще одной игры на Libgdx+Box2d

Идеей написать игру я загорелся еще в 2011 году. В августе 2011 года, не имея опыта разработки на PHP, обложившись книгами и этими вашими интернетами, по ночам писал небольшую браузерную космическую стратегию в реальном времени. Этакий клон OGame. Разумеется, со своими дамами и преферансом. Но проекту этому не суждено было родиться, в декабре 2011-го Родина-мать вдруг попросила отдать долг.

Вернувшись в декабре 2012 года, первым делом устроился в местную крупную IT-компанию. Нужно было максимально быстро вновь войти в рабочий ритм. К весне я уже не мог спокойно спать — мечтал писать игры. Второй попыткой было написать простенькую TD на Unity. Что-то даже получилось — пушки стреляли, мобы двигались. Но постоянно мучил страх, что не смогу довести дело до конца. Так оно и получилось. Семья, работа — свободного времени не было совсем. И только осенью 2014 года твердо решил — я сделаю игру и точка. Не буду спать, не буду есть, но сделаю. Этакий вызов на «слабо». Что из этого получилось читайте дальше.

Как все начиналось


В 2013 году мне подарили планшет. Именно тогда я узнал, что есть такое чудо, как Google Play. Когда же впервые там оказался — восторгу не было предела. Глаза разбегались от количества предложений. Спустя какое-то время в голове стали появляться какие-то наброски будущей игры. Хотелось что-то простое, но интересное. Я с детства любил играть в Чапаева. Именно на этой игре я и остановился.

Так как боевых знаний по Java и Android'у у меня не было, были заказаны на Озоне книги «Разработка игр под Android», «Программирование игр под Android», «Android для программистов. Создаем приложения» и «Философия Java». После прочтения уверенности в силах прибавилось. Вооружившись блокнотом (как советовали в книгах), я выдал два наброска:
и раз

и два

На этом муза меня покинула. Художник из меня, как вы сами могли заметить, никакой. Но на выручку пришел друг со старой работы — великий мастер Фотошопа. Посмотрев на мои шедевры, он выдал
первую версию дизайна





Я был в диком восторге. Просто не верилось, что вот-вот и появится игра. Тогда же были показаны эти макеты другу-программисту, с которым мы давным давно учились в одном классе. И вот нас горящих уже двое. Но радоваться пришлось не долго, установив IntelliJ IDEA, мы поняли, что не знаем, что делать дальше. Начался довольно продолжительный период поиска информации — как и на чем написать игру. В итоге мы наткнулись на Libgdx. Бегло пробежались по документации — оно. Именно то, что нужно.

Но тут как гром среди ясного неба к нам приходит идея привязать к игре еще и исторические факты. Поскольку пишем Чапаева, то и оформление должно быть соответствующим. Значит должны быть Красные и Белые (эти цвета были и в первой версии дизайна, но там они случайно). Должна быть символика того времени. Должна быть тактическая карта (она, кстати, тоже есть в первой версии и именно она подтолкнула нас на историческую привязку). Должен быть рейтинг. Должно быть pvp. Должен быть хитрый AI.

На выручку (уже в который раз) приходит наш дизайнер и выдает
совершенно другую концепцию
Заставка:



Главный экран:



Рейтинги:



Настройки:



Подготовка к бою:



Экран боя:



Экран в выбором типа управления (в дальнейшем мы его убрали, но он появится во 2-й версии):



Пауза:



Бой окончен!




От макетов к коду


Писалось все в свободное от всего время. Надо признаться, что основная работа занимала и занимает бОльшую часть суток. Плюсом семья и домашняя суета. В итоге мы были рады, если получалось поработать над игрой хотя бы 2-3 часа. Но иногда случалось чудо и мы ударными темпами, практически по-стахановски, ночами создавали экраны игры один за одним. На самом деле это оказалось проще, чем мы ожидали. И уже через пару недель у нас был рабочий прототип, который мы запускали на наших девайсах. Пришло время писать сам игровой мир с физикой. Конечно же, воодушевленные мы бросили все силы на свой велосипед. Но чем дольше мы его писали и шлифовали, то понимали — мы проваливаемся в бесконечный цикл. Написали что-то новое — протестили, нашли ошибки — поправили. И так до бесконечности. Иногда отваливалось то, что работало еще вчера. Так продолжаться долго не могло, и мы отправились на поиски физического движка. К нашему великому удивлению, мы нашли то, что работало в Angry birds, а именно Box2d. Сейчас причины того восторга как-то непонятны. Сейчас это все очевидно, но тогда мы радовались как дети.

Но тут нас подстерегало еще одно препятствие. Box2d очень хорошо подходит для платформеров (на хабре достаточно статей с примерами). У нас же игра с видом сверху. Выключаем гравитацию и допускаем очень серьезную ошибку, а именно выбираем неправильный масштаб игрового мира, он получается у нас ОЧЕНЬ большим. В итоге шашка двигается очень медленно. В дальнейшем, когда мы исправили эту ошибку, оказалось, что при пересчете на физические величины шашка двигалась со скоростью близкой к скорости света.

Подходил к концу второй месяц разработки. Опыт накапливался. Игра становилась все интереснее. Но очень многое мы еще не реализовали. В итоге решили временно отказаться от сетевой игры и вынести pvp-режим во вторую версию игры. Взамен прикручиваем локальный рейтинг. Используем SQLite и просто считаем статистику по играм по AI и каждому игроку(когда два человека играют на одном устройстве).

Для игры с «компьютером» мы написали простенький AI. Но получилось, что он совершал ходы шаблонно и после нескольких партий игрок уже знает какой шашкой пойдет бот. Пришлось усовершенствовать, а заодно добавить ход по очереди и инверсию управления.

Игру мы перевели на английский и немецкий.

Итог


30 декабря настало время «Ч». Потратив неделю на тестирование и исправление ошибок, мы довели дело до конца. Сейчас игра в Маркете набирает скачивания и рейтинги. На написание всей игры ушло 2 месяца. Писали вдвоем. Всего же в команде 3 человека.

Графики выкладывать пока не имеет смысла, так как игра всего два дня в продакшене, но на рекламе уже заработали почти 3$. Это не достижение. Это просто факт.

Что мы вынесли для себя

Быть может таким новичкам как мы пригодятся некоторые советы.

1. Изучайте конкурентов. Ищите, анализируйте, читайте отзывы.
2. Начинайте собирать ошибки еще на этапе тестирования, это очень экономит время. Мы в своем проекте используем Crashlytics.
3. Проектирование. Проектирование. И еще раз проектирование.
4. Прототипируйте. Возьмите бумагу. Нарисуйте, нарежьте. Попробуйте поиграть в бумажную версию. Очень многие моменты будут решаться именно на этом этапе.
5. Продумывайте способы монетизации на этапах из пунктов 3 и 4. Так как у нас нечего продавать (по крайней мере сейчас), мы обошлись только показом рекламы.
6. Лучшее — враг хорошего. Никогда не наступит момент «Ну вот! Наконец-то все готово!». Умейте расставлять приоритеты задачам. Если реализация новой фичи занимает больше недели и без нее играть вполне комфортно — снижайте приоритет. Переводите задачу на следующую итерацию развития. Лучше выпустить версию, в которую можно играть, чем потонуть в море «хотелок». Не усложняйте, будьте проще.
7. Не стесняйтесь показывать промежуточные версии друзьям, коллегам, знакомым. У них свежий взгляд. У них не предвзятое отношение к продукту. Выслушивайте критику. Не обижайтесь, если критика жесткая. Все люди разные. Не бросайтесь реализовывать то, что по мнению некоторых людей будет бомбой. Возьмите на карандаш. Кто знает, может быть это реально будет бомба.
8. Я всегда носил с собой блокнот. Идеи приходили иногда совсем неожиданно. Старайтесь все записывать. Куда более легче и правильнее (имхо, конечно же) выбрать несколько стоящих идей из кучи набросков.
9. Никогда! Слышите? Никогда не останавливайтесь. Не бойтесь неудач. Неудачи — это прекрасно. Это показатель того, что вы двигаетесь. Это опыт. Его не купишь.
10. Верьте в себя. Даже если никто больше в вас или в идею не верит (да, бывает и такое). Это ваша идея. И вы обязаны ее довести до конца.

На этом у меня все. Спасибо за внимание.

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

В своей категории мы попали в топ-4
Метки:
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 15
  • +1
    Интересно. Как продвигали? Это загрузки за какое время?
    • +2
      На продвижение было потрачено всего несколько часов — это посты на gamedev.ru и 4pda.ru. Если честно, то вечером 3-го января я не поверил своим глазам, когда, вбив в строку поиска гугла нашу игру, я увидел 5 страниц ссылок. Даже кто-то видео обзор сделал. Указанные цифры за период с 31.12.2014 по 12.01.2015
      • 0
        Тогда это, несомненно, успех:) Совсем без рекламы — и такие хорошие показатели. Поздравляю!
        • 0
          Спасибо большое! Это еще не все) Скоро выходят все плюшки, которые мы запланировали еще в начале. Вот там начнется рекламная кампания.
      • +1
        А ведь очень даже неплохо получилось! Качественный дизайн — это хорошее преимущество. Но немного покритикую:
        — Как по мне, кнопки мелковаты. На планшете ок, но на телефоне как-то некомфортно. Хоть и не промахиваюсь.
        — При игре против AI при смене хода вообще ничерта непонятно… Слишком быстро происходит передача хода. AI стреляет мгновенно, непонятно откуда и куда прилетела шашка. Может добавить анимацию прицеливания перед ходом AI?
        — Ну и главная проблема — за пределами русского Google Play, похоже, шансов немного.
        А так симпатично. Правда, рекламу не увидел ни разу.
        • +3
          Спасибо за отзыв. Такие комментарии двигают горы)))))
          1. По кнопкам — тут мнения разделились. Кто-то согласен с Вами, кто-то же наоборот говорил — сделайте чуть меньше, столько места пропадает.
          2. Это самый настоящий ящик Пандоры))))) AI переписывался уже достаточное количество раз. И каждый раз мы понимали — надо еще. Вы не единственный кто отмечает именно этот момент. В новой версии это уже поправлено. Сейчас тестируем некоторые приятные глазу мелочи.
          3. Довольно много скачек в Казахстане, Украине и Белоруссии. А так я с Вами полностью согласен — немецкая и английская версии никак себя не проявили.
          С рекламой у нас получилось чудо чудное. С утра 5-го января мы получаем письмо о том, что на нашем аккаунте слишком высокая активность и очень много автоматических кликов по рекламе. О_О Вот тебе раз. В итоге мы на 30 дней в бане, весь доход(на тот момент меньше 7$) отзывается, мы редиски. Захожу на аккаунт AdMob — 403 ошибка. Подаю апелляцию, с гугла приходит ответ — да, вы в бане, но не потому что клики, вообщем разберемся и… тишина. Мы нашли другую площадку и показываем баннер на экране победы — когда выбиваешь противника с последней позиции на доске.
        • +1
          По-моему, первый вариант оформления был значительно лучше.
          • 0
            Когда я увидел первую версию, то поймал себя на мысли, что испытываю детский восторг :) Сразу захотелось вообще все бросить и начать делать игру. Но мы отказались ввиду того, что появились белые и красные. Делать красные фишки на красном фоне — это дискриминация белых шашек)))) В итоге получилось то, что получилось!
          • 0
            Благодаря вам — мы снова топ-4! Спасибо большое всем!
            • +1
              Хочется пожать вашему дизайнеру руку :) первый вариант у меня тоже вызвал восторг, второй тоже хорош но как я их называю «для малышей» даже если серьезные дядьки играть будут :) Молодцы! :)
              • 0
                Спасибо большое! Я обязательно передам ему Ваши слова! С дизайнером нам сказочно повезло — это истинно великий человек. Он героически перенес все наши «капризы» и не перестает нас радовать своими решениями.
                • 0
                  может к нему с аналогичными просьбами можно обращаться? :) не за спасибо конечно но все же :)
                  • 0
                    Отписался Вам в личку.
              • 0
                Nexus 5: Пишет несовместима с моим устройством. В гугл плее оставить коммент не могу, поэтому пишу здесь :)
                • 0
                  Спасибо большое за отзыв. Не могли бы Вы личку выслать характеристики Вашего «железа»?

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.