No Comments

Half-Life 2’s Evolution : aaron/canals_01_15 (2012/12/12)

It’s been an incredibly long time since the last video, but the next one in the series is finally here.

Keep in mind that this ended up getting a little rushed in the end, as I wanted to get it out of the way so I could move onto other things. Turns out moving to Source Filmmaker ended up causing the video to take longer due to a few technical faults along the way, and then work got in the way, and it’s likely in future I’ll be producing these very differently to how I have been previously to save myself more time.

As usual, keep in mind that this series is solely focused on displaying the geometry of the levels rather than playing through each one individually. If you enjoyed this video and want to see more in the future then I highly recommend supporting me on Patreon, as this goes towards supporting the website, the archive and videos such as this.

This is part of a video series showing the gradual evolution of Half-Life 2. It’s not intended to demonstrate gameplay, as most of these levels, in their original form, weren’t playable. Because of the number of levels to cover and the amount of time it takes to clean them up enough to be viewable, these will be kept as quick glances.

This level is produced from the VMF, canals_01_15. The level was likely created by Aaron Barber.

The original VMF can be downloaded here.


No Comments

SiN Emergence things

A long time ago now, one of my many hobby projects was looking at how feasible it would be to produce an open-source reproduction of SiN Episodes, so that work on it could essentially continue (or to just otherwise bring it over to Source 2013). I decided to return to this today and felt it would probably be interesting for a few to share how this is going right now.

I actually ended up revisiting the project as a result of an article I was working on to explain how you can get the SiN Episodes SDK functioning again. Unfortunately it seems that the steps I used previously will no longer work as Valve has changed how Steam’s config is set up, which was part of both the solution and the cause of the problem to begin with.

Obviously not great but unfortunately this was going to happen sooner or later due to the SDKs inherit reliance on Steam and the lack of support it receives due to the obvious fact that Ritual Entertainment no longer exists. So the value in an open-source reproduction of sorts is quite apparent, or to me at least.

This initially led me to look into reverse engineering the SDK to try and figure out if it was possible to work around the check it was trying to perform. Keeping in mind here that it’s not something I’m highly experienced with.

From the looks of it (by looking at the leaked 2007 codebase) there’s a Steam check which then moves over to try and grab the Steam config (which is where the failure occurs) but there’s a separate path here which looked like it skips this check.

I spent a short amount of time in a decompiler to see if I could figure out where this check occurred by using the “%s=%s” string, as seen above, as a reference point and managed to get a rough idea where the alteration needed to be made. Unfortunately I did seem to be running in circles a little, as the decompiler was only showing one other string similar to this one which wasn’t the one I needed, which you can see in the image below.

After spending a little while longer on it, I did eventually find, roughly, where the line was that I was looking for but I’ve decided to leave it for another day for now before I spend some extra time on it, just to be absolutely sure.

Moving on, I ended up looking once again at my SiN “Reborn” project.

At the moment it’s being developed using the multiplayer branch of Source, and there’s a few reasons for that really… One; I would be more keen to get some sort of multiplayer game going as a starting point as it would be worthwhile, considering SiN Episodes: Emergence wasn’t released with any multiplayer support whatsoever. Two; my understanding is that the multiplayer branch of Source has had more TLC from Valve than the singleplayer branch, not that Valve have touched the Source 2013 release for a while now, but it otherwise has some features that aren’t available on the singleplayer branch (keep in mind it’s been a considerable amount of time since I last properly touched Source, so I’m just going by memory here.)

Most of my time today has been spent familiarising myself with everything again. At the moment there’s a rough outline of the Scattershot and the Magnum that have both been implemented with some rudimentary code for the melee attacks and special secondary attacks that were used in the game. As well as this, we’re happily parsing some of the extra data that Ritual added for the weapon scripts, and all the items have been implemented (besides the ‘ass’ aka Assault Rifle and health pickups). Easy parts out of the way.

Things like the HUD still need work, likely to come later rather than sooner, but it’s interesting to see that Ritual created weapon icons for each of the weapons in the game which work within Half-Life 2’s weapon selection HUD. It seems as if SiN’s HUD might have been considerably different in the game at some stage of its development and it does appear there are quite a number of unused textures for the HUD as well here, possibly just left overs from prototyping but it would be interesting to know for sure.

While I was looking through and tidying things up, I decided to alter the animation code a little as well to play better with the character animations used in the game. It makes sense to me to try and alter as very little of the original content as possible, so I wanted to see how well the animations would work for multiplayer.

This ended going surprisingly well (and I probably spent way too much time on it too), with support for different animations based on speed and the players current state now implemented, which you can see from the video below. An example being how the player switches between a more relaxed animation set before switching to a more active animation set upon either firing his weapon or getting attacked.

Looking pretty swell, even if I do say so myself. Unfortunately, as you can see from the video, it turns out that the Magnum world model seems to use a different bone for the attachment, hence why it’s in his groin rather than in his hand where it belongs. I’ll likely look to see if I can implement a workaround for this without altering the model.

My other concern here though is that a few of these animations may not necessarily be available for the other character models in the game, as quite a few of them appear to use their own animation sets. It’s something I’m going to need to take a look at but I really hope this isn’t the case.

Anyway that’s all I’ve got for today. I’m really going to try and post here more frequently about what I’m doing, and I’m interested to know what you guys think. If anyone is interested in contributing to projects like this then I really encourage you to get in touch as I’m always looking for help!

No Comments

Dominant Species Patch

This is something I’d been meaning to post for a while now but unfortunately didn’t quite get round to it, primarily because I wasn’t entirely sure if its content was right for this website. Having thought about it, this is a step towards helping preserve an old game that many otherwise may not have heard of before so it makes perfect sense to post it here.

Dominant Species was a game that was released in 1998, and it seems to me like a game that was somewhat lost in time with very little attention given to it as far as I’m aware but seems like a unique game for its time. It certainly has a charm about it.

If you’re not familiar with the game, it was developed by Red Storm Entertainment. The same guys that have developed countless Tom Clancy games. And it’s a 3D RTS, which according to Red Storm themselves, was one of the first 3D RTS games as well which definitely makes it quite significant.

On a whim I came across the game online and ordered myself a copy but I guess to no surprise the game struggled running on modern operating systems (such as Windows 7/8/10), in particular it failed to initialise a fullscreen instance of the game and it also fails at detecting the CD properly.

After spending a while poking and prodding the game though, I not only found a list of launch arguments for the game that allowed it to run in a windowed state, which worked around the issue initialising it in fullscreen, but I also managed to track down where the game attempted to check for its CD to ensure you had a valid copy of the game and disable it through the wonders of reverse engineering.

I did also experiment with a wrapper to try and get the game running in fullscreen but after discovering the launch arguments I didn’t go any further with this. It’s something I’d like to return to though at some point in time as it would be a wonderful learning experience.

Keep in mind that I’ve only done this for the singleplayer at this time, so right now the multiplayer menu will still ask you to insert the CD.

I guess you could probably consider this a crack? Maybe when I have some time I’ll get round to doing the multiplayer as well but this should be relatively easy to do. Unfortunately it’s been a long time since I did this so I don’t have my notes available right now but if anyone else makes an update to this then be sure to let me know and I’ll be happy to mirror it here.


No Comments

Let’s Speculate! Half-Life 2 Lighting Zoo

The Lighting Zoo, otherwise known as ‘lightingzoo’, is a level included in the pack of development VMFs that was leaked with Half-Life 2 back in 2003. It’s one of the lesser interesting levels in the pack of levels, but we’ll be covering it anyway just to quickly get it out of the way. Obviously on this occasion I won’t be bothering to produce a video but expect a number of screenshots demonstrating the level.

The map is marked as being last modified on the 6th of May 2002 but it’s hard to be sure as to who the original author was but it was likely produced by someone within Valve who didn’t work primarily as a level designer, more likely the work of one of the programmers at Valve. We can pretty much conclude this as the map features incredibly simplistic geometry, though includes a few different sections that seem to test the capabilities of the lighting tool, VRAD, at the time; displacements, animated lights and normal maps are featured in the different sections of the level.

Keep in mind that this obviously doesn’t reflect entirely how this level may have looked at the time as it was built using the Source 2013 level tools and of course the level was actually produced in 2002. My reasoning behind using the 2013 version of the Source Engine is purely just for stability and because I can make whatever changes as needed while demonstrating them. It’s unlikely we’ll ever see a build of Half-Life 2 from that period ever surface but we can dream.


Overall there seem to be four different sections of the level as you can see from the screenshot above. The first two sections (left to right) appear to primarily be intended to see how lighting was working for displacements. At the time I would guess that displacements were more likely to have been using per-vertex lighting, rather than having their own lightmap but it’s also possible this level was produced to test the introduction of lightmaps on displacements. It’s hard to know for sure but regardless, there’s quite a lot going on towards displacements in this level and how the lightmap is applied to those displacements in general.

For the first section of the level, we’re presented with a rather simplistic room with a skybox and a sand texture using a normal map. It’s likely this was to ensure the lightmap also included the correct directional data for it to influence the normal map on lightmapped displacement surfaces but apart from that it’s not particularly interesting to look at. The texture used for the sand was removed at some stage before Half-Life 2 shipped, so that had to be pulled over from the leak.

Moving on from that we also have the two middle rooms that contain a number of different displacements. I would expect that initially when displacements were first implemented in Source, Valve weren’t using lightmaps but instead used per-vertex lighting, though that’s purely speculation on my part but that being said it does seem like displacements didn’t support any kind of collision hull when they were first added to the engine as a few earlier maps also include brushes along with the displacements (thanks to H.Grunt for informing me about that). I thought it was worth pointing this out, as it might be easy to forget that a lot of the functionality, that we can sometimes take for granted in Source today, was very gradually introduced into the engine overtime through both development and prototyping with the rest of the development team.

The displacements included in these parts of the map aren’t your typical shapes, with displacements typically being used for terrain in Source (though they were also used for pipes and more in some circumstances) though this is also likely why the displacements included here are unusual in shape as it’s easy for issues to sneak past if level designers aren’t typically using displacements in this fashion, but I’d say more importantly is that it also lets you push and extend that functionality beyond the scope of what level designers might have been doing with that functionality at the time. Perhaps a good example of the influence that the programmers had on the design of the game, besides the actual designers of the game themselves.

In the section here, which is where the player initially spawns, we have a large displacement centered in the middle surrounded by a number of spheres at each corner and a number of lights at each corner as well. It’s an unusual set up, more unusual is the extra light on the bottom right of the room which you might be able to pick out from the overview earlier but it’s likely this might have been a simple mistake.

It’s possible this area was intended to test both displacements with environment mapping and normal maps as there’s a number of env_cubemap entities that have been intentionally set up in this section of the level, though for the material in question which was pulled from the leak, it’s difficult (or impossible rather) to see the environment map with how the material was set up, I changed this so that we can see the environment map on the surfaces more easily but I’m not quite sure why this was done; it could be that this was in error by someone at Valve.

I guess Valve can be glad to know this all still works, heh. There isn’t much more to say about this particular section, it seems quite evident that it was intended to test both environment maps, normal maps and lightmaps on different displacement surfaces, either to check for any regressions or to ensure the initial implementation was functioning as expected.

The next section we’ll take a quick look at is very similar though a little more simplistic. It features yet another sphere but this time without a normal map or environment map and instead just a simple diffuse + lightmap, it’s essentially identical to the others but with a different texture. It’s likely the intention here is similar to the other section we looked at but just lighting generally with unique displacement shapes.

There’s also two adjacent displacement planes we can find near the entrance which are slightly slanted from one another, with a light slightly shifted to the side of just one of them. From a glance it’s pretty unclear what the intention here was but my guess is that it was to check that the lightmap between two separate lightmap planes was smooth, as if they were a single surface; with displacements there aren’t any ‘smoothing groups’, instead the tools essentially treat any adjoining displacements as one surface and the normals are calculated automatically so that the lighting smoothly transitions over them (or that’s the intention anyway), this is likely why the light is shifted more so to one side.


There isn’t a whole lot more to this room so we’ll be moving now to the final section which is basically made up of two adjacent rooms which seem to mirror each other but feature different texture sets, one with a simple diffuse and lightmap, and the other with the diffuse, normal, environment map and lightmap that we saw earlier. Within these rooms there’s one coloured light in the corner, and then on one side we have a brush positioned above a displacement with an animated spotlight above it (likely checking that a shadow is correctly cast down onto the displacement), and finally a cylinder with smoothing groups applied and a spotlight cast through a slit made of brushes.

I guess we’ll start off with the brush placed above the displacement. Like I said, it’s likely this was to check that shadows were being cast onto the displacement correctly but otherwise there doesn’t seem to be any other purpose. The fact that there’s an animated light was also likely to ensure that the lightmap was correctly updated on the displacement.


I don’t think much more can be said about it so we’ll immediately move over to what’s on the other side of the room near the entrance (and we’ll skip the light in the corner). This isn’t so much to do with displacements this time but seems purely just for smoothing groups, typically for complex geometry like this you would change it to a detail brush to avoid any issues with CSG splitting the geometry up too much but interestingly this isn’t the case here which seems to have a negative impact on how the geometry ends up being lit.

From the screenshot provided below you can likely see how the different junctions produced during CSG have effected the overall lighting of the cylinder, with VRAD seemingly unable to completely trace some of the lighting to the rest of the geometry and also failing to keep the appearance of a smooth surface because of it, though the larger lightmap might also partly be to blame in this instance.

I would guess that this was intentional as it’s unlikely this was any different at the time but I’m unsure what the intended goal of this was, whether a solution was being explored or just to demonstrate it in general. The rest of the cylinder is otherwise fine and not effected by this (there is some issue with the light incoming from the hallway being applied to the cylinder). The same issue also appears on the cylinder in the second room but that’s unlikely to be surprising.

I think that’s about everything I can think of covering in this map, the only other thing noteworthy is that the map seems to use the same hallway structure found in other ‘zoo’ levels though slightly modified like the two larger rooms were slotted into it, but it’s very much just your typical hallway otherwise but as with most of these levels you’ll find it easier to use the ‘noclip’ function rather than walking through them.

If you found this interesting then do let me know and I’ll continue on with it, I know this is one of the least interesting levels in the leak but I like to cover things that most people would otherwise overlook. There’s a lot more than meets the eye they often say, though we can only really speculate on most of what we find in the leak and levels such as this. If anyone else has any comments or suggestions, or hell, anything, do let me know and I’ll update this accordingly but I do hope it was insightful!

1 Comment

Invasion Commander Mode

This is a short video demonstrating the, currently buggy, Commander mode in Invasion. This essentially gives you an overview of the level, letting you select units and issue them orders etc. A lot of this additional functionality currently hasn’t been restored, so that’s the next task.

For those not aware of what this project is, feel free to check out the project page available here. In summary, this project aims to port the codebase for an earlier iteration of Team Fortress 2 from 2003 over to Source 2013 and update it into a playable state. I stopped working on this a while back but decided to kick things back into gear this weekend.

No Comments

Half-Life 2 Prison Evolution (10th October 2002)

This is part of a video series showing the gradual evolution of the Prison in Half-Life 2. It’s not intended to demonstrate gameplay, as most of these levels, in their original form, weren’t playable. Because of the number of levels to cover and the amount of time it takes to clean them up enough to be viewable, these will be kept as quick glances.

This level is produced from the VMF, prison. The level was likely created by David Sawyer.

The prison level you see here is huge and is one of the larger levels that was leaked in 2003. This level is essentially the prison in its entirety at the time, which includes a very different layout from that seen in the final game and also includes sections seen in previous videos albeit mostly iterated upon.

This level also includes an incredibly early version of the shower section seen in the final version of the prison.

While not covered in this video, the level is also unique in that it includes a scrolling cloud layer within the skybox.

Credits to H.Grunt for cleaning up the level so this video could be produced, without his help this video would probably have taken far longer to finish than it should have.

No Comments

I’m not dead.

This is a quick update and firstly I’m not dead, and secondly the next video is still on its way. A lot has happened recently which has meant I have less time to focus on my personal pursuits, namely I’m working at a software company now and this means I’ve been pretty much occupied with work.

This also means I’m likely to take the Patreon offline.

To bring you guys up to speed, the map being featured in the upcoming video was giving me a lot of grief and because I was struggling to find the time to work on it, in the end I asked a friend to take a look at it for me. That map is now ready to be filmed and now it’s just waiting on me to finish, which will either happen over this week or by the weekend. The new video is also using Source’s demo smoother, rather than how I was previously doing it, but let’s just say it can be a little unreliable at times and there’s a lot to cover in this map and I’m also using Source 2013 to preview the maps, rather than trying to do it within the leaked 2003 build.

Additionally, there’s still about 40 maps left for me to cover just for the prison alone… Obviously I’m questioning how much I can retain my sanity at this rate, so we might cover random levels in the future instead and I might move onto covering different games for a little while too.

In the meantime here’s a few random screenshots I apparently captured without realising it. This version of the map is starting to gradually shape up to what we saw in the final game though there are some pretty obvious differences in the design of some areas, plus the layout is still very much incomplete and it very much still feels like a cluster of areas just slammed together.

No Comments

Half-Life 2: Episode Two Unused Particle Effects

This video demonstrates a number of particle effects that went unused in Half-Life 2: Episode Two.

During Episode Two’s development, Valve were working on overhauling the particle system within the Source Engine to replace the previously hard-coded particle system that their previous games had utilised.

One of the changes Valve worked on in addition to this was overhauling the impact effects to use their new particle system. However, unfortunately, this didn’t see the light of day for Team Fortress 2, Portal or Episode Two and instead was disabled by the console variable ‘cl_new_impact_effects’ by default.

In addition to this, the new impact effects themselves were broken in Episode Two’s release, so even enabling the console variable would fail.

As a side-note; Ignore the HUD, level and other oddities in this video, this is my own custom modification that I’ve been using to produce future upcoming videos in relation to the ‘Prison Evolution’ videos. Apologies for any confusion.