В этом треде мы разрабатываем игры на haxe, а так же обсуждаем какие движки и фреймворки лучше всего подходят для этих целей нет, не юнити.
Haxe — это современный, строго типизированный язык программирования с некоторыми интересными функциями и небольшой стандартной библиотекой.
Наиболее существенной особенностью языка является его способность компилировать один и тот же код под разные целевые платформы.
Ниже приведу список лишь некоторых доступных фреймворков и движков, возможно упустил что то важное.
Flambe использовался для разработки HTML5-игр такими брендами, как Disney, Coca-Cola и Toyota. Heaps — игровой 3D/2D фреймворк, лежащий в основе таких успешных инди-игр как Northgard и Dead Cells. Библиотека для быстрой разработки awe6 является, возможно, скрытой жемчужиной даже для сообщества Haxe. Kha — ультра-переносимый мультимедийный фреймворк, с возможностью сборки проектов не только десктопных и мобильных ОС и HTML5, но и под XBox One, Nintendo Switch и Playstation 4. На его основе создано более 20 игровых движков, наиболее интересным из которых является Armory — 3D-движок с полной интеграцией с Blender. HaxeFlixel, созданный по образцу старого Flash-движка Flixel, является популярным выбором для создания небольших игр, например, для Defender's Quest. Starling — изначально ActionScript-фреймворк, использовавшийся для порта Angry Birds для Facebook, теперь также обзавелся портом на Haxe. OpenFL, реализующий Flash API, также позволяет создавать приложения для консолей (PlayStation 4, PlayStation Vita, XBox One и Nintendo Switch), десктопных и мобильных ОС, HTML5. HaxeFlixel и порт Starling работают поверх OpenFL. Примером игры, разработанной непосредственно на OpenFL, является отмеченная наградами Papers, Please. Native Media Engine (NME), от которого несколько лет назад отделился OpenFL, продолжает поддерживаться и для него выпускаются обновления. HaxePunk (произошел от еще одного Flash-движка — FlashPunk) — возможно вы могли видеть упоминание о нем в одном из выпусков Github Release Radar.
Язык достаточно простой, если знаешь например Java или C#, то выучить его будет не проблема. Да даже если только javascript, lua или python знаешь, то привыкать будешь недолго.
Ищу движок для html5 игр, но с возможностью сборки под ios/android пока остановился на cocos creator но также интересно может на haxe что мне подойдет? Нужно чтоб размер билда получался <= 1мб ну либо незначительно больше. Если в html5 будет не только в webgl уметь но и canvas рендер, то вообще шикарно. Есть что из перечисленного выше, что мне стоит покурить?
>>582327 (OP) Недеюсь ОП еще здесь. Давно хотел спросить, но все не находил времени. Есть идея отличной концепции игрушки. Для реализации приложение должно запускаться на планшетах, смартфонах и ноутбуках (возможно с линуксом, но не обязательно). Ищу самый простой язык для написания. Планирую генераторы, пиксельную графику, ничего прожорливого. Подумавал о варианте AIR + AS. Но то что ты описал, похоже, подходит лучше.
Можешь подробней описать процесс разработки? Какую среду можно использовать для кодинга, как это сочитается с фреймворками и движками? Интеграция с GIT? Общее удобство? Какой из фреймворков максимально прост в освоении и дает максимум свободы кода одновременно с простотой? И что проще всего запустить на описанных платформах?
>>639456 >Чем этот нах лучше сишарпа? Вместо дотнета у него неко. Чем неко лучше дотнета? вообще у тебя неверное понимание.
дотнет - это универсальная единая платформа. как джава машина. Их проблема - что это именно абстрактная машина далекая от текущей платформы.. и как бы ее не оптимизировали, почему юнити компилируется не в байт код нетплатформы а в нативный C++? вот потому что нативное эффективней универсальнго.
неко - это не платформа, а компилятор.
naxe - это про другое - это как бы один универсальный язык программирования который транслируется в нативные яп.
Ты не можешь написать код на C#, нажать кнопку и получить код на php.
А вот написать код на naxe и получить код и для php и для С++ - можешь. Вот она сила данного языка.
>>639484 > неко - это не платформа, а компилятор. Это виртуалка с байткодом. Возможно её байткод более специфичен для игор, чем дотнетовский? Я это хочу узнать. > Вот она сила данного языка. Я это уже понял.
>>639484 Из этой силы вытекает второй вопрос: как там отладка организована? Отлаживать код на нахе я не смогу? Мне придётся отлаживать, скажем выполняющийся в хроме жс? А потом по сообщениям отладчика переводить жс в уме обратно в нах и править ошибки в исходном нахе? Или как вообще?
>>639486 неко - это всего лишь одна из целевых платформ.
naxe используется именно как транслятор кода, который потом компилируется нативным компиляторм. Например можно транслировать в C# и использовать дотнет (вот даже ссылка https://haxe.org/documentation/platforms/csharp.html)
>>639488 >Отлаживать код на нахе я не смогу? Можно, но надо повозится с настройками. отладчик есть в Visual Studio Code. не подскажу, сам пока не пробовал.
>>639488 >А потом по сообщениям отладчика переводить жс в уме обратно в нах и править ошибки в исходном нахе? ты работаешь только с naxe кодом. Все эти трасляции - они там в черном ящике происходят, можно не парится (хотя конечно можно использовать и как кодогенератор чтобы потом уже на нативном языке использовать - как хочешь короче)
>>584561 >Можешь подробней описать процесс разработки?
Ну давай попробуем.
>Какую среду можно использовать для кодинга
HaxeDevelop или VSCode. Первое развивается с переменным успехом силами 1.5 человеков, 2-е развивается мелкософтом, с Haxe работает через расширение. Оба надо брать и пробовать все фичи и выбирать, какие в итоге более удобные в работе.
> как это сочитается с фреймворками и движками?
Зависит от. Где-то template-проект конкретно фреймворка делается одной кнопкой, где-то надо руками все настраивать.
>Интеграция с GIT?
git init git add remote git push
>Общее удобство?
Удовлетворительно-хорошо
>Какой из фреймворков максимально прост в освоении
Очевидный OpenFL. Но это в первую очередь фреймворк, а не игровой движок
>максимум свободы кода одновременно с простотой
Противоречит сути понятия фреймворк. Хочешь свободы - пишешь весь код сам с нуля под целевую платформу. Хочешь простоты - используешь готовые решения в рамках созданной архитектуры
>И что проще всего запустить на описанных платформах?
Процесс тестирования и отладки зависит от платформы и может сильно варьироваться. Какой-то общий код можно спокойно дебажить прямо в IDE. А все, что platform-specific - ставить доп. дебагеры, подключать удаленную отладку и прочая менее-удобная возня.
>>668079 Лучше поздно чем никогда :3 Со многим уже разобрался пока было свободное время, а его к сожалению очень мало. Освоил основной синтексис. Определился с VSCode. Разобрался с Git. Операционка кстати Windows 10. Начал было ковырять HeapsIO, но это чисто графический движок. А мне нужны бродкаст запросы для поиска игроков в локальной сети. То что нужно походу есть в OpenFL, так что в следующий отпуск наверну его. Ну и поищу графические библиотеки совместимые с ним. Все очень медленно, конечно, но я никуда не тороплюсь. Спасибо за ответ в любом случае.
>>691594 Это ты не туда смотришь. Дедсел на heaps.io написан, практически единственный движок на haxe, который может в продакшн. И именно у него нет документации нормальной, хз как под него писать. Если ты хочешь на haxe свой движок писать - документацию по haxe вообще нинужна.
> Дедсел на heaps.io написан Ничеси, tnx. Надо поковырять,выглядит солидно
> Если ты хочешь на haxe свой движок писать Ну есть куча вещей попроще уже готовых, есть флешовый старлинг из коробки я с флеша пересел на openfl+starling безпроблемно
на starling вообще до жопы готового на любую тему,либы под спайн итп
>>691628 > Надо поковырять,выглядит солидно Ну как сказать. Хорошая штука, но это не совсем движок и эти самые проблемы с документацией. Непонятно всё с этим короче. Непонятно с тестированием по платформам. Я бы даже взял его, но да, всё слишком странно. > starling Че-то слишком специфично и узкий круг задач.
>>691638 >Че-то слишком специфично и узкий круг задач для 2D - с головой на нем смачный кусок флешового геймдева сидел. что удобно - API c флеша не поменялось ВООБЩЕ. просто тупой копипаст (с поправкой на синтаксис) - и все работает. даже шейдеры завелись сразу без изменений
Здарова бандиты, есть heaps'оводы? кому-нибудь удалось собрать нормально под андроид? (или может перспективе для меня ios)
под свои хотелки понял, что для меня подходит два движка, это heaps и defold. Но у дефолда более странный подход, со всякими сообщениями между объектами. Если прокт разрастется, думаю разработка превратится в ад. еще по умолчанию язык со статической типизацией выглядет намного бодрее, нежеле, прикручивать, что нибудь(тот же haxe) поверх lua в дефолде.
Но вот, что разрабы досихпор не написали туториал для сборки под андроид, меня немного пугает.
>>711529 сборка под мобилки - это больше хаксовская тема, heaps это же просто фреймоворк. я к тому что посмотри OpenFLные туторы/на форуме пообщайся - там дофига народу под мобилки пилят
>>711713 Ухх, вроде получилось с горем пополам. Два вечера убил на все это дело. Честно туторы мне вообще не помогли никакие, помог недоделанный репозиторий Николаса а также натуральное вангование ошибок в Logcat т.к. гугл молчал. Если зайдет все это дело, нагатаю гайд чуть попозжа.
язык нынче непопулярный у нас я вижу. когда-то в разработке был luxeengine, сейчас у него перспективы поменялись и автор решил в сторону с++ двинуть, хотя движок был очень интересным, особенно в совокупе со всеми snowkit утилитами. но есть одно НО. luxe будет поддерживать скриптинг на основе яп wren, который в свою очередь ну очень смахивает на haxe, разве что заточен под встраивание.
я какое-то время самолично игрался с языком, писал всякие штуки на openfl и luxe, сейчас думаю снова попробовать в геймдизайн с haxe.
kha выглядит интересно и более понятно чем хипс, практически можно использовать. Но почему практически? я бы ожидал что у библиотеке уже был бы где-нибудь на гитхабе: рендер spine и drag bones интеграция текстур пакера если 2д из коробки работает то хотелось бы видеть хоть в сторонних репах готовый 3д рендер, с поддеркой импорта популярных форматов. То, что этого ничего нет готоврит о том, что никто особо не делал игры на данном фреймворке. Начать велосипедить все самому, до игр точно не доберешся.
Давно тут ничего не писал, но бампану тредик Haxe-релизом. может кого заинтересует: довольно долго пилил на Haxe новельный движок (так вышло) и таки допилил движок и новеллу на нем (движок полностью - новеллу пока наполовину). Ссылки и прочая тут - https://2ch.hk/ruvn/res/145206.html, если кому интересно хотя кого я обманываю ))
Но зато теперь могу ответсвенно заявить - Haxe жив (+openfl +starling) и для партизанского инди вполне подходит. Web+Mac+Win+мобилки на одной кодовой базе с минимумом костылей вполне работают. проблемы конечно есть - но решаемые
>>682675 >Да вроде хроники хаоса с флеша была переписана на haxe Меня hr их конторы походу как-то нашла по гитхабу и писала аж 3 раза на мыло. Так что хэксобои мотайте на ус.
Раз уж бамбанули.
>>842409 >Haxe жив Не особо. Там кстати новый релиз HaxeFlixel - 5.0. Можно конечно носится с тем как он офигенно кросскомпилиться и что движок поверх heaps это новое юнити, но в реальности вердикт такой - ненужно. Тем не менее кто запретит что-то на нём до продакшена довести? Да никто. Практика показывает что запросто можно офигенные 3д стратежки делать. >если кому интересно Как сам движок нет. На код я бы глянул. >Ссылки и прочая тут Not found.
>но в реальности вердикт такой - ненужно не соглашусь, юнити - тяжелая штука, для работы с которыми надо кучу нервов (особенно между апдейтами) и PC нормального уровня, и даже это не избавит от страданий в редакторе. тут же между тобой и результатом в браузере - 10 секунд компиляции некислого проекта. и если это работает в браузере - это на 90% работает ВЕЗДЕ. короче удобней (но lowlevel по сравнению с айдиешками, конечно), как с флешом - пока он был жив )
>>842458 >тяжелая штука Ну дык многофункциональная зато. Но мне тоже не нравится. >но lowlevel по сравнению с айдиешками, конечно А ты на visual studio code пишешь кста?
>>842491 там нет ничего чего не было бы везде (я про 2D). и то что есть часто прибито гвоздями (ебучие инициализации). в итоге ты вместо разработки свои костыли сращиваешь с чужими и страдаешь
в более олдскульных движках надо конечно с порога больше знать. но и с юнити все что надо - узнать придется, если хоть где-то шаг вправо/шаг влево потребуется
Вывод такой: Haxe не нужен потому, что поблекла его основная фича, ведь на все платформы компилится теперь каждая собака. А языку обязательно нудна ниша, просто быть "клёвым" для выживания мало. У C++ есть лоу-левел, у C# Microsoft и Unity, у джавы Oracle, у питона гугл, у JS нода и монополия в браузерах. Никто не пишет на Ruby не потому, что он плох, а потому, что его потеснили с ниши.
>>842521 У него и была ниша - заменить action script для флэша. А потом флэш ни во что не трансфомировался, тупо умер.
>на все платформы компилится теперь каждая собака. Нативно вообще не каждая. Ты можешь скомпилить свой код в почти любой другой язык и тем самым присобачить его к почти любому другому проекту. Только это в принципе ненужно. Ну мало ли, вдруг это станет важно, например когда будет великий парсинг всего гитхаба нейросетями. Посмотрим, индустрия языков и инструментов всё ещё развивается. А так не умер и то хорошо.
>>842525 > Только это в принципе ненужно нужно, если не нужно тебе - то ты просто с комплексными задачами не сталкивался. а я вот сталкивался - и в итоге у меня один и тот же haxe-код и в клиенте работает и в node.js подключается, для проверки данных от клиента. для не-интерфейсных вещей (бизнес логика) это реально удобно - ни писать ни тестировать раздельно не надо
>>842521 >ведь на все платформы компилится теперь каждая собака.
с одинаковым уровнем работоспособности НИ ОДНА собака кроме Haxe не компилит, в том-то и проблема. в том же юнити под PC/JS/IOS/ANDROID нужны абсолютно свои костыли, потому что изначально все заточено под полнофичевое окружение и все остальное вкручено на отъебись.
хотя сейчас может чо и поменялось, я про юнити давно забыл и обратно не тянет, потому что 3D в гробу видал (нормально делать слишком геморройно), а для 2D-проектов юнити ничего кроме постоянных страданий предложить в принципе не способен. 2D в Unity - это для идейных мазохистов, как по мне
>>842525 >Нативно вообще не каждая >>842606 >в том же юнити под PC/JS/IOS/ANDROID нужны абсолютно свои костыли haxe нативно тоже ни во что не конпелируется. для всего нужно писать нативный код платформы, просто это обычно в библиотеках сделано
>>842607 haxe нативно компилируется в текст на других языках, который делает ровно тоже самое, и это экономит время на специфических задачах
>для всего нужно писать нативный код платформы, просто это обычно в библиотеках сделано ну да, просто они не замахиваются на невозможное - зато ровный базовый минимум работает гарантировано везде одинаково.
>>842619 >то есть это просто транслятор в c++ код cpp - это под статические таргеты, но ими не ограничивается. под js - генерится js код. можно прям метод с логикой вырезать и скопипастить в бэкэнд на ноде. причем это читаемый код, не бурда какая. или можно "скомпилить в тайпскрипт" (только копипастить придется больше, если надо). или в php, если у тебя бэкэнд на нем, или в lua (для nginx например)
и с cpp тоже свои плюс по сравнению с типичным подходом - у тебя все В ИСХОДНИКАХ. под иос оно тебе прям проект для xcode генерит, причем там весь код ЧИТАЕМЫЙ, а не заранее скомпиленные дллки как в юнити (все что наколбашено в юнити оно уже туда закопилено, не поменять). И если тебе надо впендюрить что-то в конкретное место в твоей логике или под платформу что-то заточить - просто открываешь cpp соотсветсвующий hx-файлу и вписываешь что угодно (впрочем это в haxe можно прописывать, в проект лезть незачем)
>>842606 >нужно, если не нужно тебе - то ты просто с комплексными задачами не сталкивался Всё таки комплексные задачи - это например написать навмэш систему навигации, чтобы у тебя хотя бы 500 юнитов тянуло. Повторить что-то на бэкэ и на фронте это не то чтобы прямо сложно, скорее муторно.
>это например написать навмэш систему навигации, чтобы у тебя хотя бы 500 юнитов тянуло. Ну да, а потом перенаписать ее на сервере, чтобы проверять данные которые тебе клиент шлет периодически. потому что верить клиенту это зашквар, а считать все на сервере - буржуйство и лагогенерация
>Повторить что-то на бэкэ и на фронте это не то чтобы прямо сложно, скорее муторно вот именно. и когда это делается и тестируется ровно в одном месте - это не так муторно.
но так-то да, до всего этого далеко не каждый докатывается