!!! Time it Takes to Do a MMORPG !!!

Started by
58 comments, last by rjahrman 22 years ago
If you only used a few days then I''m sure you did not learn it all..

UDP, TCP, Overlapped I/0, Completion Ports, Blocking, Non-blocking...all that shit....
-------------Ban KalvinB !
Advertisement
Well one thing that I can say is that I dont know the terminology. Could you please explain to what those are? (except for TCP and UDP)
------------------------------There are 10 types of people in this world, those who know binary, and those who don't.
quote:Original post by hello2k1
It took you a YEAR to learn tcp/ip?


It took me about a week to get a basic UDP wrapper class going from knowing nothing about winsock programming to completion. What took a year was researching all the different network architectures and expirementing with the different varieties. Peer-to-Peer, Client/server, distributed system, etc. and reading up on what other game developers expirences were with those systems and how they implemented them.
I don''t know it all myself.

Instead of polling a socket you can create an event which will notify you when something is received on a socket.

Overlapped I/O and Completion Ports are examples of that. They are more complicated but should scale well. Completion Ports are only supported on W2K and up I believe....
-------------Ban KalvinB !
It took me about 2 hours to get a DirectPlay client and server set up the first time I tried using it. Actually getting a working program going is easy. It''s learning how to use it well that took a bit. It took a couple months of tweaking to get it to be able to handle 12,000 clients on a single PC (1000Mhz) at a decent framerate. Most of the slowdown is from a 10Mbit LAN which at 12,000 clients, 7Mbits per second are being used up. Bandwitdh is the bane of all on-line games.

VB Winsock took about a day. The universal hacker program I wrote using it took about a week. I still need to learn Winsock in C++ though.

The challenge in an MMORPG is the RPG part. Get a working client/server and don''t worry about how well or not well it works. Just get it working. Just make sure you design the code to be easily modified later to make it more efficient.

Then, once you have 2 players connected, your code should be designed to handle n players.

For Tombstone and GangWars making modifications to the client doesn''t require testing two clients at once because I know it works. There''s no special case code. E.g. The client and server don''t care if there''s 1 or 1000 players, they act the same.

Ben

IcarusIndie.com

[The Rabbit Hole | The Labyrinth | Programming | Gang Wars | The Wall]
quote:Original post by granat
I don't know it all myself.

Instead of polling a socket you can create an event which will notify you when something is received on a socket.

Overlapped I/O and Completion Ports are examples of that. They are more complicated but should scale well. Completion Ports are only supported on W2K and up I believe....


It's actually quite easy to do. In my network wrapper constructor I create an event object to handle read events on the socket.


    WSAEVENT	hEvent;/*============================= = Initialize the EventObject to Recieve NetworkEvents. ==============================*/  hEvent = WSACreateEvent();// This hEvent object will represent read events on the       RCVSocket.// it will be used by WSAEnumNetworkEvents() to check of incomming packets.  WSAEventSelect(LocalSocket,hEvent, FD_READ);  



And then I have a method that tells me how many packets are queued up on the socket.


  WSANETWORKEVENTS	NetworkEvents;     int CNetworkWrapper::NumQueuedPackets(){	// Check for incomming packets.	WSAEnumNetworkEvents(LocalSocket,hEvent,&NetworkEvents);        // return how many read events have occured. 	return (int)NetworkEvents.lNetworkEvents;}  


No fancy I/O completion ports needed, just a plain old socket.




[edited by - ironside on March 31, 2002 3:24:37 PM]
12k people??? WOW! Ok, now I understand why it took so long But what exactly is the point of checking how many packets are in the queue?
------------------------------There are 10 types of people in this world, those who know binary, and those who don't.
I''ve dealt with several companies doing MMORPG for both consoles and PC (several have licensed technology from us, included EQ and Star Wars Galaxies).

The article above that mentioned 4 years is right in line with everything I''ve heard from our customers. We reently licensed to a company doing a MMORPG that will lock down on their client-side engine in 18 months, but plan on spending nearly 24 months tweaking gameplay and refining server bandwidth issues.

The budgets for these type of games are usually multi-millions *after* production costs are paid for, to support things like bandwidth and servers. You''ll also need to hire tech support and moderators (or hope your publisher will handle it -- either way, you''ll have to train people to fill these roles).

Not to say any of the above is required, just likely. At GDC, during the MMO gaming talk, one of the guys from Blizzard balked at the above figure and pointed to Starcraft and Battle.net. Even though Starcraft isn''t MM, the underlying technical requirements are no different (or at least shouldn''t be given a good MMO implementation).

It''s all about micro-vs-macro simulation, a topic I''m considering writing about for GameDev.net (check under the articles proposals forum).
Hmm.. Multi-Millions?? I dont know about you guys.. But I dont exactly have millions of dollars laying around in my couch.

My approach on my game is simple.. it''s free, and will require volunteers. Ragnarok is free, and it seems to be doing good so far. Right now my team is only 2 ppl, me and my 3d model maker. I''m hoping to have the 3d engine ready in 1-2 months, then have other people beta test it for me (to balance out the stats and stuff), while I''m working on the online part.

The only problem is.. I''m really new to DirectX 8, and I cant get Jim Adam''s book anywhere!
------------------------------There are 10 types of people in this world, those who know binary, and those who don't.
I run IcarusIndie.com (The Rabbit Hole) out of my house for $70 a month to my ISP for the static IP and DSL connection. It''s part of the "create it to be improved" package. If I need more bandwidth, I make a phone call. If I need another server computer, I plug it in.

If you spend more than $2000 in hardware to get an MMORPG game going you''ve wasted money. Unless you want a static IP and dedicated Internet connection for you own use, don''t bother with that bill until the project is done or a LAN won''t do. The reason I have it is because I''ve been doing web development for years and decided to run my own web-server since I hadn''t done that before. Using the same line for MMORPGs was an afterthought. When Tombstone is done it won''t be running on my connection. It''ll have it''s own dedicated IP and high speed connection. Much faster than what I have now.

Ben

IcarusIndie.com

[The Rabbit Hole | The Labyrinth | Programming | Gang Wars | The Wall]

This topic is closed to new replies.

Advertisement