Огромное спасибо всем Вам за поддержку и конструктивную критику - я несказанно рад, что игра пришлась по душе многим читателям - это очень вдохновляет! Честно!
Вы также хотели видеть этапы создания игр на других платформах, поэтому, в продолжение поста http://pikabu.ru/story/sozdanie_mobilnoy_igryi_4061791, как и обещал, выкладываю небольшую историю создания игры для Windows платформ, основанную на личном опыте.
Опять же, как и предыдущий, данный пост содержит материалы, которые будут, как мне кажется, интересны людям, планирующим начать разработку, но не знающим, с какой стороны к этому подойти. Здесь будет достаточно много приятных плюшек (например, как раздобыть беспатные версии Visual Studio или Xamarin Studio на легальной основе, как бесплатно хоститься на Microsoft Azure, и что делать, если у Вас нет CorelDraw, а очень надо).
Я решил, что цель данного поста будет не совсем про игру и разработку, сколько про советы по снижению входного порога для старта. Ведь, многие не знают, к чему приступить сначала, а те кто приступил, возможно, выкладывают свои кровные на вещи, которые вполне могут достаться им абсолютно бесплатно.
Предисловие, послужившее причиной разработки данной игры
Совсем недавно (пару месяцев назад) мне пришло приглашение поучаствовать в ежегодном студенческом мероприятии от Microsoft под названием Microsoft Student Accelerator (MSA), которое посещать, честно говоря, не особо хотелось (это мероприятие отнимало порядка двух месяцев и требовало периодически приходить на занятия, а это никак не укладывалось в мой рабочий график). Однако, друг, который также получил приглашение, предложил сходить хотя бы раз, так сказать, для "фана" и расширения кругозора. Ну, чтож, субботнее утро можно на это и выделить, пожалуй.
Данное мероприятие состояло из трёх фаз (каждая из трёх модулей), на каждой из которых для прохождения в следующую фазу необходимо было выполнить какой-то набор определённых действий - достаточно стандартная процедура для отсева людей, которые как раз приходят для "фана" и просто занимают место. Но я "прошёл" первую фазу с успехом - требования у этой фазы были из разряда "Посмотри десять роликов от Microsoft о создании приложений".
Вторая же фаза заключалась в практической демонстрации навыков разработчика и требовала для перехода на неё предоставить работающее приложение написанное для Windows платформы. Благо, не было необходимости приходить на занятия - всё можно было делать дома. Поэтому небольшой азарт взял своё, и я занялся поиском идеи для приложения. Идея пришла достаточно быстро и спонтанно - мой знакомый из Китая показал мне игру "24 очка" (или Китайский покер), в которую он с друзьями любит играть для поддержания мозгового тонуса. Эта игра меня достаточно сильно затянула и представляет собой математический тренажёр для мозга. В итоге, она и легла в основу моего будущего приложения. А почему бы и нет? Легкие правила, небольшой, по прикидкам, объём работы, да и польза самому себе (хорошая тренировка перед игрой с реальными противниками).
Правила игры достаточно просты. В игре 13 раундов, и в каждом из раундов перед игроками на стол выкладываются четыре карты из колоды (номиналы у карт стандартные для покера). Далее, игроки должны быстрее оппонентов получить из этих карт значение в 24 очка любым доступным способом (сложение, вычитание, умножение, деление, дробные числа, отрицательные и т.д.) . Игрок, получивший это число быстрее всех (и при этом использовавший для получения все четыре выпавшие карты), забирает карты, и начинается следующий раунд. В конце, когда колода иссекает, выигрывает игрок с самым большим суммарным количеством очков на заработанных в предыдущих раундах картах.
Собственно, это всё.
"Не понятно!" - скажете Вы. И действительно, поначалу, это смотрится дико. Однако, мозг перестраивается достаточно быстро, и вот Вы уже в игре стараетесь успеть раньше соперников.
К примеру, выпали карты Король(13), Шестерка(6), Дама(12), Тройка(3). То есть, по сути, нам необходимо составить уравнение с этими четыремя значениями в левой части и с числом 24 в правой. К примеру, вычисление можно выполнить так: (13-12+3)*6=24. И после этого, раунд выигран.
Или, например, на столе карты четверка(4), тройка(3), четверка(4), десятка(10). В таком случае, вы можете забрать карты, если озвучите вычисление такого вида: (10-3)*4-4=24. И в этом случае, карты тоже Ваши!
Но, это, скорее, прелюдия. Теперь давайте перейдём к созданию игры, как и в предыдущем посте, по пути от идеи и до публикации.
Забегая вперёд, сразу оговорюсь, что до третьей фазы MSA я не добрался, так как она требовала действительно много свободного времени для практически ежедневной работы и ежедневных посещений. Поэтому, после написания приложения, я решил покинуть это мероприятие.
А вот друг успешно завершил требования по всем трём фазам! Привет тебе, Серёг!
Также, одним из требований для приложения была публикация на Azure-облачке или в Windows store. Но здесь есть плюс - студентам за Windows Store ничего платить не придётся - тут можно пройти более доступным путём. Для этого отлично подходит студенческий билет, по которому каждый студент или школьник может заполучить кучу бесплатных няшек для своей учёбы или работы. Вот выдержка из блога Microsoft на Хабре:
"В рамках облака Microsoft Azure всегда существовала возможность размещать бесплатные Azure Web Sites, однако для получения доступа к облаку была необходима регистрация с кредитной картой, что многих останавливало. Теперь же студенты в рамках программы DreamSpark могут получить доступ к Azure Web Sites и некоторым другим возможностям облака Microsoft Azure без кредитной карты. Это означает, что всем студентам и школьникам доступен бесплатный облачный хостинг, где они могут размещать не только свои приложения на ASP.NET, PHP, Python, Node.js и других технологиях, но и разворачивать сайты на системах управления контентом типа WordPress и Joomla! Подробные инструкции и небольшой видеокурс доступен на сайте studentazure.ru". - Microsoft блог
Такие условия действуют для многих программ. Например, таким образом я выбил себе бесплатный Xamarin Studio (среда для разработки под мобильные устройства разных платформ), который имеет достаточно высокую цену для обычного пользователя. Это всё производители предлагают не от жизни хорошей, а для "долгосрочных вложений" в условиях жёсткой конкуренции. Ведь, если студенты знают Xamarin лучше, чем, например, Cordova, то и работать они будут именно с Xamarin, а значит потом, с большой долей вероятности, будущему работадателю раскошелиться придётся именно на Xamarin Studio.
По такой же схеме, кстати, есть возможность заполучить даже Windows 7, 8, 10 или Visual Studio Professional, но это зависит исключительно от Вашего учебного заведения. Таким же способом, есть возможность создать и Windows Store Developer аккаунт, что я, в итоге и сделал.
Не стесняйтесь проверять условия приобретения каждой программы на официальном сайте разработчика. Вполне может оказаться, что она бесплатна для студентов, школьников или преподавателей.
В этот раз, к самостоятельному дизайну у меня душа не лежала, поэтому было принято волевое решение задники и игральные карты качать из интернета. В интернете выложено достаточно много материалов, которые можно бесплатно использовать в любых (даже коммерческих целях). Этим видом ресурсов я, собственно говоря, и воспользовался. К примеру, карты я взял с ресурса snap2objects (первые в выдаче при поиске "playing cards free" по изображениям), задник - с какого-то ещё. Операторы (+, -, *, /) были достаточно быстро созданы в Gimp.
Вы можете сильно сэкономить время и силы, если поищите сопутствующие материалы в сети. Многие ресурсы выкладывают материалы под лицензиями "Creative Commons" или "Бесплатно для частного и коммерческого использования", которые означают, что Вы вправе ими распоряжаться полностью или с некими ограничениями.
Проблема может быть только в формате скачиваемых материалов. Например, карты, которые я скачал, были в векторном формате, который не читается с помощью растровых редакторов типа Photoshop или Gimp. Но тут на помощь приходит Inkscape - достаточно мощный, а главное бесплатный, аналог для CorelDraw!
Итак, дизайн приблизительно в голове собран - настал черёд выбора среды разработки. Здесь, благо, выбор был невелик и пал, само собой, на Visual Studio. С версии VS2013, если не ошибаюсь, Microsoft стала предлагать пользователям бесплатную версию Visual Studio под рабочим именем Community. Любой желающий (НЕ ТОЛЬКО СТУДЕНТ) может скачать, установить и использовать данную версию для разработки почти любого ПО. Само собой, там есть небольшие ограничения, но для обучения (да и для работы, честно говоря), версия подходит идеально.
Всё написание кода, компиляция и тесты выполняются в среде Visual Studio - больше дополнительных приложений нам не понадобится.
Главное в моей разработке - это личное удовлетворение от продукта, который ты делаешь. Поэтому, сразу было решено делать идентификацию в игре (Человек должен ввести своё имя в поле ввода) и уровни сложности - именно этих вещей я бы ждал от игры такого вида.
Однако, как я говорил, в карточную игру необходимо играть, как минимум, двум игрокам. Но, в данном случае, я посчитал, что создание бота просто бесполезно, так как он "просмотрит" все возможные варианты из четырёх цифр за пару секунд и выдаст ответ ещё до того, как игрок успеет ознакомиться со всеми картами на столе. Поэтому, было принято решение добавить таймер, по истечении которого, очки бы и преходили к оппоненту, если игрок не успел подобрать комбинацию. Живой оппонент не рассматривался вообще, так как мультиплеер бы не использовал вообще никто, ибо игра лепилась для домашнего задания от MSA, но никак не для распространения. Чтобы с таймером было поинтереснее, уровни сложности я прицепил именно к нему, то есть просто поставил разное время переключения на следующий раунд для простого, среднего и сложного уровня.
Достаточно сложно было понять, каким образом реализовывать само уравнение для нахождения числа 24 - ведь оно может быть практически любого вида. Но, недолго думая, я решил просто разделить всё построение уравнения на отдельные части, в котором участвуют только два числа. В таком случае, последовательность действий игрока для привера (10-3)*4-4=24 будет такой:
10-3=7 (7 записывается для будущего действия),
7*4=28 (28 записывается для будущего действия),
28-4=24.
Такая же модель поведения реализована в игре.
Старайтесь визуализировать этапы разработки ещё до начала разработки. Таким образом, Вы сэкономите себе кучу времени и сил, которые тратятся на нестыковки и переделки.
Ну а дальше пошло кодирование (порядка 1500 строк) и присвоение каждому объекту на экране своих функций и параметров. Так, как карты должны имет свои значения, то каждая картинка была пронумерована от 1 до 54 (два джокера я вставил на всякий случай, но они не пригодились).
Далее, программа выдаёт четыре случайных числа от 3 до 54 и передаёт номера картинок, соответствующих выпавшим номерам, на экран.
Ну а потом уже были допилены счётчик очков, стандартные ошибки (типа, только целое число при делении и проч, вот только деление на ноль не учёл тогда - игра вылетает). И, в целом, игра готова.
Все вопросы по коду можете задавать в комментариях или же просто можете скачать архив с исходниками на этой странице (http://24points.azurewebsites.net/download.aspx). Там же доступна и ссылка на готовую версию игры, опубликованная в Windows Store (для лл: https://www.microsoft.com/en-us/store/apps/24points/9nblggh5...).
На разработку этой игры ушло порядка трёх дней, на публикацию - чуть больше. Регистрация в Microsoft Development Centre проблемой большой не была - для студентов эта процедура также бесплатна, как и прочие няшки. Поэтому просто зарегистрировался да и опубликовал скомпилированное приложение на сайте.
Несколько дней заняла сертификация приложения. Дело в том, что каждое приложение проходит достаточно строгий контроль на соответствие требованиям (наличие нежелательного ПО, возрастные рейтинги, описание приложения, скриншоты и т.д.). Одним из требований являлось получение возрастного рейтинга для игры. И вот тут появился момент, который мной предусмотрен не был. Так как игра использует изображения и значения карт для покера, она автоматически становится не достуной для детей, которым ещё не дозволено законом играть в карты. Поэтому, рейтинг, который я получил, в итоге оказался в некоторых странах 16+.
То есть, в каких-то странах, если Вам менее 16 лет, но Вы собрали отличный симулятор покера - сами Вы его запускать не имеете права! Однако... Ну, мне далеко уже не 16, поэтому особо для меня это проблемой не стало. Однако, об этом надо помнить!
Каждая игра обязательно проходит сертифицирование на определение возрастного рейтинга. Учитывайте это на начальных этапах разработки.
Ну а далее я, стандартно, наклепал несколько скриншотов, небольшие пояснения по игре (всё на английском, однако сам геймплей проблемным быть не должен - слов там крайне мало).