I don’t think I’ve introduced myself on here before, but I’m Saul Rennison and I’m a programmer for Axel Project. I’ve been very busy over the past few weeks and months polishing the UI and other front-end things as the engine is now solid and I’ve implemented everything I wanted (server plugins being one of them). When I can, I post images of my progress in the images folder.
I hope to make a habit of posting behind-the-scenes progress of what the team is working on, I believe as it stands, it looks like the project may even be dead to outsiders. I don’t believe that “no news is good news”. Anyway, here’s a quick overview of what I’ve been working on:
UI transparency
This actually went through two phases. Initially everything was transparent, but this seemed a little “over-the-top”:
As you can see in the “Advanced video options” dialog, the text is relatively hard to read when placed above a panel with text on it. So to fix this, I only made the window panel transparent, as shown here:
Transparency only took a few lines changes to implement, although it looks very nice.
Loading dialog
If you’re familiar with the leak, you’ll see that there is absolutely no loading dialog at all. There is code for the loading dialog in the GameUI interface, albeit old and somewhat dead (unused parameters), although it is relatively easy to fixup. There is no code for it in the engine, however this was easy to implement, too. Like the above, this also went through several stages. The final product is personally more intuitive than the retail loading dialog and uses less screen space:
The singleplayer loading dialog is even simpler, with only ever one progress bar and only has the literal percentage in the middle of it:
Batch compiling
Yesterday I was trying to expand our old BAT file compiling system and failed miserably. I don’t dislike BAT files, I just dislike it’s extensibility and I don’t think it’s suited for Axel’s compiling needs. I knew Pat had a SCONS system in the pipeline, which also employs Python, but I thought I’d try tackling the issue myself (Pat is a very busy man after all). I tried to design the front-end with non-savvy users in mind. By this I mean suit it for members of the team who don’t know that to compile in Debug mode they’d have to use build axelproject -Tgame,HL2 -B Debug, without sacrificing power. After several hours coding, primarily trying to get myself back into Python again (looking over the code I realised I had used ; at the end of some lines), I finished it. Here is a screenshot of the compiler as it stands (with pretty colours!):
This is simpler than the leak compile system for a number of reasons:
- Saves echoing the entire compile log to console, even when there are no compile errors;
- Compile errors print in the console and halt the compile process (can be disabled);
- Has 1 BAT file proxy instead of 20, where the user can input which game, build mode and settings they wish to use;
Anti-aliasing
This is proving to be a bit of a bummer. In the leak engine, anti-aliasing is enabled via -mat_antialias # on the command-line. However this method is impractical (and impossible) to use in something like an Options dialog. I’m currently working on this (have been for a couple of days now), but I’m trying to find a solid way of enabling super sampling. At the moment it is working on Pat’s machine, but not mine. The difference is negligible in the screenshots below, so click on them for a better look, and flick between windows/tabs to really spot the difference:
Chapter dialog
If any of you have played singleplayer Half-Life 2, Episode: 1, etc, then you will have noticed the beautiful New Game dialog they all use. Pat had previously committed a semi-working replica to the SVN several months ago, although never finished it (typical
). This is a pretty vital feature for the release so I decided to implement it fully. For those of you interested, here is a full overview on its internal workings:
- GameUI parses a KeyValues file named chapters/chapters.txt, which holds which map each chapter corresponds to;
- It then loads the images for each chapter, located in materials/vgui/chapters/chapter#.vtf;
- Checks to see if the chapter has been unlocked, if so it enables the button to play it;
As in retail, there is a ConVar which controls how many chapters have been unlocked, called sv_unlocked_chapters. Luckily for me the code for it is in the Source SDK, so it wasn’t hard to replicate. Enough talking, here it is:
Other
There’s stuff that I’ve missed off, but don’t really have enough time to write up every single one:
- Server plugins: replicating the current Source engine’s server-side extensibility;
- Many exploit fixes: all public Source Engine exploits have been fixed;
- Shader updates: wrapped lighting on models;
- Advanced Video dialog;
- Fixed up majority of localization;
- Multiplayer is in a semi-playable state;
- Background maps;
- Much more I can’t remember;
Conclusion
Please take into account that this is only the work of the previous month and much more work and effort has been put into fixing bugs and adding new features, not to mention many members have been inactive over the holiday season.
Peace out.








Very impressive stuff, especially the loading dialogs. Can’t wait to see more ^^