Mann The Barricades

Download and Discussion Thread (.vmf files)

Readme (.pdf)GitHub

These hologram whatsits turn into real things if you punch them hard enough. Use them to fight robots better. As we speak I am wrestling a leopard.
– Mann Co. CEO Saxton Hale, entirety of Holographic Defence Assets press release.

I recently polished off and re-released an old project I’d been working on – “buildables” for Team Fortress 2’s Mann Vs Machine mode. (MvM is a co-op mode in which players team up to defend against waves of invading NPC robots.) Players earn “Build Points” throughout the level, which they can spend on constructing things that dynamically change the level – building sentry guns, blocking or creating paths for the robots, adding health, ammo and cover. It’s all done at map level, meaning level designers can implement it without needing server plugins, and though it contains dozens of different entities, takes very little time to set up.20170412221629_1

If you’ll allow me to toot my own horn for a second – this is pretty difficult and i’m very proud of it. Team Fortress 2 doesn’t support this kind of dynamicism at all at code level, so putting together a bespoke solution with the (relatively) simple and inflexible entity logic is quite a feat. Anything that can be enabled or disabled can be used in this, and systems are in place to adjust the navigation meshes of the levels themselves, meaning bots can easily path around the changing environment.

The goal of this project was to add extra tactical decisions to the co-op mode, with players given an extra currency and extra way to spend it. It allows mapmakers and wave designers to increase the difficulty of the waves by giving players some extra abilities, and frees up some options for the Engineer class by allowing players “free” buildings in obvious locations.

It’s a little visually shonky, since Team Fortress 2 doesn’t really support custom HUDs without a plugin – but it’s clear and readable, and works very well under the hood. For more information, see the project Readme.