вторник, 24 ноября 2015 г.

Torque 2D и мобильные платформы

Юрий “yurembo” Язев
независимый игродел

Torque 2D - классный движок для двумерных игр. Я уже много о нем писал: в том числе, в журнал “Хакер” и в свой блог. Также, я много рассуждал о значимости, популярности и новой волне двумерных игр, ставшей возможной благодаря мощным мобильным девайсам, используемыми казуальными игроками. Сегодня на примере нашей игры MagicMancala я хочу рассказать о портировании торковских игр на мобильные платформы.

Итак, Torque 2D кроме того, что без проблем компилируется, собирается и запускается под Windows, Mac OS X и, вроде, как Linux, последний случай я собственноручно не проверял, игры на этом движке с минимальными усилиями запускаются на мобильных операционках, таких как: iOS и Android. То есть, поддерживаются все яблочные устройства: iPhone, iPad (с разными разрешениями экрана), и многообразие андроедов: планшетов и смартфонов (с разными разрешениями экрана).


GitHub



Заходим на GitHub, в репозитарий GarageGames/Torque2D, выбираем ветку development, далее делаем себе форк ветки или качаем движок в архиве себе на комп. Я призываю использовать код из ветки development, а не master по следующим причинам: в ветку development включены самые последние наработки сообщества движка, включая код автора, поэтому по функциональности эта ветка предоставляет больше возможностей, чем master, которая заморожена уже достаточно длительное время. Вдобавок, прежде, чем коду попасть даже в ветку development, он проходит тщательную проверку, контроль и подвергается обсуждению о значимости для проекта среди активных разработчиков.


GitHub

Я предпочитаю разрабатывать кросс-платформенные игры в Windows, а при использовании движков семейства Torque, преимущество Windows состоит в том, что только под этой операционной системой есть удобная интегрированная среда разработки на языке Torque Script - Torsion. Для Torque 3D есть удобный менеджер проектов, с помощью которого можно легко и быстро развернуть новый проект. Для Torque 2D такой менеджер проектов отсутствует, поэтому для создания нового проекта приходится самостоятельно создавать соответствующую структуру каталогов и копировать необходимые скриптовые файлы и графические ассеты (прочитать об этом процессе можно в моей статье). Сейчас, когда развитие движка немного поубавило напор, у меня появилось желание разработать кросс-платформенную среду разработки на языке Torque Script с включенной в нее менеджером проектов, другими словами, возможностью создания проектов на движке Torque 2D. 

Дальше, мы, иногда радуясь, иногда унывая, разрабатываем нашу супер игру. Я много рассказываю об этапе разработки, поэтому в сегодняшней статье я предлагаю его пропустить и перейти к следующему этапу - портированию.

Torque 2D свободный и открытый, поэтому платить ничего никому не надо - open source. На днях я прочитал интервью Ричарда Столлмана, организатора и лидера движения свободного программного обеспечения (Free Software Foundation), который к 2050-му году собирается захватить мир. Но пока мы можем успешно пользоваться программами с открытым исходным кодом. Torque 2D не имеет никаких экспортеров, зато он имеет открытые исходники, которые успешно компилируется под все поддерживаемые платформы. 


iOS



Сначала, запустим нашу игру под iOS. Для этого скопируем проект на компьютер макинтош с операционной системой Mac OS X, у меня в данный момент стоит последнее обновление до El Capitan. Под всем проектом я имею в виду все содержимое папки, которую мы скачали с GitHub, например, Torque2D-master, со всеми подпапками и исходниками. Кроме того, я надеюсь, что на твоем маке установлена последняя версия XCode (на момент написания статьи 7.1) с обновленными эмуляторами для iOS 9.1. Если действительность соответствует этому, запустим XCode: в директории движка открой последовательно: /engine/compilers/Xcode_iOS, откуда выполни файл Torque2D.xcodeproj. После загрузки среды разработки построй и запусти проект. Компиляция текущей версии движка должна завершится без проблем, однако будет содержать внушительный список предупреждений. В своей системе я запустил выполнение игры на эмуляторе (iPad Retina), поскольку физического девайса с iOS на борту у меня нет.


iOS симулятор


Наша игра прекрасно запускается на эмуляторе, между тем, текущая версия Torque 2D имеет некоторые изъяны в поддержке iOS, а именно, некорректно учитывается размеры и разрешение экранов, по этой причине происходит неправильная обработка нажатия виртуальных кнопок - элементов пользовательского интерфейса. Я не единственный, кто с этим столкнулся, поэтому в сообществе идет работа по исправлению этого недостатка.


Android



Если поддержка iOS была изначально включена в Torque 2D, еще со времен его предка - платного продукта от GarageGames - iTorque 2D, то поддержка Android была добавлена только в третью версию. 

С самого начала и по сей день в официальном репозитарии Torque 2D для компиляции под Android присутствует только проект ориентированный на среду разработки Eclipse. Я ничего не имею против него. Тем не менее, еще 2 года назад Google на основе IntelliJ IDEA разработала среду Android Studio для создания приложений под Android. Теперь, Google рекомендует использовать именно ее. Что ж, это понятно, Android Studio гораздо удобнее, чем Eclipse, и первая специально заточена для проектов Android. Поэтому, для разработки под Android я использую Android Studio. Но, как я уже сказал, ее поддержка отсутствует в Torque 2D. Однако, еще летом Casey Doran добавил поддержку Android Studio в свой форк Torque 2D. Я протестировал его код, работает замечательно! Не понимаю, почему столь удобную вещицу до сих пор не включили в официальный репозитарий движка, поэтому вынес вопрос на рассмотрение сообщества.

Чтобы скомпилировать проект, созданный из официальной ветки Torque 2D, для Android с помощью Android Studio, закидываем в подкаталог compilers Торка подпапку android-studio, извлеченную из подкаталога compilers движка из ветки elementc/Torque2D, предварительно качаем и устанавливаем для студии Android SDK и NDK, и запускаем построение проекта. В Android Studio в качетве системы сборки используется Gradle, она проведет весь процесс построения проекта; C/C++ код будет, по умолчанию, скомпилирован с помощью gcc, однако его можно заменить, например, на Intel C++ Compiler. Эмуляторы Android-устройств работают настолько медленно, что, похоже, на них невозможно запустить торковскую игру, поэтому, если в наличие есть девайс, я настоятельно рекомендую запускать игру сразу на нем. К примеру, у меня есть планшет, управляемый Андроедом, следующие скриншоты сделаны на нем:




Android-device


Дополнительные сведения по настройке проекта и среды программирования для построения проекта под Android:
1) Обрати внимание, чтобы в пути к папке с заголовками и дополнительными тулзами (SDK и NDK) отсутствовали пробелы. Если для Eclipse это было не существенно, то для Android Studio важно.

2) В файле build.gradle (Module: app) строки $ndkDir/ndk-build надо дополнить расширением .cmd . Это нужно по той причине, что в Mac OS X и Unix-системах файл без расширения является командным файлом, поэтому путь к нему не содержит расширения. Тогда, как в Windows командные файлы имеют расширения cmd (или bat), поэтому нам необходимо исправить путь к нему, иначе система построения Gradle не найдет командные файлы.

Примечание. Когда я закончил написание статьи, майнтейнер проекта Torque 2D на GitHub предложил мне залить код из ветки elementc/Torque2D в официальную ветку движка GarageGames/Torque2D, то есть добавить поддержку Android Studio. Таким образом, через пару дней, когда примут мой запрос, можно будет не осуществлять копирование, так как поддержка Android Studio будет изначально присутствовать в официальной версии движка на GarageGames/Torque2D.


Windows Phone



Единственное, что мне не нравится в Torque 2D, это отсутствие поддержки мобильной платформы Windows Phone. Ее отсутствие понятно: визуализатор Torque 2D построен на базе OpenGL, тогда как Windows Phone, в отличие от iOS и Android, визуализирует с помощью DirectX. Последнее утверждение касается Windows Phone 8 и Windows Phone 10, однако, Windows Phone 7 отображает графику с помощью XNA, другими словами, управляемом DirectX. Тем не менее, WP7 можно пренебречь, так как это устаревшая операционная система. Зато, WP8 и WP10 очень важные системы, они рендерят с помощью, соответственно, DirectX 11 и DirectX 12. Отсюда следует, чтобы добавить поддержку платформы Windows Phone надо написать новый визуализатор на основе DirectX. Я уже предложил этот шаг для развития движка сообществу, его расценили, как значимый и включили в план развития Torque 2D.

вторник, 17 ноября 2015 г.

Экскурсия №7: форт Мамула 

Юрий “yurembo” Язев 
независимый игродел


Форт Манула, возведенный на одноименном острове, был одним из мест сегодняшней экскурсии, которое мне наиболее запомнилось. Короче, в тот день мы с утра отправились в морское путешествие по близлежащим к Герцег-Нова островам.

На побережье расположилось большое количество фирм, предлагающих услуги морских путешествий.







Сначала мы пошли (так как, плавают только какашки) на остров, название которого я пропустил.







Путь занял 45 минут. Контент острова ничем не выделялся. Нам предстояло на нем быть 4 часа.










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








В нее вошла наша маленькая лодка. Пещера представляет собой очень небольшое пространство.







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







После пещеры, на той же лодке, по пошли на остров-крепость Мамула.




Это самый яркий момент сегодняшней экскурсии.






Свое название она получила по имени австрийского генерала Лазаря Мамула, который был наместником Далмации в XIX веке. Крепость была выстроена на острове по его приказу в качестве дополнительного оборонительного сооружения на подходе к берегу и использовалась по прямому назначению в обеих Мировых войнах XX века. А во время Второй Мировой здесь еще и находился лагерь для военнопленных. Крепость, как и остров, имеет круглую форму, размер в диаметре последнего – 200 метров.








На современных морских картах остров обозначен как Ластовица, что в переводе означает «Остров Ласточки». Остров и крепость Мамула обладают всеми достоинствами морского форпоста – отсюда хорошо просматривается море и виден берег.






Остров находится на границе территорий двух государств: с одной стороны - воды Черногории, с другой – Хорватии. Эти страны даже ведут спор – кому же все-таки принадлежит столь интересная для туристов и перспективна в плане бизнеса достопримечательность.










А пока этот вопрос не разрешен, в крепость не привозят экскурсии, за ней нет надлежащего ухода, и она потихоньку разваливается. Постройки внутри ограждений форта выглядят завораживающе. Мистически круто. Готически клево. Как будь-то попал в игру Clive Baker's Undying.








Каменные комнаты, камеры. Длинные коридоры, высокие потолки, круговые лестницы. Настоящий замок, вокруг стен которого вырыт ров.









Мы пробыли на этом острове только 25 минут, я даже обойти всю крепость не успел, от этого даже грустно.