Chunky monkey

| 09 March 2007

So whilst sitting here at work, unable to really do anything productive due to waiting on other people - as usual - I have been perusing the various VG community forums and websites. One of the issues that I have seen brought up, and addressed today was that of "Chunking". This is similar to "zoning" in other games.

In Vanguard, the map is broken up into 2km x 2km segments. Each segment is dubbed a chunk, and I would imagine each chunk has its own server process (based on how Brad described this today on the FOH boards).

There are some downsides to this - in that you can only exist in one chunk at a time. Now this sounds like this is working as it should, as you should not be able to be in more than one place or chunk at a time. However, this creates invisible barriers in the world. This does not create a "seamless" world; at least not in the sense most gamers think when they hear the term. DAoC and WoW are both seamless worlds. You can run from one side of a continent to another without ever really noticing where one zone line ends and another begins.

Some will argue that WoW still has small entry ways to different zones - and they do. However, the movement between adjacent zones - and their connecting pathways - are truly fluid and seamless. You can easily kite mobs from zone to zone, engage in combat (both PvE and PvP) across these zone lines and not notice you are crossing them at all. So yes, while technically you are moving from one distinct zone to another - while in a given zone, you are not encased in some plot of land with obvious zone borders (mountains and such aside).

In Vanguard however, you can easily see most of these seams. Especially if you have a torch lit, as the light from the torch does not pass by the seam line. As well, if you happen to see someone "chunk", it's very easy to spot. They stop moving forward, but continue to run in place until they "pop" through to the other side. There are also problems chunking, where certain aspects of your current game state changes. For example:

  • Torches that you had lit will become unlit
  • Pets might disappear
  • Auto-follow is disengaged
  • Mobs that have aggro on you do not chunk with you
  • Some people experience "falling through the world" immediately after chunking
So, obviously if each chunk is its own server process, either on the same machine - or different; the game has to hand you off to the next process when you chunk. The problem is, some of this data is not being handed over, as noted in the list above.

Obviously, I do not have access to the game code to see how this is implemented, but it's a nice experiment in guess-work. I would think this can be improved somewhat. One major thing I think could be done is to do pre-transfers. A few yards from the chunk line, you pass the user info off to the nearest chunk(s), and when they hit the line, you issue a single instruction that tells the new chunk you have passed the line, and to make you active in this new chunk. Depending on how user data is stored on a machine, it might be possible to simply pass a memory address over, then the instruction to "chunk". When the data is pre-transferred over, the user's client program (vgclient) would then start pre-loading any assets needed. It seems this step is already done - else you would not be able to see the critters and players in another chunk moving around.

It just seems that, while the current system is pretty interesting and I am sure required a lot of coding to make it work, it could be done much better. Something to keep in mind for games I might develop in the future :)

I think DAoC had the basic overland stuff down pat in this regard. I don't remember every noticing when I ran across "zone lines" in that game. Of course, I only played for a few months - maybe they did stuff differently in the newer content areas.

0 comments: