Xtreme3D 3.x - полностью независимая реализация Xtreme3D, написанная с нуля администратором сайта Gecko при содействии участников нашего форума. Как известно, оригинальный Xtreme3D от Xception распространялся без исходников, и после того, как Xception забросил работу над своим проектом, движок долгое время не развивался. В нашем сообществе постоянно витала идея воссоздать его заново, исправить баги и добавить недостающую функциональность - учитывая, что движок является враппером GLScene, эта задача казалась несложной и чисто технической. Однако возникли непредвиденные проблемы, и дело затянулось. В итоге, проект, начавшийся в 2009 году, был завершен лишь в 2016-м.
Сейчас Xtreme3D 3.х - наиболее мощная и функциональная версия движка, намного превосходящая по возможностям Ultimate3D и практически не уступающая GMOgre (полный список возможностей см. ниже). А главное - это единственный активно разрабатывающийся 3D-движок для Game Maker. На основе Xtreme3D 3.x можно создавать игры с графикой уровня 2005-2010 гг. - теоретически, можно сделать что-то наподобие Doom 3, Half-Life 2, TES4: Oblivion и т.д. Дальнейшее развитие графических возможностей Xtreme3D затруднено, поскольку библиотека GLScene 1.0, на которой он основан, использует достаточно старые технологии и ограничена функциональностью OpenGL 1.x-2.0.
Авторы Xtreme3D 3.x:
Gecko - основная часть библиотеки
FireRun - функции VerletWorld, дополнительные функции создания примитивов, дополнительные функции Viewer, Light, Grid, Material, Actor, Freeform, HUDSprite, Sprite, FireFX, Lines, Movement
Rutraple aka Hacker - функции DCE
Ghost - функции Grid
gadmaker - функция WindowSetIcon.
Отдельное спасибо gadmaker, van88268, FireRun, JunkerKun, Александру Демченко за багрепорты и конструктивные предложения.
Релизы Xtreme3D 3.x доступны в виде SDK для Game Maker Studio 2 - это комплект, включающий скомпилированный движок и все необходимые DLL-библиотеки, документацию, пример, а также пакет yymps со скриптами и константами.
К сожалению, SDK несовместим с Game Maker Studio 2 версии 2022.800.0.161 и выше из-за полного перехода конструктора на 64-битную архитектуру: Xtreme3D пока доступен только в качестве 32-битной библиотеки. В данный момент мы работаем над портом движка на современный Delphi и 64 бита.
Также доступен SDK для Python, включающий скрипт-генератор и набор примеров, основанных на SDL2.
Стабильная версия - Xtreme3D 3.9.2
Скачать Xtreme3D 3.9.2 SDK на GitHub
Xtreme3D 3.x является свободным коммьюнити-проектом. Исходники доступны на GitHub по лицензии Mozilla Public License.
Репозиторий Xtreme3D 3.x
Полный список особенностей и возможностей Xtreme3D 3.x:
Легковесность. Xtreme3D - это всего одна DLL-библиотека размером около 1.6 Мб (плюс две необязательные - физический и шрифтовой движки)
Хорошо спроектированная архитектура, простой и интуитивный API
Движок создан для Game Maker, но можно использовать его почти с любым языком или средой, где есть поддержка DLL
Низкие системные требования, движок отлично работает практически на любых конфигурациях - Xtreme3D основывается на OpenGL 1.x и нескольких расширениях для работы отдельных функций
Граф сцены с иерархией объектов. Рендеринг всего графа целиком, либо отдельных объектов и подграфов
Экранный антиалиасинг MSAA 2x и 4x. Имеется поддержка технологии сглаживания NVIDIA Quincunx. Можно также реализовать FXAA и другие методы сглаживания
Динамическое освещение, неограниченное количество виртуализированных источников света
Поддержка множества форматов 3D-моделей: 3DS, OBJ, FBX, LWO, ASE, BSP, MS3D, B3D, MD2, MD3, MD5, MDC, SMD, X, LOD, CSM, DXS, OCT, NMF, WRL, PLY, GTS, TIN, STL, GLSM. Есть возможность написать собственный загрузчик 3D-моделей произвольного формата
Поддержка стандартных форматов изображений: BMP, JPG, PNG, TGA, DDS
Скелетная и вершинная анимация
Смешивание скелетных анимаций, прикрепление объектов к костям
Эффект взрыва для мешей
Рендеринг геометрических примтивов: параллелепипед, сфера, цилиндр, конус, полый цилиндр, тор, диск, усеченная пирамида, додекаэдр, икосаэдр, чайник Юта
Рендеринг 2D-текста. Можно загружать TTF-шрифты и выводить кириллицу (и вообще любые символы Юникода) кодировкой UTF-8. Для вывода кириллицы из языков, которые не поддерживают UTF-8, есть также поддержка Windows-1251 и пользовательских 8-битных кодировок
Рендеринг 2D-спрайтов и двумерных фигур - прямоугольников, окружностей и произвольных полигонов
Рендеринг биллбордов, плоского и объемного трехмерного текста, координатных сеток
Мощная система организации материалов, основанная на библиотеках
Загрузка материалов из скриптов
Мультитекстурирование (в том числе многопроходное). Поддерживается до 16 текстур на проход
Lightmapping
Environment mapping
Различные режимы прозрачности и смешивания
Процедурные текстуры на основе шума Перлина
Аппаратное сжатие текстур
Шейдеры на языке GLSL (1.1 или 1.2). Можно передавать параметры в шейдеры (поддерживается передача параметров в uniform'ы типа int/bool, float, vec2, vec3, vec4, mat4, sampler2D, sampler2DCube, sampler2DShadow)
Несколько встроенных готовых шейдеров - bump mapping, cel shading, отрисовка контуров, освещение по Фонгу и др.
Три вида динамических теней - shadow plane, shadow volume и shadow map (с поддержкой PCF). Можно реализовать каскадные тени (CSM)
Статический и динамический cube mapping
Внеэкранный рендеринг при помощи трех методов: p-буферы, FBO и копирование из буфера кадра
Можно реализовать любые эффекты постобработки, включая Glow, Motion Blur, SSAO, DOF и др.
Рендеринг зеркальных отражений
Динамическая вода с волнами
Рендеринг ландшафта с автоматическим LOD, модификация ландшафта в реальном времени
Процедурные деревья
Динамическое небо с солнцем и звездами
Эффект Lensflare
Поддержка skybox'ов
Встроенные системы частиц, имитирующие огонь и электрический разряд
Встроенный эффект размытия (blur)
Прокси-объекты, дискретный LOD
Поддержка произвольных плоскостей отсечения
Возможность создания скриншотов прямо из движка с сохранением изображений в файлы BMP
Управление движением объектов при помощи кривых, а также рендеринг кривых. Поддерживаются кубические сплайны, кривые Безье и NURBS
Возможность копировать матрицы трансформации (локальные и абсолютные) от одного объекта другому, а также задавать матрицы вручную
Несколько видов проверки столкновений. Есть функции для проверки на столкновение отдельных объектов (сфер, паралеллепипедов и мешей), функции raycasting'а, а также встроенный кинематический движок DCE (Dynamic Collision Engine)
Интегрированный физический движок ODE
Интегрированный физический движок Kraft
Ragdoll ("тряпичные куклы") - физическая модель для персонажей
Физика Верле для реалистичной симуляции ткани и мягких тел
Встроенная реализация octree и quadtree для эффективной оптимизации сцен из многих тысяч объектов
Возможность загрузки ресурсов из сжатого PAK-архива
Считывание ввода с клавиатуры и мыши
Создание дополнительных окон и управление ими, рендеринг в созданные окна
Функции чтения текстовых файлов и преобразования кодировки из ANSI в UTF-8
Хэш-таблица для доступа к любым объектам по именам
Подробная документация на русском языке + набор уроков для начинающих
Xtreme3D 3.х не является на 100% обратно совместимым с версией 2.0.2.0 - есть несколько важных изменений, но в целом имена функций и их смысл не поменялся. Реализована вся старая функциональность из Xtreme3D 2.0, за исключением:
Опрашивания позиции и нормали столкновения в DCE;
Опрашивания количества отрендеренных треугольников;
Portal culling'а. Как он работал (и работал ли вообще) в прежней версии движка, непонятно, поэтому эта функциональность не была реализована. Не исключено, что она появится в будущем.