...

понедельник, 15 декабря 2014 г.

[Из песочницы] Введение в кросс-платформенную разработку игр на haxe, flow, snow, luxe


Здравствуйте, дорогие разработчики!

Сегодня я хочу рассказать вам о том, как погрузиться непосредственно в создание игры так, чтобы можно было забыть об платформах, sdk, компиляторах, сборках, деплоях и прочих ide. Есть способ просто писать код на современном высокоуровневом языке и быстро его тестировать на всех платформах, поддерживаемых вашей хост осью.




Итак, кроме С++ и С# есть ещё язык, который даёт возможность разрабатывать кросс-платформенные игры — haxe.

Haxe это язык, компилятор для него, кросс-платформенная стандартная библиотека и система дополнений, расширений, библиотек — haxelib.


Язык больше всего похож на ActionScript и C#. Самая главная и сильная его сторона для меня — это возможность компилировать код, написанный на haxe, в код на других языках, например C++, JavaScript, C#, Java, PHP и другие. И при этом можно сделать специальные классы доступа (бинды) к библиотекам на языке, в который сейчас компилируется haxe код.

Но разработка на Haxe не была бы настолько привлекательной, если бы не snowkit.



snowkit = flow + snow + luxe + developers




Snowkit — это не только собрание библиотек, утилит и прочих инструментов для создания игр, но и сообщество, которое развивает и поддерживает этот проект, использует и интересуется им. Snowkit состоит из flow (проект менеджмент и сборка), snow (низкоуровневый абстрагированный от платформ системный api), luxe (высокоуровневый игровой движок, пока 2d).

Давайте посмотрим как это — разрабатывать на haxe-snowkit на примере из luxe.

Установка и настройка




Установим Haxe toolkit с официального сайта. При написании этой статьи использовалась windows, но для других десктопных систем всё описанное не должно сильно отличаться. Если использовать инсталлятор для windows, то он сам добавит нужные пути в path.

Для разработки под windows необходимо иметь установленную Visual Studio 2010 или выше, можно и Express. Я использую Express 2013 for Windows Desktop отсюда. Если мы хотим разрабатывать под андройд, то у нас должен быть установлен соответсвующий минимум (android sdk, android ndk, apache ant, jdk). Также в системе должны присутствовать соответствующие переменные окружения: JAVA_HOME и ANDROID_NDK_ROOT.


Теперь подготовим и проверим наше рабочее окружение. Сначала проверим, что haxe установлен и работает (в консоли):



haxe -help
haxelib




Теперь устанавливаем hxcpp через встроенную в haxe систему расширений:

haxelib install hxcpp




hxcpp — это поддержка компиляции в нативный код для разных платформ с использованием разных компиляторов.

Только чтобы проверить, что hxcpp поставился и работает:

haxelib run hxcpp




Устанавливаем flow, snow, luxe:

haxelib git flow http://ift.tt/1BJNJkK
haxelib git snow http://ift.tt/1yUdXmo
haxelib git luxe http://ift.tt/1BJNJkQ




Настраиваем flow:

haxelib run flow config build.android.sdk "path\to\android-sdk-windows\"
haxelib run flow config build.android.ant_path "path\to\apache-ant-1.9.4\bin\ant.bat"




Запуск тестового проекта




Далее, для того, чтобы убедиться в работоспособности текущей системы, скопируем директорию /haxe/lib/luxe/git/samples/alphas/1_0_parrott

в какую-нибудь другую директорию, удобную для тестов. И теперь в консоли в этой директории:

haxelib run flow




скриншот





Если не было никаких ошибок в установке или компиляции, то должно появиться окошко с запущенным приложением.

На разных системах это может выглядеть вот так:

haxelib run flow windows
haxelib run flow linux
haxelib run flow mac




Но самое интересное начинается здесь:

haxelib run flow web




скриншот





flow мало того что сам правильно скомпилирует haxe-код в JavaScript, но и подготовит ресурсы, создаст страничку, запустит тестовый web-сервер для вашей системы и откроет браузер на этой страничке. И точно так же для android:

haxelib run flow android




скриншот





Компилируется нативный для android код, копируются нужные для android-проекта файлы, ресурсы, иконки, создается проект, потом проект собирается с помощью android sdk и заливается на устройство.

Ах! Это было, действительно, прекрасно! Вы не находите?!

Интеграция с Sublime




Но что делает разработку ещё приятнее, так это интеграция с Sublime Text 3. Основатель всея snowkit Свен Бергстом (Sven Bergström) предлагает два варианта:

  • FlashDevelop, но только под windows;

  • Sublime Text 3 c плагинами его собственного производства.




Преимущество второго варианта — это его кроссплатформенность, однако это закрытое и платное ПО. Только потому, что Sublime меня пока радовал, я попробовал начать с него и, пожалуй, не ошибся. Допускается, что установлен Package Control отсюда.

Вводим в command pallete:



Package Controll: Add Repository
http://ift.tt/1BJNJBg
Package Controll: Add Repository
http://ift.tt/1yUdXCM
Package Controll: Install Package
sublime_flow
Package Controll: Install Package
sublime_haxe_completion




Далее в открытом Sublime добавим директорию с проектом, в корне которого присутсвует файл .flow (project.flow или любое другое удобное имя файла), и откроем этот файл. Теперь в контекстном меню основной рабочей области Sublime должен появиться пункт «Set as current flow project».

Осталось только нажать Ctrl+B. Теперь в контекстном меню любого .flow или .hx файла будет пункт «flow status», с помошью которого можно изменить настройки сборки и запуска проекта, например debug, verbose, целевой платформы. В моём случае это windows, android, и теперь, благодаря flow-snow-luxe, ещё и web.


Но стоит поставить пару виртуалок, установить на них нужные тулзы и открыть проект sublime — я супер-мега-инди windows-linux-mac-android-ios-webgl разработчик игр! Надеюсь, после этой статьи таким буду не только я.


Ссылки




» haxe.org

» lib.haxe.org

» snowkit.org

P.S. Для меня знакомство с haxe и snowkit началось с постов переводов zzzzzzerg: раз и два. Огромное спасибо ему за то, что показал эту штуку.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Want something else to read? How about 'Grievous Censorship' By The Guardian: Israel, Gaza And The Termination Of Nafeez Ahmed's Blog


Комментариев нет:

Отправить комментарий