Thrasybulos
Prince
- Joined
- May 4, 2023
- Messages
- 584
Spoiler Current Elo Ratings Listing :
After my first attempt was aborted, the time has come to reboot the League format.
The basic idea remains the same: a swiss-system open tournament.
- Each Series (Season, Tournament) will be played over ten rounds.
- Each round, each leader will be assigned to one of eight pools(Group, Arena, Table).
- Pools 1 to 4 (the "top" pools) will be 6-leader pools.
- Pools 5-8 (the "bottom" pools) will be 7-leader pools.
- Pool assignation:
- The leaders are sorted 1 to 52, with leader 1 getting the 1st slot on Pool 1, leader 2 the second slot on Pool 1, etc.
- For the first round, random.org will do the sorting (no tournament seeding).
- For subsequent rounds, the leaders will sorted by
- number of wins
- reverse previous order
Spoiler Example :For instance, Suleiman starts round 3 with 5 wins in position 8 (Pool 2, slot 2).
Genghis starts round 3 with 3 wins in position 23 (Pool 4, slot 5).
Suleiman wins one game while Genghis has a great round and wins 3.
At the end of round 3, they're both tied: but since Genghis started lower, he wins the tie and will be ranked higher than Suleiman for the round 4 pool assignation.
- Eight maps (four 6-player maps & four 7-player maps) will be randomly drawn for the AI Survivor maps, and each attributed to a pool for the duration of a Series.
- Each round will feature several games:
- Game 1 will have the leaders playing from the starting positions matching their "slot": 1st leader plays as Team 1, 2nd leader as Team 2, etc.
- Then the leaders will be rotated for the next games: leader 1 will start as Team 2 in game 2, with leader 2 moving to Team 3 ; game 3 will have leader 1 as Team 3 on the map, leader 2 as Team 4, etc.
- Once every leader has played from every starting position, the games end for that pool. So the top pools will play six games, while the bottom pools will play seven.
Settings
The games will be played with my now standard settings:
- AI Survivor S5 rules: Agressive AIs, no Tech trading, no Vassals, no Huts, no Events, no Apostolic Palace, Deity AIs but no bonus techs.
- In addition to that: no UN, no barbs.
Contrary to the first version of the League where I ran games manually and wrote mini-reports for each game, these games will be run with game.aiplay.
So you'll get the data, not the stories.

Scoring
Leaders will score one point for a win, plus one point for every win their opponents got in the previous rounds.
Spoiler :
Since everyone starts round 1 with zero wins, scores for round one will equal the number of wins.
But let's say a round 2 pool features Gandhi (2 wins), Shaka, Suleiman, Mao, Zara (1 win each), and Bismarck (0 win).
A Bismarck win would get him 1 + (4 x 1 + 2) = 7 points.
A Shaka win would get him 1 + (3 x 1 + 2) = 6 points.
While Gandhi would only get 1 + (4 x 1) = 5 points for a win.
The stakes will thus get higher and higher as the tournament progresses, with wins in the tops pools worth more points.
Now, this scoring system is meant only for League ranking purposes.
Should it ending up as a decent leader rating system in its own right, that would be through serenpidity, not through design.
As a side note: a point I'd already mentioned for my first league is that the total number of wins is a distorted number here.
The best leaders should be grouped at the top, and each game will offer only one of them a win. While the worst leaders will tend to gravitate to the bottom pools where each game will have one of them get a win.
So, in terms of wins, the best leaders will underperform, while the worst leaders will overperform.
Ratings
Leader ratings will instead be achieved through their "elo" ratings.
See here for a short explanation of the system used (and why those "elos" are actually no longer elos.

Spoiler "Wins" determination :
The issue here is that such a system is based on pair-wise comparisons.
Which the Horatius League allowed, but which isn't the case for a game featuring 6 or 7 different leaders and a single winner.
My previous attempts had tried to fill in the gaps will a comparison system based on survival and endgame scoring, but I've come to the conclusion it was both flawed and pointless.
So let's consider a game featuring Huyna Capac, Shaka, and Pacal (and 3 other leaders we'll ignore).
In that game, Shaka launches an early attack on HC and ends up wiping him out.
But he can't snowball fast and hard enough: Pacal wins by Space.
There are imo two equally valid ways to score such a game.
The first way is to say: the game featured HC, Shaka, Pacal. Pacal won. So Pacal gets a win versus both Shaka and HC.
This has the advantages of being simple to track, and of yielding ratings with a simple meaning: a better rating means a better chance of winning the game.
But it doesn't take into account the actual game narrative. In our hypothetical game, there was no interraction between HC and Pacal, so why should Pacal get a win vs HC?
So the second way of scoring that game would be: Shaka beat HC by killing him, so Shaka gets a win vs HC while Pacal gets a win vs Shaka: he beat him by winning the game.
And my preference went to that second option (again, purely a matter of preference, as I don't think one view is "better" than the other).
Such a system would adequately take into account each game's narrative, but would make the ratings a fuzzier notion: a better rating means a better chance of "beating" an opponent, which may or may not imply winning the game.
The real issue with that second option, though, lies in the data collection process.
Sullla has a very simple and effective system for tracking kills: whoever gets the last city of an opponent gets the kill credit.
That's a perfectly OK system for AI Survivor's purposes, but here it just wouldn't do. Apart from the infamous "kill steals" (and boy, do they happen a lot!), there are shared kills to consider, "relayed"-kills (where a civ is crippled by one civ, then killed off by another), and our considered system would introduce on top "win steals" (where a civ is in the process of eliminating an opponent when another civ achieves a win condition, and gets the win vs that opponent).
So I needed a better system to track kills.
And found one.
I would go for "partial wins" based on city captures (all kinds: standard military captures, but also culture flips and cities given away in peace treaties).
Trouble was... that would need automation. Keeping track manually of each city exchange would mean that recording the results of a game would take longer than running the game!
I was in luck, though, as someone had just posted a savegame parsing API. Except that... looking at what a savegame contained, I realized I would be missing some data.
So I'd need to mod the game to get that data.
I'm neither familiar with C++/Python nor with the Civ4 codebase, so while I believe I would have got there in the end, it would have taken a lot of time, and let's be honest, more efforts than I was willing to put in.
So in the end, and in order to get things moving, I've dropped the idea of going for the second approach.
So my ratings will be based solely on wins.
Pacal gets his win vs HC, after all.
Long story short: the underlying scoring system will be based on wins only. Whever wins the game will score a "win" versus every other player.
Last edited: