Big +1 for doing something against ELO-abandoning. There are many possible ways to tackle this, though probably the simplest one to implement would be making "agree to abandon" count as full losses (-10).
Note: This is not about mechanically preventing intentional cheating (one could still chat one's way to likely victory), but about making it less "tempting".
Only downside I can think of is that it sucks in legitimate use cases of the feature:
- realizing one just started a game with incorrect settings
- someone having to go unexpectedly (though in that case the person can just take an actual abandon game penalty and be the only one to get -10, it won't hurt your ELO or karma too bad if it is indeed very rare for you to abandon this way)
It would be super extra nice to have a word from an admin about the feasibility of this
(and if implementation is indeed the only blocker I'm willing to help out)
Now onto some ideas about making the ELO system better for Hanabi, i.e. changing it in a way that your ELO change really reflects how well you dealt with the given deck (respective to your supposed level of play), regardless of how hard the deck was. This is obviously much heavier to implement, so consider this more like a thought experiment / request for comments!
Out of scope: evaluate party ELO from individual players' ELOs. Currently an average, but could use more sophisticated methods. I'm just going to assume there is some notion of "party ELO".
Proposal: Instead of a fixed table of hand-tuned reference ELO values by game mode & resulting score, make the ELO system competitive. Assuming there were several teams who played the same deck you just finished (with the same game settings: difficulty mode & number of players), compare your team's result to that of all the other teams.
Your team's ELO change is the average (over all other teams) of the ELO change you would have gotten in a head to head match against them. If you scored more than team T, compute the ELO change for a win against T (and similarly for ties and losses).
Benefits:
- It does what we want: doing great on a very hard deck means you will beat most other teams, and thus will get an ELO boost even though your actual game score is low.
- No hand-tuning of ELO reference values.
- Previously ELO-excluded modes (like 55 cards 6 colors) can be naturally included.
Difficulties / Inconvenients:
- This only works if many teams play the same deck. One way to achieve this would be to store played decks, alongside with the players who played them and the results they got. Then when generating a new game, instead of a randomly generating a deck, randomly pick one from the storage for that game mode (that the players haven't played).
Side note: Some new decks do need to be generated some times or the very active players might dry out the well. Possible simple solution: very rarely (say: 1% of the time), do generate a new random deck instead of picking from the storage. Exceptionally for that game no ELO is awarded. If the chance for that is 1%, then decks in the storage will each have 100 plays on average (more plays => higher quality ELO scoring), and players shouldn't dry the well unless they play more than ~1% of the total volume of games for that mode.
- This system might give negative ELO rewards on perfect results to high-ELO teams on very easy decks (everyone wins so you tie with a bunch of teams with much lower ELO than you).
Fix #1: on perfect score, simply never give out a negative ELO change even if the above mechanism should lead to it. [introduces some small amount of ELO-inflation]
Fix #2: Only score you against similar-ELO teams. This is best accomplished by splitting the storage: a stored deck becomes specific to a relatively narrow ELO range. [has the added advantage of making ELO-scoring more fair and accurate overall, not just fixing the perfect score corner case]