Our company uses different communication protocols/servers for multiplayer games. We provide various solutions depending on the game requirements and accepted latency delays. The decision of protocol /server for your game also depends on the delivery platforms supported by your game. Other factors that effect the decision is your inclination towards using proprietary solution or open source solution. The decision of server also depends on the kind of security your game requires.
We use the following protocol/servers for your game:
RTMP was evolved by Adobe for Real Time media streaming. It has been a de-facto industry standard for server side communication. The other variations of the protocol are RTMPE, RTMPS, RTMPT. These protocols added security layer for communication. RTMP has been implemented in many client side technologies like Objective-C for iPhone/iPad, Android SDK, J2ME and AS3. Hence if your game has to be launched on multiple platforms then RTMP/AMF is one of the answers.
The servers that implement these protocols also support server side real time update via Remote Shared Objects. They also allow invoking of client functions from server. Using these servers we can easily maintain game states and implement features like spectators, user banned list, rooms and IP banned list. Some of RTMP servers we use are mentioned below:
Red5 : It is an open source RTMP server and implementation is easily scalable. The server is implemented in Java. The server is easily extended using Red5 java application. The best part is that the server is built using Springs framework, hence complete game server application is done using Springs IOC and high end ORM technologies like Hibernate.
Wowza : It is another RTMP server built on java. It has licensed version and is very famous for streaming applications.
Flash Media Server : It is supported by Adobe, has licensed version and has wonderful option with Amazon Web Service. It also supports RTMFP which is a new P2P protocol for gaming and streaming. Our game developers generally suggest the AWS option for FMS. This allows start ups to launch their game without huge initial investment as billing is done based on server usage. The server side gaming logic is written in Action Script 3.
SmartFoxServer is one the most promising gaming server which has been there for a while now. It is fast, reliable and stable. Our developers give it preference over any other paid server. It gives a per CPU licensing option. Our game developers use its XML based configuration to create rooms, user and IP banned lists. It provides client API’s in J2ME, Android, iOS, Windows and Flash. The server module can be developed in both AS3 and Java. Our development team prefers it for its binary streaming which leads to low latency and makes it perfect for role playing games. Open Space a new addition to SmartFoxServer products is one of the best isometric engines. Hence if your are looking for a true virtual world or a role play game then SmartFoxServer with OpenSpace is the best tool chain you can imagine.
XMPP with Jingle
XMPP is the industry standard protocol for chatting and roster groups. Adding XMPP to your multiplayer is inevitable. You can use XMPP for chatting systems in your game as well as implement the core game logic in it. Although there are drafts for maintaining session state/game state but not approved as XEP for gaming engines. Also XMPP clients are available for all platforms HTML5, iOS, Android, .Net, J2ME. Google has been the biggest contributor to XMPP implementation with Jingle as a P2P protocol. We generally customize Multi-User-Chat modules and Pub/Sub modules for gaming engines. Our developers prefer XMPP where little latency is allowed. We love it to use along with HTML5 based multiplayer games. There are two open source servers, reliable and fast, which our game developers use:
- Ejabberd : This is an Erlang based server. It is a very fast server as Erlang threads are pretty light weight. Ejabberd gets a lot of respect from community as many portals use it to implement live chat.
- Openfire Server : This is java based server built by Ignite Realtime. Extremely well written server with complete Java and Action Script 3 XMPP client library. This server also implements Jingle protocol.
The new HTML5 API lets us create HTML5 sockets, very similar to TCP and UDP sockets. This really helps us to stop using HTTP polling and HTTP bind. These earlier methods increased load on web servers. There are open source WebSocket servers like jWebSocket which we use for your multiplayer games.