
Мимо меня этот момент не прошел, а объял всей своей сущностью и велел что-то делать. Работу менять не хотелось, а вот создать что-то вне этой самой работы можно было. Так как на работе приходится заниматься созданием исключительно полезных приложений – захотелось сделать что-то совершенно бесполезное иное. В моем понимании это должно было быть развлекательное приложение, а значит игра. В худшем случае игра должна пойти в копилку портфолио, которое не запрещают договора о неразглашении коммерческой тайны (да-да, работаешь много, а показать ничего не можешь, так как нельзя). В лучшем же случае, чтобы игра радовала – она должна приносить хоть какие-то деньги.
От идеи к реализации
Для начала необходима идея и требования к конечной игре. Разумеется, сразу же, захотелось сделать пошаговую 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: Правильное сочетание возможностей и желаний приводит к скорейшему результату.

Скриншот первой, настоящей партии игры
Total:
Обозрев проделанную работу – можно утверждать, что разработка Инди-игры может обойтись вам в приятно проведенное время, при этом абсолютно бесплатно в финансовом плане (Создание, не публикация). Цель статьи в достижении понимания – насколько трудоемким является процесс создания игры и способен ли программист только лишь с навыками программирования создать что-либо играбельное. А так, как что-то играбельное программист может, то верить в инди-разработку все-таки стоит. Но отчасти. Потому как результаты должны приносить плоды. О том принесет ли какую-либо выгоду данное увлечение, как прошла публикация, и на что все-таки придется потратить деньги, решено перенести в следующую статью, так как просто создание игры – это лишь вершина айсберга. И лишь попытавшись получить прибыль с игры, силами одного программиста – можно понять – стоит ли верить в инди-разработку.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (20)
WeslomPo
03.12.2015 09:27+2Стоит заметить что по поводу того что у вас в пункте минусов ActionScript написана явная неточность. ActionScript3 чуть ли не легче чем остальные приведённые в списке технологии легче и проще компилируются под мобильные устройства, включая iOS(не имея при этом Mac). Ну и количество игр написаных на нём при этом работающих на телефонах, я думаю даже больше чем на AndEngine, просто потому что разработчиков игр на AS3 больше.
Так же, справедливо будет отметить что Unity неплохо работает с 2D играми, даже в стандартной поставке без дорогостоящих плагинов, при этом думать о том что работаешь с 3D приходится не так уж и часто. Настоящим же минусом у него является то что при запуске, в бесплатной версии будет появляться логотип движка, и чтобы его убрать нужно заплатить круглую сумму, а также платность некоторых плагинов облегчающих разработку.
Напрашивается вывод на то, что вы пытаетесь оправдать собственный выбор, а не на объективную оценку возможностей движков представленных в списке.
psinetron
03.12.2015 09:36+1Напрашивается вывод на то, что вы пытаетесь оправдать собственный выбор, а не на объективную оценку возможностей движков представленных в списке.
Именно. Из предоставленных возможностей рассматривался вариант наиболее быстрого и просто написания игры учитывая собственные умения и навыки. В итоге выбрано то, где больше скилов, а значит быстрее и легче будет сделано. ИМХО, в случае, если бы данный проект рассматривался как коммерческий, то выбор бы пал на UnityAlexBin
04.12.2015 12:34Не стоит забывать недавнюю новость Unity о прекращении поддержки веб-плеера в недалеких перспективах. Хотя я в эту новость не вдавался, но она мелькала на страничках хабра в каком-то Unity-дайджесте.
Frost47rus
04.12.2015 13:03Не в перспективах, а уже, по факту. Chrome этот плагин больше не запускает. А это самый популярный браузер.
Zoolander
03.12.2015 10:32Если вы как вариант рассматривали ActionScript — посмотрите и на язык Haxe, его наследника.
Под Haxe уже есть набор хорошо документированных мультиплатформенных движков, к примеру, HaxeFlixel
У него минусов ActionScript — он генерирует и Android, и HTML5, и iOS, и десктопный вариант, и даже умирающий Flash не забыт.
Адаптация кода игры под разные платформы минимальна, простейшие движения, вроде Flappy Bird или подобных ей игр от KetchApp, могут компилироваться вообще без изменений.Frost47rus
04.12.2015 13:00Есть ещё AIR. Знаете такую технологию?
На своём опыте — сopy-past несложной игры в стиле hidden object моментально задеплоился на устройство без изменений и отлично отрабатывал на displayList.
HaXe для простых в плане визуальных эффектов игр не нужен от слова «совсем».Zoolander
04.12.2015 14:05я бы не сказал, что он нужен для сложных :)
если есть готовая игра на ActionScript — пожалуйста, используйте AIR
я предлагаю лишь расширить список. А по поводу превосходства того или иного выбора — это надо лично себя спрашивать, с учетом всех минусов и достоинств.Frost47rus
04.12.2015 14:12Android, ios, desktop и веб (flash) — AIR всё это умеет.
Тут больше важно то, каким языком уже владеет тот, кто выбирает технологию. В случае, если это as3, то выбор HaXe — лишь трата времени и сил, и дело не только в том, что библиотеки под HaXe или отсутствуют или обновляются редко. Я за 1.5 года работы на этой платформе столкнулся с множеством проблем, которых не испытывал с as3. В целом, остался не сильно доволен этим опытом.dadon
04.12.2015 14:50+1У haxe хватает минусов, НО:
1) отличная кроссплатформенность — охватывает веб / десктоп / мобилки
2) при экспорте под любую платформу, вы получаете нативный проект, который можно модифицировать, а не готовый бинарник
3) из пункта выше следует, что можно при необходимости использовать любой нативный код, стороннюю библиотеку
4) если уперлись по производительности в каком-то моменте, можно переписать модуль для конкретной платформы, на нативном языке
5) опенсорс!Frost47rus
04.12.2015 15:19Плюсую за всё, кроме первого пункта :)
Все остальные пункты прямо кричат «я — HaXe, поковыряйся со мной, бро», чем я обычно и занимался, вместо разработки продукта, что, по моему мнению, очень грустно.
BIanF
03.12.2015 16:31+1Я верю в успех продуманного инди, а не наивных новичков с горящими глазами.
Тему эротики вы зря закрыли. Мне кажется, что вы бы больше выиграли, чем проиграли. Сделайте клон с темой и посмотрите.
Andriyevski
04.12.2015 10:35Абсолютно не важно выстрелят у вас проекты или нет, главное что вы наберетесь опыта на своих велосипедах развивая логику и интуицию, в итоге придя к выводу что шаблоны и паттерны класная штука :)
Я за инди розработку, хотя в команде веселее!!!
Есть много примеров инди розработки которые в итоге принесли если не милионы (не будем говорить об уникальных индивидах) то сотни и десятки тысяч долларов, той самой валюты без которой жизнь не на столько прекрасна, особенно если хотите создать свой ИТ-бизнес )))
temas
04.12.2015 17:42Какой хостинг использовали, если не секрет?
psinetron
04.12.2015 18:00Пока российский mne. После перевода на основные языки планируется перейти на амазон
temas
05.12.2015 17:42Советую посмотреть еще Google App Engine, он бесплатный в пределах определенного трафика (Это вариант PaaS), Ну а если IaaS больше по душе и не жалко средств, то Google Cloud Computing cloud.google.com/pricing как по мне подешевле. Amazon имхо — это если бизнес «удался»…
fo0x
08.12.2015 11:57совсем одиночный инди получается успешным только у единиц
честно говоря, идея для игры показалась слабоватой, с вашими-то навыкамиpsinetron
08.12.2015 12:10Ну, как показывает практика — совсем одиночного инди не получилось даже здесь.
По поводу идеи игры — в настоящий момент вы можете увидеть только каркас. Тему «как привлечь игрока» рассмотрим, как и обещал, в следующей статье. Уже готовятся дополнения, которые должны сделать игру притягивающей. Такие «фишечки» должны будут превратить «тапанье по экрану» в интересное занятие с соревновательным духом. Идеи о реализации есть, они обязательно будут добавлены и о них обязательно будет рассказано. Весь цикл статей хочется посвятить именно идее инди. И совместно с сообществом разобрать все этапы разработки и внедрения. В общем слабость идеи компенсируется более быстрыми результатами и безболезненностью экспериментов.
PapaBubaDiop
Хочу добавить, что на ios не нужен сервер, его функции выполняет Game Center. Для многоплатформенной игры это минус, а для быстрой реализации — плюс.
Тема карточных игр — довольно благодатная для заработка и экспериментов в области дизайна карт и интерфейса приложения. А тема сисек в игре Верю-Неверю не раскрыта. Какие бонусы у победителя?
psinetron
Тему сисек пришлось закрыть, только лишь для того, чтобы при публикации охватить больше возрастной аудитории. О том, какими они были и что из этого стало — обязательно напишу в следующей части статьи.
Мне тоже так кажется, поэтому данная идея и начала воплощаться.
А вот тема мотивации поиграть действительно не раскрыта, о чем обязательно напишу.
zagayevskiy
Но ведь можно сделать второе приложение — «Верю-Не верю 18+».