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.
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!
This map is hilarious to play on. Lots of fun!
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.
.BSP for players
.BZ2 for server owners
.NAV for spells + bots
Sal just posted a cast he did on a competitive Trainsawlaser game
consider me jelly
i will have to do better for next aprils fools day.
I'm having some trouble with my server at the moment, but if anyone is looking to download the map, they can get it here:
i just saw this video and found it extremely related https://www.youtube.com/watch?v=yNaTZV8qS1I
And here I thought it was going to be this one:
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.
Override it how-so? I don't think I'm quite grasping what you mean.
I would love a fix for that though. That'd basically solve my issues with it.
Wait, is it like, defining the file name just before playing? I can't say I've used AddOutput before so I might be missing something key.
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.
I think you mean soundscape instead of soundscript? http://forums.tf2maps.net/showthread.php?t=9300
Anyway, i think that indeed can help alot as it provides a randomize feature which is ideal to reduce entities (you only need 1 ambient generic for them to work most likely).
I haven't mucked with them myself so I'm unsure what kind of magic you can perform, but it is supported to some extent because one of the channel selectors mention TF2.
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:
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.
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.
Separate names with a comma.