Skip to content
David Jewsbury edited this page Jan 26, 2015 · 23 revisions

XLE

##What is it?

XLE is a work-in-progress multi-platform 3D C++ game engine built for extensibility and efficiency. It's open-source! (licensed under the MIT License)

This engine is intended as a starting place for engine developers looking to build custom solutions. It will procide a working toolset of high quality basic code, a running head-start an engine developer looking to develop custom technology, or a graphics programmer wanting to experiment with some new graphical technique.

But please remember that XLE is still very much a work in progress! It is not yet ready for practical uses.

XLE is being developed at the Korean MMORPG company, XL Games.

Github address: https://github.com/djewsbury/XLE. Please read Getting starting compiling before compiling!

##Key Architecture

What does XLE look like?

Layers Diagram

XLE has been growing and changing rapidly. But there are clear architectural divisions. This diagram shows a rough outline of the major parts of the engine.

Where possible, XLE makes use of other open-source libraries, rather than re-rewriting from scratch.

Here is a quick run-down of the components of the system:

Component Description
Utility Utility functions and tools. String manipulation, low-level file system functionality, heap, threading and processor utilities
ConsoleRig Logging & in-game console functionality. Debugging support tools
Math Math functionality commonly required for games and rendering (3d transformations, basic intersections)
Assets (not pictured) Asset management and streaming functionality
RenderCore::Metal Thin layer over the low-level graphics API. Provides partial platform independence
RenderCore Startup and manage graphics devices
RenderCore::Assets (not pictured) Run-time asset representations for rendering primitives (models, animation, terrain, etc)
BufferUploads Manages background transfers of data to the gpu, and low-level streaming
Shaders As expected, GPU shaders
SceneEngine This is the biggest component, and includes code for rendering world scenes (including structural management code, lighting effects and rendering techniques)
RenderOverlays 2D rendering and widgets; mostly for debugging purposes
PlatformRig Manages the frame loop, window creation, etc
ColladaConversion Import from Collada data sources, and geometry manipulation
ShaderParser Utility library for GUI tools using shaders

Of these components, the "SceneEngine" is the largest. Within the scene engine, there are implementations of many graphics techniques and visual simulations.

##What's special?

So what's unique about XLE? I hope that XLE can help provide an environment where engine developers can more quickly create custom solutions for games. It's designed to be built upon and customised, so that everything built with it feels unique and different.

Some engines are designed to replace programmers. Well, at least in part. That is to say, content creators can work directly with the engine toolset for most purpose, bypassing programmer support. XLE's philosophy is to empower programmers. To provide programmers with what they need so that they can build custom solutions for their content creators.

It's a massive goal. But I hope that one day XLE can play a part in an active ecosystem of high-end games-focused open source technology.

##These pages

These pages will provide technical information of interest to engine programmers.

What to read now?

Page Contents
Getting starting compiling How to start compiling XLE. Please read first, it's a little complicated.
3D vector math regime Coordinate systems and matrix math uses in XLE
Scene trees and XLE Scene tree (or lack thereof) rationale in XLE
Coding Tricks Coding tricks with XLE libraries