Skip to content
David Jewsbury edited this page Dec 2, 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)

Screenshots

For screenshots see the XLE Development Blog
Screenshot
Nyra model from Paul Tosca and background from sIBL Archive.

Technical stuff!

This engine is intended as a starting place for engine developers looking to build custom solutions. It will provide a working toolset of high quality basic code, a running head-start for 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/xlgames-inc/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 tasks, 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. Other industries achieve these goals by building ecosystems of tools that can cooperate. Even the highest quality products reuse libraries that everyone has access to. But the games industry has had difficulty building that type of environment. I hope that one day XLE can play a small 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.
Sample Data Acquiring more data for samples
Reused Libraries Re-used open source libraries and licenses
Layer Diagram Details about the top-level physical architecture of XLE
Roadmap Some areas for future development
Suggested Uses Suggestions for uses of XLE
Ruminations Some ideas and considerations about future features and behaviour

Technical topics:

Page Contents
Best Practices Best Practices used in XLE
3D vector math regime Coordinate systems and matrix math uses in XLE
Use of exceptions Exceptions in XLE, and rationale

Some pages on specific XLE techniques:

Page Contents
Scene trees and XLE Scene tree (or lack thereof) rationale in XLE
Lighting parser diagram Architecture of the lighting parser, and interaction with the scene parser
Transformation machine Details on the "TransformationMachine" object used for playing back artist-authored animation data
Coding Tricks Coding tricks with XLE libraries
Multi-platform Multi-platform status

##Intro to classes

Page Contents
Class Accessors ClassAccessors metaprogramming helpers

##Code documentation You can also find code documentation here: XLE Code Documentation

##Dev team contact

Please use: xle@xlgames.com to contact the dev team (in English or Korean).