Ask me about my source port
...Or, try my plan, which means you don't have to sync the value.
I have to allow the "host" to control the size of the corpse queue during netgames.
Yeah, that's just ugly. No sense in worrying about it, though. There's nothing that can be done about it, unless you make vars: Player1CorpseQueueSize, Player2CorpseQueueSize, etc. Nobody is going to try to manually set those to play a demo (well, I take back "nobody", there's always the exception).
It's old demos that are fucked - since they never recorded the value, and didn't require it to be consistent between nodes, old netdemos recorded with BOOM or MBF (if any exist) may not work. Even worse, vanilla deathmatch netdemos might desync if the default value is changed from 32, which is what the size of the queue was in vanilla.
This is true. Just assume 32 - does anyone change that shit, anyway? Sorry, but, what a dumb feature! Again, I support 32, or all, as my only options, and, if a node changes it, it changes for ALL nodes. This works really well, as long as you read the local change the same way the nodes do, and not a tick early. Also, the option change needs to be recorded in the demo also. Yikes.
For vanilla demos I can force the value. For BOOM/MBF, nothing can be done.
Heh, it never ends. I just use my own scheme for appending options to demos. Even though you have to support BOOM/MBF method for those demos, you can always use your own scheme for EE demos.
Another problem for EE right now though is that we have expended the pre-ordained space for transmission and serialization of sync-critical variables - "GAME_OPTION_SIZE", which was set at 64 bytes by BOOM. Most cleverly, they don't send or record the size of GAME_OPTION_SIZE. So now I will have to add some non-trivial code that special-cases GAME_OPTION_SIZE based on demo_version when reading demos.
Again, though, if you change the corpse queue number from "remove" to "hide", you don't have to store the number, because everyone will be using the same code. I'm sure the whole purpose of it was to prevent slowdowns/flashing sprites from there being 3,000 dead marines :)
Now you know why id did not have a bunch of gameplay settings - it's a pain in the ass to synchronize!
Do you have a demo that desyncs because of this? If so, can you share it? Curious to see it.