Приветствую, читатель.
В данной публикации речь пойдет о перспективном и достаточно молодом игровом движке, который незаслуженно остался в тени таких гигантов, как Unity или Unreal Engine.
Разработчиками является объединение энтузиастов под руководством Adam's Lair.
Как нам говорит официальный сайт: «Duality — это модульный игровой 2D-движок, поставляемый вместе с собственным редактором. Он легко расширяем, написан на C# и использует OpenGL для вывода графики.» Для написания логики в Duality применяется популярная компонентно-ориентированная архитектура. Написали компонент, прикрепили к игровому объекту и все работает, полностью избавляя программиста от рутины. Еще одним преимуществом является поддержка плагинов, которые любой желающий может создавать и подключать к своим проектам.
— Классика, — скажете вы и будете правы. Duality не хуже других инструментов, он также берет на себя управление ресурсами, предоставляет подсистемы ввода-вывода, графику, аудио и симуляцию физики. Если к этому добавить удобный редактор Dualitor, то можно получить превосходную среду для разработки инди-игр.
Думаю, вы хотите увидеть, как это все выглядит.
Редактор. Простовато, но функционально. В нем видны привычные нам Scene View, Project View, Inspector и Camera View. Внизу находится скрытая панель логов.
А это пример кода для компонента, который управляет перемещением космического корабля.
Не знаю как вы, а я приятно удивлен простотой этого фреймворка. Кстати, показателем успешности движка являются игры, сделанные на нем. Поскольку его используют небольшие команды, то и игры выпускают не уровня ААА. Так что похвастаться пока особо нечем. На этом сайте вы можете посмотреть готовые игры.
Еще мне известен один серьезный проект, на данный момент находящийся в разработке и выложенный в Steam, но об этом лучше написать в другой раз.
Кроссплатформенность движка является одной из его слабых сторон. Полностью поддерживается только ОС семейства Windows, остальные либо поддерживаются сторонними разработчиками, либо не поддерживаются вообще. Так же отсутствует встроенная реализация UI, но поскольку Duality является модульным движком, то существуют плагины, которые устраняют этот недостаток.
Следующим серьезным минусом будет проблема сетевого API. На данный момент не существует плагина или модуля ядра, который бы реализовал мультиплеерные возможности.
И главная причина, по которой движок проигрывает конкурентам — немногочисленное сообщество. Слишком мало людей, которые занимаются развитием этого хорошего инструмента.
В заключение этого краткого обзора хочу сказать, что существует множество других игровых движков, которые возможно не уступают данному и это хорошо. Я, конечно, не призываю вас бросать все, чем вы уже пользуетесь, но представляю вашему вниманию качественный проект. Если вы разработчик-одиночка или небольшая команда, которая ищет что-то простое и достаточно мощное, попробуйте Duality.
Официальный сайт.
В данной публикации речь пойдет о перспективном и достаточно молодом игровом движке, который незаслуженно остался в тени таких гигантов, как 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. Внизу находится скрытая панель логов.
Dualitor![](https://habrastorage.org/r/w1560/webt/wv/5g/ue/wv5guebwzucdwnkfy8dnqb-7zbc.png)
![](https://habrastorage.org/webt/wv/5g/ue/wv5guebwzucdwnkfy8dnqb-7zbc.png)
А это пример кода для компонента, который управляет перемещением космического корабля.
Код
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<RigidBody>();
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 ожидать не стоит
Кроссплатформенность движка является одной из его слабых сторон. Полностью поддерживается только ОС семейства Windows, остальные либо поддерживаются сторонними разработчиками, либо не поддерживаются вообще. Так же отсутствует встроенная реализация UI, но поскольку Duality является модульным движком, то существуют плагины, которые устраняют этот недостаток.
Следующим серьезным минусом будет проблема сетевого API. На данный момент не существует плагина или модуля ядра, который бы реализовал мультиплеерные возможности.
И главная причина, по которой движок проигрывает конкурентам — немногочисленное сообщество. Слишком мало людей, которые занимаются развитием этого хорошего инструмента.
Основные возможности движка:
- 2D-физика на основе Farseer Physics Engine. Среди встроенных компонентов есть функциональный Rigidbody, который покрывает основные требования к физическим объектам.
- 2D-анимация с помощью компонента AnimSpriteRenderer. Вместе с простой системой пользовательского ввода можно легко анимировать любого персонажа.
- Поддержка вершинных и фрагментных шейдеров. Если этого будет мало, то вы можете реализовать свой собственный компонент для рендеринга.
- Префабы, в том числе и вложенные, так что проблем с заготовкой игровых объектов не возникнет.
- Удобный контент-менеджер. Ссылки на ресурсы автоматически поддерживаются и легко используются в коде.
- TileMap'ы были созданы как отдельный плагин, но прекрасно используют возможности движка для максимальной производительности.
- Расширяемость редактора. Вы можете добавлять в редактор свою собственную функциональность, писать команды и плагины, которые будут нужны именно под ваши задачи.
В заключение этого краткого обзора хочу сказать, что существует множество других игровых движков, которые возможно не уступают данному и это хорошо. Я, конечно, не призываю вас бросать все, чем вы уже пользуетесь, но представляю вашему вниманию качественный проект. Если вы разработчик-одиночка или небольшая команда, которая ищет что-то простое и достаточно мощное, попробуйте Duality.
Официальный сайт.