#3737 closed enhancement (fixed)
Improvements to options menu
Reported by: | fabio | Owned by: | |
---|---|---|---|
Priority: | Should Have | Milestone: | Alpha 20 |
Component: | UI & Simulation | Keywords: | |
Cc: | mimo | Patch: |
Description (last modified by )
Some possible improvements to options menu. This is a follow-up of problems discussed in #3511.
- DONE in r17739
it would be nice to have a button to "Restore default game settings. REQUIRES GAME RESTART" that will remove any settings in user.cfg (excluding the lobby login and password to avoid users losing them, userreport.id and possibly some other setting), this way users that tampered their settings have a quick way to restore the default; - sound settings value should probably be remapped to a 0-10 (or 11 for some fun :) scale both in options menu and all config files; the engine should then remap this values to its internal values (it may be that current values already have meaning in the scale 0-10? or are percentage with a maximum of 1.0 as their initial value between 0.2 and 0.9 suggests?);
- refs #4039:
sound settings should eventually use a slider or a combo box rather than text field (currently it is not clear what is the range); - some options as such Graphics Quality and Windowed Mode could support on the fly change without restart.
DONE in r17657 Also related to options menu (but already filed as #2596) materialmgr.quality setting is missing in option menu (this setting is useful to enable the best quality graphics option and actually it's the only useful setting that cannot managed with options menu but must be manually enabled editing the file), possibly to be implemented using a slider/combo box.
DONE in r17729 Finally some options are only effective if other are already enabled. E.g. "Shadow filtering" is effective only if "Shadows" is already enabled. Eventually those options should be "greyed out" or only appears if the required option is not set. But probably this is not so useful and also requires some more logic to make sure everything works OK even when manually editing options in the config files.
Some settings inside the options menu should be better organized. For example:
- the "Lobby Settings" section currently has only "Chat Backlog" option. This section could be maybe renamed as "Multiplayer Settings" and move here "Playername (multiplayer)", "Network Warnings", "Late Observer Joins", "Observer Limit" and "Chat Timestamps" (possibly also "Nick Notification");
- also moving "FPS Overlay" under "Graphics Settings"?
Attachments (8)
Change History (37)
comment:1 by , 8 years ago
Description: | modified (diff) |
---|
comment:2 by , 8 years ago
by , 8 years ago
Attachment: | optionsReset.patch added |
---|
comment:3 by , 8 years ago
The previous patch allows to reset the options. In addition, now that we can have some local options which are not saved, there is an inconsistency with some options settings at several places in the code (as for the splashscreen one) which, when set, save all the current options. The patch adds also a fix for this case, with only the new option saved on file. The case of the splashscreen is fixed, but there are other places in the code which will be fixed afterwards.
comment:4 by , 8 years ago
Keywords: | review added |
---|---|
Summary: | Improvements to options menu → [PATCH] Improvements to options menu |
The previous patch allows to reset the options. In addition, now that we can have some local options which are not saved, there is an inconsistency with some options settings at several places in the code (as for the splashscreen one) which, when set, save all the current options. The patch adds also a fix for this case, with only the new option saved on file. The case of the splashscreen is fixed, but there are other places in the code which will be fixed afterwards.
comment:5 by , 8 years ago
I would suggest using something other than "Quit" for that dialog, typically that implies quitting the application. I think "Close" would be more appropriate.
comment:7 by , 8 years ago
Description: | modified (diff) |
---|
comment:8 by , 8 years ago
We could also implement a 2 level menu as described in #1811. I've closed #1811 and copy the remaining part here to have all discussion on one place.
We could have two modes for complicated settings like graphics: basic and advanced. Basic would only show simple options that anyone can understand (graphics detail: high/medium/low), while Advanced would show all the specific settings and numbers e.g. shadow map size and filtering, AO, particles, specular, normal mapping, parallax quality, gamma. Some options might not be available on the user's system so they should be disabled, explanations are good too.
by , 8 years ago
Attachment: | optionsDependances.patch added |
---|
I've attached a patch which reorganizes the options, reordering them a bit as proposed in fabio's patch in #2596, and adding some dependences between them (options are now disabled when dependent on an other option which is not active).
comment:11 by , 8 years ago
Description: | modified (diff) |
---|
by , 8 years ago
Attachment: | optionsReset-v3.patch added |
---|
improved version of the patch for the reset of options
comment:12 by , 8 years ago
Milestone: | Backlog → Alpha 20 |
---|
by , 8 years ago
Attachment: | optionsReset-v3.2.patch added |
---|
include some comments from elexis and leper, + add initialization of renderer options in the configDB which simplify the later option management
comment:13 by , 8 years ago
To ease the review, I've extracted two parts which can be commited separately a) initRenderer.patch which also fills the configDB when initializing the renderer, so that the content of the configDB is consistent with the renderer b) writeValue.patch which allows to write only one value in the user.conf file, while presently when we want to add a new value in this file, all the content of the user configDB is written
by , 8 years ago
Attachment: | writeValue.patch added |
---|
comment:14 by , 8 years ago
g_ConfigDB.SetValueString(CFG_SYSTEM, "waterfancyeffects", g_WaterFancyEffects ? "true" : "false");
Does it have to be a string? new function SetValueBoolean
?
by , 8 years ago
Attachment: | optionsReset-v4.patch added |
---|
comment:17 by , 8 years ago
- since we now have SetValueBool, hwo about an
IsTrue
function to remove the=== "true"
checks? warn
=> space and capital letter- reset changes -> "set defaults" might be a better name
if (Engine["Renderer_Get" + keyRenderer + "Enabled"]() !== checked)
not needed (seeCRenderer::SetOptionBool
) (the variable above becomes unneeded too)CConfigDB::RemoveValue
->remove_if
if you want to try something new and somewhat uglysetupControl
-> new argument = false by default?
comment:19 by , 8 years ago
Keywords: | review removed |
---|---|
Milestone: | Alpha 20 → Backlog |
Summary: | [PATCH] Improvements to options menu → Improvements to options menu |
Put it back to backlog, waiting for the remaining improvments to be implemented
comment:20 by , 8 years ago
Description: | modified (diff) |
---|
comment:21 by , 8 years ago
I get the following:
Incompatible renderer option value for WaterShadow
To reproduce:
- select Reset and restart game;
- enable all (2) missing water options, save and restart;
- open option menu and notice the warning.
comment:23 by , 8 years ago
Thanks for the tests. It seems this effect was never settable by options because of old typos, and nobody never noticed it. Should be fixed now.
comment:25 by , 7 years ago
Description: | modified (diff) |
---|
comment:26 by , 7 years ago
Description: | modified (diff) |
---|
comment:27 by , 7 years ago
Component: | Core engine → UI & Simulation |
---|---|
Description: | modified (diff) |
Milestone: | Backlog → Alpha 20 |
Resolution: | → fixed |
Status: | new → closed |
The rework was great!
Rearrangement of options is still in mind but can be well planned separately. (fpre has a patch on phabricator for that too) The scale of the sound settings is not really relevant anymore as we now have the sliders. Removing the "REQUIRES GAME RESTART" part should be done where possible, but it might be better to write separate tickets for that.
In 17645: