Xtreme3D 3.x


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'а. Как он работал (и работал ли вообще) в прежней версии движка, непонятно, поэтому эта функциональность не была реализована. Не исключено, что она появится в будущем.