I don't know why we're *arguing* about this. Why can't we just *evaluate* this?
There are a few more problems with just streaming this information. For example, each object has a variety of test functions which it uses to determine if certain interactions can be called by the user. Without an accurate VM state, we cannot run these in real time without making a call to the server and back, causing a delay (bad hci!!). We can't possibly make any predictions about future frames at all with this solution either (because that requires an accurate vm state!), so that's completely out of the window. However this could possibly work, but it was
not what I was seeing in anything bigl was saying, I just thought he was talking about using a mystery switch to just stream everything seamlessly, where the real challenge is streaming as little as possible. I hadn't previously thought about a thin client style solution, and it could actually help for cross platform implementations! (lot viewer instead of lot simulator (jaaavascrippttt!), less chance of floating point desync if we accidentally leave the VM dependant on one)
The problem is, since this wasn't done for TSO there might be a problem with this solution that we're overlooking, for instance it may be in a bad format for an MMO (network and packet process heavy). But it has got me curious...
Conversely, for streaming VM objects, streaming just the inputs to a deterministic state machine and checking a simple hash to detect accidental desyncs is much more efficient than any solution involving streaming 150 live VM threads over the internet. If anything is incorrect/out of time/forgotten, things can go very differently, and that backlash of fixing it will make the whole experience seem hacky and confusing. Fixing it will require resyncing all VMs, or an incredibly advanced system for registering what exactly each thread changed since the last server data.
Ideally there should be no prediction - the client should hold a small buffer of inputs to protect against jitter (~100ms of data should be enough, maybe more if connection is unstable (dynamically adjust the buffer size to fit the user's connection)) which it continues through until it catches up. This will cause some extra lag, but again it doesn't matter for a slow paced game like TSO. If the game reaches the end of the buffer, it will stop until it receives more info, then simulate at a faster rate (with threshold 2x buffer size?) until it catches up to the ideal buffer size. If connection is lost for an extended period of time we'll have to resync everything. That should create the smoothest gameplay experience for any of the solutions.