FAForever / downlords-faf-client

Official client for Forged Alliance Forever
https://faforever.com
MIT License
197 stars 121 forks source link

Proper Game Type Handling #1755

Open Katharsas opened 4 years ago

Katharsas commented 4 years ago

For discussion and finding a way to fix the game type situation. Should be linked to issues in respective repos that need changes, when there is agreement on what to do make a Github project.

Quotes from Zulip (Brutus):

Just a brief summary of what I have in my head right now

~~1. A lot of game type information (e.g. coop or ladder) is stored as a featured mod. This is bad because this causes a lot of hardcoded queries on stuff like leaderboards (ladder vs global) or replay handling (coop) and also downloading of patches (if ladder then use faf) [parts of this might tackled by the new rating journal tables coming with TMM]~~

  1. Storing game modes as featured mod also causes troubles introducing coop and tutorials for other featured mods like nomads. (You would need even more hardcoded values)
  2. Featured Mods don't show dependencies between each other, but there are implicit ones (right now everything is based on faf, but fafbeta and fadevelop just override all files). This also causes issues introducing nomads tutorials or nomads coop
  3. The featured mods depend on FAF, but there is no versioning. A change in FAF might influence phantomx or nomads, but these can't say which version of FAF they need. 5. Replays only store file patch information of the "top" featured mod, but not of the dependencies. Therefore if a new FAF patch comes out, all replays of all non-FAF featured mods will break.
  4. We don't have patch file bundling, but rather version each file itself.
  5. The whole patch bundling in zips on folder level is garbage, as it aimed for an improved patcher that is not working at all.
  6. Each featured mod has 2 dedicated updater tables instead of one with pointing the featured mod (but this would not be an issue if we had a proper update mechanism)
  7. Moving to a better patcher completely breaks previous replays unless you build a scary compatibility layer 10. The replay format is shit in general (zipped binary stream then base64'ed)

More quotes (Axel):

11. init.lua files are bullshit those should be auto generated by the client, but this requires info about featured mods that the current patcher does not provide 12. Coop maps are not in the vault and only in the featured mod. And the client can not handle that, how would he... I think they should be in the vault but hidden 13. The current update mechanism in the api does not auto update files on the root level when patching

Katharsas commented 4 years ago

A list of issues that related, blocked or caused by this: https://github.com/FAForever/downlords-faf-client/issues/1676 https://github.com/FAForever/downlords-faf-client/issues/1608

Wesmania commented 4 years ago

Related: https://github.com/FAForever/faf-aio-replayserver/issues/10 https://github.com/FAForever/faf-aio-replayserver/issues/14 https://github.com/FAForever/faf-aio-replayserver/issues/26 Replay format will probably change, too.

Katharsas commented 4 years ago

Project: https://github.com/orgs/FAForever/projects/8

Sheikah45 commented 3 years ago
  1. is solved
Sheikah45 commented 3 years ago
  1. is also solved
Sheikah45 commented 2 years ago

12 is not an issue anymore

Katharsas commented 2 years ago

Nice work!