Reforming the scoring function


Although the central place for design discussion is ##crawl-dev on freenode, some may find it helpful to discuss requests and suggestions here first.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Sunday, 23rd June 2019, 19:10

Reforming the scoring function

[I am making two posts. The first one is the problems of the current score system, and the second one is my solution. People are free to thank or comment on one, or both, or neither.]

Currently the scoring system is the following:
0.7 * Experience up to 250,000
+ 0.4 * Experience between 250,000 and 1,000,000
+ 0.2 * Experience between 1,000,000 and 3,000,000
+ 0.1 * Experience above 3,000,000
+ runes * (runes + 12) * 1000 (for everyone)
+ (250000 + 2 * (runes + 2) * 1000) (winners only)
+ 250000 * 25000 * runes^2 / turns (winners only)


To discuss why this scoring function is bad, we need to first define what we actually want from a scoring function. As the saying goes: "If you don't know where you want to go, any direction you go is fine".

So, what do we want a score system to do? I think the following are mostly uncontroversial principles:
  • Reward skill and achievements.
  • Intuitive and simple.
  • Not "hackable".

I would like some other properties as well (this is obviously subjective):
  • Flexible and parametrizable - should support a variety of objectives.
  • Anchored to people's actual play.

Keeping mind mind the above criteria, the scoring function is unsatisfactory for several reasons.
  • On simplicity and intuitiveness, it's middling to bad.
  • It does reward achievement (getting runes, getting the Orb and winning). However, the relationship between player skill and achievements on the one hand, and score on the other hand is tenuous at best.
  • Since there's a (runes) squared term in the score, it is almost always desirable to get all the runes you can. Getting later runes is nowhere near as tough as getting the earlier runes, so the (runes) squared term makes no sense.
  • As for "hackable", the problems with Chei and breadswinging are well-known already. Briefly, the "turns" are the number of actions you take, not the actual game time passed. So, if you swing your quick blade more times than your executioner's axe, your turns will be more in the former case as compared to the latter case.
  • As for the other subjective goals I mentioned: flexibility and parametrizability are low, and anchoring to how people play is non-existent.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Sunday, 23rd June 2019, 19:10

Re: Reforming the scoring function

[This is the second part of the post]

So, how do we do better? Here's my attempt.

When it comes down to the basics, there are really only two things to look at:
(a) Your achievements
(b) How much time it took you to get the achievements.

If we denote the former by A and the latter by T, the score is just some function f(A, T). This function is increasing in A and decreasing in T.

What are achievements? I think the following things definitely make sense to include:

(a) Runes, the orb and winning.
(b) XP.

Also, the following criteria are more debatable, but I think they makes sense to include for reasons I'll discuss further down.
(c) Player species
(d) God worship

Optionally, we can have achievements for specific conducts (like no worshipping, not casting any spells, not hitting monsters with a wielded weapon etc.) I will ignore this part for this presentation, but keep in mind that this is an option.

So, here's my attempt at a new score function:

Let:

R = number of runes
XL = player experience level (including partial levels, so a player at XL 14 and halfway to the next level would have XL = 14.5)
O = 1 if player has the orb
W = 1 if player wins the game
S = character factor. At a minimum, it would take into account species speed, so 1.4 for Naga, 0.8 for Fe, 0.7 for Ce etc.
T0 = total game time (in auts)
T1 = length of time which player spent as a chei worshipper

a, b, c, d are appropriate constants:

A = a * R + b * XL + c * O + d * W
T = [(T0 - T1) + T1 * 0.5] / S

Score = A/T


That's it.

We look at some issues and concrete cases:

  • XP term is required in the "achievements" because most people who play crawl have never obtained a rune. We need some way to differentiate between "died on D:3" and "died on Snake:$ in the rune vault". I used XL instead of the convoluted XP factor because it's simpler, and there's no real need to distinguish between: "got to XL 27" and "did 5 mega-zigs".
  • Speedruns: higher level monsters give a lot of XP compared to lower level monsters. So speedrunners who dive get a decent amount of XP per aut (and thus, higher score) because they're killing tougher monsters. This is in accord with the principle that more difficult styles of play should have higher score.
  • Game time should be measured in auts because when you allow HP and MP to replenish over game time, then game time is really the only constraining factor in deciding player skill.
  • Winning the game requires, at the minimum, traversing the dungeon to the exit. Since Nagas and Chei worshippers take much longer to traversing the dungeon, it makes sense to give them more "time" for score purposes. Otherwise a Chei worshipper or Naga which dives a lot will have a lower score than a human who explores dungeons fully. This outcome would contradict the principle that player skill should be rewarded.
  • The function I chose above does not specify a, b, c or d. These can be calculated ("parametrized", if you like) based on how people actually play. We can look at Sequell queries. or look at old score and assign constants based on those. We can also choose a different dependence on T (instead of a straight inverse relation), if we like.
  • Optionally, the "character factor" could include a "difficulty factor": OpTm would get a higher difficulty factor, MiBe would get a lower difficulty factor. Again, these can be adjusted based on how people play the game.

Ok, that's it. Comments welcome.

Blades Runner

Posts: 616

Joined: Thursday, 25th October 2012, 03:19

Post Sunday, 23rd June 2019, 19:34

Re: Reforming the scoring function

@bel, very nice write-up!
I've long thought about the scoring implementation and what could be done to further improve it. In the end, it's fairly complicated though (as you've demonstrated) and changing one thing to favor one method or another often just leads to skewing the results from one end to another, perhaps pleasing one crowd of people, but not another.

Looking at scoring personally, I have just a few things which don't sit well with me:

* I do not like the enormous impact the # of turns has on score. If I were to play for score, I feel like it would *mostly* be an exercise in theory crafting what the absolutely most optimal race/background/path through the dungeon and tactic is * luck to produce the best possible speed-run. I don't care for speed runs much, because I feel they involve making choices which you don't consider to be sound choices in the interest of reducing the # of turns. It also accentuates luck a fair amount.
* I do not like "timed" games, either as part of score (which thankfully they are not), or as part of tournament criteria. I don't feel a turn-based game should be played like an arcade game to get the full enjoyment from it.

Now, here's the part where I say so-what to my own preferences. If changes were made which imposed my preferences on others, undoubtedly it would cross the preference of other players who do like these aspects as part of score.

My solution:

Don't try to force only a single score, but score in multiple categories. This is already done somewhat in the form of queries to Sequell (in irc), but isn't very formalized or accessible to a player not focused on more advanced reporting capabilities. I think if you took a few primary elements and rated each one independently (and kept the existing formulae as-is as a "classic" score) the scoring system would be enhanced without loss. It would also be enhanced in a manner which wouldn't screw with existing statistics. The beauty with scoring is that it need not only be done in one way or another. No matter how many methods you create, it won't screw with the actual game mechanics.

So what primary metrics do I think should be considered for having independent scores? I don't know off the top of my head, but I believe there are several which cam be insightful and fun to match various styles of play. I'd need to think about it more, but that was at least my 2 cents.
User avatar

Zot Zealot

Posts: 982

Joined: Monday, 29th September 2014, 09:04

Post Sunday, 23rd June 2019, 23:14

Re: Reforming the scoring function

The inclusion of chei-specific and player move speed-specific logic seems overly complex.

Could you simplify this by looking at the ratio of game turns vs game auts?

Ziggurat Zagger

Posts: 8786

Joined: Sunday, 5th May 2013, 08:25

Post Sunday, 23rd June 2019, 23:39

Re: Reforming the scoring function

bel wrote:
  • Since there's a (runes) squared term in the score, it is almost always desirable to get all the runes you can. Getting later runes is nowhere near as tough as getting the earlier runes, so the (runes) squared term makes no sense.
Quadratic rune scoring makes perfect sense if you want high scores to get all the runes.
If the scoring is in the form of runes/turns, then runes have to be gathered in progressively fewer turns in order to be worth it. 2/15000 is bigger than 1/10000, but 15/11000 is smaller than 14/10000. With runes^2/turns, you don't have this issue.

Of course, if you do want high scores with fewer than 15 runes to be a thing, then yeah, go ahead and make it linear.

bel wrote:XL = player experience level (including partial levels, so a player at XL 14 and halfway to the next level would have XL = 14.5)
No. The existing system uses total experience gathered instead of XL for real, good reasons, not just to confuse you:
1. XL is capped. Total experience gathered is not. With your proposal a character that quits upon reaching XL27 gets a higher score than one that dies later on (with the same runes); "hackable"!
2. XL drain exists, and probably shouldn't penalize your score.
3. Now you have to add experience aptitude to the species factor too, except whoops, remember XL is capped, so now species scores are either screwed up at XL27, or screwed up at all non-27 XLs.
bel wrote:O = 1 if player has the orb
Why? What's so great about dying on the orbrun that it needs to have a bonus over other death scores?
bel wrote:T1 = length of time which player spent as a chei worshipper
Please no. Just because Chei is good for score in the existing system doesn't mean you should add a kludge to the new system to keep Chei good for score.

My other concern with the design of your new scoring function is how it deals with losing games. Most players lose a lot. These players will expect to get higher scores when they "get further" in the game. The current score formula accomplishes this very well (for all its other problems), by making losing game scores depend almost entirely on experience gathered, and slightly on number of runes gathered.
Yours, however, divides score by turns in losing games too, not just winning ones. So you risk a situation where a character that plays very efficiently up to D:10 and dies gets a higher score than a slow character that dies in Snake. This might make sense to experienced players, but will not be intuitive for new ones, especially offline players that see their own high score list at the end of every game.



Also not sure this is substantively different from the existing plan to base scoring on auts and add species factors...
Last edited by duvessa on Monday, 24th June 2019, 01:50, edited 1 time in total.

Zot Zealot

Posts: 1004

Joined: Thursday, 16th August 2018, 21:19

Post Sunday, 23rd June 2019, 23:48

Re: Reforming the scoring function

I think there should be no dependence on turns, ideally. Also for speedruns and tournaments. There should be no legit reason to breadswing, and things which depend on game turns confuse me. (I don't even know how to look up turncount, but looking up the number of game auts is easy. Maybe this is a bit noobish, but I understand part of the point is to make the score more noob-friendly.)
I don't think there needs to be a special case for Chei. Chei usually makes you strong, which often means fights take less time & cost less health. (For me usually most of my time is spend healing up after fights, with only a couple of rations worth of turns spend auto-travelling long distances.)
It seems funny you want to reduce the Felid score :)

I don't actually know what the score is for.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Monday, 24th June 2019, 01:14

Re: Reforming the scoring function

I'll answer in line to some points:

duvessa wrote:
bel wrote:
  • Since there's a (runes) squared term in the score, it is almost always desirable to get all the runes you can. Getting later runes is nowhere near as tough as getting the earlier runes, so the (runes) squared term makes no sense.
Quadratic rune scoring makes perfect sense if you want high scores to get all the runes.
If the scoring is in the form of runes/turns, then runes have to be gathered in progressively fewer turns in order to be worth it. 2/15000 is bigger than 2/10000, but 15/11000 is smaller than 14/10000. With runes^2/turns, you don't have this issue.

Of course, if you do want high scores with fewer than 15 runes to be a thing, then yeah, go ahead and make it linear.


I do not think in terms of "all runes should be gathered for a high score". I start with the goals outlined, and then ask whether the function satisfies the objectives. The old function clearly did not. Is it really more "skillful" to get 15 runes in 80k turns than getting 3 runes in 10k turns? I think the answer is clearly no.

However, even if we assume that this goal of "collect all the runes for a high score" is a desirable goal, is it really violated by a linear function? I am not sure I am parsing your next statement correctly, but it seems that you're making a mistake. All that is required for the next rune to be worthwhile is to have the time taken to collect it less than the average time taken to collect all the runes so far. The time taken to collect a rune does not need to be progressively shorter with each rune. Since the first rune typically takes the most time to collect by far (the rest take a relatively short time), the former condition will almost always be satisfied. For confirmation's sake, I took one of Yermak's high score games from here:

Spoiler: show
Rune Turn Average time to collect N - 1 runes Time taken to collect Nth rune
1st 5654 undefined 5654
2nd 6668 5654 1014
3rd 8031 3334 1363
4th 9227 2677 1196
5th 9742 2307 515
6th 10387 1948 645
7th 10726 1731 339
8th 10877 1532 151
9th 11197 1359 320
10th 11543 1244 346
11th 12008 1154 465
12th 12630 1091 622
13th 13093 1052 463
14th 13686 1007 593
15th 14604 973 918


You can see that for each rune, the third column is smaller than the fourth column. So, for each rune, it is worthwhile to collect the rune. (These calculations ignore the XP term, but it's hard to include the term without explicitly defining the constants.)

duvessa wrote:
bel wrote:XL = player experience level (including partial levels, so a player at XL 14 and halfway to the next level would have XL = 14.5)
No. The existing system uses total experience gathered instead of XL for real, good reasons, not just to confuse you:
1. XL is capped. Total experience gathered is not. With your proposal a character that quits upon reaching XL27 gets a higher score than one that dies later on (with the same runes); "hackable"!
2. XL drain exists, and probably shouldn't penalize your score.
3. Now you have to add experience aptitude to the species factor too, except whoops, remember XL is capped, so now species scores are either screwed up at XL27, or screwed up at all non-27 XLs.

I am not wedded to using XL instead of XP -- it is perfectly possible that the older system is superior. But these reasons aren't really compelling.

1. The case is too marginal to bother with, because by quitting you are forever giving up the chance to win (winning gets you a higher score). So "quitting at XL 27" is not a "hack" if you're looking to maximize score.
2. I am not sure what XL drain means. I thought draining just modified your skills.
3. Species factor already exists in my proposal, so I don't think this factor is too important.

However, as I said, I am perfectly fine with using the old XP system if it is felt that it offers significant advantage. I, personally, don't see the advantages as worth the extra complexity.

duvessa wrote:
bel wrote:O = 1 if player has the orb
Why? What's so great about dying on the orbrun that it needs to have a bonus over other death scores?


This is a mistake by me. It should be "O = 1 if player wins" (while carrying the orb, obviously).

duvessa wrote:
bel wrote:T1 = length of time which player spent as a chei worshipper
Please no. Just because Chei is good for score in the existing system doesn't mean you should add a kludge to the new system to keep Chei good for score.

I am not adding a kludge to the new system to keep Chei good for score. I am adding a kludge to not make Chei (or Nagas) randomly bad for no reason. The point is that score should reflect skill/achievements. A Chei worshipper who leaves half the dungeon unexplored would have the same score as a human who explores the entire dungeon. Obviously winning a game where you dive a ton is harder than winning a game while playing normally. So this situation makes no sense if we keep in mind our goal.

duvessa wrote:My other concern with the design of your new scoring function is how it deals with losing games. Most players lose a lot. These players will expect to get higher scores when they "get further" in the game. The current score formula accomplishes this very well (for all its other problems), by making losing game scores depend almost entirely on experience gathered, and slightly on number of runes gathered.
Yours, however, divides score by turns in losing games too, not just winning ones. So you risk a situation where a character that plays very efficiently up to D:10 and dies gets a higher score than a slow character that dies in Snake. This might make sense to experienced players, but will not be intuitive for new ones, especially offline players that see their own high score list at the end of every game.

This is a tricky problem. I don't know if I have an answer to this objection. I will think about it more.

However, I am not sure that this would matter in practice. This is because the same player wouldn't "play up to D:10 efficiently" and then "play very slowly till he dies in Snake". Again, I am not sure that this situation cannot happen, but it seems unlikely to me.

duvessa wrote:Also not sure this is substantively different from the existing plan to base scoring on auts and add species factors...

I was unaware that there was some plan for score. Is there a link? All I recall on tavern is some talk of an aut-based system (this thread, for instance).
Last edited by bel on Monday, 24th June 2019, 01:50, edited 1 time in total.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Monday, 24th June 2019, 01:33

Re: Reforming the scoring function

chequers wrote:The inclusion of chei-specific and player move speed-specific logic seems overly complex.

Could you simplify this by looking at the ratio of game turns vs game auts?

I do not see any simple way to look at the ratio of game turns and game auts. Game turns can be manipulated ("breadswinging"; also, instead of resting, moving back and forth in Statue form or as a Chei character), so they don't provide much useful information.

Game time in auts is a natural thing to use, because regeneration, combat etc. is based on game time, not game turns.

Ziggurat Zagger

Posts: 8786

Joined: Sunday, 5th May 2013, 08:25

Post Monday, 24th June 2019, 01:50

Re: Reforming the scoring function

bel wrote:However, even if we assume that this goal of "collect all the runes for a high score" is a desirable goal, is it really violated by a linear function? I am not sure I am parsing your next statement correctly, but it seems that you're making a mistake. All that is required for the next rune to be worthwhile is to have the time taken to collect it less than the average time taken to collect all the runes so far. The time taken to collect a rune does not need to be progressively shorter with each rune.
You're correct that all that is required for the next rune to be worthwhile is to have the time taken to collect it be less than the average time taken to collect all the runes so far. And after you collect it...that average goes down.
Doesn't help that I phrased this terribly and made a typo in my bad-in-the-first place "example", though.
That said, you can certainly find exceptions where runes are dependent on each other (maybe collecting the first hell rune is detrimental because of extra time spent clearing the vestibule, but collecting the other three is fast enough to make up for it).
bel wrote:2. I am not sure what XL drain means. I thought draining just modified your skills.
Felids and Ru.
bel wrote:However, as I said, I am perfectly fine with using the old XP system if it is felt that it offers significant advantage. I, personally, don't see the advantages as worth the extra complexity.
The proposed XL-based scoring has 27 breakpoints and interacts with sacrifice experience, felid extra lives, and XL aptitude.
The existing experience-based scoring has 4 breakpoints and interacts with none of those things. I do not think that it is more complex. (Wouldn't mind getting rid of the breakpoints though.)

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Monday, 24th June 2019, 01:58

Re: Reforming the scoring function

duvessa wrote:
bel wrote:However, even if we assume that this goal of "collect all the runes for a high score" is a desirable goal, is it really violated by a linear function? I am not sure I am parsing your next statement correctly, but it seems that you're making a mistake. All that is required for the next rune to be worthwhile is to have the time taken to collect it less than the average time taken to collect all the runes so far. The time taken to collect a rune does not need to be progressively shorter with each rune.
You're correct that all that is required for the next rune to be worthwhile is to have the time taken to collect it be less than the average time taken to collect all the runes so far. And after you collect it...that average goes down.
Doesn't help that I phrased this terribly and made a typo in my bad-in-the-first place "example", though.
That said, you can certainly find exceptions where runes are dependent on each other (maybe collecting the first hell rune is detrimental because of extra time spent clearing the vestibule, but collecting the other three is fast enough to make up for it).

Yes, the average goes down, but not by enough (see my Yermak example). In general, the first rune obtained takes way more time than any of the other runes. So, you can never really bring down the average fast enough.

duvessa wrote:
bel wrote:2. I am not sure what XL drain means. I thought draining just modified your skills.
Felids and Ru.

I am fine with it. Sacrificing to Ru means that you increase your power in exchange for weakening your character. It's ok that this reduces your score. Same with Felid. You lost XL where you would have simply died. Seems a good bargain to me.

duvessa wrote:
bel wrote:However, as I said, I am perfectly fine with using the old XP system if it is felt that it offers significant advantage. I, personally, don't see the advantages as worth the extra complexity.
The proposed XL-based scoring has 27 breakpoints and interacts with sacrifice experience, felid extra lives, and XL aptitude.
The existing experience-based scoring has 4 breakpoints and interacts with none of those things. I do not think that it is more complex. (Wouldn't mind getting rid of the breakpoints though.)

There are no XL breakpoints in my system. Partial levels count.

However, as I said, I am completely fine with using the old XP system if it's felt to be superior.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Monday, 24th June 2019, 02:03

Re: Reforming the scoring function

Incidentally, I think XL aptitudes should be removed. They are a bad mechanic.

Also, another issue that I forgot to mention: forms suppress movement mutations (which would affect score, if we are incorporating species factors based on speed). This mechanic is bad and should be removed as well.

Both of these things have threads dedicated to them, so I'm not repeating the arguments here.

Blades Runner

Posts: 616

Joined: Thursday, 25th October 2012, 03:19

Post Monday, 24th June 2019, 04:11

Re: Reforming the scoring function

I like the system in tournaments where players get extra points for streaks. Currently there isn't any scoring system outside of tournaments which accounts for # of successful runes gathered with no death across multiple games. It'd certainly have to be a separate type of score than the current one since it would involve tracking multiple games. Since there's no death from the start of a game to the end winning, we're missing a score that incorporates reliability. I think that it is fun to play for consistency and that an additional score beyond simple win/loss ratios would be interesting and could heighten the suspense of games, particularly for more experienced players.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Monday, 24th June 2019, 16:37

Re: Reforming the scoring function

bel wrote:
chequers wrote:The inclusion of chei-specific and player move speed-specific logic seems overly complex.

Could you simplify this by looking at the ratio of game turns vs game auts?

I do not see any simple way to look at the ratio of game turns and game auts. Game turns can be manipulated ("breadswinging"; also, instead of resting, moving back and forth in Statue form or as a Chei character), so they don't provide much useful information.

Game time in auts is a natural thing to use, because regeneration, combat etc. is based on game time, not game turns.


I thought about this issue a bit more. We can do the calculation in a cleaner (though not less complex) way: by including exploring new tiles as part of "achievements". Here's how it would work.

The game already tracks new tiles uncovered for many purposes (Ely piety, for instance). It also includes stuff like floor depth etc. to gauge how "tough" the floor is. We can use that calculation, combined with player speed on each particular turn to calculate an "exploration bonus" on each turn. This bonus would be inversely proportional to player speed on a particular turn -- because it is more of an "achievement" to uncover new tiles with a Naga, a Chei Worshipper, or in Statue Form as compared to a Spriggan. [They call me the "Handicapper General"]. Call the total exploration bonus at the end of the game "E".

We can now get rid of the T1.

So, the score function would be (a * R + b * XL + c * W + d * E) / T.

Ziggurat Zagger

Posts: 8786

Joined: Sunday, 5th May 2013, 08:25

Post Monday, 24th June 2019, 21:51

Re: Reforming the scoring function

bel wrote:There are no XL breakpoints in my system. Partial levels count.
This would only get rid of the breakpoints if every XL had the same experience cost. But every XL has a different cost, so there is still a breakpoint at every XL.

For this message the author duvessa has received thanks:
bel

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Monday, 24th June 2019, 22:18

Re: Reforming the scoring function

Yeah, that's true.

Swamp Slogger

Posts: 139

Joined: Saturday, 10th January 2015, 22:27

Post Monday, 24th June 2019, 22:32

Re: Reforming the scoring function

I'd have to agree with the people who've suggested removing time from the equation - be it turns or auts or seconds.

Pros:
- Removes breadswinging and similar gimmicky methods of time-saving and their effects on score (e.g. apporting items to save turns).
- Removes cases with species/gods/etc. that decrease timecount by modifying movement speeds, healing time, etc.
- Makes the calculation more straightforward for the average player (good play =/= fast play).
- Less dependence on luck (How long it took to find Abyssal rune, how big floors are, damage spikes, what gear you found when, etc.)

Cons:
- No extra points for speedruns (if you're the type who likes to speedrun)


Basically it's not bad to record times for players to compare, but it's a poor measure of how successful a game was.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Monday, 24th June 2019, 22:57

Re: Reforming the scoring function

Removing time doesn't make much sense.

To see this, we have to go back to our objective function. What exactly is score meant to represent? Nobody has really laid it out, but it is reasonable to assume that "difficult" runs with more "achievements" should have higher score.

The only real constraint in the game is time. This is because HP and MP regenerate over time. So, given enough time and enough careful play, it is possible to minimize risk of losing. This is the "hypothetical optimal play" which is often brought up here.

["Optimal play" gets misused very often on Tavern, but we can approximate the situation when someone is trying to streak. More prosaically, when one gives advice given to a player in DCA who has never won a game and wants to complete their first ascension, you are trying to give a strategy which yields highest chance to win -- which is the same as a strategy which maximizes a streak. Of course, for a new player, you want to give a simplified strategy, but the goal is the same.]


Anyway, back from the digression. Since low risk means longer time, time must be a part of the scoring function, in a decreasing relation.

For this message the author bel has received thanks:
duvessa

Zot Zealot

Posts: 1004

Joined: Thursday, 16th August 2018, 21:19

Post Monday, 24th June 2019, 23:58

Re: Reforming the scoring function

Whether time should be in there depends on what the aim of the score is.
Duvessa suggested that for lost games the score should correspond to things the player achieved (eg experience & runes). If you extend this to won games, then a player who reaches XL27, gets 15 runes and wins the game should get the maximal score. That would be weird, because there would be many players with maximal scores and score wouldn't measure skill, but would it be bad?
If you want to award bonus points to players who achieved feats of skill - why only give bonus points to speed runners?
You could give bonus points for all the feats which people try to achieve in tournaments. For example:

score = a * XL + b * (number of runes) + (did you win) * ( c / aut-count ) + d * D + (did you win) * e * (current streak-length) + f * (27 - the XL at which you entered Zot) + g * (did you mollify at least 5 different gods after abandoning them)

where D is 1 if you got a rune before entering an S branch, 2 if you got a rune before entering Lair, and 3 if you got 3 runes before entering Lair

You could put tons of different things in there, even contradicting things. I don't know whether it'd be better than the current system. It seems to me any scoring system is fine :)

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Tuesday, 25th June 2019, 00:37

Re: Reforming the scoring function

Yes, you can put more terms in the "achievements" section. That is a feature, not a bug, as I said in the OP. I already gave one example of the "achievements" being expanded ("exploration bonus").

However, that doesn't mean that you should remove the "Time" term. I explained in the post above why time should be included. My argument has nothing to do with speedrunning -- it flows directly from the mechanics of the game: MP and HP regenerate over time.

For this message the author bel has received thanks:
duvessa
User avatar

Zot Zealot

Posts: 982

Joined: Monday, 29th September 2014, 09:04

Post Tuesday, 25th June 2019, 01:20

Re: Reforming the scoring function

For non-winning games, it seems weird to have time affect score. I think score should basically depend on the XP gained, which is the closest analogue to "progress" a non-winning game has.

Zot Zealot

Posts: 1004

Joined: Thursday, 16th August 2018, 21:19

Post Tuesday, 25th June 2019, 01:26

Re: Reforming the scoring function

bel wrote:However, that doesn't mean that you should remove the "Time" term. I explained in the post above why time should be included. My argument has nothing to do with speedrunning -- it flows directly from the mechanics of the game: MP and HP regenerate over time.

I don't quite follow - your whole argument seems to be that speed-running is more skillfull than slow-running, and therefor it should be awarded with a higher score.
Note that because of the term "(did you win) * ( c / aut-count )" lower time also results in a higher score in the formula I proposed. (But only if you win.)

I don't really see what the underlying assumption is of what the score should do. I don't really know what the score should do myself, and I can't figure out from what you've written what you think the score should do.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Tuesday, 25th June 2019, 07:48

Re: Reforming the scoring function

petercordia wrote:
bel wrote:However, that doesn't mean that you should remove the "Time" term. I explained in the post above why time should be included. My argument has nothing to do with speedrunning -- it flows directly from the mechanics of the game: MP and HP regenerate over time.

I don't quite follow - your whole argument seems to be that speed-running is more skillfull than slow-running, and therefor it should be awarded with a higher score.
Note that because of the term "(did you win) * ( c / aut-count )" lower time also results in a higher score in the formula I proposed. (But only if you win.)

I don't really see what the underlying assumption is of what the score should do. I don't really know what the score should do myself, and I can't figure out from what you've written what you think the score should do.

I'll quote some of the operative points. None of them have anything to do with speedrunning (directly, at least):

bel wrote:So, what do we want a score system to do? I think the following are mostly uncontroversial principles:
  • Reward skill and achievements.
    [...]


bel wrote:The only real constraint in the game is time. This is because HP and MP regenerate over time. So, given enough time and enough careful play, it is possible to minimize risk of losing.
[...]
Since low risk means longer time, time must be a part of the scoring function, in a decreasing relation.


To elaborate, here's a example -- again, having nothing to do with speedrunning.

Suppose you're playing a character with the following challenge: You have to (attempt to) reveal new tiles every move you make. It is "harder" than a "normal" game, because any constraint makes the game harder.

Now, we have to think about the question: why is it harder?. It's harder because you can never rest, never lure enemies to a cleared area etc. All of these restrictions ultimately have to do with time. No resting means no regenerating HP and MP safely; instead you have to wander while hurt into the unknown. No luring means you cannot take more time to isolate monsters to fight them 1v1 etc.

Ziggurat Zagger

Posts: 4432

Joined: Friday, 8th May 2015, 17:51

Post Tuesday, 25th June 2019, 08:06

Re: Reforming the scoring function

bel wrote:The only real constraint in the game is time. This is because HP and MP regenerate over time. So, given enough time and enough careful play, it is possible to minimize risk of losing


This is not the only approach. One player loses 99% of speedrunning games, takes "unnecessary" risk and relies on extreme luck to win because this is currently the only way to get high score. Another player wins 100 games in a row as NaWn/MuCK etc. and is never below 80% HP. Third player clears 100 zigs in each of 10 consecutive games playing FeBe without spells. How can we compare those players/games?
I don't have a solution but I don't like that in order to have high score I should play without autoexplore and with "shoot at my own leg" conduct i.e. explore while wounded and completely ignoring easy areas with lots of loot no matter if current formula or the one from OP.
Underestimated: cleaving, Deep Elf, Formicid, Vehumet, EV
Overestimated: AC, GDS
Twin account of Sandman25

For this message the author VeryAngryFelid has received thanks: 2
Aean, petercordia

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Tuesday, 25th June 2019, 09:11

Re: Reforming the scoring function

Yes, I agree that there are many ways to play.

If you want to maximize expected score (either in the old system, or the new system), you would not speedrun. Most speedruns end in (early) deaths. Early death means bad score.

In the older score, you would almost entirely concentrate on getting as many runes as possible (because of the "runes^2" term in the score). Missing out on even one rune is disastrous.

In the newer system, it depends on what factors you include in "achievements", but there are a variety of objectives which you can have. Playing quickly, exploring a lot, getting runes etc. But they all fit the theme of "more risk, more reward". However, you can only get rewards if you stay alive (it's a permadeath game).

Zot Zealot

Posts: 1004

Joined: Thursday, 16th August 2018, 21:19

Post Tuesday, 25th June 2019, 11:49

Re: Reforming the scoring function

For all your insistence that you shouldn't speedrun to get the top score, as long as the score formula is of the general form

score = (stuff + stuff) / time

The top score will always go to a speedrun.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Tuesday, 25th June 2019, 12:12

Re: Reforming the scoring function

You misread my post.

I did not say that you shouldn't speedrun to get maximum score of all your runs. I said you shouldn't speedrun to get maximum expected (average) score of all your runs. They are two completely different things. The first is the l_infinity norm, and second is the l_1 norm.

To put it another way: suppose you are allowed to play only one game of Crawl, and you'll get paid according to your score. Then you shouldn't speedrun.

Bottom line: for any reasonable notion of "score", I think it should satisfy the condition of "more risk = more reward". When you say "remove time from score", you're saying that time taken has no influence on risk. It's as simple as that.

If you want to add more factors to "achievements" to accomodate different objectives, I do not mind, but to remove an obviously relevant factor makes no sense.

For instance, in the first draft of my proposal, I had in mind an "achievement" function which was a bit more complex. For each rune, you'll get the score: 1/XL, where XL is your experience level at the time of you getting the rune. (There are some contests where you try to get a rune at the lowest XL possible.) Obviously, getting a rune at low XL is more "riskier" than getting it at high XL, so this will be a valid achievement function.

Ziggurat Zagger

Posts: 6454

Joined: Tuesday, 30th October 2012, 19:06

Post Tuesday, 25th June 2019, 16:28

Re: Reforming the scoring function

I would argue that XP *isn't* an "achievement" but is rather reflective *of* achievements, sometimes, sometimes the achievements in question aren't really achievements at all ("Congratulations on your killing of your 43rd hobgoblin on D:7!")

In fact, I would say that getting experience, generally just reduces risk. And that XP *per amount of content* should actually reduce score.

I would award score based on something like "HD of each new (previously unkilled) monster killed/XP at the time of killing it" (And maybe half that for the second time you kill a given monster and 1/10th for the third and nothing thereafter) I would probably separately add an achievement for each time a new level was encountered (not including non-unique pan levels, or temple) as well as runes, I would probably actually vary the score among the runes, and the suggestion to use XP as a negative factor for their value is a good one (although a straight-up divisor might be too harsh)

And while I do think that time plays a factor in "safeness" using time as a straight up divisor is probably too harsh, a softer scale where time was a still a negative score factor would probably be better than the current situation (for example (X+(X/Time)) halves the impact of time, but still retains the property of more time = less score) .

Personally I'd use a modified AUT for time, like "AUT, but as if you had 1.0 movement rate all the time" this clears the weird cases where Chei/Spriggans/Centaurs get out of whack scores.
Spoiler: show
This high quality signature has been hidden for your protection. To unlock it's secret, send 3 easy payments of $9.99 to me, by way of your nearest theta band or ley line. Complete your transmission by midnight tonight for a special free gift!

For this message the author Siegurt has received thanks:
petercordia

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Tuesday, 25th June 2019, 23:09

Re: Reforming the scoring function

It is true that more XP, by itself, reduces risk. But the relevant term is XP per unit time, not XP. If you spend your time killing trivial monsters, like your 50th hobgoblin, your XP per unit time will decrease (or not increase as much), and so will your score. An ogre gives 60 times as much XP as a hobgoblin, so you'd much rather spend your time killing ogres.

This outcome comes naturally because the more time you spend, the more "achievements" you get, but you need to seek out "riskier" achievements as the game goes on, because of the dependence on time.

It's completely possible that a straight reciprocal relation to time is not the right option. All that is required is for score to be decreasing in time. One idea I had involved a "yardstick", where time is simply a "negative achievement" and will be added to the score with a negative constant. For instance, the game could ask you the "difficulty level" at the start of the game, and then the constant will increase with each difficulty level.

It's possible to use "aut as if you have 1.0 movement rate". I even made a post with that proposal, but deleted it. Here's how it would work: Define "game clock" to be initially zero. If your last action was a movement in any direction, game clock increases by 1.0, else it increases by the time it took for your last action. Use game clock instead of "T" in the formula and get rid or T1 etc.

The problem with using game clock is that for a Naga or Chei worshipper, it would be optimal to never rest with the "." key. Instead, they should move back and forth between two squares. This way, they get maximum regeneration (and advance the state of the game by the maximum amount, like waiting for a monster to close the gap to them), while keeping their game clock as low as possible. This is not really much of a "hack", but it is one. But if we are fine with this outcome, then game clock could be used.

Blades Runner

Posts: 616

Joined: Thursday, 25th October 2012, 03:19

Post Tuesday, 25th June 2019, 23:59

Re: Reforming the scoring function

Once again, I'd like to suggest that there is no perfect way to create score, and while we maybe can refine the parameters of the one best scoring system, it will never satisfy everyone. On the other hand, introducing multiple systems of scoring could.

Swamp Slogger

Posts: 139

Joined: Saturday, 10th January 2015, 22:27

Post Wednesday, 26th June 2019, 03:10

Re: Reforming the scoring function

The problem with including time is that it's less representative of skill, and more representative of a good RNG string.

I've had games that lasted more than 6 hours, where I successfully pulled a tough character out of a lot of bad situations. I've had games that lasted less than an hour, where I breezed through everything without any effort, because I got good RNG, good gear/gods early, etc. The latter weren't games where I played better - if anything, just the opposite - but just games where everything fell my way.

And from watching speedruns, it seems like that's even MORE true. Sure, there's skill involved, but because the player takes so many more risks - resting less, diving at low HP, not exploring for gear, etc. - they have an even higher splat rate. That continues until, you guessed it, they get a good run of RNG, which allows things to fall into place for a good speedrun.

Incorporate achievements, sure - it's absolutely impressive for a player to get all the Hell and Pan runes before entering Lair - but it's ridiculous to argue that, say, a MiBe who finds CPA on D3 is a more skillful run than one who never finds it, just because it doesn't have to spend as much time resting.

For this message the author Aean has received thanks:
petercordia

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Wednesday, 26th June 2019, 05:12

Re: Reforming the scoring function

In a game with RNG, the influence of luck is inevitable. That does not mean that the role of time is useless. Quite the contrary: the time taken gives a lot of information on how the game went.

To be (more or less) comparable, two runs would need the same game seed. Indeed, since now game seed has been implemented, it would be a simple matter to have a contest which, say, assigns a starting game seed and then asks people to play the game -- and then determine the winner (s) based on score. This is quite common, for instance, in Brogue.

I will emphasize again: people seem to think that speedrunning is some sort of requirement to get a high (expected) score. The situation is completely the reverse: for getting a high expected score, you need to stay alive. In a game with permadeath, you can't get "achievements" if you're dead.
Last edited by bel on Wednesday, 26th June 2019, 05:33, edited 1 time in total.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Wednesday, 26th June 2019, 05:28

Re: Reforming the scoring function

svendre wrote:Once again, I'd like to suggest that there is no perfect way to create score, and while we maybe can refine the parameters of the one best scoring system, it will never satisfy everyone. On the other hand, introducing multiple systems of scoring could.

Indeed, the aim of the scoring function outlined is to have flexibility to score in multiple ways. We can tweak the "achievements" function to have whatever objectives we want.

However, it is traditional to have a canonical "score" in games. I tried to include the terms which I feel are required at the very minimum: runes, XP, winning and time.

For this message the author bel has received thanks:
svendre

Return to Game Design Discussion

Who is online

Users browsing this forum: No registered users and 191 guests

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.