История разработки и жизни одной маленькой игры. Начало

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

    Шел 2013 год, я был искушен разработкой игр, я был молод и любил велосипеды… На тот момент у меня уже была одна игра в моем активе, но это было не серьезно. Эта игра была написана с одной целью – довести её до релиза и этой цели она достигла.

    Видео игры


    Останавливаться на достигнутом я не собирался и хотел сделать игру, в которую будут играть, ну и конечно которая будет приносить деньги.

    У меня уже был не плохой опыт в XNA по части 2д, а также в мобильной разработке на платформе Windows Phone. Разработку новой игры я решил начать с изучения Windows Phone Marketplace, на предмет вакантных мест, с подходящим уровнем сложности. Выбор мой пал на игры подобные «Hill Climb Racing». На тот момент – октябрь 2013 года, «Hill Climb Racing» в магазине приложений не было, были аналоги с убогой графикой и очень примитивные. После небольших раздумий, было решено делать игру с похожей механикой «Hill Climb Racing», но с измененным геймплеем в сторону грузоперевозки, игроку нужно перевезти из точки А в то Б некий груз.

    Создание подобной игры, требует использование или создание удобного редактора физики. Unity тогда была как-то не на слуху, да и другие игровые движки стоили денег, которых не было. Ну и конечно зачем брать готовые решения, когда можно все сделать самому?!

    При этом Windows Phone обновился до 8 версии, да и разработка под WinRT казалась очень привлекательной. Поэтому я решил мигрировать с XNA на Monogame.

    План был такой:

    • Конец октября, разработанный концепт игры, начало работ над игровым прототипом.
    • Ноябрь, привлечение дизайнера и работа над игровым прототипом. Рисовать к сожалению я вообще не умею, а один из упоров в игре я собирался делать на графический контент.
    • Конец ноября, готовый прототип игры.
    • Начало декабря, создания музыкального контента, создание игрового процесса, создание игрового контента, тестирование игры, работа над балансом в игре.
    • Середина декабря, подключение платежных систем, предрелизная подготовка, создание обзоров и подготовка к рекламной компании.
    • Крайний срок релиза 20 декабря.

    План на начало октября казался реальным, но все пошло не так как планировалось.

    Вместо того чтобы заниматься игровым прототипам, я ушел в создание «игрового движка». Это была ошибка номер один.

    Если с физическим движком я определил сразу – им стал Farseer. То вот с GUI под XNA было все намного сложнее, существующие решения оставляли желать лучшего, с одной стороны их было довольно много, а с другой у них у всех были своя куча минусов. В результате я решил написать свою, а за основу взять подходы библиотеки generalhi GPF и XAMLite, основная причина по которой я взялся за это – куча различных наработок, опыт прошлой игры, где все было самописное. В первую очередь, мне было жалко свои труды, и я хотел объединить их в одно целое и продолжил развивать. За пару очень сложных месяцев я получил:

    Редактор физики


    Система частиц


    GUI (на видео вторая версия GUI)


    Также я зачем-то ушел в оптимизацию, без какой то особой надобности, весь графический контент я стал объединять в текстурные атласы и там же сжимать в .xnb с возможностью применить DXT сжатие.

    Все это конечно здорово, но по самой игре было сделано очень мало, я конечно параллельно работал над дизайн-документом по игре и поисками дизайнера, да и работу на фулл тайме никто не отменял, но уже наступил 2014 год и все сроки были сорваны.

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

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

    Эскизы первых машин



    Эскизы первых блоков




    Запускать игру без серверной части я посчитал плохой идей, а основная цель развития игры была в сторону реал-тайм заездов с другими игроками. В качестве базы данных была использована MongoDB, а в качестве транспорта был использован UDP. Был написан свой бинарный протокол общения с сервером. Сервер был максимально заточен на производительность. На момент релиза он отвечал за регистрацию пользователей, за сбор игровых логов о заездах и на основе их формируется рейтинг, за начисление ежедневного бонуса, за начисления и разблокировки игрового функционала.

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

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

    В ходе тестирование сервера на ботах, нормальное максимальное время выполнения серверного тика 100мс, в среднем это обработка около 500 пакетов в тик, что позволяет обрабатывать больше 10 000 единовременных подключений.

    Весь графический контент рисовался в векторе, а уже после нарезался под разрешение 1280*768 и упаковывался в текстурные атласы. И уже на конечной стадии разработки стало понятно, что мы вышли за в 90мб для устройств WP71 и поэтому пришлось выходить только на WP80. Сделать графический контент под разрешение 800*480 не проблема, но вот все переупаковывать, переписывать ключи, убило бы кучу времени, поэтому решили отказаться от WP71. А в 2014 году процент устройств WP71 был довольно большой.

    Проработка первой карты


    Монетизировать игру решили через микроплатежи. У меня уже был опыт с баннерной рекламой в приложениях, но интегрировать её в monogame было не просто, а точнее просто лень, да лояльность пользователей должна была повыситься, в результате от неё отказался. Альтернатив баннерной рекламы в виде полноэкранной и видео рекламы на WP было мало.

    Тернистый путь разработки удалось завершить только в сентябре 2014 года.

    Игра вышла в свет на платформе WP8 с 5 ландшафтами, в последствии их количество было доведено до 7. За заезд начисляются монеты, размер полученной прибыли зависит от количества перевезенных камней, от вида камней, от времени прохождение, как далеко были увезены камни и еще нескольких факторов. Так же мы сделали 9 различных машин, которые можно купить за игровую валюту, но их нельзя было как-либо модифицировать, посчитав, что это не нужных функционал, но об этом в следующей статье…

    Промо игры


    Выводы:

    Как можно меньше цепляйтесь за старое, оно может тянуть вас назад, старайтесь смотреть вперед, если что-то хорошо на текущий момент, то возможно через n месяцев разработки оно будет не актуально.
    Как говорится —
    дорога ложка к обеду
    На конец 2013 года данная игра была востребована, а вот на конец 2014 – уже мало, тк летом 2014 вышел «Hill Climb Racing» и другие игры.

    Я конечно получил бесценный опыт, но хотелось немного большего…

    Пишите в комментариях каким аспектам стоит уделить больше внимания или вообще рассказать подробно.

    Вторая часть — История разработки и жизни одной маленькой игры. Релиз
    Поделиться публикацией

    Комментарии 18

      +2
      Эскизы офигенны. Не думали на основе именно эскизов сделать графику?
        +1
        Если честно даже не думали… стиль был выбран изначально.
        Видел несколько проектов с похожей рисовкой, если честно не очень пошли, в статике смотрится хорошо, но в динамике не очень. ИМХО
          0
          эти рисунки должны анимироваться, как в мультипликации. была (и есть, наверное) такая школа, когда кадры намеренно выполняются «движущимися» штрихами. как пластилин, только штрихами на бумаге.
          вот тогда всё смотрелось бы хорошо. наверное )
            0
            Может запилить сверху шейдер, который будет штихи рисовать?
            Правда, боюсь, если эти штрихи геренировать случайно, изображение будет очень сильно мельтешить.
            Как вариант — разбить изображение на отдельные штрихи, и их уже чуть-чуть смещать по одиночке во время движения. Но, блин, тогда телефон всю эту радость может не потянуть…
              0
              если чистая динамика, то это уже всё надо так рисовать — подвижными векторами, путями.
              может проще именно мультипликацию сделать? делают же игры на базе съёмок пластилина. здесь статья была про это из нескольких частей. ничем не отличается от рисованных мультиков.
              0
              мне кажется это будет интересно смотреться, но это будет такой труд…
          0
          А как насчет обратной совместимости в Windows Phone 10? Игра нормально работает, собранная под 8-ю версию? Я тоже делаю свой движок, уже довольно много всего реализовано, но кроссплатформенный — пока ios & android. Вот как раз планирую сделать поддержку Windows Phone. Какой на текущий момент результат по скачиванию? Отбилось затраченное или вышли на 0?
            0
            Из прямых затрат был только художник и то половина, а также различные активности для продвижения, их я отбил и даже в плюсе, но если оценить мои трудозатраты, то нет…
            По поводу совместимости. Если приложение написано под wp71, то на wp10 могут (и то не факт) возникать проблемы с разрешениями. Если под wp81, то на wp10 все хорошо.
            На текущий момент в игре в районе 1к уникумов в день. Сейчас на Wp мало новых устройств выходит, те в основном это старые пользователи. В 2014 году году был пик в 15к уникумов в день.
            0
            Интересно было бы увидеть более подробные данные о публикации, скачивании и продвижении.

            • Дата выхода (сентябрь 2014, полагаю?)
            • Реклама до выхода, во время и после
            • Статистика скачиваний в первые дни, первый месяц, каждый год.
            • Сколько активных пользователей сегодня.
            • Что либо ещё, что может быть интересно по поводу скачиваний или раскрутки.
              0
              Спасибо за цели на, что сделать акцент.
              Я собираюсь сделать небольшой цикл статей по игре и её жизни, как раз вторая часть и будет про релиз, я её планирую на следующей неделе опубликовать…
              0
              Мой такой комментарий наверное для Вас ой как не первый, и все же я спрошу. Можно ли сделать игру после освоения одного только php?.. В планы входит javascript.
              Или для игр особые языки?
                0
                Я так понимаю речь идет о играх для Web? Да игру сделать на html + php можно и таких игр куча, но javascript расширит ваши возможности и с точки зрения геймплея и с точки зрения возможностей!
                  0
                  Очень благодарю за ответ. Он меня обнадежил)
                  0
                  На php игры это что-то вроде Комбатса или Территории старых. С джаваскриптом можно допилить до Двара или подобного.
                    0
                    Я так поняла, что это по сути фермы? Иногда без анимации, иногда с минимумом анимации, да?
                      +1
                      Неа, даже фермы это уже или флеш или очень много джаваскрипта.
                      PHP — для обработки входящих данных, обработка и работка с базой и вывод одной странички. Раньше были популярны браузерные игры на php и простом js, когда весь интерфейс был как, грубо говоря, текстовая страница с картинками.
                      image
                      И PHP хватало, чтобы «показали страницу с инвентарём — игрок нажал надеть штаны — в базе надели штаны — выдали новую страницу и надетыми штанами».

                      Чтобы делать те же фермы или просто более сложные игры, берут js или flash, через него делается весь интерфейс, анимации, действия и всё всё. Роль PHP в таких играх это, например, получить запрос «купи морковку» и вернуть ответ «морковка куплена», без картинок и прочего.
                        0
                        Спасибо за ориентир. Смотрю, сайтов по работе с флеш много.
                  0
                  Игры в процессе разработки могут просто потерять тренд или морально устареть. Не легко все это.

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

                  Самое читаемое