Введение
Компьютерный игровой движок
Irrlicht (произносится на немецком языке) — это игровой движок с открытым исходным кодом, написанный на C++. Он кроссплатформенный, официально поддерживается в Windows, macOS, Linux и Windows CE, а благодаря открытой природе существуют порты и для других систем, включая FreeBSD, Xbox (до версии Irrlicht 1.8.1), PlayStation Portable, Symbian, iPhone, AmigaOS 4, Sailfish OS через обёртку QT/Qml и Google Native Client. Irrlicht известен своим небольшим размером, совместимостью как с новым, так и со старым оборудованием, простотой освоения и большим, дружелюбным сообществом. Существуют неофициальные привязки для многих языков программирования, включая AutoIt, C++Builder, FreeBASIC, GameMaker Language, Java, Lua, .NET, Object Pascal (Delphi), Perl, Python и Ruby, однако большинство из них не обновлялись в течение пяти лет и более. Разработка Irrlicht началась в 2003 году с одним разработчиком, Николаусом Гебхардтом. Команда выросла до десяти человек к 2011 году, после выпуска версии 1.0 в 2006 году, большинство из которых были разработчиками. Irrlicht – распространенное немецкое слово, означающее «бледное пламя» или «призрачный огонь».
Особенности
Irrlicht поддерживает 3D-рендеринг через OpenGL, DirectX 8, 9 и внутренние программные растрировщики. Поддержка DirectX 8 будет прекращена после версии 1.8.1, что фактически завершит поддержку Xbox. Внешние рендереры и оконные системы подключаются через простые интерфейсы, что привело к созданию сообществом видеодрайвера Simple DirectMedia Layer (SDL) и поддержке устройств iPhone и Symbian. Движок поставляется с библиотекой стандартных материалов, обеспечивающих возможность использования запасных материалов в случае, если аппаратное обеспечение пользователя не поддерживает продвинутые методы. Новые материалы можно добавлять в движок во время выполнения, позволяя пользователям создавать собственные по мере необходимости. Помимо устаревших материалов с фиксированным конвейером, поддерживаются программируемые пиксельные и вершинные шейдеры (версий 1.1–3.0 и 4.0 с использованием GLSL), ARB-фрагментные и вершинные программы, HLSL, Cg и GLSL. Irrlicht поддерживает множество форматов файлов, включая файлы 3ds Max, модели Quake 2 MD2, объекты Wavefront obj, карты Quake 3 bsp, объекты Milkshape3D и файлы DirectX x. Дополнительные загрузчики форматов были разработаны как внешние плагины. Освещение, камеры и 3D-объекты управляются как дерево сценных узлов – произвольно группируемые сущности, связанные друг с другом в графе сцены. Эти узлы отвечают за собственное поведение, но также могут управляться аниматорами, другими узлами или вручную пользователями. Существует множество встроенных типов узлов, которые можно комбинировать для создания сложных внутренних и внешних сцен. Создание новых узлов несложно, и их можно добавлять во время выполнения; в сообществе доступно множество дополнительных типов узлов. Типы узлов, поставляемые с Irrlicht, включают в себя рендерер местности и небесные купола/боксы для внешнего рендеринга, разделение пространства на двоичные части (BSP) для внутреннего рендеринга, анимированные сетки на основе костей, тени с использованием трафаретной буферизации, билборды и системы частиц, водные поверхности и примитивы. Доступен настраиваемый 2D графический пользовательский интерфейс (GUI) с поддержкой множества элементов управления и возможностью подключения пользователями собственных (или созданных сообществом) пользовательских виджетов во время выполнения. Внутренняя система событий Irrlicht предоставляет события мыши, клавиатуры, джойстика и GUI без необходимости использования дополнительных библиотек. Доступ к файловой системе абстрагирован, что обеспечивает независимый от платформы доступ к файлам и папкам, а также прозрачный доступ к файлам внутри ZIP-архивов. Другие функции ввода/вывода включают в себя XML-парсер и писатель, возможность создания скриншотов, манипулирования изображениями и сетками с последующим сохранением их в различных форматах файлов. Irrlicht предоставляет поддержку простого обнаружения столкновений, включая выбор объектов мышью, однако пользователям рекомендуется, что это не является заменой полноценного физического движка.
Расширения двигателя
Irrlicht был разработан с возможностью загружать и сохранять текущую сцену в XML-файл; это, в сочетании с моделью лицензирования с открытым исходным кодом движка, привлекло множество программистов и разработчиков к созданию редакторов мира для Irrlicht, чтобы упростить процесс создания игровых миров. Одним из таких примеров является редактор мира irrEdit, разработанный Николаусом Гебхардтом и другими членами компании Ambiera. IrrEdit включает в себя генератор карт освещения методом радиозности и интерфейс для скриптов, использующий язык Squirrel. Поскольку Irrlicht сам по себе не поддерживает звук, компания Ambiera также разработала irrKlang – несвободную, проприетарную аудиобиблиотеку с API, аналогичным Irrlicht. Разрабатываемый той же командой, irrEdit поддерживает использование звуков в уровнях, созданных в irrEdit, для использования с скомпилированными DLL-библиотеками, включающими irrKlang. Кроме того, среди разработок Ambiera – irrXML, XML-парсер для Irrlicht. Для Irrlicht были созданы плагины и обертки для многих физических движков, включая Nvidia PhysX, Bullet и Open Dynamics Engine. Дополнительные расширения можно найти на форумах Irrlicht и в проекте irrExt – побочном проекте Irrlicht, предназначенном для специальных дополнений. На форумах также обсуждаются новые технологии, такие как отложенное затенение и shadow mapping. Многие пользователи вносят свой вклад, разрабатывая расширения, такие как Compute Shaders (OpenGL 4.3) и Tessellation Shaders (Shader Model 5.0).