In this post, I will sketch a possible implementation of a
position time bonus system for ZakStunts, in the context of the discussions about LTB (leading time bonus) reform started in the 2024 pre-season that we're revisiting now (cf. the Cars and rules for 2025 (https://forum.stunts.hu/index.php?msg=95605) thread). Position time bonus is a way to expand LTB to further positions on the scoreboard. The idea originates with the
podium time bonus system (which helpfully also abbreviates to PTB :D ) used in the later seasons of USC (https://web.archive.org/web/20150531002922fw_/http://users.atw.hu/unskilledstunts/rules.htm); a similar suggestion was also made by Alan Rotoi in 2021 (https://forum.stunts.hu/index.php?topic=3859.0). The system presented below is far from the only reasonable alternative bonus system, or even the only way to do PTB (the USC system, for instance, was different in quite a few ways). While I do feel it could be implemented successfully, it is also meant as exploration of the design space, highlighting some aspects we would want to consider in this or any other possible LTB reform.
General premisesIn addition to the main goal of providing further opportunities for earning bonuses and thus involving more pipsqueaks in the bonus fights, which would be the main point of adopting PTB, there are some positive aspects of the current LTB system that are worth trying to preserve in any reform. I would highlight three of them:
- Waste of "partial credit" -- hours that do not add up to a whole bonus point -- should be kept to a minimum. (The current system achieves that with accumulated leading hours carrying over across races until the pipsqueak earns a point.)
- It should be possible to track your progress and know what you need to do to earn your next bonus. (With the current system, you just have check how far your total hours are from 240 or 480. In the pre-2020 system, which gave points to the two pipsqueaks with the most hours in each race, while it was possible to get LTB +1 with as little as 24 hours, you'd always be at risk of being overtaken late in the race.)
- The amount of bonus points given shouldn't be as large as to unbalance the season scoreboard. (The current system is a marked improvement in that aspect over the pre-2020 one, as the total amount of bonus points fell by about a third, mainly thanks to hours after gaining an LTB point not carrying over.)
The extent to which the PTB system below addresses these goals is up to discussion, and to the evaluation of you all.
The systemWithout further ado, let's look at how this version of PTB is supposed to work. It gives bonuses for time spent in the
top 6 positions, with the bonus gains being weighed by position. Top 6 is a familiar threshold at ZakStunts, being used for things like XP Points and car coefficient updates.
To make gains incremental and granular in a way that extends to the whole top 6, bonuses are granted
in increments of 0.05 points. In that aspect, the mechanics are similar to the current system: you accumulate hours and, at certain amounts, earn your next (fraction of a) point.
For each position,
the weights are applied through the number of hours needed to earn the next 0.05, as follows:
- 1st place: 0.05 every 14 hours (1 × 14)
- 2nd place: 0.05 every 28 hours (2 × 14)
- 3rd place: 0.05 every 42 hours (3 × 14)
- 4th place: 0.05 every 70 hours (5 × 14)
- 5th place: 0.05 every 112 hours (8 × 14)
- 6th place: 0.05 every 182 hours (13 × 14)
(Why multiples of 14? I'll get back to that later.)
A pipsqueak can earn
at most 2 PTB points in a single race. While that doesn't make a big difference to the amount of points available (without the limit, the maximum would be 2.1 points for a lead of 14 × 42 = 588 hours), it makes the system tidier in a couple ways: by making the maximum PTB per race a whole number, and by making such a maximum still attainable even if hard to reach (at 560 leading hours out of 600) rather than nearly impossible (as it would be at 588 out of 600).
There is
no carryover of hours between races, as the granularity of the 0.05 point increments should be enough to make that superfluous.
Within a race, however,
hours are transferred between positions when the scoreboard changes. For instance, if a pipsqueak spends 72 hours in fifth place (out of 112 needed to get 0.05 at that position) and then moves up to second, those hours are converted to 72 × 2 / 8 = 18 hours, and so they will only need 10 hours in second place (instead of 28) to get the next 0.05. Internally, that could be implemented by tracking the fraction of "credit" earned towards the next 0.05, or by incrementing a counter every hour according to the proportions shown above. (How to display that information to pipsqueaks is a different matter, which I'll get to in a moment.)
Initial comments, potential pros and consQuoting myself from the 2025 rules thread:
Quote from: Duplode on November 11, 2024, 10:31:38 PMWe could perhaps begin by looking at possible motivations for changing LTB. Looking back at past discussions, I would highlight two issues that I've seen mentioned with some frequency:
- Most pipsqueaks never or only rarely partake in LTB fights.
- Intense LTB fights can be exhausting and time-consuming.
To my eyes, the primary goal of adopting PTB is dealing with the first of those issues: involving more pipsqueaks in bonus battles, while providing further incentive, and benefits for, posting replays regularly. It does not directly address the second issue; however, it becoming possible to earn bonus points while in lower positions might ease some of the tension that an LTB fight can bring.
The choices of granting bonuses at multiples of 14 hours and of using Fibonacci (1-2-3-5-8-13) multipliers for the positions might appear surprising. Playing a bit with the values suggests that is one of the very few combinations that gives, at the same time, reasonable point gaps between the top 6 positions, nice fractions for the maximum bonuses per position, and evenly spread intervals on the 600-hour race window (which is specially important to avoid wasting too many hours at the lower positions). The table below shows some of those properties:
(https://i.imgur.com/5qZtsss.png)
Note, in particular, that in a system of granular bonuses without carryover it's a good thing to have "hours for maximum" close to 600, as that minimises waste. (Having it
equal to 600, however, wouldn't be quite as good, as it would make the maximum essentially unreachable.)
While the system conceivably might be made even more granular by using 0.01 or some other smaller fraction instead of 0.05 for the minimum bonus amount, my view is that doing so would only make season scoreboards harder to follow for little benefit.
With bonuses being granted in 0.05 increments, this is a very nearly a continuous system. One of the consequences of that is LTB tactics, be them aimed at reaching your next 240 hours or stopping someone else from doing so, will be greatly simplified. In my book, that counts as a negative, as the nature of such tactics under the current rules makes the fights more interesting than they have ever been. However, for those whose main concern is making bonus fights less exhausting, simpler tactics could also help with easing the pressure on the contenders.
Across all pipsqueaks, this PTB system would give a maximum of 4.65 points per race (while the sum of the "maximum bonus" column in the table above is 4.55, the 2-points-per-pipsqueak limit usually won't need to be applied if multiple people spend time on first place). While that might look like a large increase over the current rules (a bit under 2 points per race in average), or even the pre-2020 system (in the absence of ties, a maximum of 3 per race), the points should be spread across more pipsqueaks, and in a much more even manner, so chances are the season scoreboard wouldn't become unbalanced. Ideally, we'd evaluate the potential effects of adopting PTB with some simulations. While I haven't done so beforehand to avoid delaying this post too much, I plan to try that over the coming weeks.
Last but not least, there's the important matter of how to report the bonus battles in a clear way to drivers and spectators. Replicating the detailed hours table we use for LTB six times, one for each position, feels like overkill. It would probably be more useful to have a concise summary displaying the situation of everyone who has been in the top 6 in the current race. Something like this:
(https://i.imgur.com/uOocZF8.png)
"Pos." is the current position on the scoreboard. "Points" is the PTB earned so far. "Progress" is how far on the way to the next 0.05 the pipsqueak is, reflecting in a more user-friendly way the internal counter I mentioned when discussing how hours would transfer upon position changes. Finally, "Hours to next" is how many hours remain to the next 0.05 assuming the positions don't change (for pipsqueaks currently outside of the top 6 that doesn't make sense, so it is left empty). A table like this might well cover most information useful in practice to pipsqueaks, so the detailed hours charts could be relegated to a secondary page, or removed entirely. (I'd be happy with keeping a leading hours chart, though, even if it's just for nostalgia reasons :) )
This is a very detailed and thoughtful proposal and definitely a considerable improvement over the current system. I like the system per se but find the 0.05 steps somewhat arbitrary and to quote what
@Chulk wrote on Telegram: "[...] I am not entirely convinced of the way to show progress, but I can't think of [...] a better proposal."
The modified proposal- Everyone gets 1 point after 280 hours (or 0.5 points after 140 hours)
- The second place accumulates minutes at half the speed of the first place, and so on, with the sixth place accumulating minutes at 1/13 of the speed of the first place. So, the second place needs 2 real minutes to gain 1 stunts minute.
The benefitProgress can always be displayed in a simple way:
- Argammon: 60
stunts hours 20 minutes
- Duplode: 200
stunts hours 0 minutes
- Spoonboy: 70
stunts hours 13 minutes
Considering the pipsqueak Duplode, and remembering that all pipsqueaks need 280
stunts hours to gain 1 point, Duplode knows that he needs 80 hours in first place, 160 hours in second place, etc., or a combination, to obtain one bonus point.
Under this proposal, since everything is measured in stunts minutes, there's no need for conversion when pipsqueaks change positions. For example, if a pipsqueak spends 130 real minutes in 6th place, they accumulate 10 stunts minutes. When they switch to 1st place, they still have those 10 stunts minutes and will continue to accumulate additional stunts minutes at a faster rate.
CTG used at Unskilled Stunts 'Podium time bonus', if I remember well.
Btw, that will only interest people who favorize collecting as much points as possible to finish as high as possible in Season's Standings. For those who focus on winning as many races as possible, it will not lure out replays or times.
Great work
@Duplode, a perfect way to start the discussion. Some version of PTB could a nice extension of the current system, and I agree with many of your points. A few dissenting thoughts:
- The exhausting part of the current LTB system is the 'battle': timing choices, counter-replays (and counter-counters), alternating leadership. It is also the
exciting part, where decisions matter. Decisions are important because they make the difference between an interesting mechanic, and a bonus system that "happens" to you.
- Intervals smaller than 24 hours
might be unfair to folks in different timezones, more than the current system. We probably need some math to check.
- I don't think a new system should be easier for people at the top of the scoreboard. Both
reward and difficulty should increase as one climbs towards the podium. Strong players, big bets.
- I agree on transferring hours if you step down: you have no control on someone submitting a stronger replay. I would
throw away hours if you submit a strong replay and step up: it's your choice to go for more points, against collecting your current bonus. Will you play conservatively, or be bold?
I haven't sketched numbers yet, but I'm thinking a "chunky PTB" system might be more interesting than the "continuous PTB" you suggest.
Maybe bigger time periods, and bigger bonuses? Or a reverse system? For example (not an actual proposal!): first place gets 1 point every 240 hours, second place 0.6 points every 240 hours, third place 0.4 points every 240 hours, etc.
Thank you, those are some good comments from y'all to get things started!
@Argammon So, if I got it right, the idea is replacing the "Hours to next" column in my mockup, which shows how much remains to the next 0.05 adjusted by position, with one that displays hours (and minutes) to the next whole point, always using the 1st place multiplier for consistency. That sounds perfectly fine; when it comes to displaying whatever is clearer to everyone is good enough. It's worth emphasising that the unit we use for display need not be the same one used internally in the code.
(I picked 0.05 as the step size, by the way, mostly because that is the smallest fraction we currently have on the season scoreboard.)
@Akoss Poo a.k.a. Zorromeister Indeed, this system is directly inspired by podium time bonus at USC :)
The point about motivation is an interesting one, and it would be good to hear from a wide range of pipsqueaks about how they see it. From observing things as they stand now, my feeling is that there is some ambivalence about LTB among those who compete regularly for it, and that below the top people tend to post replays regularly even with little in the way of tangible rewards. Still, I think something like LTB remains necessary as a safeguard against extreme hiding at the top, and so if we're going to have it, we might as well make make the battles more accessible for those who enjoy them -- while, as a side benefit, allowing those with more relaxed strategies of posting replays along the month but without joining dogfights for the lead to not go empty handed.
@dreadnaut LTB fight tactics are at a sweet spot under the current rules, and they are something I'd miss in a simpler system. A bit further below, I'll talk more about how that might apply to PTB.
I'm not sure I see how intervals under 24 hours could create timezone unfairness, in particular with a system of granular bonuses with little waste of partial credit. Do you have an example of how that might play out?
I'm afraid throwing away hours when someone steps up would be very problematic, for two reasons. Firstly, I don't think we want to punish people for trying to improve. Secondly, it seems likely this would disproportionately affect pipsqueaks moving upwards from the midfield, which goes counter to the spirit of extending LTB into PTB.
On a chunkier system, that's a valid point in the design space as well. I can see the appeal of having larger milestones to strive for than a 0.05 step. While steps of 1 point would be too large for the lower positions, 0.5 would likely work fine everywhere (assuming there is carryover -- more on that in a moment). Perhaps the best thing to do would be
mixing step sizes, having two steps of 0.5 point and a final one of 1 point in each race (so LTB +1 and LTB +2 becomes PTB +0.5, PTB +1 and PTB +2).
With larger steps and a chunkier system, it becomes absolutely necessary to have some form of
carryover, as otherwise it would be pointless -- in both senses! -- to set up bonuses for the lower positions. Pulling in the other direction, given that the expansion to PTB would make the system more complex in quite a few ways, it is tempting to simplify it elsewhere by eliminating carryover so that there is one less thing for people to keep track of. That can be argued either way, though.
If we were to adopt larger steps, then, the question would become how to set up the carryover. Full carryover (that is, excess hours always transfer to the next race) is not very different from a continuous system when it comes to tactics, as you can nearly always leave it to the next race to sort things out. The only advantage in terms of making the system more interesting would be the bigger milestones.
The alternative, then, would be some form of
partial carryover, not unlike what we have in the current LTB system. For instance, we might make it so that excess hours only carry over if the pipsqueak hasn't attained 1 whole point in the race. That could bring two significant advantages, at least from my point of view:
- Firstly, much of the tactical richness of the current LTB system would be restored. Partial carryover is, IMO, the secret sauce of the current system, given how it introduces a qualitative difference between LTB +1, for which you can rely on carryover, and LTB +2, for which you must buckle down and sort it out before the deadline.
- Secondly, it would reduce the total amount of points being distributed, specially at the very top, which means less risk of unbalancing the season scoreboard.
When doing partial carryover in this way, some care might be needed to avoid weird edge cases. For instance, if there were fixed steps of 1 point, someone who earns 0.8 "credit" in a race (say, by leading for a some time early in the race and then spending most of the remaining hours in 3rd and 4th places) might get to 1 point very quickly in the next race, and then spend the rest of it outside of any PTB fight unless they make a serious push for the lead. However, I think mixing step sizes, as suggested above, would make that much less of a problem in practice.
@Duplode:
Yes, the systems are mathematically identical if, using my terminology, you need 14
stunts hour for 0.05 points. The difference is indeed how it is displayed:
Let's consider the following screnario:
"Within a race, however, hours are transferred between positions when the scoreboard changes. For instance, if a pipsqueak spends 72 hours in fifth place (out of 112 needed to get 0.05 at that position) and then moves up to second, those hours are converted to 72 × 2 / 8 = 18 hours, and so they will only need 10 hours in second place (instead of 28) to get the next 0.05. Internally, that could be implemented by tracking the fraction of "credit" earned towards the next 0.05, or by incrementing a counter every hour according to the proportions shown above. (How to display that information to pipsqueaks is a different matter, which I'll get to in a moment.)"
Using my terminology the pipsqueak spent 72 real hours to earn 9
stunts hours. Hence, they need 5 more stunts hours to obtain 0.05 points or equivalently 10 real hours in second place. As far as I see it, it would be sufficient to display the number of
stunts hours obtained behind each pipsqueak's name.
I will chime in on the discussion about a "chunkier" system in a separate post.
Quote from: Duplode on November 26, 2024, 03:42:57 AM[...] The alternative, then, would be some form of partial carryover, not unlike what we have in the current LTB system. For instance, we might make it so that excess hours only carry over if the pipsqueak hasn't attained 1 whole point in the race. That could bring two significant advantages, at least from my point of view:
- Firstly, much of the tactical richness of the current LTB system would be restored. Partial carryover is, IMO, the secret sauce of the current system, given how it introduces a qualitative difference between LTB +1, for which you can rely on carryover, and LTB +2, for which you must buckle down and sort it out before the deadline.
- Secondly, it would reduce the total amount of points being distributed, specially at the very top, which means less risk of unbalancing the season scoreboard.
When doing partial carryover in this way, some care might be needed to avoid weird edge cases. For instance, if there were fixed steps of 1 point, someone who earns 0.8 "credit" in a race (say, by leading for a some time early in the race and then spending most of the remaining hours in 3rd and 4th places) might get to 1 point very quickly in the next race, and then spend the rest of it outside of any PTB fight unless they make a serious push for the lead. However, I think mixing step sizes, as suggested above, would make that much less of a problem in practice.
I like this suggestion. To keep it simple, I would prefer to keep this part identical to the present system, meaning pipsqueaks earn full leading-time points and stunts hours beyond 280 do not carry over to the next race. To make it a bit more realistic to gain 2 points, one may say that 240 stunts hours are enough per point. This way, the new system remains "spicy" like the present system but also makes it easier for midfield pipsqueaks to gain some leading-time points.
I am not too concerned about the edge case you are describing (a pipsqueak earned 0.8 * 240 = 192 stunts hours). In such a scenario, one of the midfield pipsqueaks would have an opportunity to gain some valuable hours since one of the usual suspects is out of contention for a month.
Quote from: Akoss Poo a.k.a. Zorromeister on November 25, 2024, 08:15:32 PMCTG used at Unskilled Stunts 'Podium time bonus', if I remember well.
Btw, that will only interest people who favorize collecting as much points as possible to finish as high as possible in Season's Standings. For those who focus on winning as many races as possible, it will not lure out replays or times.
I think this is a valid point, but it applies to the current leading-time system as well, perhaps even more so. Taking myself as an example, I am not going to participate in the leading-time fight next season should the system remain unchanged. Having a job and a family makes it difficult (and exhausting) to compete for the top spot for an entire month, particularly if the opponent is a motivated top pipsqueak like
@Duplode or
@alanrotoi. On the contrary, I am much more willing to submit a replay if I find it likely that it is good enough to stay in the top 6 for a while.
But as you pointed out, all of this is only relevant if you care about the season's standing at all.
Wow, this is all developing fast.
I'll be back to try and have a detailed opinion about the different variants, I just wanted to express my support for the general concept. I feel like if more people have a realistic chance to fight for what is now LTB it will do its job of motivating people to race all around the month better. And the stepped implementation, where a higher position is better, means that it should still motivate the top drivers as well.
After some more consideration (see the final part of my previous reply (https://forum.stunts.hu/index.php?msg=95767)), I feel a chunkier, less granular system, as encouraged by
@Argammon and
@dreadnaut , would be an improvement over my initial proposal. That being so, here is an amended version of it:
Chunky PTBPosition time bonus is earned for time spent in the
top 6 positions, with the gains being weighed by position.
Bonuses are granted in
three steps (contrast with the two steps of the current LTB system, or the forty of the granular system in the opening post):
- A first step of 0.5 point, or PTB +0.5;
- Another step of 0.5 point, or PTB +1 in total; and
- A final step of 1 point, or PTB +2 in total.
For each position,
the weights are applied through the number of hours needed to reach the next step. Earning PTB +0.5 requires:
- 1st place: PTB +0.5 at 120 hours (1 × 120)
- 2nd place: PTB +0.5 at 240 hours (2 × 120)
- 3rd place: PTB +0.5 at 360 hours (3 × 120)
- 4th place: PTB +0.5 at 600 hours (5 × 120)
- 5th place: PTB +0.5 at 960 hours (8 × 120)
- 6th place: PTB +0.5 at 1560 hours (13 × 120)
(Note that we're back to multiples of 12, in contrast to the multiples of 14 in the initial proposal.)
To simplify the description, I will use
"stunts hours" to mean the equivalent for PTB purposes of an hour in the lead. 1 stunts hour, then amounts to 1 (real) hour in 1st place, or 2 hours in 2nd, and so forth. We can, then, say that
PTB +0.5 is given at 120 stunts hours. Following the same proportion,
PTB +1 is given at 240 stunts hours, and
PTB +2 at 480 stunts hoursThere is
partial carryover of excess hours: unused stunts hours are transferred to the next race
as long as PTB +1 hasn't been reached. (Note the current LTB system handles carryover in pretty much the same way, with the final +2 step having to be reached without the help of carryover.)
Within a race,
stunts hours are conserved when the scoreboard changes. For instance, a pipsqueak that spends 160 hours in fifth place will have earned 160 / 8 = 20 stunts hours, needing a further 100 Stunts hours to get PTB +0.5 (in fifth place, that amounts to 800 real hours). Should they move up to second, the situation in terms of stunts hours remain the same, and so they will only need 100 × 2 = 200 real hours in second place (instead of 240) to get PTB +0.5.
NotesThis revised PTB system is quite straightforwardly an extension of the current LTB system, and so much of the intuition about its workings should remain relevant, including when it comes to tactics. In addition to PTB +1 and PTB +2 steps with partial carryover, the proportion of 240 (stunts) hours for each whole point is also retained: since the reintroduction of carryover makes fine tuning of bonus window sizes less critical, we can afford going back to more familiar numbers.
Besides the extension down the scoreboard, the other significant change relative to the current system is the introduction of the PTB +0.5 step. I see that as necessary to keep the system appealing for the entire top 6. In particular:
- PTB +1 requires 720 (real) hours at 3rd place, which is more than the 600-hour window of a race. Depending on carryover to earn any points after spending a whole race in 3rd place would feel like a betrayal of the podium time bonus heritage of the system :)
- Similarly, PTB +1 calls for 3120 hours at 6th place. That amounts to more than five races, and is far too long for a first step in a system meant to make bonus battles more accessible.
Adding the PTB +0.5 step has at least one more major advantage: it would make battles for the lead early in a race more likely to be meaningful on their own, rather than as preparation for something else that might happen after the public days end (or many races later, or never). Furthermore, smaller amounts of carryover (with PTB +0.5, 119 stunts hours is the maximum that can be transferred between races) should make that mechanic easier to grasp and keep track of.
Wrapping it up for now, some detail on how stunts hours are to be added to each pipsqueak's total. The approach I suggest is to, after each real hour, add the fraction of a stunts hour corresponding to the position (one stunts hour for 1st place, half a stunts hour for 2nd, and so on). That is in contrast with only adding whole stunts hours (one stunts hour after one real hour for 1st, two real hours for 2nd, etc.), which would lead to needless waste of hours.
Internally (that is, without showing it directly on the site to pipsqueaks), the counter might even be kept as an integer, with the increment for each stunts hour being 1560, the least common multiple of the position weights. 1560 is divisible by 60, so an internal counter like that can be easily converted to stunts hours and minutes for display on the site.
Ok this is getting better! From a scientific point of view, to strenghten an idea we must ask it questions. If it answers right it gets stronger, a stronger truth. So don't get me wrong if I try to find glitches or holes.
- How can we test the system to avoid that this system favors the top pipsqueaks (those who usually gets the 80% or 90% of the extra points)?
I mean, I don't want to creat an even more unreacheable elite.
I like the idea of the system and its soul. We have to find a way to test it before implementing.
I like the system suggested by
@Duplode above.
@alanrotoi: Duplode's system is better for the sub-top pipsqueaks than the current one without a doubt. One way of going even more in that direction would be to reduce the weights from (1,2,3,5,8,13) to (1,2,3,4,5,6).
Advantage of the change: The sub-top pipsqueaks need less hours to get points.
Disadvantage of the change: When the weights are close, the top pipsqueaks have less of an incentive to try to take the lead because sitting in 3rd position may be good enough.
Which of the two (advantage vs disadvantage) should we put more weight on?
Quote from: alanrotoi on November 28, 2024, 05:52:35 PM- How can we test the system to avoid that this system favors the top pipsqueaks (those who usually gets the 80% or 90% of the extra points)?
Simulating how past races would have played out under the system, something I plan to do in the near future, should be one of the useful things for spotting pitfalls of that kind. Up to now, I don't think we have paid a lot of attention to the dynamics of position changes below the top. Simulations could help identifying some of the possible scenarios, in particular when it comes to how the extra points would be distributed.
Quote from: Argammon on November 28, 2024, 06:35:58 PMDisadvantage of the change: When the weights are close, the top pipsqueaks have less of an incentive to try to take the lead because sitting in 3rd position may be good enough.
This also applies to the lower positions (say, going for a podium place versus staying in 5th). PTB does make it a bit more affordable to be conservative about pushing for the higher positions. Since making it
too affordable would be self-defeating when it comes to making races more exciting, it's probably better to err on the side of larger gaps -- which are anyway easier to justify for bonuses than for the main scoreboard. With the (1,2,3,5,8,13) weights, the relative change in gains between e.g. 1st and 3rd is similar to that between 3rd and 5th, which seems appropriate to my eyes.
Quote from: Duplode on November 29, 2024, 02:25:04 AMSimulating how past races would have played out under the system, something I plan to do in the near future, should be one of the useful things for spotting pitfalls of that kind.
I can put some time aside this week-end to implement a rough version 🛠
Quote from: dreadnaut on November 29, 2024, 09:49:17 PMI can put some time aside this week-end to implement a rough version 🛠
That would be very nice, thank you! :)
Quote from: Duplode on November 29, 2024, 02:25:04 AMWith the (1,2,3,5,8,13) weights, the relative change in gains between e.g. 1st and 3rd is similar to that between 3rd and 5th, which seems appropriate to my eyes.
You can never go wrong with Fibonacci!
An update: I started working on a PTB simulator yesterday. The core of it is broadly in place; I now mainly need to tidy up the presentation of the values. As a teaser, here's a screenshot of the raw output for ZCT269:
(https://i.imgur.com/1VDrhYZ.png)
All right, I now have some simulation results to share! :D
First, I'll begin by discussing a side effect (and perhaps a glitch, in
@alanrotoi 's sense) of the system that the simulations made obvious: if 240 (stunts) hours is kept as the PTB +1 threshold, PTB +2 is significantly easier to reach than under the current LTB system. It's not difficult to see why that happens. Suppose that two pipsqueaks alternate between first and second through the entire race. In such a scenario, either of the pipsqueaks would need 360 hours in the lead to reach PTB +2, since 360 + (600 - 360)/2 = 480. 360 hours is just two and a half days more than 300 hours (half of the 600-hour window), and five days less than 480 hours (the current threshold for LTB +2).
Easier PTB +2 is not really a good thing IMO, as the extra points go almost entirely to regular lead challengers, largely cancelling any equalising or narrowing effects the new system could have over the bonus fight. Fortunately, it is not difficult to tweak the system to minimise that: just increase the PTB hour thresholds a bit. The list below shows how many times LTB +2 was reached in the 2024 season, and how many times PTB +2 would be reached in 2024 given different thresholds:
Rule | | +2 occurrences |
LTB, 2024 results | | 4 |
PTB, +1 at 240 h | | 6 |
PTB, +1 at 264 h | | 5 |
PTB, +1 at 288 h | | 2 |
PTB +1 at 264 (stunts) hours, or 11 days (which means PTB +0.5 at 132 hours, or 5½ days, and PTB +2 at 528 hours, or 22 days) is arguably the sweet spot for keeping +2 roughly as difficult as it is now; in contrast, the 288 hour threshold is too draconian (as
@Argammon had foreseen when considering the initial proposal, which had a 280 hour threshold). Note that the higher thresholds have relatively little effect over the lower positions, given there's full carryover below the PTB +1 threshold.
With that aspect covered, then, here are the PTB point distribution for the three thresholds mentioned above, next to the actual LTB points for 2024:
(https://i.imgur.com/XZOYZn0.png)
My overall impression is that it's pretty encouraging that there would be 13 people earning PTB over the season, with 6 or 7 of them above two points, and that the distribution for the 264 threshold in particular feels right where we'd like it to be.
One detail in the results above might look curious: why would Erik get more points with the 264 threshold than with the 240 one? That happens because of carryover. With the 240 threshold, Erik would get PTB +0.5 in ZCT275 by a small margin, and then get PTB +1 in ZCT276. With the 264 threshold, though, he would just miss PTB +0.5 in ZCT275, therefore bringing almost 125 stunts hours into ZCT276, which would be enough to get him PTB +2 there.
It is worth mentioning a few details of counting of hours that I have used for the simulations that differ from how LTB works right now:
- The time spent in each position is counted in real minutes, which are converted to stunts minutes only at the end of the race, when it's time to calculate points and carryover.
- The "50 minutes hour" which is used at ZakStunts for the first hour of a lead interval wasn't adopted, as it is no longer necessary with minute-based counters, and would be very confusing to set up given the interaction with the factors.
- There is no carryover across seasons in the simulations. With the possible exception of the transition between systems in the first season with PTB, such a rule feels superfluous under PTB, as the awkwardness of having results from one season affecting the next one would IMO no longer pay its weight, given that bonus points would become more accessible with PTB. (Note, by the way, that Overdrijf would still get his bonus point even without cross-season carryover: PTB +1 on ZCT271 with the 240 threshold, and PTB +0.5 on both ZCT271 and ZCT272 with the 264 and 288 thresholds.)
The 2024 simulation results, including detailed hour totals, are attached below for y'all to inspect.
What about simply reducing carry-over ratio? That way carry-over would have a lesser impact
Quote from: Chulk on December 29, 2024, 03:11:29 AMWhat about simply reducing carry-over ratio? That way carry-over would have a lesser impact
Carryover is not much of a problem IMO, and has little influence over the PTB +2 situation, as there is no carryover beyond the PTB +1 threshold. The anomaly with Erik's points, in particular, looks harmless to me. If we really wanted to get rid of it for the sake of consistency, one possibility would be removing carryover between PTB +0.5 and PTB +1. (How it works now: suppose the PTB +1 threshold is 264. If you get 200 stunts hours, you'll get PTB +0.5 for the first 132 hours
and carry 68 stunts hours to the next race.) Removing that, however, would mainly affect the lower positions, so I'm not sure it's worth doing. In any case, later I can try redoing the simulations with that change to better grasp the effect.
Thanks for the preview Duplode! Is it a time consuming process? Would you be able to test the PTB-264 effect on 2023 and 2022 as well, to get extra data points?
Quote from: dreadnaut on January 06, 2025, 10:11:45 PMWould you be able to test the PTB-264 effect on 2023 and 2022 as well, to get extra data points?
Sure! It's not very time consuming at all; I should be able to post these in the evening. (A preview of the preview: as far as I recall from when I was trying out the simulator, the trends were broadly similar.)
Here are the simulation results for 2023 and 2022, including PTB-240, PTB-264 and PTB-288:
2023Rule | | +2 occurrences |
LTB, 2023 results | | 3 |
PTB, +1 at 240 h | | 8 |
PTB, +1 at 264 h | | 4 |
PTB, +1 at 288 h | | 0 |
(https://i.imgur.com/8LpRebI.png)
2022Rule | | +2 occurrences |
LTB, 2022 results | | 4 |
PTB, +1 at 240 h | | 4 |
PTB, +1 at 264 h | | 3 |
PTB, +1 at 288 h | | 2 |
(https://i.imgur.com/QEzJ8L9.png)
The trends are similar overall, with PTB-264 still looking the best balanced option to me. It's worth noting the effect of adjusting the threshold becomes more significant in seasons with more concentrated leading time like 2023.
Attached below are the detailed results from season 2018 to season 2023. For 2018 and 2019, I have also included approximations of what LTB under the current rules would be like (they are approximations because of differences in details like rounding).
I've updated the rules for 2025 with a first draft, have I missed anything?
QuotePosition Time Bonus (PTB)
The system tracks how long you stay in one of the top-6 position on the scoreboard.
- Pipsqueaks in first position gain 0.5 bonus points for every 132 hours they hold the position during the race.
- Pipsqueaks in the following five positions gain 0.5 bonus points for amounts of hours multiple of 132: ×2, ×3, ×5, ×8, and ×13.
- When moving position, pipsqueaks carry hours over, scaled up or down using the coefficients above. E.g., if you have 100 hours in 4 position, and move up to second place, you will bring 100 / 5 * 2 = 40 hours.
- Pipsqueaks can gain at most 2 bonus points per race.
- Position-time calculation starts on the first day of each race. If the track is available earlier, position time is not calculated.
- Position-time calculation ends with the start of the quiet days.
Quote from: dreadnaut on January 13, 2025, 09:31:40 PMI've updated the rules for 2025 with a first draft, have I missed anything?
I think the only thing missing is carryover. Something like this:
- Pipsqueaks who get less than 1 bonus point in a race carry unused hours to the next one. E.g. if you get 100 leading hours in a race, you'll start the next one with 100 leading hours; if you get 200 leading hours instead, you'll bring 68 to the next race, as the other 132 earned you PTB +0.5.
BTW, it's a good occasion to settle what we're going to do about cross-
season carryover. More specifically:
- Confirm whether we're eliminating it for future seasons (IMO we should get rid of it); and
- Decide what to do, on an exceptional basis, with the carryover leading hours from 2024 (I think it could make sense to convert them to the new system, in order to honour any expectations from the previous rules).
I have prepared an
unofficial preview of the PTB situation at the end of the ZCT282 public days (that is, a few hours ago). The hours were counted using my simulator, and so the results might differ from the final implementation in details like rounding. Also, I haven't added any carryover hours from 2024; whether that will happen is yet to be settled. Anyway, here are the numbers:
Räcer | | Stunts hours/minutes |
Argammon | | 224:52 |
Alan Rotoi | | 103:54 |
Spoonboy | | 76:40 |
Duplode | | 39:53 |
Frieshansen | | 28:17 |
dreadnaut | | 25:42 |
Mortimer McMire | | 15:56 |
Zapper | | 8:28 |
Cas | | 4:26 |
Overdrijf | | 3:25 |
The full breakdown of real hours spent at each position is in the attached spreadsheet.
@dreadnaut Re-reading the draft of the rules, I have noticed another difference relative to the proposal. The draft says "Pipsqueaks in first position gain 0.5 bonus points for every 132 hours", which would imply the existence of a PTB +1.5 step between PTB +1 and PTB +2. With there being only three steps, it's probably easier to just have a table listing them:
Hours | | PTB points |
132 | | +0.5 |
264 | | +1 |
528 | | +2 |
Quote from: Duplode on January 24, 2025, 02:14:05 AM@dreadnaut Re-reading the draft of the rules, I have noticed another difference relative to the proposal. The draft says "Pipsqueaks in first position gain 0.5 bonus points for every 132 hours", which would imply the existence of a PTB +1.5 step between PTB +1 and PTB +2. With there being only three steps, it's probably easier to just have a table listing them:
Hours | | PTB points |
132 | | +0.5 |
264 | | +1 |
528 | | +2 |
Thanks Duplode, feel free to update the rules file. Also, to clarify: let's have a clean start with PTB, without carrying over the hours from the previous system.
Quote from: dreadnaut on January 26, 2025, 09:21:13 PMThanks Duplode, feel free to update the rules file.
All right, it's now updated (https://zak.stunts.hu/rules/2025) 👍
Until the implementation of PTB is ready, this page on the site proper (https://zak.stunts.hu/articles/ptb-updates-season-2025) will be used to post PTB updates and archive the charts of completed races. I'll try to update it after each Wednesday and Saturday in the first three weeks of the race, as well as after the deadline.
I have a doubt about the carry-over mechanism. Imagine there are two drivers A and B, starting at 0 accumulated Stunts hours:
* Driver A gets 263 leading hours on race 1 and 400 hours on race 2
* Driver B gets 265 leading hours on race 1 and 400 hours on race 2
With the current scoring system, Driver A will get more points (2.5 vs 2), despite doing worse.
Some possible alternatives to solve the problem:
* remove the carryover mechanism completely
* allow carryover even if the player gets 1 point
* introduce a 1.5 threshold at 396 hours
@HerrNove Indeed, partial carryover does lead to some weird edge cases. Similar situations were also possible with the LTB system that we had until last year: under that, 120 leading hours in one race and 360 in the next would give two points, while 360 and 120 would give just one point (plus 120 h carryover).
Why even have partial carryover, then? That's a fair question. I'd say partial carryover came about as a compromise between two things:
- On the one hand, the main goal of carryover is making it rewarding to earn hours at lower rates. That's especially important now with PTB, given that it's impossible to reach PTB +0.5 in a single race from 4th place or below.
- On the other hand, not having carryover after PTB +1 is meant to introduce jeopardy, and tactics, to fights for the lead. The spirit of it is that if you want PTB +2 (which is a fairly large reward in a linear point system like ours) you gotta be prepared to defend your lead and settle the matter in the current race, without relying on carryover into the future.
Allowing carryover in all cases would make the system essentially continuous, so that summing the hours across the twelve races would be enough to know how many points one gets. That would mean a system that's easier to make sense of, but perhaps a less exciting one as well.
On a somewhat related note, something I'm curious to see -- and that, I guess, we'll only find out in practice -- is whether fights to reach (or prevent!) PTB +2 will be common. If such fights fail to happen, we might have a separate reason to consider adding PTB +1.5.
Wasn't there a limit of 2 PTB per race?
Yes, there is. I think HerrNove meant 2.5 points over two races.
Maybe it could be fixed to 2 points even with carryover.
I believe it already is. If you bring 131:59 of carryover (the maximum amount in the new system) into a race, and then earn 396:01 in it, you'll get PTB +2, and from that point no further bonuses will be available in that race, even if you lead all the way through the rest of the month.
Duplode got what I meant. To better clarify, repeating my example where
* Driver A gets 263 leading hours on race 1 and 400 hours on race 2
* Driver B gets 265 leading hours on race 1 and 400 hours on race 2
The results would be
* Driver A gets 0.5 points on race 1, carries over 131 hours and gets 2 points on race 2 (total 2.5)
* Driver B gets 1 point on race 1, carries over no hours and gets 1 point on race 2 (total 2)
So, driver B would be punished for doing too well on race 1. To avoid this situation, top drivers who are having a bad month might be tempted to artificially stay under the 1-point threshold, giving up half a point but gaining useful carryover that can be used in the next race to hopefully reach the 2-point threshold. Is this a too artificial situation? Maybe, my analysis is just based on abstract game theory while you have decades of concrete experience in this tournament.
Quote from: HerrNove on February 18, 2025, 10:09:50 PMSo, driver B would be punished for doing too well on race 1. To avoid this situation, top drivers who are having a bad month might be tempted to artificially stay under the 1-point threshold, giving up half a point but gaining useful carryover that can be used in the next race to hopefully reach the 2-point threshold. Is this a too artificial situation? Maybe, my analysis is just based on abstract game theory while you have decades of concrete experience in this tournament.
That is a reasonable concern. In my experience under the old LTB system at least (others might want to chime in), this kind of coldly calculated move in which the immediate goal would be
not getting LTB +1 wasn't really on my radar. What would sometimes happen is a more natural variation, that has more to do with pacing oneself and keeping the energy expenditure across the season sustainable. If at, say, 160-200 h it felt like pushing for LTB +1 (240 h threshold) would be too much trouble, I might let it go and try sorting it out in the next race. Such an option isn't without its risks: besides the matter of leaving 40-80 h on the table for everyone else, who knows how the next race will be like ("a bird in hand is worth two in the bush").
(There is also an additional, PTB-specific complication in the way of the calculated move. Under the new rules, losing the lead no longer stops you from earning hours; rather, it just reduces the rate at which you gain them. That being so, intentionally stopping as close as possible to the PTB +1 threshold is probably harder to do now.)
Quote from: dreadnaut (ZakStunts shoutbox, 2025-02-17)Also, how would you visualise PTB during a race, on the track page?
It's a good time as any to consider this, and having gone through a few races with the new system can only help. So, what's your take on displaying PTB information? Below are a few possibilities to kick-start things:
- A detailed chart with the hour totals, like those in the provisional page (https://zak.stunts.hu/articles/ptb-updates-season-2025), could be useful to have somewhere, and in particular works well as a post-race summary. For the main scoreboard page, though, I wonder if a more condensed and directly actionable presentation would be more relevant.
- The mock-up in the opening post of this thread (https://forum.stunts.hu/index.php?topic=4373.0) mooted showing the hours needed to reach a PTB target (+0.5, +1, +2), which should be a more directly actionable piece of information. There are some rather tricky question on how to best display that, though: should we use stunts hours, or real hours in the current position? and should we show just the next target for each pipsqueak, or all of them?
- An alternative to hours needed is the concept of a PTB margin that I brought up in discussions elsewhere (https://forum.stunts.hu/index.php?msg=96801). The margin is how many (stunts) hours a pipsqueak can afford to miss in order to reach a target. The question of whether to show all of the margins or just the one towards the closest target would also apply here.
- There's also the classic LTB timeline display used in scoreboard pages from previous seasons (https://zak.stunts.hu/tracks/ZCT281). The main caveat in adapting that to PTB is that, at least in principle, there would be six timelines, and replays would show up in several of them at once.
- We might also figure out a more visual presentation of the PTB situation. To mention one off-the-cuff idea, a bar chart of the progress towards the targets in stunts hours could make sense. The main question with that might be what to include and what to leave out of the display.
Quote from: Duplode on February 17, 2025, 11:07:28 PMOn a somewhat related note, something I'm curious to see -- and that, I guess, we'll only find out in practice -- is whether fights to reach (or prevent!) PTB +2 will be common.
We've just had PTB +2 being awarded for the first time, and it went to Argammon! To achieve that, he had to fend off a hefty challenge from MiDiaN, who was also in contention for PTB +2 into the third week.