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. Впрочем, многие возможности современных видеокарт доступны в старых версиях OpenGL через механизм расширений, поэтому мы заранее ни от чего не отказываемся - будем экспериментировать.

Сейчас приоритетной задачей является реализация в Xtreme3D недостающей "стандартной" функциональности, присутствующей в других аналогичных движках, а также создание привязок Xtreme3D к различным языкам и средам. Если у вас есть какие-то замечания или багрепорты, либо идеи и пожелания для будущих версий Xtreme3D, милости просим в соответствующий раздел форума.

Авторы 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 8 - это комплект, включающий скомпилированный движок и все необходимые DLL-библиотеки, документацию, примеры, а также ресурсный файл (*.gmres) со скриптами и константами. Если вы хотите обновить существующий проект до новой версии Xtreme3D, просто импортируйте ресурсный файл (File -> Import Resources), переключившись на замену ресурсов при совпадении имен (Always Replace). Во избежание утери данных, рекомендуем предварительно сделать резервную копию проекта. Обновления не требуют изменений кода, но если вы все-таки столкнулись с проблемами обратной совместимости, обязательно напишите об этом на форуме.

    Также доступен SDK для Python, включающий скрипт-генератор и набор примеров, основанных на SDL2.

    Стабильная версия - Xtreme3D 3.9

    Скачать Xtreme3D 3.9 SDK на GitHub

    Xtreme3D 3.x является свободным коммьюнити-проектом. Исходники доступны на GitHub по лицензии Mozilla Public License.

    Репозиторий Xtreme3D 3.x

    Полный список особенностей и возможностей Xtreme3D 3.x:

  • Легковесность. Xtreme3D - это всего одна DLL-библиотека размером около 1.6 Мб (плюс две необязательные - физический и шрифтовой движки)
  • Хорошо спроектированная архитектура, простой и интуитивный API
  • Движок создан для Game Maker 8, но можно использовать его с любым языком или средой, где есть поддержка DLL и вызовов stdcall
  • Высокая производительность, даже в Game Maker
  • Низкие системные требования, движок отлично работает практически на любых конфигурациях - 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'а. Как он работал (и работал ли вообще) в прежней версии движка, непонятно, поэтому эта функциональность не была реализована. Не исключено, что она появится в будущем.
  • Отзывы