Pull to refresh

Comments 24

Насколько я понял — там ситуация как с бывшим Xenko (ныне Stride), может чуть лучше. То есть по сути движок сам по себе довольно пустой, с совсем минимальным инструментарием просто добавляй внешние модели и текстуры, ну и код можно писать. Тоже неплохо, но у Годо и 2д есть, и в целом более полноценный 3д инструментарий.
Хотя конкретно с NeoAxis очень мельком знаком, не знаю нюансов.
Сначала подумал расписать подробнее. В общем, проще глянуть))
System requirements: Windows

Godot на всех трёх ОС работает

По чистоте архитектуры и одновременной простоте использования у годота нет конкурентов сейчас

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

Хотел бы заметить, что обратиться к глобальным узлам (синглтонам) можно просто по имени, которое определяется в настройках проекта, без использования get_node().

Действительно. В моём примере можно было писать SaveTheWorld.enemy_arr[myID], без получения ссылки, лишь бы на SaveTheWorld была активна галочка синглтона (ну так ради этого всё и затевалось). В документации как-то сильнее акцентирован случай когда синглтон заведён, но почему-то не активирован, поэтому второй вариант в глаза не бросается.
Ну и замечательно, минус лишняя строчка в большинстве случаев.

Движок и правда замечательный в плане логичности и простоты.
Кстати — жесткую типизацию теперь можно делать и в GDScrypt, просто она необязательна, но разработчики обещают повышение производительности в будущем при использовании жесткой типизации.

Ждём обзор UPBGE.org
Мельком смотрел и понравилось, что используется рендер Eevee.
Обещают завезти визуальные ноды логики, как в блюпринт\болт в Анрил\Юнити и тп.
Пример разработки одной игры с ютуба…
Кроме UPBGE есть ещё Armory3d. Я ни то ни то плотно не пробовал, но BGE хотел попробовать давно, потом его убрали из Blender и было не понятно, что дальше. А тут уже и Годо появился.
У Godot просто некоторое преимущество хотя бы в том, что на хорошем уровне не только 3д, но и 2д (то есть тот же интерфейс собрать уже не проблема), а также мультиплатформенность, плюс общая продуманность и неплохие перспективы.
В любом случае разнообразие мощных опенсурсных решений на любой вкус — это великолепно.
Армори к сожалению слишком придирчив к ошибкам модели и материалам, хотя рендер в нём лучше, чем в Eevee. Но стоит запастись терпением, чтоб всё запустилось без ошибок.

Была бы идея, конкретный движок не так принципиален, тут смотря что нравится. Хотя геймплей может базироваться и на особенностях движка, либо из разных игровых движков к конкретному проекту один может подходить оптимально, а другой уже не настолько хорошо.
У движка один минус, как и у других NodeTree движков — производительность. Все подсистемы перебирают все дерево игры. Что для 3Д уровней, с высококачественными моделями начинают мало того, что долго грузится, так еще и вынуждает танцевать с производительностью и заниматься изощирениями, например тот же Multimesh юзать, где ему не место.
Там сама процедура парсинга сцены и всех подсцен при инсталировании — довольно дороговато. А так же, до версии 4.0 — плохо работает InteractiveLoader. Если его вынести в другой поток или чекать каждые 2-3 кадра — грузит долго сцены. А классические load, фризит всю сцену, пока не загрузится. (я сталкнулся с этой проблемой, когда сделал брендовый сплейшскрин, с анимациями и озвучкой, и пока оно проигрывается — ресурсы грузятся в пул ресурсов). Если юзаю InteractiveLoader и вызываю у него poll(). То фризится сцена каждые пару кадров в момент вызова. По сути, пока ты не вызовишь poll(), фрагмент сцены не начнет загружаться.

Но тут как с UE4, надо много играться с LODами и прятать все фейками. Так же движок плохо работает с GLES3 на устройствах андройд. Проблема зоопарка устройств. Например Polygon2D + Skeleton, когда ты деформируешь спрайт — на многих устройствах оно либо не отрисовывается, либо крашется. А на GLES2 оно просто не работает. Собственно сама проблема..

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

А так движок достоин. Мы одного 1Сника за месяц пересадили на разработку игр. Плюс за счет исходного кода, я без труда интегрирую самописные in app модули и различные SDK. Когда как у юнити, приходится ждать, когда тот или иной плагин обновят или починят баг.

Еще игровой сервер Nakama хорошо работает с движком и имеет все необходимые аддоны. Что позволяет по сути на коленке собрать клиент-сервер-сервис игру для мобилок, аля веселой фермы или матчинг сессии. Но нативный сервер еще слабоватый. Если хочешь серьезное ММО или сессионку типо шутана собрать — тут придется бэк писать самому. В этом плане UE4 в сетевом коде на голову выше.

Еще очень плохо, что из коробки не интегрировать анимации из программы Spine, которую много юзают аниматоры. А плагины, что портируют Spine в движок, юзают тот самый, фигово-работающий Polygon2D + Skeleton.

Кому надо, вот черный список устройств, у которых GLES3 работает не правильно. Взято из AlienShooter, у них та же проблема :)
black list
; GLES3 hardware blacklist
; msm8974 - Qualcomm MSM8974 (Snapdragon 800)
; apq8074 - Qualcomm APQ8074 (Snapdragon 800)
; msm8274ab - Qualcomm MSM8274AB (Snapdragon 801)
; msm8974ab - Qualcomm MSM8974AB (Snapdragon 801)
; msm8974ac - Qualcomm MSM8974AC (Snapdragon 801)
; apq8064 - Qualcomm APQ8064 (Snapdragon S4 Pro)
; msm8960t - Qualcomm MSM8960T (Snapdragon S4 Pro)
; mpq8064 - Qualcomm MPQ8064 (Snapdragon S4 Prime)
; msm8905 - Qualcomm MSM8905 (Snapdragon 205)
; msm8208 - Qualcomm MSM8208 (Snapdragon 208)
; msm8210 - Qualcomm MSM8210 (Snapdragon 200)
; msm8909 - Qualcomm MSM8909 (Snapdragon 212)
; msm8226 - Qualcomm MSM8226 (Snapdragon 400)
; msm8926 - Qualcomm MSM8926 (Snapdragon 400)
; msm8928 - Qualcomm MSM8928 (Snapdragon 400)
; msm8916 - Qualcomm MSM8916 (Snapdragon 410, 412)
; msm8917 - Qualcomm MSM8917 (Snapdragon 425)
; msm8920 - Qualcomm MSM8920 (Snapdragon 427)
; mt8125 - MediaTek MT8125
; mt8312 - MediaTek MT8312
; mt6589 - Mediatek MT6589
; mt6737 - Mediatek MT6737
; mt6752 - Mediatek MT6752
; exynos 5410 - Samsung Exynos 5410 Octa
; exynos 5420 - Samsung Exynos 5420 Octa
; exynos 5430 - Samsung Exynos 5430 Octa
; omap4430 - Texas Instruments OMAP 4430
; omap4460 - Texas Instruments OMAP 4460
; omap4470 - Texas Instruments OMAP 4470
; z2520 - Intel Atom Z2520
; z2560 - Intel Atom Z2560
; z2580 - Intel Atom Z2580
; pxa988 - Marvell PXA988
OpenGLES3HadrdwareBlacklist=msm8974,apq8074,msm8274ab,msm8974ab,msm8974ac,apq8064,msm8960t,mpq8064,msm8905,msm8208,msm8210,msm8909,msm8226,msm8926,msm8928,msm8916,msm8917,msm8920,mt8125,mt8312,mt6589,mt6737,mt6752,exynos 5410,exynos 5420,exynos 5430,omap4430,omap4460,omap4470,z2520,z2560,z2580,pxa988

Если мобильные устройства, то в Godot оптимальнее работать с GLES2. Тем более для 2д, хотя там и 3д более менее, особенно если разработчик оптимизирует работу, и не собрался делать всякие «реалистичные» симуляции, огромные пространства, городить массу ненужных вычислений и так далее. По крайней мере если цель сделать доступную игру, а не накрутить навороченную графику, которую вывезут только мощные устройства. К тому же этот режим по всей видимости сохранится и дальше, а GLES3 по идее заменит Vulkan.
Никто не мешает использовать продвинутый рендер для мобилок, но надо понимать, что для разработчика движка этот вариант не был приоритетной задачей, поэтому не везде будет работать.
GLES2 с текстурами высокого разрешения, у нас почему то под ios не работает. А партиклы под GLES2 юзают CPU. Увеличивается расход батареи. В итоге приходится делить билды под андройд для GLES2, и для андройдов для GLES3, а так же под iOS под GLES3, с разными партиклами. А так же отказывать от реалистичных анимаций, если телефон не поддерживает GLES3. А на GLES2, как я сказал, Polygon2D + Skeleton на многих устройствах тупо не работает. Текстура не рендерит и сыпит тонну ошибок. Соотвествующий issue есть.
Вот собственно сравнение, с деформацией текстуры и без: https://youtu.be/-KKi4FZG2m8
В итоге на одних устройствах колышится шерсть, а на других — просто кусок текстуры или даже покадровая анимация.
Тут уже вопрос скорее в том, что конкретно вашему пайплайну тесно в ограничениях и особенностях текущего gles2. Чтобы не перегружать лишними партиклами прибегают к покадровым анимациям, ими же можно заменять все эти конструкции из 2д-костей и так далее.
ну, как бы, этот же ассет прекрасно работает на всех андройдах в GLES2, а вот на айфонах 6 и X крашится. Выяснять не стал.
Ну как бы 2Д кости для того и нужны, что бы не тратить память на кадры анимаций и как раз таки созданы, что бы упростить анимацию. Вон тот же Spine откройте. А тут мне такие устройства говорят «Не сегодня». Проблема известная и она решаемая. Вот выпустят godot4, там этой проблемы не будет, как обещают, и мне что, все проекты перепиливать обратно?

Я указал на подводные камни, чего стоит ожидать от движка. Эти камни исправляются, возможно завтра тот issue закроют и все будет круто.

Как и собственно обещают исправить краш на айосе, при переходе приложения в фоновый режим. Опять же, ссылка на issue выше тоже есть. Эти камни лучше занть, перед тем как начинать делать проект. А то на релизе как всплывут эти сюрпризы, как они для нас всплыли, будете потом волосы рвать на головах.
То, что в gles2 частицы работают на cpu — буквально в редакторе написано, это не тайное знание. А поддерживать Spine Godot вобще-то и не обязан. К тому же это опенсурс — надо что то экзотическое, так напиши. Тем более что многое таким образом уже написали и выложили в доступ.
в версии 3.0, небыло ParticleCPU) Партиклов просто не было для GLES2.0)
Об это тоже ужалились в свое время)
еще из подводных камней могу добавить, что пока что мало плагинов, модулей и аддонов, с различными SDK и сервисами, готовьтесь нанимать людей работающих в java и objective-c. Приходится самостоятельно писать модули на java под андройд, и под iphone. Например популярная функция на ios. requestReview. Если вы ходите сделать попрашайку лайков в игре — эпл начнет бить по рукам, отказывать в выпуске и просить юзать их функционал. godot из коробки не поддерживает этот функционал. В итоге мне пришлось писать отдельный модуль на Objective-C, с этим функционалом а так же, продвигаемые покупки в стор. А я ни java, ни Objective-C особо не знаю. Но кое как реализовал. Так что стоит за ранее учесть это, при выборе данного движка для проекта. Маленькой инди-студии возможно проще будет взять unity, под который есть все плагины и не придется добирать людей, для реализации этого функционала. Либо ждать чуда, когда добрый саморитянен выпустит такой плагин.
Собственно мой модуль под это дело. Если кому надо. Заменитель оригинального in app service. Но работоспособность не гарантирую, ибо dev ветка)
Sign up to leave a comment.

Articles