Thursday, June 19, 2008

Second Life and Eve Online: single shards

Recently, Eve Online brought it's expansion "Empyrean Age" online. It seems to have drawn new players. I'm seeing more people online anyway, in the (Western European) evening, there's usually well over 30.000 pilots active with concurrency peaks over 35.000. In the trial period I did, just before Empyrean came online, it was often two to four thousand less.

Second Life on the other hand hasn't really been growing that much, recently. After a couple of concurrency peaks with over 60.000 players online in early 2008, it never pushed through; concurrency is still usually under that figure. Yet, Second Life has been really unstable now for quite some time, with outages and asset server issues abound.

Single Shard
Both Second Life and Eve-Online are 'single shard' environments, meaning that every player is online on the same instance of a virtual world. For other virtual worlds, sharding is used as a way to spread players over multiple instances (shards) of a virtual world. This allows for spreading workload, and helps tremendously with issues of scaling and performance. The downside however is is that players in one shard one cannot communicate, play with or against, players in another shard. For a social world like Second Life this is not acceptable, as much needed social interaction between groups of residents would become impossible!

CCP, the designers of Eve Online, also decided long ago they wanted a one shard world. That leaves you pretty much with one solution: grid computing, where the physical environment of the virtual world is divided over multiple, connected and communicating computers.

The Second Life grid
Second Life's grid is notoriously unstable. Periods of relative quiet are followed by weeks or even months of system outages, simulator crashes, lag and general unreliability, often blamed on the asset cluster that handles the residents' inventories (read: the database) or the SL simulator software itself. Eve online to me seems to run much more smooth and stable, even with over 35.000 concurrent users online. But I think there may be good reasons for that.

Uniqueness..
Each Second Life avatar is a unique composition of customized body shape and facial features, clothing, accessories like glasses, jewelry, watches, shoes et cetera , tied to an identity . The shape and position of all these objects has to be calculated in three dimensions, both absolute (all the objects that make up one avatar in relation to one another), as well as relative to the landscape, buildings and other nearby avatars. The same holds true for individual objects: each object is comprised of one or more prims whose (unique!) shape, texture and and positions have to be computed both absolute and relative. Finally, the landscape is different for all locations, with unique combinations of texture and shape in many places. In effect, there are many uniques in Second Life. That makes for a CPU and database intensive environment, I'd say. This is most notable at simulator crossings: if you cross a simulator boundary, the whole avatar package, again including calculations on absolute and relative positions of objects, has to be handed over from the originating sim (computer or CPU) to the other, often causing a slight bump or delay in movement.


..versus uniform objects

Eve-Online on the other hand is much more straightforward. There is no unique avatar, there is only a limited number of ships one can fly ; your ship is tied to your identity but it has no unique features otherwise. Each type of ship obviously has a distinct look and shape, but all ships of a certain type look identical throughout the whole of Eve. There are differences of course, these can be found in the configuration of a ship. What tools, drones or weaponry are on board, what cargo does it carry? But, all of these are represented by styled icons, which makes them easy to display, cpu wise. There may very well be no really unique objects within Eve! As for the physical environment: each region of space is made up of different solar systems, which in turn consist of stars, planets, moons, asteroid belts, stargates and stations and, of course, game elements like computer generated 'enemies', real players and their ships or objects. Some of the planets or moons in the systems are unique indeed and graphically beautiful to see, but their number is relatively limited; as are the other objects within a system. I think that on any given moment, your average Second Life simulator is dealing with much more unique objects than an Eve solar system contains.

To be honest, I have no idea whether each Eve solar system runs on it's own CPU or not. There is some slightly dated information that multiple systems can be combined on one server but that one system cannot be divided between multiple servers. Typically when jumping from one system to another, you experience the same bump one notices when crossing a simulator border in Second Life - and my Wine based Linux Eve installation often doesn't survive that bump. That would suggest something of a CPU handoff indeed.

2 comments:

Anonymous said...

Surely you're not forgetting the main issue with sharding: custom content. You can't have a world like SL with custom content constantly changing and shard it. In WoW, you just replicate the same scene and the same variations of sets of armour, etc. over and over again from the same finite set. In SL, new things are always being made, obviously.

Prokofy Neva

Sered said...

Good point Prokofy - thanks!