Representing unknown avatars in high traffic public spaces

Maciej Kuciara: Cyberpunk 2077 trailer concept art

Maciej Kuciara: Cyberpunk 2077 trailer concept art

“The Street.” That’s what Snow Crash calls it. The Street is a shared virtual environment that grew to be used by over a hundred million users. The author eases us into how avatars might interact in the Metaverse by describing a simple problem: how to reach the front door of a famous establishment.

If these avatars were real people in a real street, Hiro wouldn’t be able to reach the entrance. It’s way too crowded. But the computer system that operates the Street has better things to do than to monitor every single one of the millions of people there, trying to prevent them from running into each other. It doesn’t bother trying to solve this incredibly difficult problem. On the Street, avatars just walk right through each other.

You might remember that in a previous article, Griefing and the Metaverse, we touched on some of the issues involved when avatars collide. In an even earlier article, The sci-fi Metaverse is bad, we realized that the science fiction Metaverse is actually an unrealistic blueprint for what an actual Metaverse should be like.

When Snow Crash describes a high traffic public place, I think that they got it more right than wrong. When practical considerations need to come first, the Metaverse does not need to be a faithful simulation of reality. We could stop here and implement a public space with Snow Crash’s description of the Street, but there are additional practical considerations to deal with.

This really is a small piece on a larger discussion on how to handle scale. Let’s assume that we’ve solved the problem of scale on the back-end in a way that doesn’t split the client population into smaller segments. Everyone shares the same virtual space.

With the problem solved at the server side, how then, do we handle scale on the front end (the user’s client)? If we’re walking through a populated public area with only a thousand avatars, some just standing around, several hundred going one direction, and several hundred going the other, how do we even hope to faithfully reproduce that?

As our avatar travels, our Metaverse client will be assaulted by a stream of models and textures, as well as streaming data on position, and joint articulation (made worse with VR input devices). Even if we had Google Fiber to transmit all the data with very smooth updates, could our engine render a fast and consistent framerate that is suitable for a head mounted display? Unlikely.

Idea 1: Simplify the avatar (moderate feature reduction)

Nintendo Wiki: Mii Plaza

Nintendo Wiki: Mii Plaza

When I first selected the Mii Plaza image (above), I had originally intended to use it purely as a counter-example. But after some more consideration, it has kind of grown on me. If we’re in an area where we’re drenched in avatar data, we could dynamically choose to abstract the avatars into something less resource intensive (network, CPU, and graphics) for the client machines. For a client, dealing with the  load from this kind of representation is less of a problem. Perhaps this could be the mobile experience? There are simple models, simple textures, and a limited number of joints to articulate.

We may still need a few circuit breakers, but the solutions are simple. As the client load increases, we could reduce the draw distance for avatars. Second Life uses another approach where it reduces the update rate (of movement, articulation) for avatars which are further away.

In such a solution, I’m not sure if the whole environment (beyond just the avatars) should dynamically abstract itself to handle a high-load condition. Artistically, that may work out very well. On the other hand, it could be a case of, “Wildhammer Plaza was an awesome place until the digerati told everyone about it. Now the place is derezzed and crowded with Miis.” (You know, I could probably use a cyberpunk writer to create vivid stories which illustrate the pros and cons of design choices.)

Of course, a version of the image above could be how avatars are always represented in your Multiverse. They won’t take advantage of the detailed limb articulation that something like PrioVR might provide. They won’t be as creative as Second Life avatars. But they’re going to be easier to deal with.

Idea 2: Throw away the textures (moderate feature reduction)

DeFo: Ghost Traffic Controller

DeFo: Ghost Traffic Controller

Perhaps we want to prioritize avatar customization and articulation in our Metaverse. We’re still going with the Snow Crash idea that in a public space, unknown avatars are as transparent as ghosts. What if we literally represent them as ghosts? Do ghosts need textures?

We can still use some of the tricks we just talked about, like limited avatar articulation (a ghostly hand may not have individual fingers), limited draw distance for avatars, and a reduced stream of updates for avatars at a distance. The further a ghost is away from us, the more plausible it is that we’d need to process less information about it. At the far edge of our drawing range, perhaps only blurry form would suffice to simply indicate its presence.

Idea 3: Remove the individuals (heavy abstraction)

The first two ideas don’t address the issue of scale as much as they push back the number at which it starts to become a problem. That’s useful, but it doesn’t solve the underlying problem.

For this third design, I wasn’t able to find a singular artistic representation, but I do have two great inspiration pieces that are both animated. The idea here is that, at a certain number of avatars (or at a certain distance from them), you stop representing all the individual unknown avatars and you start representing a crowd.

The New York Times: Tracking Taxi Flow Across the City (click for animation)

The New York Times: Tracking Taxi Flow Across the City (click for animation and then press the play button on the next screen)

Click the image above and hit the play button on the next page. In this animated map, color represents a passenger being picked up in a taxi. As a design inspiration, I saw this as a great way to represent the presence of anonymous avatars in a high traffic public space. The more that are congregated in an area, the bigger or brighter the mass.

hint.fm wind map: March 13, 2012 (click for animation)

hint.fm wind map: March 13, 2012 (click for animation)

Click on the picture above to see the animated display. I hope you liked it as much as I did. I think this interactive wind pattern globe is even cooler. This represents something different. While the first animation represented events or existence, the second animation represents motion. The two abstractions give us mass and flow.

The problem that we’re trying to solve here is that if we try to represent every single avatar at all times, we’re going to be overloaded. But what if we represented them in bulk?

We can display the mass of avatars and the movements of avatars, but not the individual avatars themselves. The crowd of ghosts could be represented by a ghostly mist, fog, or cloud. (And a ghostly mist, upon close inspection, might resolve into the individual ghosts that were detailed in the previous idea.)

This idea plays very well with another aspect that we may be looking for: anonymity. In Griefing and the Metaverse, we touched on the problem of manual and automated data collection by third parties (whom wish to create dossiers on other users). A user that is lost in the crowd is not revealed to third parties. Further, a user who desires privacy and anonymity might even select that they don’t even want to be resolved as an individual ghost in a public space.

The problem we have to be careful about is creating a user which is invisible and has the ability to spy on and stalk other users. For this reason, a user who chooses to always remain in ghost form should resolve any other user (beyond selected friends or a public performer) as an anonymous crowd and ghost form. (In this idea as well as the other two, a user would be able to select if their avatar is fully materialized to known friends.)

I think that the crowd approach can reduce some potential griefing in a public space. (Be sure to check out Penny Arcade’s Greater Internet Fuckwad Theory if you are not already familiar with it.) Someone can be as outlandish as they want and actually attract their own audience if they’re entertaining enough. I might just want to see an avatar that is wildly gesticulating and contorting themselves into anatomically impossible positions as they play their speedcore music. But at the same time, their opportunity to be a public annoyance is limited if they are just as easily folded back into a crowd.

From a resource perspective, the crowd idea would scale extremely well. We paint a landscape with a forest and not all the individual trees. On the server side, we no longer have to stream individual anonymous avatar data to the client. The server would send high level crowd updates in their place. It could scale very nicely.

How would you tweak this idea? Do you have another great way of representing unknown avatars in a high traffic public space?

Tags: , , , , , , , , ,

One response to “Representing unknown avatars in high traffic public spaces”

  1. Shaun says :

    “Second Life uses another approach where it reduces the update rate (of movement, articulation) for avatars which are further away.”

    That is correct, but there is more to it.
    What Second Life does is pretty cool.
    They convert the avatars into 2D representations called “Imposters”.

    http://wiki.secondlife.com/wiki/Avatar_Impostors_tech_details

    This post explains it better: http://blog.wolfire.com/2010/10/Imposters

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: