(TLDR; rework config option names to a consistent style that supports procedural layout, see example at end of post)
Currently the style is all lower case with few underscores and no dashes.
Many of the flags which are not stored in config, were left untouched, such as render-simple.
During initial review, Marcel mentioned naming wrt the Option window.
I've tried to group the options under common parent nodes (delineated by a dot), based on their scope (e.g if it falls under the map window, it becomes a subset of ui.window.map).
Such groups do not align with their containing tab on the Options window (if they are present).
In the majority of cases the options end with a suffix to match the value type (.width / .shown / .path) to assist any potential transition to a procedurally generated options tabs.
Related to such a naming scheme is the --help output. Currently the output needs to be piped to another utility or file to be usable.
I've had a rough idea of allowing a description for a subset of an options nodes. (I've not looked into this idea in detail)
e.g. a stringtable description could be defined for both ui.window.production and ui.window (and then not defined for ui.window.production.fullscreen)
An option of ui.window.production.fullscreen.left_edge would fall under ui.window.production, which in turn falls under ui.window wrt --help
The help output would be changed to show the smallest set of groups requested, a simple --help might be:
Code: Select all
Usage: --help group
setup - Options related to game setup values
ui.window - Options related to UI windows
misc - Miscellaneous ungrouped options
Code: Select all
ui.window.production - Production window settings
ui.window.research - Research window settings
A complaint raised by Geoff is many of the option names are difficult to remember.
Some rework is required to shorten the names while retaining common groupings, suggestions on scheme layout is appreciated.
e.g. possibly dropping the ui prefix, and switching to start with the config name:
ui.window.production.fullscreen.width -> production.window.fullscreen.width
ui.window.map.fleet.eta.shown -> map.fleet.eta.shown (note this is not fleet.eta.shown, as the setting is for displaying eta on the map)
Currently the top level nodes are:
audio
content
effects
logging
network
save
setup
ui
version
video
The ui children:
control
description
font
hotkeys
input
name
tooltip
window
(An outdated example config, which I will try to update later)