Firearms: Source

A Source Engine (Half-Life 2) total-conversion developed in C and C++ using the Source SDK.

C++GameSource Engine


I think the (now defunct) website sums it up best:

Firearms: Source is a high adrenaline First Person Shooter that emphasizes precision aiming, high mobility, and team-based strategy. Firearms: Source is a return to the classic shooters of the 90′s where the games had higher learning curves and a greater rewards for mastering the game mechanics. While our guns provide a sense of immersion unrivaled by even the most popular of retail shooters, our gameplay remains a fast paced deathmatch unrestricted by realism.

~Firearms: Source Website

Its actually still available for download on ModDB. Warning: Nobody plays it anymore.


I was responsible for writing a large portion of the weapon handling and behaviors, gameplay/rules, animation state machines, scripting hooks for game designers, the weapon and body attachment/customization systems, entities for level designers, material proxies for artists, screen-space (and some world-space) effects, HUD, and UI. All of this was written mostly in C++ using a little bit of C when and where required. The initial IDE of choice was Visual Studio 2010 but myself and the other programmers moved to Visual Studio 2012 later on.

One of my favorite things that I added to this mod was the attachment system that was completely scriptable in Lua and with Valve's Key-Value format text files. In fact, almost all aspects of the game were controlled in some way by external scripts and key-value files. This allowed game designers and artists to iterate quicker than if they had to contact me to make small tweaks or add things. Myself and the other developers explored embedding Awesomium for the HUD and menus as well as replacing the entire sound system with FMOD. Awesomium turned out to be a memory hog so we halted that effort, but FMOD kind of stuck. We tried using it to calculate spatial audio on the fly using world geometry, incorporate doppler effect, and play custom in-game music for things like victory/defeat. Environment artists could put custom startup music in their maps, and we were able to play menu music between level loads. The spatial audio calculations and doppler effect were ultimately scrapped but we kept the custom victory/defeat, map, and loading music.