Client-global configurations separate from per-mod configurations

A problem that “everyone” has experienced, but no one seems to understand is how the configurations are loaded.

Examples

  • cl_guidServerUniq
  1. Connecting to Grangerhub/Grangerpub these are the same
  2. Connecting to test7341 reverts to default value

^^^ The above is arguably an vulnerability


More relevant (day2day)

  • Lost binding’s across servers
  1. Hit a server “game = base”, you get your bindings

  2. Hit an grangerhub server, you’re bindings are different

  3. Hit test7341 server, and they’re different once again


Above are the most “obvious” issues- but it goe’s way deeper than that. Renderer settings, etc… the list goes on and on.


The proposed solution

Sepearate configuration profiles- where the client top-level would specify the configuration’s that must stay private; for security reasons, game control configurations, etc…

so the directory tree might look something like this

+ tremulous-folder/
|- tremulous.cfg (immutable by any "mods")
|   + base/
|   |- tremulous.cfg (any magic specific to base game mode)
|   + slacker/
|   | - tremulous.cfg (etc..)
|   + test7341/
|   | - tremulous.cfg (etc..)

Additional work is in mind a central screenshots/demos/etc)


Ultimately- a smaller abstraction which would allow this could offer more security (why would any “mod” cgame try to modify without warning about enabling http downloads [for example]?)

Thoughts appreciated; without input, It will end up as “whatever I feel is appropriate” with a beer in hand.

3 Likes

Excellent idea, things like your name, general graphics settings, and network settings should not be changing between mods.

1 Like

Exactly- these are often seem’d as “WTF Why u do that?” responses when ever I hear people complain (myself included).

first, u need to understand that a mod may have absolutely nothing to do with any „base” game. in particular (think about a top-view RTS game (perhaps looking like Tremulous), where many combat units (with semi-AI) r given orders by selection and direction), there may be no such thing as teams, player classes, player-carried equipment, view orientation, etc., making commands — binds — like say_team, class, buy, sell, reload, centerview, etc. meaningless; graphical system requirements, and thus the possible — and the player-desired — graphical (but also audio) settings may be entirely different (resolution, fullscreen-ness, details, etc. (also volumes of various sound channels)). it only happens „by accident” that most mods r not significantly different from the Tremulous „base” game.

second of all, in the release, an always-enabled asymmetric-key-based identification system will be used, so eg., cl_guidServerUniq will be less significant.

thirdly, someone should relay, to u, my (LONG™ ago) proposed scheme of encapsulating engine and gamelogic components.

I think I have some thought’s on that as well- but perhaps you can elaboratorate further.