This is an official message for all of my true and honest exclusion fans out there and everyone who does not hate me. It's real. My GMod map TTT Exclusion is here. But first and foremost I want to make it public that this map is completely open source for anyone to edit, just like every one of my maps. Click me to go to the downloads page
The journey to get here wasn't easy however. It took four years of development hell and two disaster playtest sessions to get where I am now.
As I detailed in this previous post, I must have started working on this map around 2019. I never intended to make this a TTT map however, and back then I used to start projects that went unfinished.
Development on this map stagnated only after a few weeks, although I did come back to it once a year to make some changes only to abandon it shortly after. It wasn't until October 2022 that I gained interest in the map once again, this time promising myself that I'd finish it. Particularly, someone in a GMod mapping discord was interested in TTT maps for their server, and seeing how this one was about halfway done, I decided it was time to pick it up and end it once and for all.
To cash in on the newly released HL2 mod, I chose to make public an early version of TTT exclusion as a Sandbox style map. As JBMod does not have a dedicated spawnmenu right out of the box, I decided to copy and paste the prop spawners straight from jb_buildingblocks, the JBMod equivalent of gm_construct. The map limits have been increased to support more players (JBMod is a dead game) and large builds (building is limited). More importantly, every single custom asset, including those from Episode 2 and CSS, have been stripped to minimize file size. Nevertheless, the map file still weighs approximately 100mb.
As can be seen from the pictures, I kept custom assets to a minimum. The only ones that remained were the trees that I borrowed from somewhere years ago, the radio towers from Episode 2, the warehouse structures that I made for Lonely's Fightclub 2.0 and the L4D2 detail sprites.
Porting this map to a mod running on an outdated engine, unmodded Source SDK 2013, was something I'd rather not experience again. For instance the edict limit (or the amount of networked entities that can exist in the map) is limited to 2048 in HL2, and for reference GMod supports up to 16,384 edicts. This is terrible because the version of Exclusion map that the port was based on at the time reached 1500 edicts right out of the box, and JBMod players love to spam props and shit for some reason, so it's much easier to hit the edict limit. I had to nerf this map quite a lot, removing everything that wasn't necessary for it to work. In the end I got it down to 700 edicts which is respectable.
Additions to the map include a little seaside village as seen in the image above, less clutter around the main area for a comfier Sandbox experience and a road which surrounds the perimeter of the map. Teleports were included in an earlier iteration of the map but don't exist currently to reduce the edict count.
The people of JBMod have been a very useful asset when it comes to stress testing my hardware, as apparently it's common to spam props to lag the server massively, or outright hit the edict limit and crash it immediately. The latter isn't too big of an issue and the batch script is made to restart the server automatically whenever it crashes, the former however is more complicated, as I don't have any plugin which cleans up the map after a certain limit has been hit. Pretty much the server must be restarted manually.
This is meant to be a continuation to this article. I submitted this map privately to the workshop sometime around January 2023, and it was at the end of the month where a playtest was to take place. My good man Yashirmare recorded the full playtesting session luckily, so these were the results:
I will now go into excruciating detail regarding everything that was wrong with this version of the map, the one that was played on the January 2023 playtest.
Many issues were made apparent that I would have never noticed myself. The worst offender were the teleporters, which at the time used particles to mark their position in the map. These particles were displayed properly when the map was run locally, but since Figardo's server and many others use a different tickrate, these particles pretty much never played and were invisible. This means that the main attraction of the map would be made non-functional.
I fixed this issue by using sprites instead of particle systems, which are less intensive and guaranteed to work in every situation. The only downside is that they're less pretty than the particles I was using up until then.
Another issue that wasn't discussed in the playtest but became apparent after comparing my map to much better ones is that the layout was too simple, more specifically the map lacked verticality. This issue was quickly remedied by granting roof access to buildings which previously didn't have it. Areas that were previously inaccessible are now opened up like in the pictures below:
I recall some people complaining about the invisible radiation spots blocking half of the trainyard, so I removed it and added some environmental cover in the form of parked cargo containers. The little industrial area with all them buildings were made open to the public as well, which provides even more close quarters combat and roof access to one of the buildings. That one yellowish building also got a huge upgrade and the roof was made traversable.
Even now the layout is much simpler than that of other maps and it's something I wish I could have changed when I had the chance.
I made extensive use of Lua for this map, from the code needed to change the texture and health of the NPCs, the relationship between NPCs and players, to the PDA messages that players receive throughout the round. To get this working I decided to package everything inside an autorun file which gets loaded into memory as soon as the map is loaded. This worked fine on my end and in every one of my playtests, even on a clean GMod installation I had laying around. The issue is that, when it came to playtesting the map on Figardo's server, it's as if the Lua file was never run, or rather it seemed as if some parts of the code were executed while others weren't. At the time I blamed this on Figardo's version of TTT overriding some hooks that were essential to the gamemode, for instance, code that was meant to run as soon as the round started never got executed.
It turns that this was an issue on Figardo's end, as on the next playtest which took place on February 27 everything seemed to work just fine.
The only person who complained about performance was Figardo, the server owner himself. Although it was later revealed that this most likely happened due to model checksum errors spamming the console, I still took it upon myself to squeeze every bit of performance out of the map. Something that kills performance on older hardware is expensive water, in other terms refractive water. It had to go in favor of cheap water which uses cubemaps for its reflections. I wish I didn't have to do this but apparently every GMod player is rocking 10 year old hardware. It's possible I did something else to improve performance but I can't recall it right now.
To put this map to the test, I played it on a secondary computer I got laying around with a GTX 750 installed, which came out in 2014 as a budget graphics card. Even then, playing at 2560x1440 resolution on max settings yielded good results.
Many custom sounds and soundscapes were used in the production of this map, especially ambient sounds and music from the original S.T.A.L.K.E.R. games. Balancing audio levels in game development or any field is always challenging and I find that it depends on person to person. I thought I got the audio levels right the first time, but during this January 2023 playtest some people remarked how loud the map is. This was a quick fix luckily, as the only thing that needed to be done was to lower the volume by editing the soundscape file and some sounds inside Hammer. Still, this wasn't enough as we'll later see.
I had greatly underestimated how bloated the map would become by the end of development. While I can't recall off the top of my head, the January 2023 version must have been close to 250mb in size which, while there's maps out there that larger in size, it's still not a good thing for player retention, especially if they have a bad connection. This file size was a combination of all the Episode 2 assets that needed to be packed, as the ownership of that game is lesser than CSS for instance, and the custom assets which were made for this map. It only takes a few 1024x1024 textures to bloat file size severely, let alone the 2048x2048 textures used by some of the Episode 2 assets. The five music tracks used in this map also contributed, even though they existed in an MP3 format.
To make a long story short:
As of right now the current version of the map is no more than 160mb which is much more respectable than 250mb.
Not much to talk about here. For the February 2023 release and consequent playtest I decided to make the environment light brighter so as to make the map a bit more colorful. The Brain Scorcher color correction has been modified to increase the camera exposure making everything brighter and a fullscreen radiation overlay has been added to it so it's not as bland.
The version that was privately released in January lacked any sort of nice secrets or Easter Eggs that are expected of any map nowadays. Shortly after the January playtest was done with, I started working on a small Easter Egg that served as a reference to the original games.
To put it simply, I recreated a small portion of the Wild Territory map from S.T.A.L.K.E.R Shadow of Chernobyl which houses a weapon called Big Ben, which in itself is a reference to Gabe Newell, or Big GaBEN, and Half-Life 2. This is sort of a self fulfilling Easter Egg that links back to the original source in an ironic twist of fate. This location can be accessed by jumping into a pinkish teleport that can appear in one of four predetermined locations at the start of each round.
This Desert Eagle has been modified to chamber rifle rounds and works mostly the same except for an increase in damage, accuracy and recoil. Adding a more iconic weapon from the series like the Gauss rifle would have taken too much work, so this was the best option.
Somehow this playtest singlehandedly managed to make my map seem even worse than last time. For starters, the map was still called ttt_exclusion.bsp, the same as the previous January version. To prevent any conflicts related to FastDL, Figardo, the server owner and playtest organizer, renamed the map to ttt_exclusion_v1.bsp. This pretty much broke the cubemaps, resulting in fullbright reflections, the soundscapes also broke completely, and the lua autorun file also wasn't running for a few rounds.
There was another glaring oversight that I hadn't considered up until this point. One of the T traps which involves calling in reinforcements could be triggered consistently at the beginning of each round. It only cost 2 credits at the time so any Traitor could use it. This meant that NPCs would raid the compound and disrupt normal gameplay while music played in the background. This was totally disastrous for the playtest session we had this time. Not only that, but NPCs were really tanky considering the server uses ARCCW weapons rather than the standard TTT weapons which deal more damage.
This was a quick fix. This trap now costs 3 whole credits due to how much the flow of gameplay changes, and on top of that there's a 1 in 3 chance every round that the radio will be there to begin with. Music has been lowered even further.
This map sucks I go to bed