EmuCR Feeds
Email Us

EmuCR:ClientServerMAME ClientServerMAME v0.8 Beta2 is released. ClientServerMAME is a fork of MAME (Multiple Arcade Machine Emulator) that allows players to play via the internet.

ClientServerMAME v0.8 Changelog:

PEER TO PEER:
Player inputs are now broadcast in a peer-to-peer fashion. This means that everyone must have port 5805 open on their router, but also reduces latency since the client's commands don't have to bounce off of a server and come back to him/her. There is still a server who has authority over the syncs. The operating procedure now works like this:
The server starts the game and begins accepting connections.
When a new client connects to the server, the client has to be "accepted" before he/she can join the game.
To be accepted, all of the existing accepted clients try to establish a connection to that client. If *any* of them fail to connect to the new client, the new client is rejected by the server.
Once the client is fully connected to all other clients, it enters the accepted pool and is assigned a player in MAME.
Every frame, the server and all accepted clients publish what buttons they will press 200 milliseconds from the current time.
If a client fails to publish their inputs and the 200 ms are up, everyone waits up to 10 seconds for the client's inputs. If the client still hasn't responded by 10 seconds, the client is kicked and everyone else continues.
All of this happens behind the scenes so as long as everyone has their port forwarded or has a router with upnp (see below), the only difference will be the reduced lag.

UPNP SUPPORT:
On startup, CS-MAME will try to use upnpc to forward port 5805 on your router. If your router supports upnp, this may save you from having to forward the port manually, but is known to fail on some routers, even on routers that claim to support upnp. As a result, manually forwarding port 5805 is still the preferred method.

INPUT HANDLER:
The input handler is a complete rewrite. The previous version relied on the server to be the authority and broadcast out the state of all of the joysticks & buttons. In the new version, MAME commands are broadcast out from each peer. Because this version is command driven, it is much more stable and fixes most of the desyncs that were occurring in games such as wwfwfest (see the tutorial for an example of desyncs in wwfwfest). With the new input handler, desyncs are very rare, and only seem to occur when playing across different platforms or processor hardware, or when I artificially raise the packet loss to high values. Also, the game is in sync immediately after the initial sync is sent, and it doesn't take time to wait for the games to get in sync.

MASTER SERVER:
Based on people's comments, I've decided to look into supporting a master server that can (1) advertise public games and (2) provide a forum for people to meet and arrange games. In MAME there are thousands of games, so the best system in my opinion would be one where you can post a list of games you want to play and then the system tries to match you up with other people who share games on your list. The master server can also check if you have port 5805 forwarded correctly and allow you to create public games where other people can join your game while it is in progress. Unfortunately, virtual dedicated servers are quite expensive, so I'm going to try to host the master server from my PC at the beginning and then see if I can save up some $ to buy hosting in the future. I've put a 'donate' button on the blog in case anyone is interested in donating towards getting hosting and supporting further development of CS-MAME & CS-MESS. Although there is a donate button, I want to make it clear: ClientServerMAME is and will always be completely free and open source software. You will never have to donate money to get the software and play MAME/MESS online.

NES/SNES SAVE STATE SUPPORT:
You can see from this post that the save state support for NES & SNES is currently a work in progress. I've been able to get NES save states partially working, but there are still glitches that occur. I haven't had much luck with SNES either, but I'm continuing to hack away at it. It will be a great day when all of the SNES and NES library opens up to ClientServerMESS, so I'm working hard to make that a reality.

BETA Testing:
The current source seems fairly stable for 1v1 play, but there are still bugs when more than 2 players are involved. While I am working on these bugs, it would be great if some people could volunteer to beta test the current 2-player version of the software. If you are interested, send me an email at jgmath2000 [AT] gmail [DOT] com . Anyone requesting to be a part of the beta should expect the software to have bugs, and should be prepared to take screenshots and copy-paste the console output if CS-MAME crashes. If you are looking for a stable version of CS-MAME 0.8, please wait for a final release, thanks.

Download: ClientServerMAME v0.8 Beta2
Source: Here



Random Related Topic Refresh Related Topic

Random Related Topic Loading...

0 Comments

Post a Comment

Can't post a comment? Try This!