Why a good MMORTS with TA-esque dynamics can't be made now.
Posted: 12 Oct 2007, 09:08
TA dynamics demand exponential growth. Most popular RTSs' economies, in fact, demand exponential growth - essentially unbounded exponential growth. It's what It's what makes them fun. It's also what makes them infeasible.
I'm going to refer to such RTSs from now on as "fun" RTSs, because all of them are.
Keep in mind that exponential growth means exponential resource usage - CPU, memory, power. Lets say we double our economies every week - a terribly slow pace for a game. Remember that if you're trying even a little bit in current Spring single player, you can double your economy, oh say, every 5-10 minutes or so. Lets say 10, for the average player (never mind pros).
Therefore, a weekly doubling will amount to an economic expansion rate something like
This means that we have an MMORTS that is essentially paced over 5,000 times slower on a macro level than any current RTS game, meaning it consumes physical resources at a rate 5000 times slower. Okay, peachy.
Now lets say that every roughly 500 fun RTS resource units, gives you a shiny new unit to store in memory. Pretty good number. Convert our resources-per-week into units-per-week:
Do keep in mind we're only talking about one player at a time for now.
--But wait, mister Dragon. Can't you, say, compress some of that data? Some of those resources those units would take can surely be compressed by some fancy pants compression algorithm!
Okay - then lets say we have a 5:1 compression ratio. Hell, take a 10:1 compression ratio. A ten-to-one ratio of compression for models, location, pathfinding, simple AI, and whatnot. Okay, magical compression. Lets go with that. That means, memory-wise, we're more or less making
Now for the fun part: remember the exponential growth? This is where it comes in. The first week, we're doubling our 1 tank/bot/gundam/Saiyan into 2. The second week, we're doubling that into 4.
Can we come up with a formula? Yes we can!
Remember, I'm a lone player. Hey cool, there's 64*10 = 640 units I can play with at the 6 week mark! Hooray!
Hey, wait a second, its my next birthday! One year later( 52 weeks for the Gregorian impaired), i can have
2^(52) ~=~ 4.504 * 10^15 =
45 QUADRILLION JETPLANES WOO in my MMORTS
i spaem 45 quadrillion gatoer!
!!!!1111111!!!!!!!!!!!!!!!11oneeeoene
Lets say each compressed-unit-group takes up 500 kb (half a meg) of RAM for pathfinding, gfx, image, simple AI routines, whatever.
2.25*10^15 or 22.5 QUADRILLION megabytes of RAM. About 1000 times more than a gigabyte RAM card can offer. Imagine 1000 gigabyte RAM chips on top of each other - it would take that much RAM to store just the units of one player after a measly one year of MMORTS'ing. Never mind processing them all, or presenting the data to the user in a meaningful way.
--But multiple people playing mean that many units die instead of being stored.
You still have exponential growth. Watch the end-game charts for Spring. It's just slowed by a measly factor of two or three. You're still dealing with trillions upon trillions of things to worry about. And it works both ways; don't forget that more people means more units too!
--Aha! The developers can artificially slow growth by only increasing the size of the maps, playing fields, and tech trees, very slowly!
This may be the only way to actually make a fun MMORTS even remotely feasible in the long run. But think about it:
1) We're already dealing considering a pathetically slow-paced real time strategy game
2) Make it too slow, and it ceases to be an MMORTS and becomes an MMORPG, in a funky way.
3) To make it mathematically feasible, you would have to slow expansion to a point at which it wouldnt even be fun to use as a screensaver.
--But doesn't Moore's Law tell us that computers will simply become faster to accommodate our RTS?
Moore's law doesn't matter here, because it says that computational capacities double every 18 months, or ~78 times slower than our Really Cool MMORTS.
After a while, the growth of any fun MMORTS will exceed the computational capacity of a server, a cluster, and after a while, every supercomputer in the world - combined. It might take a while. Say, two years. Or three. But we're dealing with an MMORTS here; that's a standard time scale for an MMORTS.
At the end of your game's life cycle, there will be more units in your MMORTS than atoms in the universe (around 6.3 years, to be precise)
Please, stop talking about TA-like MMORTS. There's a reason the games quit after a few hours at most.
I'm going to refer to such RTSs from now on as "fun" RTSs, because all of them are.
Keep in mind that exponential growth means exponential resource usage - CPU, memory, power. Lets say we double our economies every week - a terribly slow pace for a game. Remember that if you're trying even a little bit in current Spring single player, you can double your economy, oh say, every 5-10 minutes or so. Lets say 10, for the average player (never mind pros).
Therefore, a weekly doubling will amount to an economic expansion rate something like
Code: Select all
50 weeks = 50400 minutes
50400/10 = [b]5040 times as slow[/b]
Now lets say that every roughly 500 fun RTS resource units, gives you a shiny new unit to store in memory. Pretty good number. Convert our resources-per-week into units-per-week:
Code: Select all
5000/500 = [b]10 units in the first week[/b]
--But wait, mister Dragon. Can't you, say, compress some of that data? Some of those resources those units would take can surely be compressed by some fancy pants compression algorithm!
Okay - then lets say we have a 5:1 compression ratio. Hell, take a 10:1 compression ratio. A ten-to-one ratio of compression for models, location, pathfinding, simple AI, and whatnot. Okay, magical compression. Lets go with that. That means, memory-wise, we're more or less making
Code: Select all
10/10 = [b]1 unit in the first week[/b]
Can we come up with a formula? Yes we can!
Code: Select all
2^(N) = Units after some number of weeks N
Hey, wait a second, its my next birthday! One year later( 52 weeks for the Gregorian impaired), i can have
2^(52) ~=~ 4.504 * 10^15 =
Code: Select all
45,040,000,000,000,000
i spaem 45 quadrillion gatoer!
!!!!1111111!!!!!!!!!!!!!!!11oneeeoene
Lets say each compressed-unit-group takes up 500 kb (half a meg) of RAM for pathfinding, gfx, image, simple AI routines, whatever.
Code: Select all
(2^52*500)/1000
--But multiple people playing mean that many units die instead of being stored.
You still have exponential growth. Watch the end-game charts for Spring. It's just slowed by a measly factor of two or three. You're still dealing with trillions upon trillions of things to worry about. And it works both ways; don't forget that more people means more units too!
--Aha! The developers can artificially slow growth by only increasing the size of the maps, playing fields, and tech trees, very slowly!
This may be the only way to actually make a fun MMORTS even remotely feasible in the long run. But think about it:
1) We're already dealing considering a pathetically slow-paced real time strategy game
2) Make it too slow, and it ceases to be an MMORTS and becomes an MMORPG, in a funky way.
3) To make it mathematically feasible, you would have to slow expansion to a point at which it wouldnt even be fun to use as a screensaver.
--But doesn't Moore's Law tell us that computers will simply become faster to accommodate our RTS?
Moore's law doesn't matter here, because it says that computational capacities double every 18 months, or ~78 times slower than our Really Cool MMORTS.
After a while, the growth of any fun MMORTS will exceed the computational capacity of a server, a cluster, and after a while, every supercomputer in the world - combined. It might take a while. Say, two years. Or three. But we're dealing with an MMORTS here; that's a standard time scale for an MMORTS.
At the end of your game's life cycle, there will be more units in your MMORTS than atoms in the universe (around 6.3 years, to be precise)
Please, stop talking about TA-like MMORTS. There's a reason the games quit after a few hours at most.