Borgserver

BORG Frequently Asked Questions

Is Borg Open Source?

Yes it is. You can use the Borg as a whole for free and even change, distribute, sell or do whatever you wish with the Borg World Server, and other shared libraries. However, we request that you give credit so we get more exposure for our project.

So Borg is hack safe? If I develop a Borg based game it will be safe from hackers?

Absolutely not! We are aware that there are numerous great online games destroyed by bots and hackers, but… the truth is that there is no such thing as unhackable software at least not yet. Given enough time any software can be hacked or cracked. For server based games this task is even easier since it is enough to inject a DLL on the client side which intercepts the communication protocol.

Even if it could, which it can’t, Borg is not even trying to prevent hacking game clients. Instead Borg tries to prevent hacking user accounts. Unless the hacker can guess a users account name and password or perform a ‘Man-in-the-middle-attack’ Borg is relative safe. There is no easy and time efficient way for a hacker to steal account information, spoof the communication or try a brute force attack by guessing accountids. At the bottom line Borg will keep the user accounts safe and provide authentication and authorization features out of the box. There is no guarantee however that a malicious user can not beat the system.

This is a huge system, will this fit for my Indie game?

This is not a correct assumption, although it looks like a huge framework and is designed to run on multiple PC’s the complete server side can reside on a single PC and a single DB. Even Indie Online RPG games must solve rather complex problems of a distributed environment, client-server communication, account management, client verification and lot more. All those task are out of the box features of the Borg Project.

I understand but I am a one man company, can I manage all the technology alone?

This is even one more reason not to start coding such a system from scratch but use pre-build components.

Why is there a Log-In server and an additional World Server?

Actually there can be many World Servers. After the game expands and new users start joining there comes the time you realize that one single world simply is not enough. There can be various reasons for starting multiple world servers: server overcrowding, performance, financial, test/dev worlds etc. but when such a decision is made you can easily just install a Borg World Server on a new PC, register it in the management DB and let users access the new world, create in game characters and start using it. The reason for a central account server is to have a single place all the users create accounts, login and retrieve information (ip, status etc) about all your world servers.

Can I host multiple World Servers on a single PC?

This is not recommended but certainly possible. The World Servers must be configured to listen on different ports or on completely different network interfaces. Note however that while that comes handy for development or small testing worlds, large scale servers will probably reach performance, memory, DB or client connection limits.

What DB is Borg using?

Both the Borg management DB and the World DB’s are SQL Server/MySQL based. Although we aim for a generic DAL which would make the underlying DB configurable, such features are not fully implemented/tested except for MySQL.

Why c#? Why not Java or C++?

Because we wanted something easily extensible and CLR (.NET) based. If you are on Java there are already similar projects out there.

Can I build other type of games or applications with Borg?

You are by no means restricted to develop RPG’s. At the bottom line Borg provides the communication framework and some Server building blocks. What you do with it is entirely up to you. If you write a peer to peer networking application then Borg is not for you.

Are the Borg Servers multithreaded

Yes, while the Log-in server has no performance constrains and has just few background threads the World Server is heavy multithreaded and has at any time at least a dozen of threads.

What are the Borg World Server Key Components?

The World Server consists of

* networking layer which handles communication with clients,
* message management layer,
* world management layer,
* world extensions and
* three layers of message queues (not the same as MSMQ technology): raw messages, deserialized messages, outgoing messages

Wait a minute, isn’t message serialization/deserialization slow?

Not really but that depends on your expectations and the definition of ‘slow’ and ‘fast’. On a normal home computer with an older generation Quad CPU and under extremely stress condition where other processes eat up to 50% of all CPU power the serializing threads have a cumulative throughput of at least 40 messages/millisecond. Under normal conditions this rate is over 100 messages/millisecond. Note that those are MILLI seconds so this means from 40K up to +100K messages per second! There are many factors which influence performance and also many tweakable server parameters like: number of serializing, deserializing threads, packet sizes, transmission units, connections etc. All of them impact performance so these results can not be taken for granted. The most critical performance part is actually the world extensions where all the world logic is implemented – but this is an external part not directly related to Borg. In any case we recommend to have a dedicated world server.

So what HW do I need to run Borg?

We don’t know and we can not know that! Borg is just a framework but what really counts is the world implementation which is technically speaking a World Server Extension (WSE) loaded from a DLL in the World Server. I am running the SQL DB’s, the Log-in Server (LS) and the World Server (WS) with a test WSE on a very old laptop with a Centrino CPU. However I doubt that this configuration would be able to handle a WoW like game with +500 user online! Actually I doubt it could handle even a WoW like WSE with 15 users online!

For development and development testing any home PC/Laptop would do – even if all components (SQL x DB’s, LS, WSE +WSE, WEB Server, Client application) are on a single machine.

For multilayer testing and load testing a dedicated multicore Server hosting the DB’s, LS, and WS+WSE  is needed. We recommend using a CPU with at least 4 logical cores.

For production environments a dedicated server with a Quad Core or better CPU, 4GB RAM and multiple NIC’s is recommended for the WS+WSE. It is also recommended to have an additional server hosting the Databases, LS and Web Server.

Date: 2. July 2010
Visitors:   (C) Copyright 2010, Borg Server Team
Borgserver