What is Required When Building An MMORPG Server?
Posted 21 September 2005 - 05:43 AM
Posted 21 September 2005 - 10:04 AM
For network bandwidth, you also need to include two more things.
The internet has two standard protocols. IP and TCP or UDP. Thus, you can have either TCP/IP or UDP/IP. IP is typically 20 bytes long (it can be longer). TCP is also typically 20 bytes, and UDP is 8 bytes. So your minimums:
TCP/IP: 40 bytes per packet
UDP/IP: 28 bytes per packet
Since with MMO it is extremely important to transfer the information, you need to use TCP. Since you'll be spending more on overhead to transfer out information, you need to group packets together, compress them, and then send the package as one larger packet to the clients.
The number and quality of routers you use will greatly affect the performance of the network. High quality industry routers ($$$) will perform much better than home-based routers.
While you may have plenty of bandwidth to play with, trust me when I say the cost of sending lots of data adds up. You should be very efficient wth your use of the network. Don't just throw a bunch of information down the pipe inefficiently.
Posted 22 September 2005 - 04:32 AM
Even disregarding the "n00b" reaction and taking you seriously, it doesn't seem like you've given enough information to give you actual processing/bandwidth requirements, to determine what kind of hardware to buy or algorithms to use. But my most general-purpose advice is this:
Be rigorous about your game design, and realistic in your expectations. If you have 100,000 registered users, spread out among various time zones, you will probably get a concurrency of about 10,000. (Based on the statistics from Second Life -- a shameless plug but check it out at secondlife.com) How big will your world be? How many people will be within sight of each other at one time? There are several ways to scale:
1. Shards - Bring up several noncommunicating servers or server grids, and assign players uniformly to the separate grids. That way if you're making a profit on 100 players, you can make the same profit on 1000.
2. Designed obstacles - Make it impossible for people to all congregate in one place (e.g. AC's portal storms) and tie up all your processing power or bandwidth on one machine.
3. Gradual server handoffs - Ensure that players spend most of their time away from region borders, to allow more time for handoffs between servers (WoW has cities in the middle of regions, and when you travel between non-adjecent regions it shows a "Loading" screen)
History shows very, very few pieces of software that have gone 10 years with a enormous userbase and not undergone considerable change. Give yourself room to expand by focusing on modularity, abstraction, and good coding habits so that when you hit that 1000-user barrier, you can identify the problem and refactor.
Help that helps!
Posted 14 October 2005 - 10:25 AM
But to do this you have to add things that give someone about 1 months enjoyment and not something that gives enjoyment after 1 month. Its just I've seen a fare few MMO's fail completely cos they ignored this.
So I hope your game has airships cos otherwise you's lost my vote
Even if you think your idea is the best thing since God others may dissagree and when they do you dont have 100,000 users.
Just a warning to let you know your ideas must be loved by about 900,000 not 100,000 cos people move on. And boy do they move quick.
Posted 14 October 2005 - 01:24 PM
We are in the same boat as you... wanting to accomplish this, having the drive and some tools and skills, but not exactly knowing the correct path to get there. I do lots of reading, coding, trying, failing, trying again, failing again, finding simpler way to do it, getting frustrated, crying, trying again, celebrating cause it works, getting bummed out when I realize I have accomplished goal #4 of 158223.
We are trying to do this as smart as possible to mitigate the effects of: learning while doing, learning fast enough to catch up with the rest of the MMO community, lots and lots of rework, and not trying to re-invent the wheel at every turn.
What I have learned after about a year or so of just planning is that the whole damn project is a "Chicken or the Egg" scenario. Example: Server structure depends on code base and data transfer goals..... data transfer depend on expected community population base..... population depends on, initially, advertisement and demos, but eventually on game performance and content....game performance depends on server structure....
We joke around and way that we figure to have this ready and go live about the time when mankind gets a base on the Mars. LOL
For me, however, and apparently unlike many people on this thread, the journey to the goal, the frustration, hardships, failure, successes and victories is the best part for me. What's the point of having a kick ass game when you can't look back and say, "Hey man, remember that time we stayed up for 36 hours straight trying to finish up the event handler for that one class? It was sure hard to do drunk." </Philosophy>
I would love to chat with you about ideas, pros/cons about your project. A summation of my project is a Sci-Fi based FP MMORPG that encompasses all the things we liked about many other MMOs and all the things we would have liked to see or see fixed in many other MMOs.
Posted 15 March 2006 - 01:23 AM
Its very difficult to find the right server, and the right game structure
to ensure your game doesnt fall FAST:P
I have a Text Based MMORPG, in its infancy, but it needs
a dedicated server if its going anywhere soon:P
Its called FutureRP and its at www.futurerp.net
I considered the making of a 2d or 3d game, but i like to keep things
as accessable as possible. Who the heck doesnt want to blow some guys
head apart while hes supposed to be doing work:P
Im rather pleased with my choice of game style and genre, as
it means anybody with access to a standard web browser can play.
Dont get me wrong! I plan to make a 3d/isometric version in the distant future:P
I like play games, and i like to make them, so having a job where i can make a game, and play it, and hopefully get paid is not a bad deal:P
Posted 23 March 2006 - 08:12 PM
Posted 31 March 2006 - 11:05 PM
But ive already purchased a 64bit 3GHz server:P
Ya, i know its not 2 cpus, but its holding up good for now:P
I just need to use my brain, and optimise code when possible:)
Im leaning towards AJAX if anybody is having similar trouble;)
Posted 02 January 2007 - 01:14 AM
First of all you need a good server fast/robust and i sugest one based on IOCP (completion ports, OS- must be 2000,xp higher....doesnt work in 95,98,ME) programed with c++. I heard here that udp is faster than tcp. Its correct but unless you dont need connection oriented protocol, go for it. I dont agree using that because with udp, you must do some checksum/ order packets when you receive 1, which is transparent over tcp. That is an extra code you must do before assemble "The message" (Packet 2 can come first than packet 1, and so on....).
Then you must consider how the game should work, Many ppl in some room, or session game procedure. First case you have an example of Anarchy-online or muonline, the other you can think on diablo that 8 ppl enjoy the same session. Those specs has different techics.
There is an hardware limit to put 100000 ppl playing that in same time. A great MMORPG plays about 10000-15000 at same time....over that isnt possible to work (Many data to process/per sec besides handling all sockets....).
What about http for that database in mysql. Could be even aspx over informix. The speed is not critical in a website than working with mmorpg server. "I can wait 20 secs opening a dam page..."
"But i cant play wit this lag (or bad code ^^)"
Ok, lets be real: mastering IOCP is a painfull task because you must work with API of windows plus c++,plus Threads,plus Threads Synchronization, plus sockets handling :=) (Read Programming winsocks in windows, or something like that)
Second approach, WSA. I never used it but its the second candidate looking for some beenchmarks over net (check google).
Third candidate, c# with System.Net.Sockets with assync calbacks - Its not supposed to be a block server ^^. Its a non-blocking server but the problem of this is memory. That kind of programming spends too much memory hence you must set up the callbacks (begin accept, end accept, begin read,end read,begin send....etc) per socket....Each task its achived by setting threads to do the job in background.
The game...2D, 3D? Directx,or opengl?
What memory format for MAP/Characters/ models/textures/ light / Collision detection alghoritms, Physics (Gravity, car turn or flying a ship...) AIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII- Artificial Inteligence (like some people ^^)
, special effects ,etc,etc,etc,etc.
Dont put a sound stream over the socket ^^. Just assign a byte that the client reads and plays localy(where the wave is stored in client game)
Final: Its a difficult task....but not impossible.
There are some aproachs, not 1 is correct but it simple can be.
You are trying to do a good game at first attempt with 100,000 clients ????Can you????
I want to join ^^!
"...not event in 10 years..." =====>>>>Bah, the value of the information is the content plus the speed we can get it.
Everybody talks here about the server......Is that enought????? ITS A GREAT HELP!!!!!! But its that enought??????
António Dias (sorry for my bad inglish):cool2:
Posted 02 January 2007 - 01:27 AM
Soon i have time i will put some decente document here. I promise.
Dam, a text MMORPG=>SUX :=) or....i must sell the video card with 256 Megs.
Have a nice day and a good YEAR.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users