> Aley Keprt wrote: >> You just define what particular keys will be accepted from >> remote computer, and you send just the keys (in both directions). > > That doesn't solve the main problem, which is keeping both emulations > perfectly in sync. Even time-stamping the input would require everything > (including local input) to be delayed until both sides agreed on it, > adding > lots of lag.
This is partially incorrect. One machine is a master (server), and other ones must simply take, what their master says. So works the synchonization. Slaves send their pressed keys with time stamps, master sends back what keys should be really passed to the emulator (with timestamps). Slaves ust halt the emulation until master says "it's another 1/50s tick". This way the delay is a few ticks, which is acceptable. (and it's the same as network gameplay on a PC - in Windows games like Doom, Quake, Half-Life etc.) Basically, this is the main idea. It can be optimized, but I think we could start with this basic algorithm. :-) Note that all peers must use the same version of emulator to be able to be in a sync. That's the prerequisity. > It's something that has been discussed a number of times in CSS, with no > perfect solution. One of the better ones seemed to be to have a master > emulation, with the secondary emulation state updated from that. The > state > does includes the full RAM image (or some sort of delta image) updated > frequently, with the secondary emulation continuing as normal in-between. > Modern FPS games seem to use that method too, but with the state > information > being smaller and easier to manage. Simon, you are a bit outdated. I played "1943" shooter in a 2-player mode with a man thousands kilometers far away. And we successfully finished it! With POKE / infinite lives, of course. :-) >> I added .AIR support even to Win32 SimCoupe, but these changes >> never went into the original development source code version.... ;-) > > That might have something to do with AIR being a closed file format, which > isn't compatible with an Open Source emulator! RZX > (http://www.worldofspectrum.org/faq/reference/formats.htm#RZX) is much > more > likely to be added instead, and is already the format used by most > Spectrum > emulators that have an input recording feature. Actually, AIR was a predecessor of all ZXS recording stuff - it was the first time a ZXS emulator could do the record and playback. I never wanted to send AIR into open source, so the people who liked AIR invented the other thing. I think it's obvious - AIR is for tournaments, it's full of security code, and there's no reason in using it in every single emulator. I just mentioned AIR, since it's an example of that just a 5KB file can contain a 1 hour game play. (This huge compression applies to AIR only, I can't say much about the other format.) NOTE THAT THERE EXIST EVEN SIMCOUPE 0.81 WITH AIR SUPPORT!!! It just haven't been publicly released, since it would be against GNU GPL license without the source code, and against the AIR license with the source code. :-) I think we can discuss it off the sam-users list, since it's too technical for the majority of the people. I just end with my statement: Network gameplay is possible, and is not too hard to implement. /-- Aley