Пролог
Не так давно я увидел showreel движка, который выглядит более чем конкурентно
В этой статье я максимально кратко расскажу об этом движке и косвенно сравню с прямыми конкурентами.
Немного про историю
Все началось в 2004(!) году с Александра Запрягаева и его opensource проекта.
В 2010 году вышел Heaven Benchmark на основе Unigine.
В 2012 вышла спорная с точки зрения геймплея, но симпатичная OilRush.
В 2017 вышла забавная индюшка
Текущее состояние
10 апреля 2020 вышла Community версия, которую можно, использовать если у вашей компании доход меньше 100к$ или для некоммерческого проекта.
Интерфейс
Сразу хочу отметить то лучшее что ребята взяли от Unreal engine: доступ ко всем необходимым свойствам объекта вроде LOD ,Render ,Collision etc.
В меню просмотра сцены есть удобный дебаг рендера:
Иерархия сцены построена странно, в ней есть отдельно материалы на сцене, отдельно объекты:
К минусам хочется отнести то, что нельзя одновременно открыть две сцены, так же система вкладок далека от Unreal engine с точки зрения удобства.
Снизу находиться обычный asset browser и консоль, которые такие же как и везде:
Хотелось бы отметить странный показатель папки, в которой ты сейчас находишься
Скриптинг и апи
пример кода на с#
using Unigine;
namespace UnigineApp
{
class AppWorldLogic : WorldLogic
{
/* .. */
public override bool Update()
{
// getting current controls
Controls controls = Game.Player.Controls;
// checking controls states and reporting which buttons were pressed
if (controls.ClearState(Controls.STATE_FORWARD) != 0 || controls.ClearState(Controls.STATE_TURN_UP) != 0)
{
Log.Message("FORWARD or UP key pressed\n");
}
else if (controls.ClearState(Controls.STATE_BACKWARD) != 0 || controls.ClearState(Controls.STATE_TURN_DOWN) != 0 )
{
Log.Message("BACKWARD or DOWN key pressed\n");
}
else if (controls.ClearState(Controls.STATE_MOVE_LEFT) != 0 || controls.ClearState(Controls.STATE_TURN_LEFT) != 0 )
{
Log.Message("MOVE_LEFT or TURN_LEFT key pressed\n");
}
else if (controls.ClearState(Controls.STATE_MOVE_RIGHT) != 0 || controls.ClearState(Controls.STATE_TURN_RIGHT) != 0 )
{
Log.Message("MOVE_RIGHT or TURN_RIGHT key pressed\n");
}
return true;
}
}
}
и на С++
#include <Unig ineGame.h>
/* .. */
int AppWorldLogic::update()
{
// getting current controls
ControlsPtr controls = Game::getPlayer()->getControls();
// checking controls states and reporting which buttons were pressed
if (controls->clearState(Controls::STATE_FORWARD) || controls->clearState(Controls::STATE_TURN_UP))
{
Log::message("FORWARD or UP key pressed\n");
}
else if (controls->clearState(Controls::STATE_BACKWARD) || controls->clearState(Controls::STATE_TURN_DOWN))
{
Log::message("BACKWARD or DOWN key pressed\n");
}
else if (controls->clearState(Controls::STATE_MOVE_LEFT) || controls->clearState(Controls::STATE_TURN_LEFT))
{
Log::message("MOVE_LEFT or TURN_LEFT key pressed\n");
}
else if (controls->clearState(Controls::STATE_MOVE_RIGHT) || controls->clearState(Controls::STATE_TURN_RIGHT))
{
Log::message("MOVE_RIGHT or TURN_RIGHT key pressed\n");
}
return 1;
}
Tак выглядит логика среды выполнения, в принципе ничего необычного:
на самом деле такое поверхностное сравнение не имеет смысла, но отсутвие вызова 100 библиотек и 10 пространств имен ради простых вещей меня уже радует, чисто визуально код выглядит лаконично и названия классов имено такие какие ждешь что лично меня опять же радует. Поработаю месяц на движке и расскажу подробнее
рассказать о разработке под мобильный vr
Платформы
- Windows
- linux и OSX
- VR: steamvr
- Обещают android, ios, playstation, etc… но не понятно по датам
Рендер — шейдинг — vfx
Сцена на 500к полигонов с кучей неплохих vfx бегает в 300+fps даже на моем скромном ноутбучном железе
Particicle editor
Внутри есть все для создания современного pbr, причем работает во вьюпорт все быстрее чем в UE4.
Просто робот из примера от разработчиков движка:
А вот так выглядит низкие настройки графики в понимании авторов в уже собранном проекте:
Кстати внутри компании есть собственного алгоритм:
[Practical Cascaded Shadow Maps](https://developer.download.nvidia.com/SDK/10.5/opengl/src/cascaded_shadow_maps/doc/cascaded_shadow_maps.pdf)
Чего в нем хорошего?
- много примеров, гайдов и референс кода
- годная поддержка всех современных фичей от nvidia про которые надо писать отдельной статьей
- сравнительно низкий порог вхождения несмотря на то что UI все еще сырой
Эпилог
Сейчас Unigine хоть и сырой, и не поддерживает основные платформы, но уже выглядит многообещающие, и возможно через несколько лет вместе с Unreal Engine и Unity в один ряд встанет и Unigine.
Дополнительные ссылки
[большое интервью](https://secretmag.ru/trends/players/unigine.htm)
[мигрантам с unreal engine ](https://developer.unigine.com/ru/docs/2.11/migration/from_ue/?rlang=cpp)
[мигрантам с unity engine](https://developer.unigine.com/ru/docs/2.11/migration/from_unity/?rlang=cpp)
Семь лет назад выходила [игра](http://flying-cafe.com/ru.shtml)
ArXen42
Периодически читаю новости в их блоге. Сложилсь впечатление, что это очень мощная платформа, но сейчас движок используют в основном в более узких/профессиональных сферах, чем игры (симуляторы, визуализации и т.д.).
Часто выходят обновления, например до недавнего времени Community версии и поддержки C# не было, только C++ (по которому они еще когда-то проводили курсы).
Наверное идеальный был бы движок для Star Citizen, сейчас из игр на UNIGINE делают Dual Universe (кажется довольно успешно).
alexwortega Автор
Я со вчерашнего вечера тыкаю в него палкой и смотрю что будет, и каждый раз физически кайфую. Потенциал их алгоритмов- шикарен, если они наконец запилят мультиплеер и возможность сборки под мобилки, есть шанс что на рынок начнут выходить куда более годные проекты, ну или мы получим один юнити с возможностями анрила.
alexwortega Автор
Честно говоря симуляторы мало чем отличаются от игр с точки зрения процесса разработки. Просто изначально нет необходимости "оказуаливания" механик
ArXen42
Я так понимаю, у unigine есть заточенные под это фичи (64 битные координаты, готовые и оптимизированные системы для создания масштабного рельефа и лесов и т.д.). Тем же разработчикам Star Citizen 64 битные координаты и физику пришлось добавлять самим в свой потомок Cry Engine, насколько я помню.
Но это только впечатление от прочитанного в сети, конечно, своего опыта ни в том ни в другом толком нет.