Игровые фреймворки/движки

Oct 17, 2016 07:46

Последние несколько лет я занимаюсь game development.
В разной степени изучил некоторое количество игровых фреймворков/движков.
Выводов для себя сделал два. Либо нужно не выебываться и слушать валенки использовать Unity. Либо писать что-то свое. Но это долго, скучно и дорого.


HaxeFlixel
2D Фреймворк написаный по мотивам флешевского Flixel. А точнее - просто один в один переписали на Haxe. Сам фреймворк просто замечательный, если нет нужды в FBO, хитром использовании шейдеров и более-менее близком использовании железа.
Плохо то, что это хипстерский стек опенсурсных решений.
Haxe(язык)->Lime(система абстракции от железа)->OpenFL(свободная реализация AS3)->Flixel(сам фреймворк). Все это находится в разной степени уныния, команды разные, синхронизации никакой.
Поэтому всю разработку что-то будет глючить, что-то не стыковаться, что-то работать на андроиде, но не работать на иоси. Вердикт: прикольно, но я бежал оттуда в ужасе.

PhaserJS
Как видно из названия, фреймворк написан на JS. Основан на pixi.js.
Он очень простой, но одновременно достаточно мощный.
Можно, например, залезть в текстуру и похозяйничать там как в обычном LFB. Исключительно 2D.
При серьезных сценах начинаются проблемы с производительностью.
Можно оптимизировать, но в итоге все равно все упрется в практический потолок.
Это проблема не самого фейзера, а практически всех Canvas/WebGL приблуд.
Для использования на мобилках, нужно, само-собой заворачивать
игоря в PhoneGap/Cordova/CocoonJS . И у каждой из этих оберток - свои приколы с производительностью и своя специфика.

UDK
Тут коротко.
На нем написана целая плеяда замечательнейших игр.
Но он просто устарел, и сильно в него углубляться нет смысла.
На смену ему пришел UE4, который настолько другой, что некоторые по инерции все еще используют UDK.

Unreal Engine 4
Адское монстрилло. Серьезнейший игровой двиг, для серьезнейших игр.
Писать 3D AAA игорей 21-го века - самое то.
Если с недельку-две поразбираться, то начинает казаться не таким уж и сложным.
Можно писать на плюсах (C++), можно пытаться на встроенной системе Blueprint-ов (стрелочки и квадратики). Стрелочками и квадратиками ИМХО даже сложнее, так как документация по Blueprint-ам - уроки на ютубе. А еще они тормознее плюсового кода.
Содержит мощнейший wysiwyg редактор сцен, который только и мечтает, как похерить все мета-данные сцены, а то и проекта.
Да так, что проще будет начать с нуля. Поэтому бэкапы надо делать не каждый день, а каждый час.
Можно писать даже простые 2D игры для мобилок/планшетов.
Но... 200MB+ за простенькую игрушку - оно такое надо?
На нем пишутся большие, серьезные игры. Daylight например.
Написан в 2014-м, но тормозит даже на новом железе.

Corona SDK
В прошлом - весьма платный игровой движок для десктопа и мобилок. В настоящем - бесплатная и весьма прикольная игрушка или среда для быстрого прототипирования.
Донельзя приятный (хотя, слегка простенький) API, но все портит Lua.
Lua как язык для того, чтобы быстренько что-то набросать, может и неплох, но писать на нем что-то серьезное я бы не стал.
После некоторого размера - просто приходится уже на бумажке записывать где там что и как, так как ну больно уж хулиганский язык.
Встроенный редактор (уровней) - Composer убог и неюзабелен.
Лучше написать свой загрузчик из, например Tiled. Или взять готовый, например ponytiled (но там есть два неприятных бага, которые легко фиксятся). Из среды разработки под Lua/Corona - лучшая это ZeroBraneStudio.

LibGDX
После Unity - мой любимец.
Как то так получилось, что если что-то более-менее серьезное, то
я беру или Unity, или LibGDX.
Java, чистая java. Или Kotlin. Или Clojure. В общем все, что работает на JVM.
Можно 2D. Можно 3D.
Своя реализация коллекций, чтобы избегать GC, насколько это возможно.
Компактный размер того, что в итоге получается. Простенькую игру, вместе с gfx, sfx и музыкой - можно запихнуть в 1.5-2mb.
Правильное ООП. Куча вспомогательных классов, например - из коробки поддержка того-же Tiled-а.

Unity
То, что я использую сейчас.
Да, выходной размер сильно больше, чем у LibGDX, но скорость разработки, удобный инструментарий, визуальный редактор сцен, частицы, в 5-й версии - замечательнейшая звуковая подсистема, поддержка всех существующих платформ, от старинных ведроидов, до Apple TV... Можно 2D (но фактически - это 3D с фиксированной камерой), можно 3D.
Я года полтора назад от юнити уходил, так как очень расстроился, когда они взяли, и полностью изуродвали физику, при
переходе от версии 4.6 к 5.0. Но все равно вернулся обратно.
ИМХО по соотношению время-затраты/цена/качество - лучшее для игорь-дева инди/небольшой командой из того, что существует на сегодняшний день.
Previous post Next post
Up