> 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 

Reply via email to