Xtreme3D 3.x is a completely independent implementation of Xtreme3D, written from scratch by Gecko with the assistance of our community members. As is well known, the original Xtreme3D by Xception was distributed without source code, and after Xception abandoned the project, the engine remained unsupported for a long time. The idea of recreating it, fixing bugs, and adding missing functionality was constantly floating around our community. Considering the engine is a thin GLScene wrapper, this task seemed simple and purely technical. However, unexpected problems arose, and the project dragged on. Ultimately, the project, which began in 2009, was completed only in 2016.
Xtreme3D 3.x Authors:
Gecko - the main part of the library
FireRun - VerletWorld functions, additional primitive creation functions, additional Viewer, Light, Grid, Material, Actor, Freeform, HUDSprite, Sprite, FireFX, Lines, Movement functions
Rutraple aka Hacker - DCE functions
Ghost - Grid functions
gadmaker - WindowSetIcon function.
Special thanks to gadmaker, van88268, FireRun, JunkerKun, and Alexander Demchenko for bug reports and constructive suggestions.
Xtreme3D 3.x releases are available as an SDK for Game Maker Studio 2 - a package that includes a compiled engine and all necessary DLLs, documentation, an example, and the yymps package with scripts and constants.
Xtreme3D 3.x is incompatible with GameMaker Studio 2 version 2022.800.0.161 and later due to its complete transition to 64-bit architecture. For modern versions of GameMaker, use Xtreme3D 4.x.
A Python-based SDK is also available, including a script generator and a set of examples based on SDL2.
Last release in 3.x branch is Xtreme3D 3.9.2.
Download Xtreme3D 3.9.2 SDK on GitHub
Xtreme3D 3.x is an open community-driven project. The source code is available on GitHub under Mozilla Public License.
Xtreme3D 3.x repository
Full list of Xtreme3D 3.x features and capabilities:
Lightweight. Xtreme3D is just a single DLL library, approximately 1.6 MB in size (plus two optional ones: physics and font engines).
Well-designed architecture, simple and intuitive API.
The engine is designed for Game Maker, but can be used with almost any language or environment that supports DLLs.
Low system requirements, the engine runs perfectly on virtually any system configuration. Xtreme3D is based on OpenGL 1.x and several extensions for specific functions.
Scene graph with object hierarchy. Rendering of the entire graph, or individual objects and subgraphs.
Screen antialiasing 2x and 4x MSAA. NVIDIA Quincunx antialiasing technology is supported. FXAA and other antialiasing methods can also be implemented.
Dynamic lighting, unlimited virtualized light sources.
Support for multiple 3D model formats: 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. It's possible to write your own 3D model loader for any format.
Support for standard image formats: BMP, JPEG, PNG, TGA, DDS.
Skeletal and morph-target animation.
Blending skeletal animations, attaching objects to bones.
Explosion effect for meshes.
Rendering of geometric primitives: parallelepiped, sphere, cylinder, cone, hollow cylinder, torus, disk, truncated pyramid, dodecahedron, icosahedron, Utah teapot.
Rendering of 2D text. You can load TTF fonts and output Cyrillic (and any Unicode characters) using UTF-8 encoding. For Cyrillic output from languages that don't support UTF-8, there's also support for Windows-1251 and custom 8-bit encodings.
Rendering of 2D sprites and 2D shapes—rectangles, circles, and arbitrary polygons.
Rendering of billboards, flat and volumetric 3D text, and coordinate grids.
A powerful library-based material system.
Loading materials from scripts.
Multitexturing (including multipass multitexturing). Up to 16 textures per pass are supported.
Lightmapping
Environment mapping
Various transparency and blending modes.
Procedural textures based on Perlin noise.
Hardware texture compression.
Shaders written in GLSL (1.1 or 1.2). Parameters can be passed to shaders (parameters can be passed in uniforms such as int/bool, float, vec2, vec3, vec4, mat4, sampler2D, sampler2DCube, and sampler2DShadow).
Several built-in shaders are available: bump mapping, cel shading, contour rendering, Phong lighting, and others.
Three types of dynamic shadows: shadow plane, shadow volume, and shadow map (with PCF support). Cascaded Shadow Mapping (CSM) support.
Static and dynamic cube mapping.
Off-screen rendering using three methods: p-buffers, FBO, and frame buffer copying.
Any post-processing effects can be implemented, including Glow, Motion Blur, SSAO, DOF, and others.
Specular reflection rendering.
Dynamic water with waves.
Terrain rendering with automatic LOD, real-time terrain modification.
Procedural trees.
Dynamic sky with sun and stars.
Lensflare effect.
Skybox support.
Built-in particle systems simulating fire and electrical discharge.
Built-in blur effect. (blur)
Proxy objects, discrete LOD
Support for arbitrary clipping planes
Capture screenshots directly from the engine and save images as BMP files
Control object movement using curves, as well as curve rendering. Cubic splines, Bezier curves, and NURBS are supported.
Copy transformation matrices (local and absolute) from one object to another, as well as specify matrices manually.
Several types of collision checking. Features include collision checking for individual objects (spheres, parallelepipeds, and meshes), raycasting, and a built-in DCE (Dynamic Collision Engine).
Integrated ODE physics engine.
Integrated Kraft physics engine.
Ragdoll - a physics model for characters.
Verlet physics for realistic cloth and soft body simulation.
Built-in octree and quadtree implementations for efficient optimization of scenes with thousands of objects.
Ability to load resources from a compressed PAK archive.
Reading keyboard and mouse input.
Creating and managing additional windows, rendering to created windows.
Reading functions. text files and encoding conversion from ANSI to UTF-8
Hash table for accessing any objects by name
Detailed documentation in Russian + a set of lessons for beginners
Xtreme3D 3.x is not 100% backwards compatible with version 2.0.2.0 - there are a few important changes, but overall, the function names and their meanings remain unchanged. All old functionality from Xtreme3D 2.0 is implemented, with the exception of:
Querying the collision position and normal in DCE;
Querying the number of rendered triangles;
Portal culling. How it worked (or whether it worked at all) in the previous version of the engine is unclear, so this functionality was not implemented. It is possible that it will appear in the future.