Looking to make a CP/KOTH Variant

TheMasterDS

L1: Registered
Dec 28, 2009
7
0
I've been holding onto this idea for well over a year, and occasionally working on the map I intend to prove it, however while setting up a quick map only for seeing if I can get it to work without a ton of trouble (Seems like it by the way) I've ran into a few issues.

First let me talk about the variant, and the motivations behind the variant. Actually, to save time, I'll just quote an old post from elsewhere about the idea.
So then, the map and the mode. I'll start with the mode. Way I saw it, KOTH has a simple problem, and that it's very static. There's never any place in KOTH where there is a dramatic shift in the action, no place where you say "Alright, I've captured X, now I need to push forward more before they are ready for us" because once you've done X in KOTH you're done, and all that's left is to see how long you can sit. Meanwhile, in 5 point CP maps a lot of games would end up being big long stalemates where two teams would exchange the central 3 points for a half hour until one, by some miracle, managed to push all the way. Way I saw it, most of the conflict was over the middle 3 points, yet it doesn't really contribute to the result of the game in the grand scheme of things.

Initially I thought that perhaps having 3 points instead of 5 would fix the 5 point CP, as if 2 points are seldomly used than the simple answer is to remove two of the points. However, I believe at some point I played a 3 point symmetrical CP map at random (I can't remember the name) and found it was, in fact, an hour long struggle over a single point instead of 3. Clearly, that was not the answer.

And then it hit me. Timers! They could be used to effectively measure a conflict over 3 points, rewarding teams for being dominant, though not necessarily dominantly so. As soon as I hit upon that idea, the rest came very naturally.

Rules are very simple. There are two timers, and 3 points. The central point starts uncapped, and once it is captured by one team time (Say 20, 25 seconds?) is added to the other teams timer and both start counting down. Capturing all 3 points stops the enemy timer, and capping the center adds 30 seconds from there on out. (If 30 was given on the first cap than, in matches not involving either of the other points, it'd end in either a win by the team who capped it first or a stalemate. Less time means that the team who has the center at the end wins, which I think is better overall.). When one timer ends, I figure there should be overtime, however both timers should stop during this time so that both teams don't win before overtime ends, which would be rather silly.

I originally called this mode Advantage as I believed the act of gaining an advantage over your opponent and holding it was central to the idea (Especially a 30 second advantage - you could lose the center point and still win if you held your base with that!), however since then I've moved to Timeline as I like the suggestion it has that retreat is a viable option, which it kinda is in this mode. However recently I've considered the name King of the Valley to emphasize the similarities to KOTH, while also stressing while KOTH is about holding a hill, KOTV would be more about pushing across a valley and conquering the other side.

Anyway I've basically got it working by going directly to zz_red_koth_timer and zz_blue_koth_timer and giving the pause, resume, and addtime inputs that way, however there are some issues, namely A) the announcer announces the time whenever either timer passes certain times, resulting in repeated dialog when it makes no sense and B) the game does not end for some reason, I suspect going around tf_gamerules has messed that up, probably as it does not check if the clocks are 0 unless they're active as they can be 0 while the other team has their timer running. I believe that inputting Set___ClockActive the game should end would solve that, however still I needed a way to find that time without access to zz_red_koth_timer (which is created by tf_logic_koth)

Edit: Quick check into that (well, I randomly read an explanation of how KOTH wins elsewhere. Same difference) reveals that the timer hitting 0 doesn't finish the game, just unlocks the win condition of owning all the CPs. Well, I suppose when either of the new timers hit 0 it could set all the points owners to the winning team. Course it would have to be smart enough to know if overtime should be in effect. Hmm. Maybe there is just no overtime.

At first, not being familiar with the logic entities until yesterday, I guessed (and hoped) that a logic_timer could serve my purposes. However, it was apparent that did not have the input to pause the clock and resume it where it left off and is more for repeating events. However, then I saw Team Round Clock and realized it was perfect. However a thought occurred looking at the outputs available. If I could use these timer instead of the ones made by tf_logic_koth, many of my issues would be solved instantly. I could pass the "Announce Time" outputs to a logic_branch or two or which checked if it'd already been said by the other team and not say it in that case unless only that timer is running. Actually, come to think of it, I guess that's the only upside, but still I think it's a significant one.

Basically what I'm wondering is if there's any way to force the KOTH HUD to work with custom Team_Round_Timers, and if not if there's any way to stop the timers I can not access from announcing the time at exactly the wrong time. Additionally I'm wondering if there's any way to control which timer the HUD highlights, as it currently just highlights whoever and it'd be nice to be able to highlight the winning team, I assume using logic_compare if Team_Round_Timer can pass its time remaining.

Sorry if it's a bit long, I wanted to explain why I want to make this goofy mode because... it just doesn't feel right to just throw it out there without an explanation. Thanks for reading, and if anyone knows how to use the KOTH HUD without the KOTH timers that would be lovely.
 
Last edited:

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
It is very late and I will be going to bed after this, and you wrote a lot, so I am going to address what I think is most relevant out of what I gathered.

The zz timers created by the koth system are team_round_timer entities. Exactly the same thing. Anything you can do with one you can do with the other. All the inputs that a regular one has can be sent to the zz timers.
 

TheMasterDS

L1: Registered
Dec 28, 2009
7
0
Yeah, I am sending them those inputs, however thing is I don't believe I can modify their actions beyond that, namely the bit where they shout out the time at just the wrong time.
 

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
Well did you even look at the inputs/keys that a regular one has? There is a key called auto countdown that lets you control if the announcer talks about the timer, and there is an input called AutoCountdown to control it's setting.
 

TheMasterDS

L1: Registered
Dec 28, 2009
7
0
Oh, okay, no I didn't look over team_round_timer completely, I was informed of the inputs the zz timers could take take by Googling it, and when I saw team_round_timer it didn't occur to me to check if there are any additional inputs I could be using. I suppose I should've. I know, it's very silly.

Thinking about it, on the topic of the HUD highlights, I assume it highlights whichever one has been Activated last. Maybe I could have a logic_timer check every second or so if either team has gained an advantage and switch it accordingly. Could involve a lot of entities though if I'm not mistaken.

Also, looking into trigger_capture_area, I see it has what I need to make overtime a reality, only thing is it probably won't explicitly say overtime when it's going on. 2 questions, one is there a way to indicate that the game is in overtime, and if the game activates the winning team's timer will it just say it? Two, if I am to add time to a timer that is at 0 will it disable the default win condition so that capping all the points while the timer's still running (i.e. in the 30 seconds bought as unlikely as that seems come to think of it) doesn't win the game?

Anyway, seems that should be good then. Thanks.
 

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
Overtime is entirely automated. If at any point the game is told that a team should now win, but an objective is contested that, if changed owners, would cancel the win everything is held in limbo until it is resolved. It doesn't really have anything to do with the capture area itself. Not quite sure what you are asking about.

I'm not sure about the second question. I have a feeling if a koth timer reaches zero with no overtime in play, the win condition is unlocked permanently, and adding time back won't reverse it. It would need to be tested, but regardless of behavior there would be workarounds.
 

TheMasterDS

L1: Registered
Dec 28, 2009
7
0
I mean if say, two points were captured and one team could win or the other could push forward, would it say "Overtime" under the timer which had hit 0. I suppose it wouldn't from what you're telling me, but I suppose that's fine.

Thinking about it it seems like it'd be really complicated to make it so anyway. If I'm thinking about it right, I need 6 logic_branches that know what point is up to being contested and by who, 4 logic branches that are manipulated by trigger_capture_area to say if they're being contested (in the case that all 3 points are held by a certain team you don't need a logic branch for this since that team just wins anyway since capping the point would not buy the other team any time... unless their timer is 0 too I suppose come to think of it... Maybe I need 4 more actually for that scenario.) Plus the whole issue where the default win condition is unlocked when the timers hit 0. There doesn't appear to be an input to use to reverse it on team_control_point_master (which has the cpm_restrict_team_cap_win property, so I assume that's what changes when the timer hits 0), so I suppose there'd be no simple way to solve that unless I can just change it directly somehow, which I have no idea if that's possible without inputs for doing so. Point I'm getting at is it may be worth considering just making no overtime initially and just making it end when either timer runs out and leave it at that.
 

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
Well actually, a timer will always have the overtime box under it when it reaches zero, regardless of anything else. That is just hard-coded into it. The actual "overtime" announcement and mechanics only occur if there is contested objectives.

I still don't really understand what you are going for here with the overall objective mechanics, though. I know a map is out there that is a normal 5cp map but the center counts as a koth point, such that if the (normal, singular) timer runs out, whoever holds that point will win, instead of sudden death or stalemate. That sounds... similar to what you are talking about, but the stuff about adding small amounts of time on captures confuses me.

Could you perhaps explain your goal more? What do the timers start at, what are all the possible win conditions, etc. Sometimes I find people are asking questions they don't need to be, because there is a different way to do what they want, and stating the desire is better than asking a question.
 

TheMasterDS

L1: Registered
Dec 28, 2009
7
0
Okay, so that's cool then. Overtime would at least look right to players, which seems key.

Yeah, sure. Way I see it the game basically works like this. Both timers tick down constantly, unless one was to hold all 3 points, at which point only their timer would go down while the other team's timer would stand still, allowing one team to get an advantage that, even if both timers were to resume, would allow that team to win. Now, the reason why time is added to your enemy's timer when you cap the center is so that there can be a point where one team has enough of an advantage to win so long as they hold the center point, but if they were to lose it their win would be in jeopardy. That said, there would also be an advantage big enough to lose the center point without losing the game in the process so long as they were able to hold their last point.

One of the things I like about this set up is it really forces the losing team to be on the offensive. They can not simply say "Oh, we'll just hold this last point and hopefully it'll end up a stalemate if we're able to hold it every time they get to it" if they are at a disadvantage, if they want to win they have to make the pushes forward and they have to at least capture the center point.

Timers would probably start at somewhere between 5 and 10 minutes. I'm not quite sure where the balance is, but I'd bet it's closer to 10 than 5. Win conditions would be when either team's timer ran out.

Only issue with that is that one team could still win in overtime if they capped the center point (buying 30 more seconds) or capping the last point (giving them a chance to run out the clock). If the winning team has all 3 points there would be no overtime, as the losing team reclaiming their last point wouldn't help, unless their timer was zero. Additionally, I'd like to be able to highlight (i.e. put the little box around) the timer with the lower time since that'd be a handy shorthand to have.
 
Last edited:

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
Ok, I understand it now, but to take a step away from the entities and over to gameplay, I find myself asking "why?"

People have tried 3cp maps instead of 5cp, and they generally haven't worked out from what I hear.
In your idea there is absolutely no reason to capture all the points, because owning them all doesn't grant you victory. Whoever caps the middle can then just turtle on the point and win, since taking the last point won't make them win any faster. Add in all-points-victory and you still have the issues of a 3cp map being worse than 5cp.

I feel that the problem you are trying to address ("stalemating" in a 5cp) isn't actually addressed with this setup, it just causes the stalemate to end differently while teaching the players an unnecessary new gametype.
 

TheMasterDS

L1: Registered
Dec 28, 2009
7
0
That is a good point, which I hadn't fully considered. Perhaps you're right, and there'd be no motivation to progress beyond the center point. I would generally say that any map using this scheme would have to make the center hard to hold definitively, but perhaps no one would care about losing it and focus entirely on reclaiming it before the timers run out. Personally, I would think that getting insurance by gaining a bigger advantage so that you could set up an easier to defend bottleneck would be a viable strategy, but maybe simply concentrating on holding the center would have a greater appeal.

Edit: A good example of a hard to defend central point would probably be Black Mesa. Maybe it's the server I play that map on when I do play it or because it isn't especially crucial to hold, but it seems like it's always changing hands. I wouldn't want to have a victory in that map entirely depending on whether that point was held, but I suppose if they wanted to the entire team could play classes that could more effectively defend the point if they weren't focused on attacking the points after that one. Hard to say really.
 
Last edited:

ardysqrrl

L4: Comfortable Member
Oct 26, 2009
173
159
3cp push with koth timers in the middle is an idea that's been done before, as you pointed out in your OP, but adding more and more time as points are capped seems like it would be even more horribly stalematey :S???
 

TheMasterDS

L1: Registered
Dec 28, 2009
7
0
Yeah, that's why I think 30 seconds is about as high as you can go for that. Ideally it'd be better if it could be more time so that the winning advantage is bigger than just holding down the enemy's base for 31 seconds, but then you run the risk of having it literally go on forever. That said, I don't really imagine the point would be so contested that it would be exchanged once every 15 seconds, as it would have to be to extend the game indefinitely.

Edit: Hmmm... Perhaps the solution is to simply remove the whole adding time element, thus making any match that doesn't proceed past the center point a stalemate and making sure at least one team has to put it all the way to the other team's final point to win. Not like a 30 second advantage would be hard to come by anyway.

Edit: Perhaps I've exaggerated the problem when I saw it. Emotions tend to do that. Perhaps I'm biased since I've played a lot of Black Mesa where there are plenty of fine maps that I haven't considered that don't have really hard to get final points. Perhaps memories of the original 6 maps have colored my views on Control Point maps. Not sure. Either way, I'm beginning to wonder if the idea I've occasionally touched on over the course of a year is worth doing all things considering. Curious to know that it will finally die not because I do not have time or because of a hard drive failure, but because I decided against it. It's kind of a sad way for an idea to go really all things considered, especially since a ton of thought was put towards the design of a map to demonstrate. Still, can learn things all the time, such as the importance of considering how the common player would act and how the average match would play out. Plus I'm sure some of the work is recyclable.
 
Last edited: