SiegeEngineers / aoc-reference-data

Reference data for Age of Empires II projects.
28 stars 55 forks source link

[Breaking Change] Renaming "platforms->de" to "platforms->rl" to support game indepent accounts using RelicLink ID #127

Closed simonsan closed 2 years ago

simonsan commented 2 years ago

Still missing changes to CI to support rl, please don't merge.

happyleavesaoc commented 2 years ago

How are we distinguishing aoe2 players from aoe4 players?

simonsan commented 2 years ago

How are we distinguishing aoe2 players from aoe4 players?

I think that this is on the people that use an API to get the more information from a player on that specific platform e.g. using "age2" as a parameter to game on the public AoE API if there is no information available for them on that game it should be part of their error handling.

For example it's also not done on Voobly, people could also play Age of Mythology or SWGB there and it isn't separated. I wouldn't introduce a new key for the game people play, as this would be too much maintenance effort (imho). I see this more as an effort to collect the IDs people have on a specific platform and the developers using this information use the ID to find the information they need.

happyleavesaoc commented 2 years ago

It is a matter of notability though. An aoe4 player may not be notable in aoe2, and there's no way for consumers to know which game is the relevant one if they play both. This assumes that aoe4 players might be added after this change. If that's not the case, then there's no reason to change the key name, of course.

happyleavesaoc commented 2 years ago

w.r.t. voobly -- same problem exists but it's effectively historical at this point and there's no interest that I know of to add voobly AoM or SWGB players.

simonsan commented 2 years ago

It is a matter of notability though. An aoe4 player may not be notable in aoe2, and there's no way for consumers to know which game is the relevant one if they play both. This assumes that aoe4 players might be added after this change. If that's not the case, then there's no reason to change the key name, of course.

Then I would change the third entry in the notability guidelines like so:

"Was ever a top 250 player on the primary competitive ladder for at least three months."

Which would make it game independent.

happyleavesaoc commented 2 years ago

Consumers of this data (myself included) may care about what a game a player is notable in. If we expand the scope to more than one game, we need to accommodate accordingly.

With that said, if the intention is to add aoe4 players here, we should also define inclusion criteria for them or adopt existing criteria, sure. That's independent of the concern.

simonsan commented 2 years ago

Consumers of this data (myself included) may care about what a game a player is notable in. If we expand the scope to more than one game, we need to accommodate accordingly.

We can add a field notability to each player which is binary data encoding the notability from the left like so - with the advantage, that we can always add games/notabilities to the right (or to the left, as it's easier to parse. If we add left we could parse it as y*(2^x) from the right, which would make it easy to search for while being also easy to maintain I think.

Notability table (left-to-right)

~~ aoe1 aoe2 aoe3 aoe4 (..future additions..) ~~
~~ 0 1 0 1 (0) ~~

So the notability for this player would be (in YAML):

0101 - which is notable in AoE2 and AoE4

Notability table (right-to-left)

(games ordered for year of release, newer releases get added to the left)

(..future additions: e.g. aomde, openage ..) aoe4 aoeo aom aoe3 aoe2 aoe1
- 1 0 0 0 1 0

So the notability for this player would be (in YAML):

notability: '100010' - which is notable in AoE2 and AoE4 easily searchable by parsing as binary, easily maintainable by just recalculating and writing back as binary and easily searchable for 34 as a Decimal

Only an abstract idea, not really important: We could even go further and use it as a score by adding our binary representation of fulfilling our notability as well not just the game, like so:

Notability table including our notability (right-to-left)

(games ordered for year of release, newer releases get added to the left)

(..future additions: e.g. aomde, openage ..) aoe4 aoeo aom aoe3 aoe2 aoe1 Twitch partner Ever Top250 on primary competitive ladder Top200 aoeelo Has Liquipedia Page
- 1 0 0 0 1 0 1 1 1 1

So the notability for this player would be (in YAML):

notability: '1000101111' - which is notable in AoE2 and AoE4, all our notability criteria fulfilled would result in a 'score' of 559, which could be used to prioritize this player as it's most likely a high-level content creator playing the game when showing. To give a different value to different games we could shift them to the left, to give them more weight (as they would represent a higher number)

happyleavesaoc commented 2 years ago

I think a notability field definitely solves our problem, good idea!. The maintenance burden is fairly low. We can also partially automate it based on Liquipedia categories.

I'm not in favor of an encoding. One of the benefits of YAML is the readability, which we would be compromising. I have seen non-technical users reference this file so there's definitely an incentive to keep it unobfuscated.

What about:

notability:
  - aoe2
  - aoe3
happyleavesaoc commented 2 years ago

The "notability score" idea is pretty interesting but definitely introduces more work. I'd kind of be in favor of adding a script that computes a score and writes it to the file, then the heuristic algorithm could be smarter. But either way that's another project.

simonsan commented 2 years ago

I think a notability field definitely solves our problem, good idea!. The maintenance burden is fairly low. We can also partially automate it based on Liquipedia categories.

I'm not in favor of an encoding. One of the benefits of YAML is the readability, which we would be compromising. I have seen non-technical users reference this file so there's definitely an incentive to keep it unobfuscated.

What about:

notability:
  - aoe2
  - aoe3

I think that's better as I agree with the readability aspect. Though I'm not sure about the Array of Strings.

What would you think of:

 notability:
     - isAoE2: true
     - isAoE4: false

That would make it easier in programming I think as we would just check for a Boolean.

The "notability score" idea is pretty interesting but definitely introduces more work. I'd kind of be in favor of adding a script that computes a score and writes it to the file, then the heuristic algorithm could be smarter. But either way that's another project.

I can reference it in a new issue and extract some ideas from it for the future.

happyleavesaoc commented 2 years ago
notability:
  - aoe2: true
  - aoe4: false

should be fine

simonsan commented 2 years ago

@happyleavesaoc Rebased