rafalh / dashfaction

A community patch for the Red Faction (2001) FPS game
https://www.factionfiles.com/ff.php?action=file&id=6252
Mozilla Public License 2.0
61 stars 11 forks source link

Add commonly requested multiplayer visibility options (with server approval required) #285

Open GooberRF opened 1 month ago

GooberRF commented 1 month ago

This PR adds:

Explanation of features:

In essence, the concept behind this change is that clients can "desire" these options apply. If so, they will apply in single player, in listen servers hosted by that player, and in any multiplayer servers where the server operator has explicitly allowed use of that option via the new dedicated server config options. They will however NOT apply in any servers where they have not been explicitly allowed. This approach allows clients to decide to use these enhanced visibility options if they so choose, assuming the server "approves" of it, similar to how server operators can already decide the maximum horizontal FOV allowed for players in their server.

Notably, these options will be treated as false (ie. players cannot use these options) in any servers that either do not explicitly allow them, and any servers running older versions of Dash from before the options existed. This means that there is no relevant risk of clients using these features to "cheat".

Resolves #111 Resolves #182

is-this-c commented 1 month ago

These are 3 features for one PR. One PR for each feature please.

GooberRF commented 1 month ago

These are 3 features for one PR. One PR for each feature please.

This is a single change that contains 3 options (well, 6 options technically). Especially given the way flags are indicated in DashFactionJoinAcceptPacketExt, it would be both confusing and unnecessarily technically onerous to split this branch and associated PR into separate parts.

nickalreadyinuse commented 4 weeks ago

All of these options should be available from the Dash setup options. Similar to #296 these should not be buried away as console commands, because the vast majority of users will never seek them out or know they're an option.