[MUD-Dev] Star Wars Galaxies: 1 character per server
Caliban Tiresias Darklock
caliban at darklock.com
Tue Jan 7 11:02:15 New Zealand Daylight Time 2003
From: "Dave Rickey" <daver at mythicentertainment.com>
> I have many quibbles with your math
Okay, quibble with it.
1. Assume you can fit 50 characters on a server. (X)
2. Assume each player can have 5 characters. (Y)
3. Assume the average number of characters per player is 2.4 (Z).
4. You can fit a maximum of 50 players (X) and a minimum of 10
players (X/Y) on one server.
5. Since you have 500 players, you will need at least 10 servers
(F = P/X).
6. Since each player can have 5 characters, you will need at most
50 servers (M = (P / X) * Y).
7. Since each player already has 2.4 characters, you will need at
least 24 servers (O = (P / X) * Z).
8. Since you can't very well throw out existing characters, you
have to provide servers for them (S >= O).
Where's the problem? It's not necessary to specify what the problem
is, just identify where this *looks* wrong.
(You will almost certainly encounter dilemmas where you have one
slot available on server A and two slots available on server B,
but your last player has three characters that all need to be on
the same server. However, in this particular case, I am not
concerned with *how* you get the characters onto the
servers... just whether you *can* get them onto the servers. If
you can fit 50 characters on a server, then 1200 characters will
fit on 24 servers, but in order to keep your players happy you
will undoubtedly need one or two more to handle situations like
the above. Besides, if you want new players to sign up, you need
space for *their* characters too, so we can actually alter the
equation at the end of statement 8 to "S > O" in all but the most
pathological of circumstances.)
> (the process by which you tie "Y" to "S"
...is not mathematical.
Y does not affect S at all, mathematically. Y is an upper bound on
Z, Z is tied to O, and O is a lower bound on S. When Z rises, O
rises; Z may bump into Y, or O may bump into S, but when that
happens both Z and O simply stop. They don't move Y or S in
A real-world example might help.
Imagine that you have a pair of toy cars on adjacent tracks, and
there is a bolt solidly connecting them to one another. Label one
O and the other Z. Now place two bricks somewhere farther along
the tracks; one labeled S in front of car O, and one labeled Y in
front of car Z. When you move car Z, car O moves. But when one car
runs into a brick, the other car cannot go any farther
either... no matter how much track is in front of it.
At that point, some mechanism needs to step in to alter Y or S or
both. In this case, you need to move one or both of the bricks. If Z
has bumped into Y, then you can move S as far as you want and
nothing will happen. If O has bumped into S, then you can move Y as
far as you want and nothing will happen. But O and Z necessarily
move together, so when you need to move S or Y, you will *probably*
have to move the other in the near future.
<EdNote: Some rewording in the next sentence>
If you're thinking, "I'd put the bricks behind the cars," you're
missing the point.
> But this is simply flat wrong. You do *not*, under any
> circumstances, want to be telling a potential customer "You can't
> play with your friends."
However, if he actually can't play with them, that's sort of what
you *have* to tell him. What you want simply doesn't enter into it.
> If SWG has bought into a database liscense that says they may only
> have X characters per server, that's a business decision, not a
> design choice, and certainly not a law of nature.
Actually, it is. It's not the database license, it's the world's
capacity. Each server is only capable of handling a world of finite
size, and a world of finite size can only handle a finite number of
characters before you simply cannot have enough resources for
them. Even if you generate your world dynamically, using fractal
algorithms to expand the game world every time a new character is
created, you can still only have so much world -- mass storage space
is finite, system memory is finite, processor power is finite, there
are innumerable bounds and limitations on your server capacity which
will simply never be infinite in scope. Even if *everything* you
develop will *theoretically* handle an infinite number of
characters, it will never be able to do so in practice. There is
simply no way around this problem.
MUD-Dev mailing list
MUD-Dev at kanga.nu
More information about the MUD-Dev