Игры бывают разные, большие и маленькие, триA и супер инди, в компаниях с сотнями разработчиков и что создаются самородками-одиночками. Редко их делают с нуля и пишут код только игры, чаще пишут игровые тулы, редактор и параллельно пишут саму игру. За всей этой многомиллиардной индустрией стоит код, много кода, очень много кода. Игровые движки и фреймворки – мощные инструменты, которые помогают разработчику творить его идеи и создавать увлекательные игровые миры. Это каркас, на котором строятся все игровые вселенные, они включают в себя сотни инструментов, библиотек и ресурсов, позволяя разработчикам превратить строчки кода в театр для одного зрителя.
Существует более сотни игровых движков, каждый из них содержит как минимум одну фичу которой нет ни в каком другом. Всех возможностей вместе нет ни в одном, и это прекрасно - иначе бы такой движок захватил мир. Хм, Unreal5 ты ли это? Иногда полезно пробежать по release notes движка, чтобы оставаться в курсе последних новостей. Возможно вы разрабатываете свое решение и эта статья натолкнет вас на новые идеи. Готовы узнать что ваша любимая игра была сделана не на Unity, а на православном SDL?
Когда я работал в студии EA Spb, там был отдельный инженер, который отслеживал изменения в новых версиях и вел бААААльшую такую таблицу какие возможности в каком движке есть. К сожалению таблица была действительно большая, что-то около 800+ столбцов-описаний на больше чем сотню движков, и скопировать её возможности не было. А жаль, работа была проведена поистине титаническая. Не меньше тратилось времени на её поддержание в актуальном состоянии, раз для этого потребовалась отдельная позиция. Но список движков был в свободном доступе, да и вы можете при наличии времени составить его сами. Я не буду расписывать особенности каждого движка, понятно что каждый из них это мощный, универсальный, с кучей возможностей и тд и т.п. Просто приведу ссылку на гитхаб и пару-тройку игр, если вас что заинтересует вы сможете сами пройти по ним и детально ознакомиться что к чему. Я веду небольшую таблицу с игровыми движками и играми, которые были на них сделаны. Если что-то не увидели, добавляйте в комментах. По какому принципу движки попали в этот список - с каждым из них я столкнулся и что называется потрогал руками, где-то были интересные игры, где-то попробовал собрать пример, а где-то починить баг или добавить фичу.
Движки обычно поддерживают биндинги на другие языки или скрипты, рядом с названием будет указана лицензия и основной язык, на котором он написан. Надо понимать, что биндинг или скрипты это компромисс между производительностью самого движка и скоростью разработки игры/приложения, что зачастую перевешивает.
nCine (MIT/С++)
Игровой движок с открытым исходным кодом, предоставляющий разработчикам средства для создания 2D и 3D игр на различных платформах. Предлагает обширный набор инструментов для разработки игр, включая поддержку множества операционных систем, графику, аудио, анимации и физику. Интересен для изучения компонентной системы и системы ивентов.
MonoGame (MPL/С#)
https://github.com/MonoGame/MonoGame
Аналоги (https://fna-xna.github.io/)
Фреймворк для разработки, созданный на основе платформы Microsoft XNA. Предоставляет инструменты и библиотеки для создания кросс-платформенных игр, поддерживая несколько операционных систем, включая Windows, macOS, Android, iOS, Linuх. Этот движок я изучал параллельно с шарпом, в качестве практики применения языка. Ну а проекты на нем, популярны и известны.
RayLib (ZLIBL/C/Lua)
https://github.com/raysan5/raylib
Легковесная и простая в использовании библиотека для разработки игр и приложений. Написана на C и поддерживает несколько платформ( Windows, macOS, Linux), обеспечивает доступ к графическим, звуковым и input ресурсам. Отличным инструмент для начинающих разработчиков игр. Поддерживает несколько языков программирования (C, C++, C#, Python).
Каких то известных игр я не нашел на нем, но есть хороший туториал по разработке игры. Движок был интересен в плане реализации биндинга lua-c.
Love2d (MIT/C++/Lua)
https://github.com/love2d/love
https://gitlab.com/stone-kingdoms/stone-kingdoms
Минималистичный, но мощный фреймворк для создания 2D игр. Обладает активным сообществом и множеством доступных библиотек и плагинов. Сообщество развивает функциональность движка и помогает создавать разнообразные игры. C этим движком я столкнулся когда помогал с разработкой игры StoneKingdoms (это такой клон Stronghold'a с открытыми исходниками и благословением на разработку от авторов оригинальной игры)
Slwjgl3 (Apache 2.0/java)
https://github.com/LWJGL/lwjgl3
https://libgdx.com/
https://jmonkeyengine.org/
Библиотека для разработки кроссплатформенных 2D и 3D приложений и игр на языке Java. Предоставляет доступ к низкоуровневым библиотекам, таким как OpenGL, OpenAL и GLFW, поддерживает многозадачность и широкие возможности для реализации графики, звука и ввода. Разбирался с исходниками mindustry, и параллельно смотрел саму либу.
Cocos-Engine (Propritary/C++)
https://github.com/cocos/cocos-engine
https://github.com/cocos2d/cocos2d-x
Предоставляет богатую библиотеку ресурсов, инструменты для анимации и физики, поддержку различных языков программирования, включая C++, JavaScript и Lua, широко используется для создания красочных и интерактивных игр на множестве платформ. С движком столкнулся еще в 2014 в EA, на нем было сделано несколько проектов питерской студии.
Phaser (MIT/JS)
https://github.com/photonstorm/phaser
Поддерживает спрайты, тайлмапы, анимации, параллакс-фоны и другие графические элементы, делая создание визуально относительно легким и эффективным. Включает физический движок Arcade Physics для управления столкновениями, гравитацией и другими физическими эффектами в игре. Очень простой для разработки особенно если не знаешь html, за вечер в свое удовольствие накидал клон динозаврика из хрома, с астероидами и поеданием неандертальцев :)
Babylon.js (Apache 2.0/TypeScript)
https://github.com/BabylonJS/Babylon.js
Использует WebGL для отображения трехмерных сцен, обеспечивая хорошую производительность. Поддерживает рендеринг с использованием PBR и освещения, включая рейтрейсинг в реальном времени. Имеет активное и обширное сообщество разработчиков, которые пишет плагины и расширяет функциональность. Как и следующий в списке изучал на нем JS для саморазвития.
PixiJS (MIT/TypeScript)
https://github.com/pixijs/pixijs
Широко используется для создания веб-игр, интерактивных анимаций, рекламных баннеров и других визуальных приложений. Благодаря своей производительности и гибкости, остается популярным среди веб-разработчиков.
The Forge (Apache 2.0/C++)
https://github.com/ConfettiFX/The-Forge
Поддерживает несколько платформ, включая Windows, Linux, Android, iOS и консоли нового поколения. Движок разработан с учетом максимальной производительности и оптимизированные алгоритмы для обеспечения плавной работы игр даже на слабых устройствах (по заявлениям авторов). Обеспечивает доступ к современным графическим API, таким как Vulkan и DirectX 12. Обратил внимание на этот движок, после того как ребят упомянули среди разработчиков одной из игр про SpiderMan. Попробовал собрать примеры с их сайта, но не получилось.
HaxeFlixel (MIT/Haxe)
https://github.com/HaxeFlixel/flixel
Хотя и предоставляет мощные инструменты для разработки, достаточно сложный для новичков в разработке игр. Точно потребуется время, чтобы освоиться с фреймворком и его архитектурой (которой не то чтобы нет, но она не всегда есть). Несмотря на популярность, у него относительно ограниченное количество ресурсов и документации по сравнению с другими игровыми движками. Сообщество последнее время слабо развивается.
Kha (zlib/Haxe)
Низкоуровневая либа для создания игр и мультимедийных приложений, ориентированная на переносимость. Можно представить его как более мощную версию библиотеки SDL. Искал фреймворк на замену SDL2, все хорошо, куча возможностей. Если бы был написан на плюсах, вообще бы цены не было.
PixelBox.js (MIT/Js)
https://github.com/cstoquer/pixelbox
Библиотека для создания пиксельных и ретро-стильных игр и приложений в браузере с использованием JavaScript. Предоставляет разработчикам набор инструментов (не очень большой на самом деле) для работы с пиксельной графикой, звуком и управлением, подходит для создания игр в стиле 8-битных и 16-битных консолей. Относительно новая и малоизвестная библиотека, но предоставляет хорошие инструменты для создания ретро-стильных игр. Собрал по примерам игру и понял, что восьмибитные игры не моё.
OpenFL (MIT/Haxe)
https://github.com/openfl/openfl
Фреймворк для разработки мультимедийных и интерактивных приложений, включая 2D и 3D игры, анимации, визуализации и многое другое. Является современной альтернативой Adobe Flash и предоставляет возможность создавать кроссплатформенные приложения, используя язык программирования Haxe. Очень понравилась в свое время игра Papers, Please и пошел смотреть на чем и как это чудо сделали, заодно немного подучил Haxe.
SFML (zlib/C++)
https://github.com/SFML/SFML
https://github.com/ObEngine/ObEngine
SFML (Simple and Fast Multimedia Library) - это бесплатная и opensource библиотека для разработки мультимедийных приложений и игр. Написана на C++, предоставляет простой и понятный интерфейс для работы с графикой, аудио, сетью и инпутом, хороший выбор для начинающих разработчиков, чтобы познакомиться с хорошо спроектированным API. Есть пара хороших проектов, но они увы с закрытыми сорцами.
SDL2 (zlib, C)
Либой пользуюсь с 2009 года, реальной альтернативы по простоте и подключаемым модулям не нашел. Используется в основном не как самостоятельный фреймворк, а в качестве дополнения к уже существующим для облегчения процесса портирования, позволяет запустить минимальное приложение для почти любой платформы от Винды до HaikuOS, на которое уже можно добавить нужный функционал. Игры, созданные с использованием SDL2, это известные проекты: "Hearthstone: Heroes of Warcraft" от Blizzard Entertainment, "Stardew Valley" от ConcernedApe, "Terraria" от Re-Logic и множество других. Эти игры используют разные движки и фреймворки, но используют SDL для старта окна, рендера и обработки ввода. Сапортится ребятами из Valve.
Хоть SDL и не является полноценным игровым движком, игры на нем разрабатывать достаточно просто. Это мой проект выходного дня, сделан на SDL + C++ + Js в качестве конфигов (https://github.com/dalerank/Akhenaten)
Flame (MIT/Dart)
https://github.com/flame-engine/flame
Flame Engine - это движок для создания игр, полностью на Dart. Обеспечивает создание красочных игр, которые (по словам разработчиков) можно запускать на разных платформах, включая мобильные устройства и веб-браузеры. Создан с учетом возможности интеграции с экосистемой Flutter, делая его удобным для мобильных разработчиков. Увидел у ребенка на телефоне, какой-то очередной идлер про муравьев, который бесстыдно просил деняк и показывал рекламу каждые пять секунд, от рекламы отучил и выдал таблетку от жадности. Заодно узнал, что есть вот такой интересный движок на дарте. Попробовал запустить примеры: на винде не работало (года полтора назад), на линуксе и андроиде запустилось.
Не все однако так радужно, как было в примерах. Коментарий от ASGAlex
https://habr.com/ru/articles/770244/#comment_26124798
Allegro (zlib/plain C)
https://github.com/liballeg/allegro5
Кросс-платформенная либа, ориентированная на создание игр. Достаточно низкоуровневая, чтобы обеспечивать хорошую производительность при большом объеме данных. В целом абстрагирует разработчика от рутинных вещей но не закрывает возможности переделать все под себя. Тем не менее, Allegro не является игровым движком, скорее комбайн с кучей возможностей, игру придется писать самим. Самый известный пример использования это игра Factorio, но уже больше года автор отказывается от Allegro в сторону своих велосипедов.
AndEngine (Apache 2.0/Java)
https://github.com/nicolasgramlich/AndEngine
Древний движок, сейчас не развивается. Некоторые из игр "Cannon Ball", "Zombie Dash", "Plumber". Заря так сказать мобильного игростроя, дал старт другим популярным движкам, отдельные заимствованные части исходного кода и архитектуры встречаются в LibGDX, Cocos2d, Godot Engine, Panda3D, Phaser. Имел хороший API, что делало его неплохим выбором для прототипирования и обкатки разных мелких фич. Использовал его в паре мелких игр для ведроида, когда надо было сделать и показать MVP "уже вчера".
GameMaker (Licensed)
Даже самый начинающий разработчик может сделать игру, популярен настолько, что его начали использовать в школах на уроках программирования, с сыном делал на нем лабу, Hotline Miami конечно не вышло, но за неделю удалось сделать сделать аналог angry birds на минималках. Визуальное программирование это, конечно, штука удобная до поры до времени, но я все же больше предпочитаю плюсы и нормальный код. Где то на форуме я нашел слоган к движку: однажды здесь была создана игра, а потом и вторая, и третья... и так каждый раз, когда кто-то заходил в GameMaker. Лично мне движок не понравился свой переупрощенностью, хотя кому как.
Defold (Apache 2.0/C++)
https://github.com/defold/defold
Сам движок написан на C++, очень хорошо оптимизирован, есть хороший биндинг для Lua. Поддерживает iOS, Android, HTML5, Windows и macOS. Широко использует компонентную архитектуру, почти все системы в движке выполнены в виде компонент и могут быть заменены своими или переписаны, что делает создание и управление компонентов очень удобным. Один из движков, который поддерживает совместную работу через плагины. Каких известных игр я на нем не видел, движок заинтересовал в первую очередь реализацией hotreloаd скриптов (lua), достигается это за счет песочницы для каждого запущенного скрипта. Используется легковесная lua vm, которую перезапускают на лету при изменении кода в скрипте.
GB-Studio (MIT/C)
https://github.com/chrismaltby/gb-studio
Проект родился на gamejam "Bored Pixels 3" за неделю, а потом перерос в полноценный движок для создания мини игр в стиле GameBoy. Простой, интуитивным и легкий в использовании. Действительно умеет делать ROM для GBA, собственно так я с ним и познакомился, когда пытался сделать простенькое приложение для этой платформы.
TileEngine (MIT/C)
https://github.com/megamarc/Tilengine
Графический движок с открытым исходным кодом для создания 2D-игр с использованием тайловых карт, спрайтов и палитр, что позволяет делать игры похожие по стилистике на NES/Sega конца 90-х. Также в движке реализованы на софтовом уровне разные хардварные решения консолей того времени. Per-Column Offset - эффект вибрации, часто ассоциируется с старыми телевизорами и мониторами, хотя был реализован впервые в Sega MD. Per-Pixel Displacement - изменяет положение пикселей на экране, создавая искажения и иллюзию деформации изображения. Использовался в 2д играх для создания эффекта водной поверхности или других искажений. И много других. Сейчас репо почти не обновляется, автор пишет вторую версию движка. Движок заинтересовал в первую очередь реализацией разных эффектов для спрайтов, разного рода наложений, мозаики и слоев.
Godot (MIT/C++)
https://github.com/godotengine/godot
История Godot началась в 2007 году, когда аргентинский разработчик Juan Linietsky начал работать над игровым движком под названием "D.". Также в то время он работал в аргентинском офисе Square Enix в команде по разработке внутреннего движка студии. В 2014 движок был впервые опубликован на гитхабе и через месяц собрал свою первую тысячу звезд, тогда же автор получает грант от Mozilla для продолжения разработки, еще через год гитхаб и Microsoft также выделяют гранты на развитие, а репо разменивает первые 10к звезд. Godot стал платформой для множества игр, включая инди-проекты и крупные коммерческие игры, интересен опять же своим компонентным подходом к разработке. По набору компонентов, ассетов, уроков и размеру сообщества вполне может потягаться с Unity/Unreal. Есть много интересных фичей в редакторе, которые отсутствуют или ограничены в других редакторах, например возможность настраивать все и вся через внутренние скрипты, от игры до самого редактора.
CryEngine (Proprietary)
https://github.com/CRYTEK/CRYENGINE_ReadMe
https://github.com/ValtoGameEngines/CryEngine
https://aws.amazon.com/lumberyard/
https://github.com/o3de/o3de/
Какое-то время исходники движка были доступны на гитхабе, но теперь для доступа к актуальным сорцам надо запрашивать явки и пароли на сайте, который лежит уже больше полугода. Движок очень интересный в плане применения передовых разработок (на конец 2017 года). Поставлялся с мощным редактором под названием Sandbox, который позволял создавать и редактировать уровни, добавлять объекты, текстуры и настраивать логику прямо во время игры в режиме активной паузы, один из первых движков, которые начали применять BT (Behavior Tree), для любых объектов на сцене. В свое время поражала иммерсивность Prey, и возможность взаимодействия с объектами, поэтому как только движок появился в открытом доступе я стал разбираться как он работает. Amazon форкнули его в 2015 для своего LumberYard и продолжили развитие, в итоге он превратился в O3DE
Flax (MIT/C++)
https://github.com/FlaxEngine/FlaxEngine
Движок от одного из архитектов Frostbite, ключевой особенностью возможность писать скрипты на "с++", это конечно не настоящий c++, но очень похож. Если вам, как и мне, комфортно использовать фигурные скобки, то движок должен понравиться. Если не требовать от него шаблонов, то почти c++. Недавно появилась еще и возможность hotreload для с++-скриптов, что очень ускоряет разработку. Движок достаточно взрослый, разработка велась с 2012 года, но исходники стоили денег. Обратил на него внимание из-за его синтаксиса, с++ не очень-то популярен в виде скриптового языка в игровых движках.
Panda3D (MIT/C++)
https://github.com/panda3d/panda3d
Развитие Panda3D началось в начале 2000-х годов как проект Нью-Йоркского университета под руководством доктора Дэвида Фокса и Disney Interactive Studios. Движок разрабатывался для мультимедиа приложений и презентаций, впоследствии был открыт для сообщества. Интересен прежде всего своей библиотекой шейдеров, большинство из которых запатентованы Диснеем, но никто не мешает подсмотреть реализацию.
OGRE (MIT/C++)
https://github.com/OGRECave/ogre
https://www.ambiera.com/coppercube/ (платный саппорт)
Работал с этим движком в Transas, на нем была построена система видеонаблюдения и АРМ оператора. Не только конечно на нем, в связке с Qt. Движок на тот момент был достаточно мощный, с поддержкой новомодных фич, хорошей документацией и дружелюбным сообществом. Отличительной возможностью сейчас авторы ставят возможность скомпилить его для web в пару кликов (https://ogrecave.github.io/ogre/emscripten/)
DagorEngine (Уже BSD/C++)
https://github.com/GaijinEntertainment/DagorEngine
Ну что тут сказать, хороший движок от не менее известной студии. Четыре года положено на его доработку для свича и appletv. На нем бегала Тундра и Cuisine Royale. Достаточно сложный в освоении, явно писался программистами для программистов. Награждает освоивших возможностью запускаться на любом утюге, с железом похожим на проц и видеокарту. Мое мнение - открывать надо было еще 8 лет назад, тогда был шанс потягаться c Unreal. Большие платформы - все что есть в наличии, даже собирали под байкалы его. Мобильные платформы, судя по мобильной тундре, тоже поддерживаются. Улитки молодцы, а картошка вот что-то не торопится ничего выкладывать в опенсорс.
Irrlicht (C++)
https://sourceforge.net/p/irrlicht/code/HEAD/tree/
https://github.com/skylicht-lab/skylicht-engine
C этого движка я начинал знакомство с игростроем, некоторое время сапортил UI фреймворк NerpaGUI, который был почти "официальным" для движка. С полноценным ui редактором в стиле Qt, рефлексией и скриптами внутри виджетов (это 2008-09 года). Что удивительно, движок до сих пор поддерживают, последний комит был пару недель назад. Поддерживают, но не развивают и не меняют, все так и осталось на уровне конца нулевых.
Unreal (C++)
https://github.com/EpicGames/UnrealEngine
Великолепный движок, настоящая жемчужина среди игровых движков! Этот движок способен вдохнуть жизнь в самые амбициозные проекты, надо только где-то достать 64Гб оперативки, а то 32 уже не вывозят. Blueprints — гениальное решение для программирования без кода, которое открыло двери в игрострой любому желающему. А диалект unreal c++, похоже скоро будет новым стандартом. Количество написаных плагинов для движка скоро перевалит за миллион, проще наверное сказать для чего плагины не написаны, и обычно это все отдается в опенсорс или условные пять баксов за доступ к коду.
X-Ray (MIT/C++)
https://github.com/OpenXRay/xray-16
Исходники первого Сталкера, частично утекшие в сеть и огромная работа сообщества по реверсу оригинала привела к тому, что сейчас игра на этом движке выглядит лучше оригинала. Особенности? Свой алокатор памяти, своя векторная математика, свои строки, свои контейнеры, не свое только DX9 - классика игростроя нулевых. Примерно так это все и делалось в начале 2000х с разной степенью упоротости, и на это действительно были причины.
Unity (Proprietary/C++/C#)
Мощный движок, но просто ад для программиста. Работал с ним в 2014 в команде по оптимизации и сапортил компилятор шейдеров. Сложный как для новичков, так и для сеньоров, наверное один из самых сложных что встречал (для поддержки). Очень много легаси кода, который никто не хотел чинить или менять (2014-16 год), зато наваливали новые фичи по щелчку пальцев. Отсутствие многих инструментов на тот момент - редактор шейдеров появился сильно позже. Производительность, наверное, самое больное место движка было, особенно если на девайсе не хватало памяти. К примеру Sims Mobile на андроиде с 2Гб оперативки грузилась за 30сек, а на похожем устройстве с 1Гб уже 4 минуты. Куча переаллокаций памяти на внутренних структурах, где надо и где не надо. В итоге пришлось написать с нуля массив для хранения колбеков, старая версия при добавлении одного элемента (уточню одного элемента) лочила весь двиг, делала копию себя и удаляла старый. Для Sims Mobile, где каждый стул мог иметь до сотни колбеков на разные действия (а еще добавляться или удаляться) это реально было проблемой. И таких объектов на уровне могли быть сотни. В итоге наша версия массива ушла в мастер ветку. Даже минорные обновления умудрялись ломать внутренний API движка, это все было обмазано каким-то неимоверным количеством костылей, чтобы у пользователей все работало.
Мемлики тоже отдельная песня, они были, они есть, и скорее всего их никогда не починят. Не удивлен, почему Cities выжирает 32Гб на моем ноуте и еще немного залазит в своп.
Заключение
Вот такая получилась сборная солянка воспоминаний, в каждом есть свои особенности, каждый интересен, в каждый вложено сотни, если не тысячи человеко-часов разработки. И каждый нашел свою нишу.
Другие движки, с которыми я сталкивался, но дальше обзора дело не шло.
Bevy: https://github.com/bevyengine/bevy (Rust)
Ceramic: https://github.com/ceramic-engine/ceramic (MIT/Haxe)
Pygame: https://github.com/pygame/pygame (LGPL/Python)
Dome: https://github.com/domeengine/dome(MIT/C)
Mach: https://github.com/hexops/mach(MIT/Zig)
PythonArcade: https://github.com/pythonarcade/arcade(MIT/Python)
ClanLib: https://github.com/sphair/ClanLib(zlib/C++)
Just a Neat Game Library: https://github.com/jhasse/jngl (zlib/c++)
Tetra: https://github.com/17cupsofcoffee/tetra(MIT/Rust)
Ursina: https://github.com/pokepetter/ursina (MIT/Python)
Tofu: https://github.com/tofuengine/tofu(MIT/C/Lua)
Ultaviolet: https://github.com/UltravioletFramework/ultraviolet (MIT/C#)
Macroquad: https://github.com/not-fl3/macroquad (MIT/Rust)
GDevelop: https://github.com/4ian/GDevelop (MIT/Java)
Stencyl: https://github.com/Stencyl/stencyl-engine (Haxe)
Heaps: https://github.com/HeapsIO/heaps(Haxe)
MicroStudio: https://github.com/pmgl/microstudio(MIT/JS)
TIC-80: https://github.com/nesbox/TIC-80(MIT/C)
AGS: https://github.com/adventuregamestudio/ags(C++)
Oxygine: https://github.com/oxygine/oxygine-framework(C++)
FlatRedBall: https://github.com/vchelaru/flatredball(C#)
Starling: https://github.com/Gamua/Starling-Framework(ActionScript)
LiteEngine: https://github.com/gurkenlabs/litiengine(Java)
Duality: https://github.com/AdamsLair/duality (C#)
Stride: https://github.com/stride3d/stride(C#)
NeoAxis: https://github.com/NeoAxis/NeoAxisEngine(C#)
WikedEngine: https://github.com/turanszkij/WickedEngine(C++)
JMonkey: https://github.com/jMonkeyEngine/jmonkeyengine(Java)
Fyrox: https://github.com/FyroxEngine/Fyrox (Rust)
Magnum: https://github.com/mosra/magnum(C++)
Lumix: https://github.com/nem0/LumixEngine (MIT/C++)
CastleGame: https://github.com/castle-engine/castle-engine (Pascal)
Обновляется, движки от читателей:
https://github.com/DragonRuby
https://github.com/cocos/example-projects
https://github.com/OGRECave/ogre-next
https://unigine.com/ (Proprietary/No Sources)
https://github.com/UPBGE/upbge
ThreeJS (MIT/JS): https://threejs.org/
https://github.com/study-game-engines
Construct3: https://www.construct.net/en (Proprietary/No Souces)
o2: https://github.com/zenkovich/o2 (MIT/C++)
ebitengine: https://ebitengine.org/ (MIT/Go)
KorGE: https://github.com/korlibs/korge (MIT/Kotlin)
Help: https://hackage.haskell.org/package/helm (Haskell)
Комментарии (73)
simenoff
04.11.2023 04:14+14Движков море, а игр нет
dalerank Автор
04.11.2023 04:14+7формально вы не правы, за прошлый год в стиме вышло 12к+ игр, т.е. каждый день больше 40 новых. Другое дело с их качеством. Так что игры есть и очень много, а играю я 10 раз во второй фолыч :)
Hidden text
tempick
04.11.2023 04:14+3Да в этом году игр просто миллион. Именно хороших игр. Многие даже жалуются, что не успевают проходить всё. От бг3 до алан вейк 2 - релизов просто огромное кол-во. Один из лучших годов в игровой индустрии объективно.
reishi
04.11.2023 04:14-2Ага, сплошные ремастеры или очередной ассасинс крид
tempick
04.11.2023 04:14Ремастером чего являются hogwarts legacy, phantom liberty, baldur`s gate 3, starfield, alan wake 2, atomic heart, lies of p, lords of the fallen, hi-fi rush? Это только те игры, которые вышли на пк, и которыми я интересовался или играл в них.
invelusion
04.11.2023 04:14+1чего нет? 2023 наверное один из самых безбашенных годов по релизам, вам мало?
Larymar
04.11.2023 04:14+6Непонятно, почему Godot только C++, сейчас у данного движка обширная поддержка C#, что важно для огромного пласта девелоперов мигрирующих с юнити
dalerank Автор
04.11.2023 04:14+4Там много биндингов, сам движок написан на плюсах. Добавлю это замечание, спасибо
tm1218
04.11.2023 04:14+1я бы сказал, что Godot даже больше расчитан на аудиторию С#-разработчиков, чем C++
tm1218
04.11.2023 04:14+1Почему-то упущена информация про отечественных производителей, таких, как unigine к примеру
dalerank Автор
04.11.2023 04:14+2я знаю про него (добавил ссылку на сайт), но исходников к нему нет поэтому не стал добавлять, мощный движок, непонятно почему ребята его не шарят. Опыт Unreal показывает, что это дает мощный толчок развитию, движок это 10-15% процентов игры и даже если пошарить всю игру, со всеми ресами и объяснением как собирать, то реально его смогут собрать и пользоваться ну хорошо если 5% тех, кто получил доступ. А поменять и того меньше
max-daniels
04.11.2023 04:14У них там фирменные технологии рендеринга открытых пространств, которых ни у кого нет(вроде). Видимо не хотят делиться, а то добавят такое в анрил и Unigine станет никому не нужен... Ибо зачем платить 6тыс баксов в год за место, когда есть "бесплатный" анрил.
dalerank Автор
04.11.2023 04:14+3Странное конечно поведение, анриал. выкатил люмен и нанит технологии, которые стоили несколько лямов каждая в разработке и это только добавило популярности, и продаж и денег в итоге. Unigine ни в коем случае не хочу обидеть, кушать хотят все. Ну хочешь сделай ее бинарным модулем, просто не вижу смысла скрывать хаусмейд движок когда вокруг десяток открытых как минимум не хуже
galkon
04.11.2023 04:14+3двойная точность так же есть и в CryEngine :), и в VBS
сейчас unigine - это скорее полугосударственная компания (там заказы с алмаз антея идут)
Давно перестал следить за нимиdalerank Автор
04.11.2023 04:14+1если я правильно помню новость 2021 года здесь на хабре, то коркоманда перехала в Люксембург. Так что увы, уже не российская. Может кто из более знакомых с темой расскажет. (https://unigine.com/news/2020/company-restructuring-completed)
Storkur
04.11.2023 04:14Спасибо за такой обширный обзор! А не подскажите движок который подходит для разработки игр-ботов для telegram? Возможно есть какой то с поддержкой api телеграмма? Смотрел в сторону defold, но что то мало информации по этой теме
Aquahawk
04.11.2023 04:14А можете привести хоть один пример такой игры-бота? Я просто делаю и игры и бота, и не понимаю какой движок нужен для совмещения
Wrench_IT
04.11.2023 04:14+1Смотря что вы понимаете под игрой-ботом. Если текстовые игры, то там по сути используется стандартный телеграм-инструментарий для ботов, то есть, берете любую библиотеку под это дело, или тот же FastAPI, и думаете, как адаптировать под вашу игровую задумку. Если что-то более сложное, смотрите в сторону Web Apps и JS-движков.
tm1218
04.11.2023 04:14Как насчёт Blender Game Engine или на нем игры не делают практически?
dalerank Автор
04.11.2023 04:14+1не сталкивался, добавил ссылку на него в статью
https://github.com/UPBGE/upbge
AllSoliton
04.11.2023 04:14+1Сейчас нет его. Да и игр на нём толковых не было, на самом деле, кроме Yo Frankie!, но и то демонстрация от команды Blender.
P. S. Как тут уже упомянули, его вырезали в 2.8. Есть отдельный проект UPBGE.
AnimeSlave
04.11.2023 04:14Mach не проприетарный. Он apache или MIT по лицензии. И вроде только copyright у них в репозитории связан с тем, что авторство того или иного куска кода принадлежит контрибьютору, который это кусок кода написал. То есть скопировать код и выдать себя за автора нельзя
supremestranger
04.11.2023 04:14+2Здесь еще много движков
dalerank Автор
04.11.2023 04:14+2добавлю сразу ссылку на github https://github.com/study-game-engines
LeXaNe
04.11.2023 04:14+2А есть ли движки заточенные под создание логических игр, типа крестики нолики ,2048, пятнашки, тетрис и т.д? Так как использование таких мощных движков как Unity, Unreal Engine для таких игр будет как стрельба из пушки по воробьям, на мой взгляд.
dalerank Автор
04.11.2023 04:14из того что я видел cocos, да и юнити как раз для таких вещей идеален, вы не смотрите что он большой мега комбайн, если вы не требуете от него космических вещей, то работать одно удовольствие. Под капот главное не заглядывать
ASGAlex
04.11.2023 04:14+3Добавлю про Flame свои три копейки, т.к. в эту тему уже года полтора погружен.
Там сейчас всё нормально запускается, в плане примеров, и все они работают в браузере, там же можно потыкать, ничего не скачивая.
Сам движок довольно ограниченный, во-первых тем, что под копотом skia, которая особо не даёт как-то "на микроуровне" рулить GPU, во-вторых намерениями разработчиков, которые в целом не принимают во внимание случаи, когда в игре будет больше пару сотен компонентов, ну а в третьих самим контингентом пользователей. Не все, конечно, дубы, но от некоторых такое чувство, что вчера они собирали игру в Game Maker а сегодня написали свой Hello World на дарте и теперь преисполнились...
Для иллюстрации: вот сделали для Flame движок для быстрого делания RPG игр, и вроде на нем легко собрать то, что нужно, но даже просто карту он будет рендерить на 15-30 FPS на средненьком телефоне, потому что автор просто даже близко не думал о том, скольок ресурсов жрут его архитектурные решения.
Или вот совсем недавно в самомом Flame даже сейчас можно посадить FPS, просто добавим несколько тысяч пустых компонентов. которые даже рендериться не будут. А до недавнего времени простое касание экрана приводило к перебору всего дерева компонентов, что, конечно, подвешивало игру.
Узкое место архитектуры движка - это дерево компонентов, модификация которого выходит довольно дорого, а масла в огонь подливает "архитектурная политика" разработчиков, которые считают, что любые объекты нужно запихивать в это дерево. Что плохо сказывается на производительности, но об этом они будут думать только когда начнут разрабатывать версию движка 2.0, то есть где-то в необозримом будущем.
Если резюмировать, то движок без допилов можно использовать только для игр, которые более-менее помещаются в ваш один экран. Все вот эти идлеры, инфинити раннеры, вот это вот всё... Остальное он при текущей архитектуре просто не потянет.
А ещё есть проблемы со звуком (задержки воспроизведения в зависимости от платформы, крэши, влияние на производительность всей остальной игры) , с методами ввода (для мыши не распознаётся кнопка, которой был произведён клик, для геймпадов библиотека заброшена и вообще несовместима ни с современным Dart ни с Flame)....
В общем, к этому движку надо подходить крайне осторожно, особенно когда из каждого утюга тебе кричат, что Flutter крутой и сейчас захватит мир, вот мы вам сюда пиксельные шейдеры даже завезли, вот вам новый графический движок Impeller, который магически будет рендерить лучше (фигня, типичная рекомендация для Flame - выключите его, и все баги пройдут).... а то часто у людей любовь к конкретному инструменту перевешивает здравый смысл и критическое мышление, увы.
Я такой злой, не потому что у меня с Flame ничего не получилось, наоборот - запилил на нем прототип игры, преодолел бОльшую часть проблем, которые шли вместо с Flame в коробке, пилю свою либу для более сложных и масштабных игр... вот весь этот долгий пройденный путь и позволяет мне ругаться на движок не просто со злости. а со знанием дела xD
dalerank Автор
04.11.2023 04:14+1вы не против, если ссылку на коментарий ваш в абзаце оставлю?
оставлю тут ссылку на ваши мытарства https://habr.com/ru/articles/706256/
не у всех есть возможность разобраться с потрохами, а через полгода пересаживать проект на другой долго и дорогоASGAlex
04.11.2023 04:14Да, конечно, буду только рад ????
Угу, вот это то, с чего меня больше всего бомбит, когда начинаешь проект на стеке, который тебе разрекламировали как "может всё", а потом узнаешь правду и у тебя все планы и дедлайны слетели, перед заказчиком хз как оправдываться и т.п....
1755
04.11.2023 04:14+2bevy мне очень понравился, особенно его ecs система и он достаточно активно развивается, как в плане фич, так и роста сообщества.
Надеюсь, доведу до законченного состояния хобби проект на нем :)
PsihXMak
04.11.2023 04:14Кто подскажет хороший C++ 2D движок с минимальным размером билда? Godot меня всем устраивает, кроме размера билда 50Мб+ на винде.
AnimeSlave
04.11.2023 04:14Вопрос такой. А для чего? Мобилки? Web-игры?
PsihXMak
04.11.2023 04:14Преимущественно для Windows
SFML, вроде, даёт небольшой билд. Попробую его.
AnimeSlave
04.11.2023 04:14Ну это не движок, а графическая библиотека. И в ней нет редактора, как в Godot. Попробуйте Defold
dalerank Автор
04.11.2023 04:14да, defold может помочь, но вам придется вырезать luavm, чтобы получить бинарник меньше 40мб, что лишает вас половины удобства и возможностей в разработке, на реддите был пост про такой эксперимент. 15Мб бинарь у них получился, но готовы ли вы писать игру на чистых плюсах?
PsihXMak
04.11.2023 04:14Было бы неплохо иметь встроенный скриптовый язык. Но, в целом, без него можно обойтись. Можно попробовать запилить свою минимальную реализацию.
Зато 15 Мб звучит уже приемлемо.
anz
04.11.2023 04:14вроде же defold всю дорогу хвастались что у них минимальный бинарь 2-3мб?
dalerank Автор
04.11.2023 04:14последние года три точно нет, если выключить ВСЕ модули может и получится, но смысл от голого рендера? https://github.com/defold/build-size
около 5Мб размер пустого проектаPsihXMak
04.11.2023 04:14+1Я скачал их редактор и собрал один из демонстрационных проектов. Получил билд в 7 с лишним мегабайт. По моему, весьма достойно.
Aventy
04.11.2023 04:14Гамак есть, стенсел есть, гдевелоп есть, констракта нет, не надо так... даже всякие низкоуровневые либы есть...
dalerank Автор
04.11.2023 04:14+1не работал с ним, вижу что опенсорс какието очень старые версии
https://sourceforge.net/p/construct/code/HEAD/tree/
impakashi
04.11.2023 04:14Terraria написана на Microsoft XNA, а не на SDL
dalerank Автор
04.11.2023 04:14я знаю, в абзаце про SDL речь идет про то, что либа используется как мидлвар для запуска основного движка (создание окна, получение контекста рендера, обраотка ввода) и не нужно писать самому бойлеркод для поддержки всех платформ. Если вы заметили, то видео с играми там нет, только описание технологии. Поправил, чтобы не было разночтений
moroz69off
04.11.2023 04:14Так!
А где Microsoft Excel? Почему нет на первом месте?
Лицензия маленькая и мягкая, написано на C, C++, обёртка VBA
Andrey_Ivanofff
04.11.2023 04:14Отмечусь с хаскелем:
Игровой движок Helm: https://hackage.haskell.org/package/helm
Не столько игровой движок, сколько библиотека для 2Д графики и рисования, но предоставляет средства для анимации и симуляции, а также имеет кучу вспомогательных библиотек, которые приближают к статусу движка: https://hackage.haskell.org/package/gloss
Если мне память не изменяет, я как раз на глоссе когда-то давно визуализацию эффекта Комптона делал...
dalerank Автор
04.11.2023 04:14добавил, интересная либа, а что-то в проде на нем есть? вижу что тянет зависимость на SDL, я писал что SDL часто является мидлвар для разного рода фреймворков, позволяя быстро делать обертки для большого числа платформ
Andrey_Ivanofff
04.11.2023 04:14Не, на проде ничего не видно. Да и сам Helm уже давно не обновлялся, и вряд ли ещё будет. Сейчас среди игровых движков в хаскеле ситуация не самая лучшая: высокорейтинговые пакеты в застое, а новые... слишком новые. Кроме того, есть байндинги для Godot, так что народ, скорее всего, будет пробовать в основном его
Grozamir
В примере для cocos. Видео с игрой hearthstone. Которая сделана не на cocos, а на unity.
И наверно стоит дополнительно написать про Cocos creator. Так как он уже полноценный игровой движок с поддержкой 3d и скрипты пишут на ts.
Ещё добавьте информации про ogre-next(или ogre2). В котором добавили глобальное освещение (чем то схож с lumen из ue5).
dalerank Автор
спасибо, поправил