Friday, July 24, 2009

Identity: First Steps

I've begun to work more on the prototype for Identity. (Initial post here) I'd initially worked out the color picker interface with a moving avatar and then put the thing down for a while. I've since revisited the little fledgling game and added the characters you'll interact with.

Recapping from the first post, the NPCs are letters of the alphabet. This keeps things as simple as possible while letting the player remember specific characters pretty easily.

Each character is introduced to the world with a random color. This represents a personality type and general mindset. The character then has some basic directives.

  • Wander around, looking for others.
  • If someone is similar to me, approach them.
  • If someone is very dissimilar to me, avoid them.
  • If I'm around someone similar long enough, alter my attitude(color) to be more like them.

The player is perceived by these entities, but is otherwise a free agent. He can change his color at will, and they will act accordingly.

Once I got the basic attraction/repulsion/mimicry behavior in, I was able to watch patterns emerge. One thing that I expected was cliques. You'd get clusters of like minded people that would rove about, accreting others who were anywhere close to similarly minded. Unchecked, the system would stabilize in 2 or 3 major factions.

What I didn't expect was peer pressure. When I was able to go up to a small group, 1-5, I could easily match their color then slowly sway the group along the spectrum to whatever hue I wanted. With a large group, however, every unit was mimicking its neighbor, so I had a lot more competition for swaying a unit to change its hue. The tactic I usually ended up resorting to was physically pushing a character away from the group, then coercing it before it could return to the others.

My next steps will be to make the general behaviors more subtle, and to try and work in an influence stat, since some characters are more likely to sway others to their color than others.

Video footage below:




Labels: , ,

4 Comments:

Blogger Bez said...

Ah, this is inspiring. I'm really wanting to do some social modelling prototypes.

What's interesting is how similar this is to how we approached Goo!. Lots of blobs attracted and repulsed from one another. It taught me a lot about many vs. many interactions, and how you need to use simple rules to indirectly form desired behaviours. Takes a lot more tweaking, though, and obviously, N vs. N calculations can get heavy very fast. Do you do any kind of spatial culling? Quad Trees? Even a bucket system is quick and easy to do.

5:29 AM  
Blogger Rich Wilson said...

Honestly, since this is a quickie prototype and I'm still getting the hang of spatial culling algorithms, and I know there will ever only be 27 'characters' at one time, I'm just brute force checking every entity from every entity. If you've got any good 'getting started' sort of links to scene management algorithms like you mentioned, I'd be interested to learn more, as my current approach doesn't scale very well in the long term.

10:02 PM  
Anonymous Ed Kuehnel said...

Jesus! When did you get so smart?

10:29 PM  
Blogger rhett said...

i'd like to see some external environmental changes, like a hurricane, earthquake, etc to unite the group, and famine, plague, etc to make them turn on each other.

what are you modeling this in?

8:05 AM  

Post a Comment

<< Home