Opened 7 years ago

Closed 3 years ago

#3950 closed enhancement (fixed)

Rework rating-setting in the gamesetup

Reported by: elexis Owned by: elexis
Priority: Should Have Milestone: Alpha 24
Component: UI – Game setup Keywords:
Cc: fpre_O_O_O_O_O_O Patch: Phab:D2117 Phab:D2483

Description (last modified by fpre_O_O_O_O_O_O)

  • The setting is saved in both C++ (Engine.IsRankedGame()) and simulation gamesettings (g_GameAttributes.settings.RatingEnabled). Should be only one of both.

Saving it in the simulation seems kind-of wrong, since it is not used by it (yet?). Saving it in cpp seems to be much worse/uglier to me. That variable g_rankedGame is only used to disable the wireframe hotkey in CGameView::HandleEvent. Instead a global function could be introduced to check for RatingEnabled of the gameattributes of the current client.

  • The rated-game setting should be invisible in the GUI and unchecked if there are more than 2 players (since only 1v1s are rated due to ELO system in use)
  • Following that, the provisional 2-player check in reportGame() and the replay filter can be removed

Change History (7)

comment:1 by fpre_O_O_O_O_O_O, 5 years ago

Cc: fpre_O_O_O_O_O_O added
Description: modified (diff)

comment:2 by Imarok, 4 years ago

Component: UI & SimulationGame setup

Move tickets to Game Setup as UI & Simulation got some sub components.

comment:3 by elexis, 3 years ago

Component: UI – Game setupMultiplayer lobby
Keywords: simple removed

comment:4 by Silier, 3 years ago

Phab:2117 : The rated-game setting should be invisible in the GUI and unchecked if there are more than 2 players (since only 1v1s are rated due to ELO system in use)

comment:5 by elexis, 3 years ago

Component: Multiplayer lobbyUI – Game setup
Milestone: BacklogAlpha 24
Owner: set to elexis
Priority: Nice to HaveShould Have
Summary: Rework rating-settingRework rating-setting in the gamesetup

The setting is saved in both C++ (Engine.IsRankedGame()) and simulation gamesettings (g_GameAttributes.settings.RatingEnabled). Should be only one of both.

This aspect is duplicate of #3550, and IsRankedGame has been deleted in r23329.

Saving it in the simulation seems kind-of wrong, since it is not used by it (yet?).

Saving RatingEnabled in g_GameAttributes doesn't seem that wrong, because

  • one shouldn't rely on metadata.json being successfully written to access the value in replays,
  • it is not implausible that the value may be used by the simulation or map generation, for example to make conditions in the match more balanced for the two rated match players or apply some new rule.

That variable g_rankedGame is only used to disable the wireframe hotkey in CGameView::HandleEvent. Instead a global function could be introduced to check for RatingEnabled of the gameattributes of the current client.

See comments in #3550, the C++ variable may be deleted if simulations' initAttributes value (g_GameAttributes) is read from, but then one probably still needs one or multiple locals. There are multiple uses for the variable, so perhaps it can be kept. That discussion should remain subject of #3550.

The rated-game setting should be invisible in the GUI and unchecked if there are more than 2 players (since only 1v1s are rated due to ELO system in use)

That is done in Phab:D2117 and Phab:D2483.

Following that, the provisional 2-player check in reportGame() and the replay filter can be removed.

Keeping the 2 player check sounds like an additional safety measure. So even if there is a host setting the RatingEnabled flag, there wont be invalid data sent to the lobby bots. The code should also not rely on replay data being syntactically and semantically correct ideally. So the replay menu check can be kept too IMO. Mods may override the function.

comment:6 by elexis, 3 years ago

Patch: Phab:D2117 Phab:D2483

comment:7 by elexis, 3 years ago

Resolution: fixed
Status: newclosed

In 23374:

Gamesetup class rewrite, fixes #5322, refs #5387.

  • Decouples settings logically which in turn allows fixing many problems arising from previous coupling.
  • Fixes the persist-match-settings feature, refs #2963, refs #3049.
  • Improves performance of the matchsetup by rebuilding GUI objects only when necessary.

Provides groundwork for:

  • UI to control per-player handicap, such as StartingResources, PopulationCap, StartingTechnologies, DisabledTechnologies, DisabledTemplates, ..., refs #812.
  • Map specific settings (onMapChange event), refs #4838.
  • Chat notifications announcing which settings changed, refs D1195,
  • Multiple controllers setting up the game (since setting types can check for permissions in onUpdateGameAttributes without the need for a new data model or a second gamesetup data network message type), refs #3806, subsequently dedicated server, refs #3556.
  • MapBrowser (MapCache, MapTypes, onUpdateGameAttributes interface), refs D1703 and D1777,
  • Multiplayer saved games (decoupling and setting dependent unique logic), refs #1088.

Refs https://wildfiregames.com/forum/index.php?/topic/20787-paid-development-2016/ https://wildfiregames.com/forum/index.php?/topic/20789-paid-development-2016/

Enable maps to restrict setting values:

  • If a map specifies an AI or Civs for a playerslot, the controller can't assign a player/other AI or Civ to that slot, refs #3049, #3013.

Fix per player StartingResources, PopulationCap, StartingTechnologies, DisabledTechnologies, DisabledTemplates following rP12756, refs #812, fixes #4504. Use this for DisabledTechnologies on Polar Sea.

Persist user settings for Skirmish maps:

  • All user chosen settings are persisted when changing the selected map or maptype, except where the selected map overwrites the setting value and except for Scenario maps which still use the default value where the map doesn't specify the setting value.
  • Tickets relating to that Skirmish mapchange user setting persistance:
    • Selecting a map doesn't change the selected civilizations, fixes #3120 (together with r23279 removing map specified Civs).
    • Selecting a map type doesn't reset the selected settings, fixes #5372.
    • Selecting a map doesn't change the selected victory conditions, unless the map specifies those, refs #4661, #3209. (Atlas still writes VictoryConditions to every map.)
    • Consume the player color palette from Skirmish maps, refs rP17040 / #1580. Preserve the selected playercolors when switching the Skirmish/Random map by chosing the most similar colors if the map comes with a different palette.

Rated games:

  • Hide and disable Rated game setting unless there are exactly two players, fixes #3950, supersedes D2117.
  • Display conspicuous warning if the game is rated, so players are perfectly aware.

Autostarted games:

  • Allow using the gamesetup page to autostart matches with arbitrary maps, not only this one tutorial, as reported in D194 and rP19599, refs D11.

Networking:

  • Keep gamesetup page open after disconnect, allowing players to read chat messages indicating why the host stopped the server, fixes #4114.
  • The message subscription system allows new and mod settings to run custom logic on arbitrary setting changes (most importantly on map change). This removes hardcoded logic restrictions from the gamesetup option unification rewrite in rP19504/D322, refs #3994, such as the hardcoding of setting references in selectMap to biomes from rP20115/D852 and the difficulty from rP20760/D1189, RelicDuration, WonderDuration, LastManStanding, RegicideGarrison, TriggerScripts, CircularMap, Garrison, DisabledTemplates.

Checkboxes:

  • Display values of disabled checkboxes with Yes/No labels, fixes D2349, reviewed by nani.

Clean g_GameAttributes of invalid values and gamesetup GUI temporaries, refs #3049, #3883:

MapCache:

  • Refactor to MapCache class, store maps of all types and use it in the replaymenu, lobby and session as well.

SettingTabsPanel:

  • Remove hardcodings and coupling of the SettingTabsPanel with biomes/difficulties/chat UI from D1027/rP20945.

GamesetupPage.xml:

  • Restructure the page to use hierarchical object organization (topPanel, centerPanel, centerLeftPanel, bottomPanel, centerCenterPanel, centerRightPanel, bottomLeftPanel, bottomRightPanel), allowing to deduplicate object position margins and size math and ease navigation.

New defaults:

  • Check LockedTeams default in multiplayer (not only rated games).
  • Persist the rated game setting instead of defaulting to true when restarting a match, which often lead to unintentional rated games when rehosting.
  • 60 FPS in menus since they are animated

Autocomplete sorting fixed (playernames should be completed first).
Refactoring encompasses the one proposed in Polakrity and bb D1651.

Differential Revision: https://code.wildfiregames.com/D2483
Tested by: nani
Discussed with:

Emojis by: asterix, Imarok, fpre, nani, Krinkle, Stan, Angen, Freagarach

Note: See TracTickets for help on using tickets.