Overview



Overview
BongoServer is the fastest game server among the multipurpose game servers available on the market. Being written in C++, the fastest high-level programming language, BongoServer considerably outperforms similar game servers developed in higher level and more slow programming languages, such as Java, C# or ActionScript. However, the well thought architecture of BongoServer and the ability to use scripting and very high-level managed object-oriented languages (such as ActionScript/JavaScript, Java, Python, Lua) for the development of game add-ins makes the development of multiplayer online games for BongoServer such a simple task that you not only do not have to be a C++ programmer, but you do not even need to have a low-level understanding of a computer program. Having aggressively optimized the server from the parallel computations standpoint (which allows for the full utilization of the power of modern multicore CPU’s) we achieved unprecedented performance, which in turn positions BongoServer as the first multipurpose highly scalable game server allowing to create fully-functional real-time games in Flash! It is a well known fact that multiplayer games like Mortal Kombat and Street Fighter in which two characters interact with each other on a limited visible area are the most difficult to implement. Up until now none of the companies has created a multiplayer online version of such a game due to packet processing speed limitations imposed by the server side. We have managed to overcome this limitation in BongoServer, and by using it you can create such a game.

So, what advantageously sets BongoServer apart from the existing platforms for creating multiplayer online games?

» Performance


The highest level of performance is achieved by BongoServer due to two key factors: C++ development language and applying an aggressive optimization with the emphasis on concurrent processing. BongoServer can handle up to 15000 concurrent user connections (and even more, depending on the hardware configuration). Throughput of BongoServer is more than 30000 packets per second. When using an alternative server, in order to support more than 5000 concurrent connections you will likely have no other choice than to build a cluster of the servers. Whereas BongoServer only requires the use of a single server. Thus, you benefit from cutting off hardware and licensing expenses.

» Scalability


Another benefit of BongoServer is its response to a growing workload. Besides optimization with emphasis on parallel computations, BongoServer employs optimized memory management facilities, which enables more efficient memory utilization and allows to considerably reduce memory fragmentation, which is one of the most critical factors for server-side applications.

» Modular design


The modular system used in the BongoServer architecture offers unlimited opportunities for the effortless extension of the server’s functionality. This also enables BongoServer to be used as an application server for different tasks, such as streaming video and audio, leaving the server free for the simultaneous processing of the game algorithms.

» Multiple programming languages support


It does not matter whether you are a C++ programmer or not, BongoServer supports ActionScript/JavaScript, Java, .NET, Delphi and Python as programming languages for developing game add-ins, which enable even entry level programmers to develop multiplayer online games. If you have been developing game add-ins in Java for some popular on the market game servers, you can easily adapt the add-ins for BongoServer – no need to learn a new programming language, you can keep writing add-ins in Java for BongoServer using its numerous advantages. Moreover, according to a research done by a well known company, TIOBE Software, conducting statistical researches for about 10 years, the popularity index of the following programming languages: Java, C/C++, C#, Python, Delphi, JavaScript and ActionScript among the professional software developers is reaching 60%. Thus, offering support of these programming languages for the development of multiplayer online games, BongoServer appeals to 60% of the professional programmer's audience.

» Complete set of auxiliary add-ins


Along with BongoServer we provide a FREE set of all that is necessary for the day-to-day operation and deployment of games - add-ins that allow the developer to completely focus on development of the game mechanics. We provide the following add-ins:

  • universal lobby suitable for games of any kind and allowing for the fine tuning of non-standard situations; being compatible with the clustering mode the lobby add-in balances games between the cluster nodes managing the quantity of players in games, auto-kicking inactive players, etc.
  • chat, supporting Unicode;
  • user registration add-in;
  • administration add-in and administration console;
  • statistics collection add-in;
  • interface for developing add-ins in С/С++;
  • wrapper for developing add-ins in ActionScript/JavaScript;
  • wrapper for developing add-ins in Java;
  • wrapper for developing add-ins in Python;
  • interface for developing add-ins in Delphi;
  • interface for developing add-ins in .NET languages;

In other words, BongoServer provides a full set of tools freeing you from the routine work and giving you the opportunity to focus on implementing the game mechanics. Also, being a universal server, BongoServer does not depend on the implementation of game add-ins. Thus, there are no factors constraining the game mechanics and your development freedom.

» Universal game add-in


If you do not have any experience of working with game servers, but you have a strong desire to develop a multiplayer online game – there is a way out! Using the universal game add-in that we provide along with BongoServer you can develop a fully-functional multiplayer online game implementing all the game mechanics on the client side. You do not even have to touch the server. Being completely FREE, the universal game add-in forwards packets between the game clients and can act as the server-side implementation of any turn-based or real-time multiplayer online game. You can effortlessly create a multiplayer online game without going into the details of the server-side implementation.

» Isolated user spaces


You can build completely isolated user spaces of game add-ins and associated with them user bases within a single instance of BongoServer. In this way, you can situate multiple independent game portals on a single game server. Each portal can have an isolated user base using a specific authentication procedure, with BongoServer securely managing all data. Also, if you have several independent projects, by using this feature of BongoServer you can establish them on a single server. Besides this, if you want to achieve 100% isolated game spaces, you can launch several instances of BongoServer on a single hardware server. Configure BongoServer whichever way you like.

» Customizable authentication procedure


Should the need occur, BongoServer allows for specifically tailored scenarios in terms of the protocol of players authentication. For example, this feature allows for the integration of BongoServer into existing web-portals with the existing user base.

» Clustering with embedded load balancing


BongoServer provides facilities for building a cluster of servers and dynamic load balancing between the cluster nodes (instances of BongoServer). When establishing a cluster, BongoServer relies on the fully connected topology, which eliminates bottle necks and creates high redundancy (if a player’s connection to one of the cluster nodes is interrupted, packets from the player are forwarded to this node through the least loaded node in the cluster having a direct connection with the player). We are sceptical about topologies in which cluster nodes are assigned specific roles and in which all nodes heavily rely on a single synchronization node acting as a bottle neck restricting data flow and buffering messages, thus increasing their round-trip time value. In BongoServer all add-ins can directly communicate with each other. Such an approach gives a lot of advantages. One of the key ones is the high response time of the server. You do not have to be a developer in order to understand that a message coming to point B from point A reaches the destination faster when coming directly from point A to point B, instead of going from point A to point C and then to point B. Secondly, such an architecture allows one to build distributed MMO worlds by placing the game add-in on different cluster nodes. Besides that, in order to achieve maximum performance, BongoServer employs a number of algorithms for intra-cluster load balancing.

» Ability to build fault tolerant configurations


Enabling the building of a cluster of servers on a single physical server, BongoServer allows one to build configurations in which the highest reliability of the entire system is achieved by keeping individual game add-ins on separate cluster nodes. Nevertheless, a single external network interface is sufficient for establishing communication between the client-side applications and servers in the cluster. In this way, a single misbehaving add-in on one of the cluster nodes is physically restricted from affecting the functioning of the whole cluster.

» Using XML, text and binary messages for serialization


Architecture of BongoServer allows for the use of both binary and text formats for packets serialization. It is a known fact that binary protocols have a special advantage – slim packets, which results in a higher transmission rate (hence, lower latencies). On the other hand, using text protocols has its advantages, such as the ability of your games to penetrate through firewalls when communicating with the server and the simplicity of debugging. When choosing to use a text protocol, you can consider either the standard XML or any other text protocol, such as Base64 or MIME, including custom protocols tailored for your specific needs.

» Full compatibility of client side applications


Only BongoServer allows players using game client applications written in different programming languages and relying on different serialization formats (text and binary) to play the same game. For example, a player can play a pool game through a client-side application written in C++, using hardware accelerated 3D graphics and communicating with the server via a binary protocol, on the other end his/her opponent can play this same game through a client-side application written in Flash and running in a browser window being located behind a corporate firewall. Sounds unlikely? Try BongoServer and you will realize it is possible!

» Guaranteed packets delivery and ease of switching transport protocol


By default, BongoServer uses TCP/IP as the transport protocol, which ensures guaranteed packets delivery in the correct order. However, the flexible modular architecture of BongoServer allows, if necessary, switching to the use of UDP/IP as the transport protocol.

» Databases support


Add-ins developed for BongoServer can work with a variety of SQL databases (for example, MS SQL, MySQL, PostgreSQL, Oracle, Firebird/Interbase) through the API of BongoServer and not only with a single database at a time. Besides, different versions of BongoServer can work either without a database at all, or with an embeddable database.

» Automatic cross-domain policy file generation


BongoServer automatically generates a cross-domain policy file for the client-side applications developed in Flash. This enables the Flash applications to be launched from a web-site physically located on a computer other than the one running BongoServer.

» Administration console


The administration console, being written in the cross-platform Flash, provides means for administering and configuring BongoServer remotely from any point on the planet where you can have access to the Internet.

» Logging


BongoServer logs all the internal processes and offers a log-API for the add-ins hosted by the server. When logging, BongoServer employs the industry standard Syslog protocol, which enables efficient BongoServer state monitoring via logs both locally and by means of the remote log collectors (a lot of free 3rd party tools for working with the Syslog protocol and with logs in this format are available out there). All these means facilitate the quick localization of a problem when it occurs. And as a matter of fact, BongoServer allows for the configuring of the logging level of events that occur.

» Generating minidump on demand


This function is extremely helpful for debugging and allows for the storage of the application's memory and threads state by sending a command from the administration console, allowing in this way for the debugging of BongoServer on a local machine in situations when an issue that cannot be reproduced on the local machine arises on the sever.

» Monitoring service


Being an independent application, the service monitors BongoServer in run-time and automatically notifies the administrator via e-mail when a fault occurs. The monitoring service also delivers (either on demand or automatically) minidumps generated by BongoServer if an exception is triggered.

» Ease of installation and flexible demands to environment


Installing BongoServer takes a single mouse click, and if you build a cluster of several servers, the cluster can be located behind a hardware load balancer. In this case it is possible to turn off embedded load balancing algorithms and offload this task to the hardware load balancer.

» Compatibility with both 32-bit and 64-bit versions of Windows


Working in the native 64-bit mode, BongoServer fully employs the advantages of this mode. In addition, due to a tiny executable footprint, low memory consumption and efficient memory usage, the 32-bit version can even work on seriously outdated hardware. BongoServer can easily breathe new life into a computer that has been long ago collecting dust in the closet.

» Alternative OS support


At the moment we are porting BongoServer to Linux.