Half-Life Report

Born out of twin desires to make a Half-Life-style experience with more modern tools and to see some of the more annoying code issues with Half-Life Source resolved, I elected to take on a project I was fairly sure wouldn't ship, but would be educational. Armed with the Half-Life code SDK and the source code from the Source SDK, I began the work of examining the original game's code and reimplementing its functionality in the different code structure of Source. Multiple logical entities were reimplemented, as well as roughly half of the game’s weapons and a few brush entities, with a focus on allowing Half-Life Source's maps to function on the new codebase without being recompiled, and where possible introducing minor quality of life improvements over both the original port and game.

The first attempt to make a functional reimplementation of func_pushable from its remains in the SDK was not quite ideal.

Some features from Half-Life 1 were still somewhat present in the SDK but required a full rewrite - As an example, the Tau Cannon, as present in HL2, is part of the Dune Buggy code, and while I was able to salvage some of the beam drawing code from it for the player weapon version, it lacks a great deal of the fine-detail functionality from HL1, such as beam reflection, map geometry penetration, overcharge damage, and the damage algorithm that factors in all three, which ended up being a massive headache for a novice programmer to implement in Source without tripping a large amount of assert statements deep in the code.

The RPG took 8 commits over 2 days. This took 21 commits over a full week and it’s still not perfect.

Along the way, changes and tweaks were made to some minor functionality and art assets, such as modelling in backfaces or setting up new attachment points on weapon models, rather than disabling or removing Source engine functionality such as viewmodel inertia and Source's particle system.

The recoil is a lot less nauseating when firing the Mp5 compared to Half-Life Source, though when rewatching this I noticed I somehow forgot a couple backfaces on the rear sight. Can’t win ‘em all.

Ultimately, I've made the decision to shelve Half-Life Report, putting my solo project focus on Jiaozi and using the Source engine code experience I gained to further my gameplay goals for Peer Review without burdening PSR's programming department too much.