Про портирование Unity-игр на Windows Phone

Кто-то может предположить, что статистические опросы — важная составляющая любой деятельности, дающая развернутю информацию о том или ином процессе. Но не в случае с портированием игр. Информация о том, что 99% разработчиков ассоциируют этот процесс со словом «боль», думаю, не удивит никого. В связи с этим нужно разобраться, а как все-таки начать работать с платформой Windows Phone в связке с Unity. Разбираться будем на примере последней версии Unity (на момент написания статьи это 4.5.2) и магазинов Windows, и попробуем понять, так ли это сложно на самом деле.Под хабракатом — картинки, радость, счастье и слезы просветления.Дисклеймер: весь показанный в статье код не является образцом для подражания, примером идеального кода и прочих вымышленных и не существующих в природе вещей. Практики, примененные в статье, могут являться одними из множества решений конкретной проблемы. А могут и не являться.Для начала нам с вами, очевидно, понадобится игра. Пара часов несложного кодирования и вымученного геймдизайна подарят нам следующий шедевр игровой индустрии прямиком из 1982 года.

Гифка с демонстрацией геймплея, 1.65mb b0fcd07782cf4e989ad83820e82faa28.gif Игрок двигает мышью вверх-вниз, кораблик его незамедлительно слушается, снаряды вылетают, удивленные враги из другой популярной игры бессплавно погибают в пучине Destroy (gameObject). В общем, все просто.Здесь начинается причина боли номер один — подержка всех возможных разрешений экранов. В нашем случае на помощь приходит простой скрипт, который мы используем для главной камеры в процессе разработки. Скрипт меняет размер game view так, чтобы он (размер) соответствовал соотношению сторон используемого экрана.

Скрипт на pastebin

Для сборки Unity игры под Windows Phone или Windows 8 (с последующей публикацией в Store) нужны Windows Phone SDK 8.0 (который включает в себя бесплатный VS2013 Express), Windows 8 или выше (есть пробная 90-дневная версия), учетная запись Microsoft (тыц), учетная запись разработчика (студенты могут получить ее бесплатно по программе DreamSpark) и, очевидно, устройство на нужной платформе. Unity, согласно оф.документации поддерживает эмуляторы, но работает в них не очень хорошо.

Обработка вводаВ случае с мышью нам практически не нужно делать дополнительных доработок кода — обработка нажатий и перемещений мыши будет достаточным условием для того, чтобы это все работало для touch-экранов мобильных устройств без лишнего шаманства.

То есть, например, Input.mousePosition.x будет возвращать место, где сейчас находится мышь в случае версий для компьютера, и координаты тача (любого) в случае девайса с тачскрином. Аналогично и с остальными методами. Если вы разрабатываете игру сразу под тач интерфейс или хотите обработать какие-то специфические жесты, то на помощь вам придет Input.Touch

Кроме того, если вы хотите, например, выводить целевые сообщения пользователям определенной платформы, можно использовать следующие конструкции#if UNITY_EDITOR// код, исполняемый только в редакторе unity.Debug.Log («Unity Editor»);#endif

Для Windows Phone 8 эта директива может выглядеть так:#if (UNITY_WP8 && ! UNITY_EDITOR) или просто #UNITY_WP8

Подробный список директив и парочку примеров можно посмотреть в официальной документации Unity

Чтобы собрать игру, вам нужно выбрать целевую платформу Windows Phone 8 в меню File — Build Settings.

04daf5fe6fa1499daae3e86d9cd0e828.png

После сборки Unity сгенерирует проект Windows Phone Xaml/C#, который нужно будет скомпилировать в Visual Studio для получения финального пакета (XAP) и файла-манифеста, которые нужны для непосредственного запуска игры под Windows Phone. Отладочный запуск проекта через Visual Studio на реальном устройстве выглядит вот так

[embedded content]

С одной стороны, это все что необходимо. С другой стороны, игре может потребоваться оптимизация для соответствия мобильному «железу». В целом, у аппаратной части Windows Phone устройств высокая степень совместимости (приложение, запускающееся на одном телефоне, без проблем запустится и на другом), но остановимся на основных моментах, которые придется иметь в виду.

14d890a41ba244a6bb3b3507b3bada72.png

ГрафикаАппаратное усокрение с программируемым GPU и поддержкой Direct3D.

ДисплейНа данный момент поддерживаются 4 разрешения экрана: 480×800 (WVGA), 768×1280(WXGA), 720×1280 (720p) и 1080×1920 (1080p). Для определения размеров экрана можно обратиться к Screen.width и Screen.height прямо из Unity. Для картинок вне игры (splash-screen, плиток) достаточно поддерживать разрешение WXGA.

ПамятьВозможны несколько конфигураций памяти: 512 мегабайт для устройств с WVGA и как минимум 1 гигабайт для устройств с разрешением 720p. На самых свежих моделях размер памяти может достигать двух гигабайт.

Аппаратные APIАкселерометр установлен на всех телефонах с Windows Phone и доступен прямо из Unity, наличие доступа к гироскопу зависит от его присутствия в телефоне. API для компаса, микрофона, камеры и местоположения доступны в Unity с версии 4.3

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

Перед отправкой игры в магазин убедитесь, что у вас есть учетная запись разработчика Windows Phone и лицензионная версия Unity. Если это действительно так, то скорее собирайте свою собственную игру, отправляйте ее в магазин Windows Phone и участвуйте в конкурсе игр. Желаем удачи!

© Habrahabr.ru