Верю – не верю в инди-разработку. Часть 1

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

    image

    Мимо меня этот момент не прошел, а объял всей своей сущностью и велел что-то делать. Работу менять не хотелось, а вот создать что-то вне этой самой работы можно было. Так как на работе приходится заниматься созданием исключительно полезных приложений – захотелось сделать что-то совершенно бесполезное иное. В моем понимании это должно было быть развлекательное приложение, а значит игра. В худшем случае игра должна пойти в копилку портфолио, которое не запрещают договора о неразглашении коммерческой тайны (да-да, работаешь много, а показать ничего не можешь, так как нельзя). В лучшем же случае, чтобы игра радовала – она должна приносить хоть какие-то деньги.

    От идеи к реализации


    Для начала необходима идея и требования к конечной игре. Разумеется, сразу же, захотелось сделать пошаговую 3D стратегию с элементами RPG класса AAA+ с лазерами и эльфами. Но нужно учитывать тот момент, что фантазия ограничивается возможностями, а значит требования нужно подогнать под эти возможности. С программированием проблем нет и опыт написания сетевых приложений имеется, а это говорит о том, что игра должна быть мультиплеерная. Но так как из художеств я владею только дзеном наложения теней в фотошопе, то графики в игре должно быть минимум.

    Пришлось серьезно задуматься над жанром будущей игры. Стрелялки, стратегии и гонки требуют красивой графики, значит разработка одного из таких жанров в какой-то момент упрется в невозможность реализации. А вот карточные игры – соответствуют всем требованиям. Но тут другая проблема – карточных игр настолько много, что заходить туда нужно только с оригинальной игрой. Разумеется «покер» и «дурак» отпадают сразу. Пришлось составлять список возможных карточных игр и проводить опрос среди знакомых, который показал, что многие знают игру «Верю – не верю». И что не могло ни порадовать — толковых реализаций такой игры не было ни на маркетах, ни в соц. сетях!
    Решение принято.

    Пробежавшись по симпатичным карточным играм гигантам – для внешнего вида игры были сформулированы следующие требования:
    • Должен быть карточный стол как в казино;
    • Рубашка карт должна быть привычная глазу и «дорогая»;
    • Масти карт и их достоинства должны быть легко узнаваемыми;
    • Противники должны иметь аватарки и имена, дабы быть уникальными и ощущение игры с живым человеком не терялось;
    • Должны быть ежедневные начисления бонусов, чтобы проигравшиеся возвращались;
    • Должны быть привлекательные девушки с большими сись

    Карты, столы, кнопки и буквы создать получилось самостоятельными силами, а вот с девушками что-то нужно было делать. И за это больше спасибо знакомой художнице – нарисовала требуемое за спасибо (Спасибо, Аня!). Правда ближе к публикации пришлось самостоятельно убирать немного кричащей эротики, и замазывать слишком уж откровенные места. (Подробнее в следующей статье).

    Вывод 1: Нужно рассчитывать на свои возможности, тогда не наступит момента, когда вам что-то нужно, а вы этого получить не можете (Например 3д модель персонажей для MMORPGMEGA AAA+). Когда вы манипулируете возможностями и желаниями – вы не стоите на месте

    Концепт
    Концепт стилистики игры

    Let’s cake make


    Первое что необходимо для многопользовательской игры – это серверная часть. Что бы все было максимально честно — серверная часть должна обрабатывать все возможные действия пользователей, отсеивать неверные комбинации и всякие «чит-ходы». Иными словами – логика должна быть на сервере а не у клиента.

    Разберем составляющие серверной части:

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

    Дальше – обработка действий клиента и связь нескольких участников в одну игру. Этим занимается сокет-сервер.

    Наиболее доступным языком для сокет-сервера оказалась Java. И раз уж дело встало за написанием сокет-сервера, то решено было сделать API для сервера. Получилось вполне неплохо. На удивление, для полноценной работы игры, понадобилось всего 8 api. Т.е. написание сокет-сервера оказалось гораздо проще, чем казалось с самого начала.

    Вывод 2: Не стоит бояться сложностей. Все гораздо проще, чем может показаться на первый взгляд.

    Выбираем платформу для клиента


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

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

    ActionScript (Web)
    Плюсы: Очень легко работать с графикой. Довольно легкий язык. Кроссплатформенность. Возможность интегрирования в соц.сети с целью привлечения дополнительной аудитории.
    Минусы: Никаких мобильных устройств, да и Flash’ом, по моим наблюдениям люди пользуются все меньше.

    HTML + JavaScript (Web)
    Плюсы: Очень легко работать с графикой. Довольно легкий язык. Кроссплатформенность. Возможность интегрирования в соц.сети с целью привлечения дополнительной аудитории.
    Минусы: Беда (ИМХО) с работой на мобильных устройствах средней ценовой категории. Сокет-сервер необходимо привязывать к стандартам протокола RFC 6455 (а значит увеличить порог вхождения для других языков программирования)

    Unity (огромное количество платформ)
    Плюсы: Полная кроссплатформенность. Возможность интегрирования в соц.сети с целью привлечения дополнительной аудитории.
    Минусы: Несмотря на то, что игра планируется полностью в 2d формате – придется привыкать что работаешь с 3D. Высокий порог вхождения.

    Java (Android)
    Плюсы: Довольно легкий язык. Большое количество целевых устройств.
    Минусы: Охват только одной платформы.

    Swift (iOS)
    Плюсы: «Престижная платформа». Бо́льшее количество платящей аудитории в сравнении с другими мобильными платформами.
    Минусы: Отсутствие девайсов, на которых можно было бы тестировать разработку

    Немного поразмыслив над списком — выбираем Android, как наиболее оптимальный по возможностям и желаниям.

    Вывод 3: Необходимо оставлять пути для маневра. Кто знает – если ваш проект взлетит – вы всегда сможете дополнить его новой платформой. Если у вас не складывается с одной платформой – можно перейти на другую.

    О создании клиента


    Самым оптимальным вариантом для написания каких-либо игр для Android – это использование OpenGL, что является довольно трудоемким процессом и требует отдельных знаний. Поэтому стоит обратить внимание на движки, которые существенно облегчат работу. Мой выбор пал на AndEngine, что в итоге показало неплохие результаты. Единственное что доставило некоторую проблему, так это правильное позиционирование камеры под разные разрешения экранов. Писать обработку координат под разные форматы совсем не хотелось, а оставлять пустые рамки – все-равно что нагадить в клумбу. Пришлось повозиться с форматом камеры которая бы позволяла заполнить весь экран изображением, при этом обрезая излишки и не растягивая содержимое. Получилось довольно неплохо, и вполне симпатично на всех форматах устройств. Описывать работу с AndEngine в данной статье не предполагается, так как тема неоднократно упоминалась на хабре.

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

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

    Total:


    Обозрев проделанную работу – можно утверждать, что разработка Инди-игры может обойтись вам в приятно проведенное время, при этом абсолютно бесплатно в финансовом плане (Создание, не публикация). Цель статьи в достижении понимания – насколько трудоемким является процесс создания игры и способен ли программист только лишь с навыками программирования создать что-либо играбельное. А так, как что-то играбельное программист может, то верить в инди-разработку все-таки стоит. Но отчасти. Потому как результаты должны приносить плоды. О том принесет ли какую-либо выгоду данное увлечение, как прошла публикация, и на что все-таки придется потратить деньги, решено перенести в следующую статью, так как просто создание игры – это лишь вершина айсберга. И лишь попытавшись получить прибыль с игры, силами одного программиста – можно понять – стоит ли верить в инди-разработку.

    Only registered users can participate in poll. Log in, please.

    Верите ли вы в успех инди-разработчиков?

    • 39.4%Да179
    • 5.7%Нет26
    • 7.7%Кто это такие?35
    • 32.2%Скорее да, чем нет146
    • 15.0%Скорее нет, чем да68
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 20

      0
      Хочу добавить, что на ios не нужен сервер, его функции выполняет Game Center. Для многоплатформенной игры это минус, а для быстрой реализации — плюс.
      Тема карточных игр — довольно благодатная для заработка и экспериментов в области дизайна карт и интерфейса приложения. А тема сисек в игре Верю-Неверю не раскрыта. Какие бонусы у победителя?
        +3
        Тему сисек пришлось закрыть, только лишь для того, чтобы при публикации охватить больше возрастной аудитории. О том, какими они были и что из этого стало — обязательно напишу в следующей части статьи.
        Тема карточных игр — довольно благодатная для заработка

        Мне тоже так кажется, поэтому данная идея и начала воплощаться.
        А вот тема мотивации поиграть действительно не раскрыта, о чем обязательно напишу.
          +1
          Но ведь можно сделать второе приложение — «Верю-Не верю 18+».
        +2
        Стоит заметить что по поводу того что у вас в пункте минусов ActionScript написана явная неточность. ActionScript3 чуть ли не легче чем остальные приведённые в списке технологии легче и проще компилируются под мобильные устройства, включая iOS(не имея при этом Mac). Ну и количество игр написаных на нём при этом работающих на телефонах, я думаю даже больше чем на AndEngine, просто потому что разработчиков игр на AS3 больше.
        Так же, справедливо будет отметить что Unity неплохо работает с 2D играми, даже в стандартной поставке без дорогостоящих плагинов, при этом думать о том что работаешь с 3D приходится не так уж и часто. Настоящим же минусом у него является то что при запуске, в бесплатной версии будет появляться логотип движка, и чтобы его убрать нужно заплатить круглую сумму, а также платность некоторых плагинов облегчающих разработку.
        Напрашивается вывод на то, что вы пытаетесь оправдать собственный выбор, а не на объективную оценку возможностей движков представленных в списке.
          +1
          Напрашивается вывод на то, что вы пытаетесь оправдать собственный выбор, а не на объективную оценку возможностей движков представленных в списке.

          Именно. Из предоставленных возможностей рассматривался вариант наиболее быстрого и просто написания игры учитывая собственные умения и навыки. В итоге выбрано то, где больше скилов, а значит быстрее и легче будет сделано. ИМХО, в случае, если бы данный проект рассматривался как коммерческий, то выбор бы пал на Unity
            0
            Не стоит забывать недавнюю новость Unity о прекращении поддержки веб-плеера в недалеких перспективах. Хотя я в эту новость не вдавался, но она мелькала на страничках хабра в каком-то Unity-дайджесте.
              0
              Не в перспективах, а уже, по факту. Chrome этот плагин больше не запускает. А это самый популярный браузер.
            0
            Если вы как вариант рассматривали ActionScript — посмотрите и на язык Haxe, его наследника.

            Под Haxe уже есть набор хорошо документированных мультиплатформенных движков, к примеру, HaxeFlixel

            У него минусов ActionScript — он генерирует и Android, и HTML5, и iOS, и десктопный вариант, и даже умирающий Flash не забыт.

            Адаптация кода игры под разные платформы минимальна, простейшие движения, вроде Flappy Bird или подобных ей игр от KetchApp, могут компилироваться вообще без изменений.
              0
              Есть ещё AIR. Знаете такую технологию?
              На своём опыте — сopy-past несложной игры в стиле hidden object моментально задеплоился на устройство без изменений и отлично отрабатывал на displayList.
              HaXe для простых в плане визуальных эффектов игр не нужен от слова «совсем».
                0
                я бы не сказал, что он нужен для сложных :)

                если есть готовая игра на ActionScript — пожалуйста, используйте AIR

                я предлагаю лишь расширить список. А по поводу превосходства того или иного выбора — это надо лично себя спрашивать, с учетом всех минусов и достоинств.
                  0
                  Android, ios, desktop и веб (flash) — AIR всё это умеет.
                  Тут больше важно то, каким языком уже владеет тот, кто выбирает технологию. В случае, если это as3, то выбор HaXe — лишь трата времени и сил, и дело не только в том, что библиотеки под HaXe или отсутствуют или обновляются редко. Я за 1.5 года работы на этой платформе столкнулся с множеством проблем, которых не испытывал с as3. В целом, остался не сильно доволен этим опытом.
                    +1
                    У haxe хватает минусов, НО:

                    1) отличная кроссплатформенность — охватывает веб / десктоп / мобилки
                    2) при экспорте под любую платформу, вы получаете нативный проект, который можно модифицировать, а не готовый бинарник
                    3) из пункта выше следует, что можно при необходимости использовать любой нативный код, стороннюю библиотеку
                    4) если уперлись по производительности в каком-то моменте, можно переписать модуль для конкретной платформы, на нативном языке
                    5) опенсорс!
                      0
                      Плюсую за всё, кроме первого пункта :)
                      Все остальные пункты прямо кричат «я — HaXe, поковыряйся со мной, бро», чем я обычно и занимался, вместо разработки продукта, что, по моему мнению, очень грустно.
              +1
              Я верю в успех продуманного инди, а не наивных новичков с горящими глазами.
              Тему эротики вы зря закрыли. Мне кажется, что вы бы больше выиграли, чем проиграли. Сделайте клон с темой и посмотрите.
                0
                Абсолютно не важно выстрелят у вас проекты или нет, главное что вы наберетесь опыта на своих велосипедах развивая логику и интуицию, в итоге придя к выводу что шаблоны и паттерны класная штука :)
                Я за инди розработку, хотя в команде веселее!!!
                Есть много примеров инди розработки которые в итоге принесли если не милионы (не будем говорить об уникальных индивидах) то сотни и десятки тысяч долларов, той самой валюты без которой жизнь не на столько прекрасна, особенно если хотите создать свой ИТ-бизнес )))
                  0
                  Какой хостинг использовали, если не секрет?
                    0
                    Пока российский mne. После перевода на основные языки планируется перейти на амазон
                      0
                      Советую посмотреть еще Google App Engine, он бесплатный в пределах определенного трафика (Это вариант PaaS), Ну а если IaaS больше по душе и не жалко средств, то Google Cloud Computing cloud.google.com/pricing как по мне подешевле. Amazon имхо — это если бизнес «удался»…
                    0
                    совсем одиночный инди получается успешным только у единиц
                    честно говоря, идея для игры показалась слабоватой, с вашими-то навыками
                      0
                      Ну, как показывает практика — совсем одиночного инди не получилось даже здесь.
                      По поводу идеи игры — в настоящий момент вы можете увидеть только каркас. Тему «как привлечь игрока» рассмотрим, как и обещал, в следующей статье. Уже готовятся дополнения, которые должны сделать игру притягивающей. Такие «фишечки» должны будут превратить «тапанье по экрану» в интересное занятие с соревновательным духом. Идеи о реализации есть, они обязательно будут добавлены и о них обязательно будет рассказано. Весь цикл статей хочется посвятить именно идее инди. И совместно с сообществом разобрать все этапы разработки и внедрения. В общем слабость идеи компенсируется более быстрыми результатами и безболезненностью экспериментов.

                    Only users with full accounts can post comments. Log in, please.