The XL Engine is and will remain free, donations are purely optional but greatly appreciated.

Recent Comments

Archive for December 2015

I have started filling out “Issues” on GitHub so you guys can see what I’m planning on working on in the near future.

There are currently 5 milestones: Beta 1, Beta 2, Beta 3, Beta 4 and Beta 5.


Beta 1: the initial release, all the games previously stated should be working at 100% with the exception of multi-player. As stated before only software rendering will be available but higher resolutions will be supported.

Beta 2: the OpenGL 3.2 device should be implemented and true 3D hardware rendering support added – basically Daggerfall will surpass previous builds visually in addition to being gameplay complete.

Beta 3: the “Unified Sector Theory” release – perspective correct hardware rendering for 2.5D games. At this point Dark Forces should surpass the current build visually in addition to being gameplay complete.

Beta 4: will add support for additional platforms – Linux and OS X.

Beta 5: the “Multiplayer” release – add multiplayer framework and support for certain games (such as Blood).


The GitHub page now has the most up to date version of the roadmap.

Here is the GitHub link:


Please read the XL Engine Source Code post is you have questions about pull requests, the source code, etc. before asking. Thanks. :)

After some thought, I have decided to release the full source code for the XL Engine and game implementations with the Beta build. In order to start this process I have created a Git Hub public repository and have started the process of pushing up the code.


That said, however, there are some surprises in store for the release so I will not be uploading all of the code until the Beta is published. The repository will be incomplete for now but that will be rectified for the release. Also this version of the XL Engine was rebuilt recently and so it does not contain all of the functionality past builds have had. However I am moving over the code and refactoring it to fit in the new engine as I need it but until then you will see holes. No game specific functionality is pushed and the code will not build as-is. Again this will be corrected for the release – this is just getting the ball rolling.


Finally some of the code is currently in a very rough state, this is a work in progress. I will not be taking pull requests at this time and this will be a quickly moving target, any part of the code can be radically restructured at any time. So if you have any ideas, like porting to other platforms, please wait until the Beta release and the repository is complete.


I have not upload a license yet, there are still some details to work out.


Here is the GitHub link:


This post will discuss some of the recent progress made towards the Beta. For now I will focus on the UI and Engine and talk about the games themselves in a future post.

I have been using one of the games to ensure that the engine provides all of the necessary services and to implement the core features of the engine. When you start the application, by default, a UI comes up where you can select the game to play, change video settings, setup controls and so forth. While most of the UI is only semi-functioning and placeholder – the settings are stored in text based ini files which can also be edited outside of the application. Of course everything will be editable by the UI for the release. It is possible to launch a game directly and exit immediately but even when this is the case it is always possible to bring up the UI, change settings and switch games. This is useful if you wish to play a single game or to create shortcuts and bypass the UI.

Each supported game is implemented as a dynamic library (DLL on Windows) which can be loaded and unloaded dynamically. You can even pause the game at any time to bring back the UI and change settings as desired or switch games. The game is rendered into a virtual screen which can run at a different resolution then the window – right now a multiple of 320×200 (16:10 in 4:3) but normal 4:3 and widescreen modes will be supported. Proper aspect ratio is automatically maintained with letter/pillar boxing, though stretch to fit will be an option.

I am currently re-working the sound support in order to provide all the necessary features for the variety of games but otherwise all of the engine services needed to support the games is complete – input, graphics, file manipulation, etc.. The UI still needs work but is functional enough for testing.

First Look at the UI

Below is a first look at the UI, as you can see you can click on a game to start playing or click on various icons to bring up settings menus (video, controls, engine settings, game settings and so forth). The aforementioned menus are incomplete, placeholder and not shown but the main view works as intended. When pausing a game a thumbnail view of the game is shown in the UI.

Even the versioning has been retrofitted – it is now structured as MajorVersion.MinorVersion.Build and given a name though only major changes will warrant new names. The initial releases will simply be “Beta.” The build version is now incremented automatically, so even if there are two releases made in quick succession, the version order is always clear. Obviously I started the automatic build number very recently (and even now its out of date, the current version is 0.2.161).


Final Words

I still have a lot of work to do before the release but I now have a strong foundation to build on with a fully featured engine and a solid build process – no more copying around files and manually updating build numbers, etc.. So now I can focus on finishing the game support for the Beta. :)

The XL Engine is and will remain free, donations are purely optional but greatly appreciated.