[MUD-Dev] Requirements for MM (was Complexities ofMMOGServers)

Caliban Tiresias Darklock caliban at darklock.com
Tue Dec 24 04:32:33 CET 2002


From: <sama at perchetopi.org>
> Caliban Tiresias Darklock <caliban at darklock.com> writes:

>> Once you get into the LM/HM/MM arena, it's question 3 that
>> matters most.  Pretty much any server that handles more than 10
>> simultaneous players can probably handle as many as you throw in
>> its direction, provided you put it on a fast enough box and hook
>> it to a fat enough pipe.

> I'm curious about this statement of yours.  It doesn't seem *that*
> logical to me that a program which scales up to (let's say) 20-30
> or even 50 simultaneus connections can scale up to 2000
> connections, given just more bandwidth and horsepower.  Could you
> elaborate on that?

I was speaking more about the tendencies of developers than the
scalability of network code. Developers usually see networks in one
of two forms: a collection of single sockets, or a cloud of sockets
which is theoretically unlimited. When the number of connections is
in single-digits, they tend to think about them as single
sockets. But eventually, you cross a mental barrier and the
developer starts to see the connections as being "a lot".

This barrier is usually where the developer thinks *management*
thinks numbers stop and "a lot" begins. Management tends to say a
number they *think* is a lot, when they really just mean "a
lot". This is basic leadership; it's not enough to use vague
numbers, you need to specify EXACTLY how many. So when management
wants a lot of something, they pick a number out of the air that
they think is a lot -- and if it's really NOT a lot, they aren't
happy and it's all your fault. So you have to see where "a lot"
starts, and *give* them a lot -- instead of what they asked you to
give them. And most managers have young children who play console
games that top out at four, six, and eight players. More than that
in a game, and it's "a lot". (Accurate across the board? 
No. Accurate enough to keep your ass out of a sling more often than
not? Yes. Gross generalisations DO have real-world value.)

So when a developer writes a network game server and knows it needs
to handle more than ten simultaneous players, he TENDS (but is by no
means guaranteed) to write code to handle a theoretically infinite
number of players. There's a point in the design where he stops
thinking "NetConn connect[MAX_PLAYERS]" and starts thinking "NetConn
*connect=NULL". Once he starts thinking like that, you end up with
something that will be *infinitely* scalable in theory -- and scales
well up to thousands of connections if you throw it enough
horsepower and bandwidth. (If he's *also* written good, scalable
code, you need to throw it a great deal less of both.)

This isn't because network code is inherently scalable, it's because
developers tend to click their head from finite quantities to
infinite quantities at a certain point. Once they start thinking in
terms of infinity, they start coding in terms of infinity, and the
code is made more scalable.

  (The term "connection" as used here is not intended to imply a
  requirement for a persistent TCP connection, and applies equally
  to connectionless UDP or short-term TCP request sessions. Or, for
  that matter, any other protocol you might prefer. I say this in
  anticipation of the one idiot out there who is just itching to
  tell me that most MMOGs use UDP and there is no connection and I
  am stupid.)


_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list