Go Back   MMORPG Maker XB Forums > MMORPG Maker XB Community > MMORPG Maker XB News

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 08-03-2010, 06:38 AM
Administrator Administrator is offline
Administrator
 
Join Date: Jun 2010
Posts: 161
Exclamation Scalable Server Software for MMORPG Maker XB!

Dear MMORPG Maker XB Users,

Recently, we have been building the game server software which will power MMORPG Maker XB games.

In order to do this, there were several challenges we had to overcome:

  1. Standard web servers are built to serve web pages ONCE and will sever the connection once the request has been completed. As such, web servers cannot handle multiple concurrent connections, and, especially, the high bandwidth of MMORPG games. In layman's terms, when HTTP and web servers were built, no one was expecting data transfer to proceed beyond a certain point. This is an architectural design problem, and we determined we could not build a web game server on top of this architecture as the demands are drastically higher for gaming. Unlike web pages, games (and especially MMO games) process hundreds to thousands of times more data PER SECOND than HTTP web servers.
    .
  2. Both the multi-threaded and asynchronous server design models would result in difficult-to-track bugs such as "race conditions" ( http://en.wikipedia.org/wiki/Race_condition ). The multi-threaded model would also reduce vertical scalability due to operating system or hardware limitations.
    .
  3. The bandwidth overhead of HTTP (and, additionally, the underlying TCP layer) was too expensive from both a technical and monetary perspective. Due to the limited data we can send down the pipe, a custom game server was absolutely necessary because some form of TCP throttling needed to be implemented to avoid network congestion. Otherwise, your ISP or server host will kick you off the network, or, if they have the infrastructure to manage it, you will end up with a very large excess bandwidth bill -- think of it as your phone carrier charging hundreds to thousands for all those extra minutes of calling or text messaging on a much larger scale.
    .
  4. Since HTTP is built over the TCP protocol, we have to deal with the limitations and design of TCP. For example, due to the guaranteed delivery nature of TCP, network connectivity errors can cause the entire server to lag down in a queue of latency trying to handle dropped connections and the like. Additionally, there is a limited amount of data which can be sent simultaneously regardless of your connection speed, and, to avoid this, TCP buffers data which can cause latency (known as "TCP delay"). Without a custom server design, low-level TCP options like this cannot be disabled.
    .
  5. A standard HTTP server does not provide game-specific security. For example, if you obtain an item, a notification would be sent to the server noting that you've obtained the item; however, this notification can be easily crafted and sent by a hacker even if he did not actually obtain the item in-game. This creates server-wide security holes in the game whereby movement hacking (walking over mountains, rivers, and other obstacles) and more can become possible. A custom server allows for custom security settings. For example, the server needs to make sure the player was in front of a treasure chest before the item in the chest is granted to him; in an unsecured architecture, the player position can be sent to the server and checked, but hackers can easily spoof the position, and encryption of messages to the server has always been notoriously useless in the MMO industry because client-side encryption is nothing more than security through obscurity which isn't secure at all.
    .
  6. Memory efficiency is absolutely necessary. If your server runs out of memory, it will go down. Knowing the differences between various I/O techniques and speeds are also very necessary, and, with a non-blocking design like what we use in our server, race condition security holes can easily pop up with poor design or complete malfunctioning can occur whereby data is assigned or sent to the wrong players.

Thankfully, we have designed a prototype custom scalable server. With chat only, it will scale to well over 10,000+ simultaneous users. Of course, due to all the in-game action, this number will lower. A standard web server cannot handle 10,000 simultaneous connections even for a program as simple as a chat which uses very little bandwidth; when you throw in all the data processing and bandwidth an MMO requires, the web server will break down. Additionally, we would like to announce all of the above problems have been solved in our prototype thus far.

Here are more features in our server which have already been completed:

  • Hosted on port 8081, separate from the standard HTTP port (80) so you can also run an HTTP server to serve web pages on a single server.
    .
  • Programmed from scratch with scalability in mind
    .
  • Asynchronous I/O
    .
  • Instantaneous request processing. The server does not buffer data for reduced memory overhead and more efficient vertical scalability.
    .
  • Real-time data handling (we do not waste bandwidth by sending requests to the server every 5,10,30 seconds even if there is no data to receive)
    .
  • Connection limits
    .
  • Authentication system
    .
  • MMO security foundation
    .
  • "Zoning" system
    .
  • "Lazy broadcast:" The server will send data only to the users whom should receive it instead of sending to the entire server (i.e. a common poor practice is to pre-pend the username or ID of the players which should receive the data and filter it out on the client-side so it "appears" data was only sent to certain users -- this is both insecure and bandwidth-heavy); thus providing you tremendous cost savings in terms of bandwidth.
    .
  • Much, much more!

In the future, we may even include revolutionary methods to enable UDP and other protocols over the browser with the server handling the response.

Conclusion: We would never recommend you run a web game server using a standard HTTP web server. It will crash and burn. There are operating system and hardware limitations, and standard HTTP web servers are designed SOLELY to serve web pages -- not games. There are memory problems, blocking calls, slow I/O, latency, TCP networking issues, and so on. A web server can handle a certain number of connections, but the game will never be a "true" MMO because it will never be "massive." With MMORPG Maker XB, we solve all the headaches in building scalable server solutions for you.

Sincerely,


MMORPG Maker XB
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump



Powered by vBulletin®
Copyright © 2000 - 2018, Jelsoft Enterprises Ltd. .
Copyright © MMORPG Maker XB. All Rights Reserved.