Quick Summary:
We have a completed flash game similar to Tetris that is ready to be "linked up" for multiplayer. After doing some research and asking here: Flash Sockets, Peer-to-Peer Capabilities , we have come to the conclusion that P2P networking done in the way xbox/ps3 games handle online games is not possible without expensive/dubious adobe software/services (FMS/Cirrus) on the flash platform at this point in time. Basically, a flash client is not allowed to become a "host" listening on sockets without the RTMFP protocol.
The Question that needs Suggestions:
With that summary, the question is... what is the best way to implement the network infrastructure for a game like Tetris, which has quite a bit of small I/O going from user to user (say, a max of 4 players at a time). Given that we can't assign a single player as the host p2p style, our options are:
1.) Fat Server with Game Logic, Light Clients updating display/interpolating based on server updates (Ala Quake)
2.) Light Server handling communication between Fat Clients (Ala Concurrent simulation like RTS games)
The problem is, we are inexperienced when it comes to networking games and therefore would really love some advice on the pros/cons of those solutions (or even other solutions). Our Tetris game isn't as trivial as sending "attacking lines" when a client clears lines to add to the other players currently battling. We need a little more real-time syncing than that. For example, the list of next tetriminos is a single shared source where everyone is "fighting" for desirable pieces.
Finally, depending on the implementation chosen, I'm wondering if anyone has any experience with Node.js on game servers. I'd assume if the server was a lightweight server only handling transfers of data between clients that Node would be a good perfect fit. However, if game logic was placed on the node.js server, I'd assume that the blocking nature of the calculations would make Node.js' single threaded no-blocking I/O approach redundant? Anyway, any advice on the issue is much appreciated.