With unlimited modding capabilities there are inevitably unlimited possibilities for arguments over which mods destroy the game's balance and which mods are harmless. A prime example of this is the Advanced Idle Pointer mod for Age of Empires 2 by Gallas and linetyreborn. While it is inherently useful for new players, it might be considered just too useful by purists. In a centralized ranking system these disagreements can ultimately lead to a community split.
Idle Pointers: Genius idea or the downfall of civilization?
The community model operates on the premise that players organize themselves in communities. A community provides services to its members, for example:
- registration for new players
- game servers
- databases for recordings
- community hubs, forums or chat lobbies
The latter two are unimportant for ranking, so we will leave them out for now.
To connect the various communities their game servers are registered at a masterserver. The masterserver acts as a dedicated server registry for public lobbies and a matchmaking platform as well as supervising the distribution of match result between communities. It also ensures that players registered in different communities can play games together. This also means that players only need one account to play in any community connected to the masterserver. We will call the registered game servers and their corresponding communities the realm of the masterserver.
A community may register at more than one masterserver. This can be helpful when an organization, most likely a commercial game release based on the same engine, decides to employ their own public lobby system. Players in the community will not have to re-register and can play games in different realms.
Each community can decide for themselves which game configuration or mods are allowed for a ranked game. The ruleset could consist of a whitelist/blacklist of mods, a list of allowed scripts, a set of permitted game settings and other similar tools.
It is important to stress that the rules must not be imposed directly on the players as players should be allowed to play unranked games. This is necessary to ensure that players can play games on servers of other communities without having to fear breaking the rules of their community.
Let us assume that a game's ruleset qualifies for ranking in two different communities. It is desirable that the players participating in this game are able to gain ranks in both communities. However, this requires some prerequisites to work.
- match results have to be securely stored inside the realm
- match results must be attributable to a community
- communities need to trust each other to not cheat
(1.) can be achieved by using a decentralized transaction database base on a blockchain while (2.) is solved by having the communities sign match results with cryptograhic signatures. (3.) can be done by letting each community decide which other communities they trust. A central authority that issues certificates, similar to a PKI infrastructure is also possible. We will discuss the former approach now.
If community A trusts community B, we will call that a verification (community A verifies community B). A verification does not require communication between the communities. It merely indicates that community A is sure that community B does not manipulate its servers or encourages cheating. As a result of the verification, a ranked match played on the servers of community B will also be ranked by community A, provided that the game settings would have been accepted for ranking in community A.
As an example we will introduce the two communities Wobbly and AoKZone which both host servers for Age of Empires 2. Wobbly allows the infamous Idle Pointer mod for ranked matches, while AoKZone does not.
Setup 1: Wobbly verifies AoKZone
Wobbly => AoKZone
Woobly ranks all ranked matches played on AoKZone if the game settings would have qualified for a ranked game on Wobbly as well. Since Wobbly does not impose more restrictions than AoKZone on what games are considered ranked, all ranked games on AoKZone will also be ranked by Wobbly.
Server location | Idle Pointer? | Ranked on Wobbly? | Ranked on AoKZone? |
---|---|---|---|
Wobbly | No | Yes | No |
Wobbly | Yes | Yes | No |
AoKZone | No | Yes | Yes |
AoKZone | Yes | No | No |
Note that the last game played on a AoKZone server will not be ranked by Wobbly. The reason for this is that Wobbly will only consider ranked games of AoKZone. As AoKZone does not allow games with the Idle Pointer mod to be ranked, it will always be considered an unranked game by the server.
Setup 2: AoKZone verifies Wobbly
AoKZone => Wobbly
Server location | Idle Pointer? | Ranked on Wobbly? | Ranked on AoKZone? |
---|---|---|---|
Wobbly | No | Yes | Yes |
Wobbly | Yes | Yes | No |
AoKZone | No | No | Yes |
AoKZone | Yes | No | No |
Setup 3: Both verify each other
Wobbly <=> AoKZone
Server location | Idle Pointer? | Ranked on Wobbly? | Ranked on AoKZone? |
---|---|---|---|
Wobbly | No | Yes | Yes |
Wobbly | Yes | Yes | No |
AoKZone | No | Yes | Yes |
AoKZone | Yes | No | No |
👍