Trainsawlaser

KotH Trainsawlaser RC2

Crash

func_nerd
aa
Mar 1, 2010
3,346
5,520
Updated

Beta 4 Fix
-Fixed the server crash issue
-Drastically optimized entity naming
-Removed wasteful entities (easter eggs, sorry!)
-Cleaned up path_track usage
-Reduced amount of lasers in laser walls
-Optimized fucks given tracking system
-Tiny Train Rain quantity reduced slightly
-Fixed Choo Choo's intro lines playing over each other and one of Lucy's intros being too quiet
-Removed flames next to point
-Reduced volume of minions slightly
 

BigMikeAU

L1: Registered
Oct 1, 2013
1
1
First off: Awesome map !!! Truly a benchmark for all mapmakers to aspire to!

Can I make some suggestions, though...

1) Add a variable to allow server admins to set the number of sacrifices needed for the minions. 100 is just too many to naturally happen in an average game. the result is players not playing, they just keep jumping into the free uber to tally up enough to get the bosses.

2) Don't reset the sacrifice count between rounds.
 

Crash

func_nerd
aa
Mar 1, 2010
3,346
5,520
The first would be extremely difficult to pull off without a mod (although I have heard one may in be development for the map that might do something similar. At the very least, admin-summonable minions.) And sadly, the map is so crammed full of logic and entities at this point that I can't do anything else with it without removing something else or risk the server crash issue arising again. I think TSL might be nearing it's final form.

The latter is completely impossible for me to do with the map. All entities reset between rounds, and that's built right into the game. I have no way of transferring data between rounds, unfortunately. This is the main reason I extended the timers to 7 minute each, though, to give more time to get the count up naturally.

I have a feeling a lot of people just really want to see the minions, and the hype will die off a bit and the summoning will happen naturally in game. I do feel like it may rely on a server being pretty full to have enough people dying to hazards to hit it reliably, though. Honestly that surprised me the most, I remember seeing the counter nearing 100 when the timers were at 3 minutes! I think as people learn the map, the hazards become less of an issue.

Thanks for the feedback though!
 

Crash

func_nerd
aa
Mar 1, 2010
3,346
5,520
UPDATE!

This update brings spells into the map as well as changes the counters to track all kills on the map rather than just the kills attributed to hazards. Train God no longer discriminates against your method of sacrifice. This drastically increases the amount of event milestones per game, allowing it to actually happen realistically in a normal game. I brought down the overall time some to compensate for the more consistent interruptions of regular gameplay.

Full changelog:
Beta 6
-All kills on the map are now counted on the sacrifice counters.
-Spells books now spawn along with milestone events. Unfortunately which spell you have isn't shown in the HUD. Good luck! :)
-Drastically optimized kill counting logic.
-Added fail-safe to sacrifice counter to prevent multiple long events happening simultaneously. If you reach another milestone while the current is still going it will wait until it is over before activating.
-Dispensers are now buildable in the center area, but teleporters and sentries are still not.
-Lowered total required capture time to 5 minutes each.
-Fixed a few minor visual issues.
-Hopefully didn't break the map.
-Removed rarely used awkward ramps at center
-Created NAV file for bots and set it up so bots avoid hazards properly
-Adjusted free uber rates in spawn rooms.
-Optimized fucks given counter further.

Beta 5
-Internal testing/ broken version

.BSP for players
.BZ2 for server owners
.NAV for spells + bots
 
Last edited:

henke37

aa
Sep 23, 2011
2,075
515
I have an idea on how to cut out a couple hundred entities: Use the AddOutput input to override the sound name before playing it. This lets you trade an entity for an additional I/O connection. I/O connections don't count towards the entdict limit.
 

xzzy

aa
Jan 30, 2010
815
531
Yeah, he's basically saying you set up a single bank of ambient_generic and just before telling them to play the sound, set the soundname to whatever you want. From a logic perspective that should work, though I'd have concerns about TF2 losing its shit when rapid firing several audio clips in a short period.

There would definitely be race conditions where a sound never plays because in between the time that you set the soundname and it starts playing, there's a chance some other event could fire and overwrite it again.


I think you should look into soundscripts first, it seems like the "correct" way to control audio.
 

xzzy

aa
Jan 30, 2010
815
531
Okay so I used this as motivation to go try it out, and it does work, but there's still problems with getting it "loud enough." Something like this works fine in TF2:

Code:
cart.explode
{

	volume	1.0
	pitch	100
	soundlevel 0.1
	wave #weapons\rocket_directhit_explode3.wav
}

Save that in a mapname_level_sounds.txt in the maps/ folder.

Then in the ambient_generic entity you'd use "cart.explode" as the sound name. The sound won't play in Hammer unless you add it to a game_sounds_manifest.txt in the scripts/ directory, but it works fine in TF2.

soundlevel controls attenuation, smaller numbers make it a little bit louder but not satisfyingly so. The # sign in front of the file name also boosts output a little bit.

Downside, it's still pretty easy to lose the clips in a battle. Voices work okay because humans are a bit better at picking them out of noise, but it doesn't seem possible to get a big huge explosion noise. But it sounds totally fine if you're far away from a fight.
 

Crash

func_nerd
aa
Mar 1, 2010
3,346
5,520
Really volume is the biggest issue overall, and I could reduce the entity count by a ton if it wasn't, by reducing the amount of ambient_generics used.

My goal is to keep it up at the same levels it currently is, so I think the AddOutput method is what I'm going to shoot for when I have a chance to sit down a mess with an absurd amount of sound files again.

I think I can get around the overlapping by dedicating a cluster of ambient_generics to each purpose. Train Rain, train hits, event announcements, and each minion. The only one that I should ever run into problems with doubling up is the train hits one, as it's possible to (rarely) have two trigger at the same time. I can probably come up with a fail safe for that with the extra entity room reducing the sound files will give me.

Now that I'm looking at it closer, I actually did dabble with sound scripts early on before I went with the stacking method of getting my clips loud enough. Never seemed to get it to satisfying levels.