В данной публикации речь пойдет о перспективном и достаточно молодом игровом движке, который незаслуженно остался в тени таких гигантов, как Unity или Unreal Engine.
Разработчиками является объединение энтузиастов под руководством Adam’s Lair.
Как нам говорит официальный сайт: «Duality — это модульный игровой 2D-движок, поставляемый вместе с собственным редактором. Он легко расширяем, написан на C# и использует OpenGL для вывода графики.» Для написания логики в Duality применяется популярная компонентно-ориентированная архитектура. Написали компонент, прикрепили к игровому объекту и все работает, полностью избавляя программиста от рутины. Еще одним преимуществом является поддержка плагинов, которые любой желающий может создавать и подключать к своим проектам.
— Классика, — скажете вы и будете правы. Duality не хуже других инструментов, он также берет на себя управление ресурсами, предоставляет подсистемы ввода-вывода, графику, аудио и симуляцию физики. Если к этому добавить удобный редактор Dualitor, то можно получить превосходную среду для разработки инди-игр.
Так зачем мне нужен Duality, когда есть более обширные решения вроде Unity?
- Бесплатность (MIT License). Вы не обязаны платить, публиковать свои исходники и совершать прочие ограничивающие ваше творчество действия. Исходники Duality тоже доступны на GitHub.
- Легковесность. Редактор весит ~100 мб, полностью рабочая игра весит ~7 мб.
- Быстродействие. В последней на данный момент версии v3 проделана масштабная оптимизация движка. В проведенных тестах на предполагаемую загруженность, время отрисовки в худшем случае не превышало 6 мс, а сборки мусора проводились около пяти раз в минуту.
- Простота. Если вы знакомы с тем же Unity или Unreal Engine, то освоить Duality сможете без проблем. API хорошо документировано и предоставляет удобные интерфейсы для того, чтобы программист не отвлекался на низкоуровневые операции.
- Сообщество. Возможно оно не исчисляется тысячами пользователей, но в нем присутствуют преданные разработчики, которые самолично помогают новичкам в освоении движка. Очень дружелюбно и своевременно. Кроме того, созданы различные туториалы и открыт форум, на котором содержится большое количество полезной информации.
Возможно, это стоит попробовать
Думаю, вы хотите увидеть, как это все выглядит.
Редактор. Простовато, но функционально. В нем видны привычные нам Scene View, Project View, Inspector и Camera View. Внизу находится скрытая панель логов.
А это пример кода для компонента, который управляет перемещением космического корабля.
using Duality; using Duality.Components.Physics; using Duality.Input; namespace Duality_ { [RequiredComponent(typeof(RigidBody))] public class Player : Component, ICmpUpdatable { public void OnUpdate() { RigidBody rb = GameObj.GetComponent(); if (DualityApp.Keyboard[Key.Left]) rb.ApplyLocalForce(-0.001f * rb.Inertia); else if (DualityApp.Keyboard[Key.Right]) rb.ApplyLocalForce(0.001f * rb.Inertia); else rb.AngularVelocity -= rb.AngularVelocity * Time.TimeMult * 0.1f; if (DualityApp.Keyboard[Key.Up]) rb.ApplyLocalForce(Vector2.UnitY * rb.Mass * -0.2f); else if (DualityApp.Keyboard[Key.Down]) rb.ApplyLocalForce(Vector2.UnitY * rb.Mass * 0.2f); } } }
Не знаю как вы, а я приятно удивлен простотой этого фреймворка. Кстати, показателем успешности движка являются игры, сделанные на нем. Поскольку его используют небольшие команды, то и игры выпускают не уровня ААА. Так что похвастаться пока особо нечем. На этом сайте вы можете посмотреть готовые игры.
Еще мне известен один серьезный проект, на данный момент находящийся в разработке и выложенный в Steam, но об этом лучше написать в другой раз.
В заключение этого краткого обзора хочу сказать, что существует множество других игровых движков, которые возможно не уступают данному и это хорошо. Я, конечно, не призываю вас бросать все, чем вы уже пользуетесь, но представляю вашему вниманию качественный проект. Если вы разработчик-одиночка или небольшая команда, которая ищет что-то простое и достаточно мощное, попробуйте Duality.
Источник