On further thought change control and vision are tricky because the game uses them for regular single-player control, with the expectation that the server will stop any funny business. So if they get hooked, it's going to have to calculate the allowed values and check against that. Meanwhile: live game model.gameOptions is a non-observable which gets wholesale replaced when new options come in. So in order for a mod to discover the sandbox state, it either has to poll or hook the server_state message. I'm going to see if there is another observable value which gets set at the same time as the game options.