Offworld Trading Company
0 of 0

File information

Last updated

Original upload

Created by

philothanic

Uploaded by

philothanic

Virus scan

Safe to use

Tags for this mod

About this mod

FFA Ranks is a mod to calculate and display a semi-objective rank of all players at the end of a FFA game. Works with 3-8 players.

Permissions and credits
Mirrors
Changelogs
Version 2.1 of FFA Ranks is more accurate and now compares revenue over the past 120 turns.

Installation Instructions

Unzip the FFA Ranks folder to:

WindowsDocuments\My Games\Offworld\Mods
MacOS: Documents/Library/Application Support/Offworld/Mods

Load from the mod menu in game.

Description

FFA Ranks is a mod to calculate and display a semi-objective rank of all players at the end of a FFA game. Works with 3-8 players.

Works with live games and replays. Inaccurate results for saved games and team games.

Rankings appear in a chat message at the end of the game. For detailed game stats, look at the output in the Offworld log.

Includes ability to play on a random location in a multiplayer lobby. Chose any combination of Mars, Ceres, and Io, (host must own DLC for Ceres and Io) and even or ranked queue probability. Location is set via the match seed. Set the Random Location via the Main Menu options screen.

How it works

1) At the time of buyout, FFA Ranks calculates the weighted average revenue for every player over the past 120 turns and compares the bought-out player’s revenue to all the current players. Weights for revenue are 100 at the buyout turn and decrease exponentially to 25 at 120 turns before the purchase.

2) If the bought-out player’s revenue is significantly better than a remaining player (roughly $100k), the bought-out player is considered to have done better than the remaining player. If the bought-out player earned significantly less, then they are considered worse. Otherwise they are considered tied.

3) At the end of the game, better, tied, and worse are given a point value of 1, 0.5, and 0 respectively.

4) If the bought-out player was majority bought, points are deducted from their score. The number of points deducted scales with the number of players, 1 point for four player games, 1.5 points for six, and 2 points for eight player games.

5) If the purchaser is ranked lower or tied to the bought player based on revenue, but the purchaser owns 9-10 shares in the bought player, the purchaser will gain a point and a tiebreaker. Likewise, if the purchaser owned 7-8 shares in the bought player, they will gain 0.5 points and a tiebreaker.

6) The mod then ranks players based on the number of points they scored, with any tiebreakers deciding ties.

Numbers


1) The mod determines if there a player is significantly better or worse by checking if the revenue earned is greater or less than a threshold. The threshold is an exponential decay function based on player revenue and once revenue is above 200K is roughly equal to having a 100K advantage.

2) Debt that the player owns is deducted based on a progressive rate. The rate increases with the bond level, and the average rate will be less than the marginal rate. The progressive rate schedule is:
AAA: 10%
AA: 20%
A: 30%
B: 40%
C: 66.7%
D: 100%

3) Revenue = Income - Expenses - Pro-rated debt

Income = Resources Sold + Resources Auto Sold + Sold Offworld + Entertainment Revenue + Miscellaneous Revenue + Dividend Revenue + Starting Money + Resource Stockpile
Expenses = Resources Purchased + Auto Resources Purchased + Espionage Payments + Black Market Purchases + Debt Paid

4) Details are viewable in the Offworld logfile.

Example

Consider a four player FFA with Players A, B, C, and D. Player C wins the game.

Player A is the first to be bought out with a revenue of $100K. The threshold is 25% of Player A’s revenue. Player B’s revenue is between $50K and $150K. Player A and Player B are considered tied and both earn 0.5 points. Player D's revenue is under $50K so Player D earns 0 points and Player A earns 1 point. Since Player C won the game, they automatically gain a point.

At the end of this buyout the point total is Player A with 1.5 points, Player B with 0.5, Player C with 1 point, and Player D with 0.

Player B majority buys Player D when the threshold is 15%. Player D’s revenue of 75K is smaller than Player B’s revenue of 100K, so Player B gains 1 point and Player D gains 0 points. However, Player D was majority bought, so Player D loses 1 point due to the majority buy. Player C wins the game, so gains a point.

At the end of this buyout the point total is: Player A with 1.5 points, Player B with 1.5, Player C with 2 points, and Player D with -1 points.

Player C buys out Player B to end the game and earns 1 point for being the victor.

The final rankings are:

Rank 1: Player C: 3 points
Rank 2: Player A: 1.5 points
Rank 2: Player B: 1.5 points
Rank 4: Player D: -1 points

FAQ

This seems complicated, why not use buyout order? Problem with using who buys who is sometimes a player is bought by the winner because they are the strongest. And other times its because they are the weakest. Using revenue combined points allows FFA Ranks to distinguish between the two.

Why did it tie me with Player A? I was better than them. FFA Ranks awards a tie if it is not certain that you were performing better than Player A. As it is only an estimate of performance, FFA Ranks wants to see a large difference between players before ranking them higher than another.

This result is wrong. While FFA Ranks has been tested a lot and is generally considered to be reliable, it is possible there is an edge case which is unaccounted for. Please send me the replay from the game winner (or last person to get bought out/quit) and I will look into it.

Credits

Thanks to kiooeht for the code to make replays work, and for debugging assistance. Thanks to Blues and kiooeht for the initial code for Random Locations. Thanks to Hexapus, Rhahi, and Blues suggestions and feedback.