Multiplayer games and applications are hugely popular and form a significant category of applications in most app stores. The backend for such applications is critical as it provides support for real time data transfer between the user clients and is the fundamental building block for such applications.
The problem is that such server side pieces are often error-prone and extremely time consuming to develop. Challenges include developing a high availability architecture, managing multiple client socket sessions and finally the server side business logic required for virtual rooms and lobbies where users interact.
AppWarp is designed to help developers building such multiplayer games and applications by offloading the heavy lifting of developing and deploying the backend. AppWarp client SDKs provides advanced features such as matchmaking, managing intermittent client connection errors, reducing latency by picking a geo location of choice etc. There is a comprehensive development center which offers developers complete guides, tutorials and samples to understand and bootstrap easily.
Developers can concentrate on building their application logic and writing client side code on top of the powerful APIs provided by AppWarp to connect and interact with the backend. Client side SDKs are available for all the popular platforms.
The diagram below illustrates the high level constructs available to the developer to build virtual world games and applications. A description of all the terms used in the diagram follows.
A user’s name must be unique amongst all connected users. It can have different roles such as observer and joined user. Note that while a user can observe multiple rooms, it can join only join a single room at a time.
Developers are also given APIs to set and retrieve custom information for the user to build application specific logic. For example, this could include links to a profile picture or a status message.
Users can join it if no room exists or if they are unable to join any of the existing rooms.
Developers are given APIs to query all the other joined users and to set and retrieve custom information on the room.
This custom information can be used to build application specific logic. For example as a JSON representation of the current state of a board game being played inside the room.
AppWarp server has been developed in a clean and efficient NIO (non blocking I/O) manner. It manages concurrent client connections for the server and provides abstractions for our server side business logic. Below is a high level view of the product design. A brief description follows.