Игровые движки на Haxe (c поддержкой NME)

Создал подшивку по игровым движкам: http://haxe.ru/game-engines
Она в формате вики, так что желающие могут дополнять и создавать дочерние страницы по конкретным движкам.

На момент там следующий список:

Порты с AS3 (в скобках название и ссылка на оригинал):

Оригинальные разработки на Haxe

Кстати, приятно, что автор двух портов из списка (HaxeFlixel, PixelizerHX) посещает этот сайт и делится новостями. Спасибо, Zaphod!

Здесь, на форуме, можно обсудить тему в целом или особенности конкретных движков.
Среди такого разнообразия новичку (да и не только) может быть очень непросто выбрать наиболее подходящий игровой фреймворк для своих нужд, так что может быть мы совместно сможем помочь в этом плане, собрав информацию. Если вы уже выбрали для себя один из перечисленных или другой, расскажите почему. Или просто пробовали один из них и составили какое-то мнение - было бы интересно узнать и о нем.

+ Ash-Haxe

Добавил Ash-HaXe - порт AS3 движка Ash

+ Fathom

Добавил Fathom

+ Firmament

Добавил Firmament. Как раз вышла новая версия - 2.0
Движок поддерживает NME и несет с собой Box2D из коробки.
Есть в haxelib.

Знакомимся с Firmament

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

+ AGE

добавил AGE - еще довольно сырой, но хорошие идеи есть (о них и мотивах автора можно почитать здесь: http://revolugame.com/age-another-game-engine/ ).

да, смотрел его

да, смотрел его недавно. он, к сожалению, не особо информативный для тех кто уже знаком с Haxe и NME - в основном общая информация, а по самому движку совсем немного, то что и у них на главной странице в вики можно минут за 5 прочитать. хорош только для популяризации платформы и движка.

Pixelizer

Pixelizer работает с NME, но в нем пока что используется только bliting для отрисовки, так что на с++ он работает довольно медленно. В планах новый рендерер для с++. Пока что времени не хватает на него -- Flixel приоритетнее. Плюс жду обновлений от автора оригинального Pixelizer.
Главным плюсом Flixel для меня является множество уже реализованных фич (поиск пути, система частиц, базовая физика), поэтому для новичков (как в программировании, так и начинающих работать с движком) этот движок самый простой в освоении. Дополнительными плюсами являются наличие большого количества уроков (для as3-версии) и существование такой либы, как Flixel Power Tools от Ричарда Дейви (некоторые классы из нее уже интегрированы в мой порт). К сожалению не все фичи возможно портировать -- главная потеря для c++ это отсутствие поддержки blendMode :(
FlashPunk более гибкий, но, насколько я знаю, в его порте все так же используется bliting, так что на с++ он должен работать медленнее. Автор порта пытался создать тайловый рендерер для с++, но это дело заглохло на очень ранней стадии (это, я вам скажу, довольно трудоемкая задача - сам потратил приличное время). Плюс некоторые фичи движка пока что принципиально невозможно перевести на тайловую основу (например, поддержку масок). Дополнительный плюс -- отличная документация и большое количество туториалов.
С Pixelizer я мало работал, портировать его решил спонтанно. Движок очень молодой (актуальная версия - 0.4.2), многих фич, реализованных в Flixel, мне не хватает, но на мой взгляд вполне перспективный. Структуру движка считаю удачной (основана на компонентах), работу над ним буду продолжать.
В оригинале эти три движка рассчитаны на создание игр с пиксельной графикой.

Про Rygal могу сказать только то, что в нем также используется bliting.

P.S. Я рад, что моя работа кому-то нравится :)

Flixel

полезный комментарий, спасибо!
я посвятил еще некоторое время более близкому знакомству в HaxeFlixel, в процессе портировал один из примеров с офсайта. Сделал его форк на GitHub и залил результат: FlxTilemap-Demo. Почти всё было довольно просто, единственное, осталось ощущение, что с ассетами можно было как-то красивее поступить, чем пихать папку data со стандартными ассетами движка в свою папку с ассетами для NME (надо наверное сказать, что я сделал этот по подобию того, как в демо, идущем с движком). Может направишь
на путь истинный, как это лучше сделать?

И еще заодно небольшая деталь - там по кнопке Quit вызывается FlxG.fade и затем смена стейта и работает это иначе чем в оригинальном демо - не совсем корректно, перед сменой стейта снова мигает игровой экран. Не подскажешь, это я где-то не прав или есть трабл в порте? Вот код связанный с этим на всякий:

quitBtn = new FlxButton(FlxG.width - resetBtn.width - 4, FlxG.height - 24, "Quit"
            , function() { FlxG.fade(0xff000000, 0.22, true
                            , function() { FlxG.switchState(new MenuState());} );
            } );

По поводу ассетов

Как поступить по другому, я не знаю. В HaxePunk это реализовано также: имеется архив template.zip, в котором хранятся ассеты движка и шаблонные классы для проекта, при создании нового проекта ("haxelib run flixel -name YourProjectName -class YourProjectMainClassName -screen ProjectWidth ProjectHeight") эти файлы разархивируются в папку с проектом, а дальше уже действуете вы (пишете свою игру).
Если есть какие предложения по данному вопросу -- буду рад их услышать.

по

по предложениям, есть пока только мысль, что если эти ассеты уже лежат в либе, то было бы неплохо иметь способ их просто оттуда и залинковать. я попробовал добавить в nmml такую строчку:

<assets path="C:\Motion-Twin\haxe\lib\flixel\1,01\org\flixel\data" rename="assets/data" include="*" />

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

а про команду для создания нового проекта не знал - спасибо. завел wiki - страничку для HaxeFlixel в подшивке с движками: http://haxe.ru/haxeFlixel добавил туда и эту команду. feel free вносить туда изменения и дополнения, кстати. можно сказать, твоя страница ;)

Все очень просто

Все очень просто :) Метод FlxG.fade() я немного изменил, взял код отсюда: https://github.com/AdamAtomic/flixel/issues/190
Смысл его в том, что третий параметр метода задает "направление" изменения цвета затемнения камеры. Передавая true, цвет камеры сразу устанавливается в передаваемое значение цвета (в Вашем случае это 0xff000000) и затем меняется до полностью прозрачного, а если передать false, то наоборот. Короче говоря, в приведенном коде нужно заменить true на false.

спасибо,

спасибо, пофиксил. моя ошибка, надо было в исходники глянуть

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

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

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Use [gist:####] where #### is your gist number to embed the gist.

Подробнее о форматировании

CAPTCHA
Для отсева спамеров
u
q
s
6
i
X
Enter the code without spaces and pay attention to upper/lower case.