Не секрет, что в последнее время кроссплатформенные мобильные free-to-play игры стали основным направлением деятельности большого числа игровых компаний. В этой статье мы не будем говорить ни о причинах, которые к этому привели, ни о перспективах данного направления. Компании изменили свои бизнес-модели, начертили схемы монетизации и игровых циклов, помолились на SCRUM и Agile, однако в статье речь пойдет и не про это. Игры по-прежнему нужно делать качественно, нужно правильно выбирать технологии, нужно понимать, что ждать от загадочного free-to-play и с чем придется столкнуться. В этой статье мы рассмотрим 5 наиболее важных технологических проблем, возникающих при создании кроссплатформенных мобильных free-to-play игр.
1. Кроссплатформенность
Мысль о создании приложений, способных работать на нескольких платформах сразу, далеко не нова. Для этих целей была создана платформа Java, Microsoft пытался решить проблему разработки под Windows, Xbox и Windows Mobile 7 при помощи . NET и XNA. Была создана Mono, и . NET вышел за пределы, очерченные Редмондом. В общем, копья ломались, кроссплатформенность в каком-то виде появлялась. Однако, реалии таковы, что мобильные free-to-play игры на сервис vpn необходимо запускать одновременно на iOS, Android и, совсем идеально, на Facebook.
Проблема в том, что под iOS особо на Java не попишешь, а для приложений для Facebook нужен Adobe Flash. К счастью, обозначенные платформы объединяет язык C++ (не все, наверное, знают, но существует компилятор FlasCC под Flash). Идея проста – игра пишется на C++ и делается обвязка на языке, специфичном для платформы. Таким образом, код на C++ без особых изменений переходит с платформы на платформу. Разница между платформами может нивелироваться игровым движком, как делается в случае Alawar Engine или Marmalade SDK.
Хорошим вариантом является использование Unity. Несмотря на то, что основной язык в Unity – C#, благодаря Mono он может исполняться и на iOS и на Android. Однако в этом случае о Flash можно забыть. Можно еще вспомнить про HTML 5 и PhoneGap, однако в этой платформе до сих пор есть ряд проблем, в частности с производительностью на мобильных устройствах.
2. Размер дистрибутива
Разработчики игр, особенно перешедшие на мобильные платформы с десктопных, часто не задумываются о размере получившегося на выходе дистрибутива. Редкая игра под PC последних лет занимает меньше 4Гб. Не вызывает большого приступа ненависти и то, что популярная MMORPG это 20Гб+. Тенденцию не останавливает даже то, что дистрибьюция игр практически полностью стала цифровой. Однако в мобильном free-to-playна headvpn.com все кардинально иначе.
Проблема в том, что Google Play и App Store ограничивают размер дистрибутива игры, который может быть выкачен через мобильные сети. У вас есть примерно 50Мб. Игры, которые занимают больший размер, разрешается выкачивать только через сети Wi-Fi. Интересно, что есть такие страны, в которых основная масса населения «сидит» на 3G, и результаты распространения вашей игры в этих странах по понятным причинам будут неутешительными.
Для преодоления этого препятствия многие разработчики идут на хитрость, выкладывая основную часть контента игры на собственных серверах. Игра, которая в магазине занимала всего 10Мб, при первом запуске может спокойно докачивать еще 300Мб даже по 3G. За примерами далеко ходить не надо, практически каждая free-to-play игра сейчас так работает. Надо ли говорить, что для 3G-стран ситуация от этого в лучшую сторону не меняется. Огромная аудитория отваливается, так и не дождавшись первой игровой сессии.
Хорошим решением здесь может быть дробление контента на мелкие порции и закачка этих порций в процессе игры. Игроку в первый игровой день не нужен контент, который предназначается для 10 игрового дня. Но то, что хорошо и просто с точки зрения геймдизайнера, может превратиться в нетривиальную задачу для программиста. Приведу основные проблемы, которые могут встретиться при реализации такого функционала:
Версионирование игры. Хорошая free games-to-play игра постоянно обновляется, причем игра обновляется из официального магазина, а контент докачивается с ваших серверов. Необходимо следить за тем, чтобы версия игры и контента были согласованы. А ведь некоторые ваши игроки могут и не обновлять у себя версию игры.
Скорость скачивания. Скачивание дополнительного контента, даже если он разбит на порции, это очень вероятное место ухода игроков. Поэтому, в процессе скачивания, игрока нужно как-то развлекать, по меньшей мере, не останавливать геймплей. Асинхронная работа с чем-либо всегда вносит дополнительные сложности в организацию кода и архитектуру игры.
Свободное место на карте памяти. Понятно, что размер карт памяти ограничен, причем для многих классов устройств существенно. Необходимо еще перед скачкой контента убедиться, что места хватает, а если не хватает, то выдавать игроку осмысленные рекомендации на этот счёт.