Wednesday, May 21, 2008

Goodbye, Cruel Carbon Footprint!

Well, I'm off to blow a lifetime's allotment of carbon... Hawaii and Ireland will take up my time for the next month.

If you're dying to see my amateurish photos, they'll pop up here depending on internet access and general laziness.

Tuesday, May 20, 2008

Messages I Hate

This is a ranty-rant-rant.

Brenda Brathwaite linked to this.

I hate this... little piece of software.

I wouldn't hate it so much if not for the author's message on the forum in response to "what are you getting at?"

" I don't know. Do you? "

This faux-elegant statement, this nasty little "I'm so clever and artistic" response, it is typical of the most worthless parts of the "artistic" community. It is everything that is wrong with the artistic community in general. "My message is sooooo deep you need to look inside yourself! It's so deep, it's IN YOU, not me!!! WOooooOOOooooo!"

I doubt the author of the game is as pretentious as I think he is. In fact, I doubt he's even as pretentious as me. He probably doesn't deserve my bitching.

But these kinds of games... THINGIES... are popping up all over. I hate them. Universally, they have all sucked. Even the ones that are more game-like, such as the Airport Security Check one or the "Real Lives" one.

There's nothing to be learned by playing them. Any message they have is cheapened by reliance on meta-gaming - by abusing the "magic circle". People do not generally kill because they are curious, or because they think there will be no consequences. There are many reasons people kill, suffer, love, whatever your message might be. Few of those reasons should be "because they are playing a game" or "because they couldn't find anything more interesting to do".

I'm not against games that have a message. But there are two requirements for me to think they are not pieces of shit.

1) They have to be games. Fuck this noninteractive, one-choice, painfully simplified crap. Playing a game is a process. That's the strength of gaming.

2) The message cannot be a snapshot. In order for a message to be told without cheapening it, the message needs to be in the game at a deeper level. The players need to experience the choices and circumstances that lead to the situation. That's the strength of games, that's the ONLY way they can send messages better than any other medium.

Sure, there are shortcuts. Maybe even exceptions. I don't claim to be The Authority.

But I hate these "games with a message". Their messages are insulted and insulting due to lack of depth, oversimplification, and painful transparency. Then going around being proud of your "message"? Ugh.

If you don't want to make a game, send your message in another medium.

Monday, May 19, 2008


I was reading an article I'd found a link to. It was interesting, but what was really interesting to me is that the cadence and word choices seemed very familiar. Who wrote it?

Oh, of course. It was Pinker.

I'd recently finished reading his book "The Stuff of Thought", so I remembered his style. Of course, the book is carefully edited - both by himself and by others - so it's not quite as raw.

As theorists go, Pinker always struck me as very interesting but a bit of a lightweight. As linguistic theorists go, Pinker can't be considered a lightweight: that would imply that there are heavyweights somewhere in the field.

Any way you measure him, I really enjoy reading Pinker and find his point of view just different enough to make me think, while not being so different as to make me flat-out reject him.

If you're in the mood for a rather interesting essay on dignity and bioethics, here it is. It's quite long, though. That's also par for the course for linguistic theorists, sort of like mathematicians who can't help but fill their books with formulas.

These days I have found myself becoming very strict about specialists: if you aren't a specialist in the subject you're writing on, I'm likely to dismiss you as a kook, wannabee, or even worse: some idiot with a poorly-thought-out agenda.

So the idea of Pinker writing on bioethics leaves me nervous in the beginning... however, Pinker is not writing about bioethics. He's writing about the meaning of the word "dignity".

That's well within his specialty, even if the essay frequently branches out into some other topics. So I lend the essay some credence.

The fact that it agrees with me on almost all counts probably helps, too. :D

Saturday, May 17, 2008

Imminent Pictures...

Soon I leave for my month of vacation. Chances are, I won't make ANY posts during that time.

If you want to see photos of my vacation, you should probably watch my new Flickr account. It's got a few pictures in it already, because I'm a shitty photographer and I'd like to be a bit less shitty before I go.

Friday, May 16, 2008

Hacker Movie!

I saw Live Free or Die Hard... here's an idea for a hacker movie. There are several hackers working together. All of their hacking is completely plausible. BUT, when they are around non-hackers they use silly graphics and lie out their teeth about what is happening in a way that looks exactly like the "hacking" you see in most hacker movies.

The action comes to a head when their boss won't leave the room and they're trying to stop a hack attempt... so they turn off the server then give an epic description of a battle they're not actually having... while they're distracted, the enemy team steals their boss' laptop.

Eventually, their use of stupid graphics and lies ends up saving the day. I don't really know how that would work, though.

Knights of the Greenback

I have a long-standing interest in the economies (and cultures) of massively multiplayer games. There are a few things that really interest me about these systems, but a few of the major factors are that (A) they adapt much faster than a real economy and (B) the distribution/creation of goods does not have to follow real-world algorithms.

Of course, to economists, massively multiplayer games are something of a silver bullet. If only they could find a way to load them into their gun, they could really get some great research in!

But, like all games that have a "purpose", games that are economic experiments will pretty much suck. So economists grind their teeth.

To me, the cool thing is not the idea that we could study shadows of real-world economies. I'm of the opinion that such studies would be hopelessly damaged by factor B. It would be equivalent to calculating the optimum approach for the space shuttle with a high school physics textbook. You know, the one that starts every question with "ignoring air resistance, we can calculate the..."

Instead, I'm a big fan of taking factor B and running with it. After all, as technology advances, our method of creating and distributing goods (and what kinds of goods) radically changes. The idea that technological advances are "more of the same, but better" is crap.

A cell phone is not "more of the same, but better" to third world populations. It's "this changes everything!" Similarly, vaccines aren't just "more of the same, but better" medicine. The combustion engine isn't just "more horses, but better". The gun isn't "a bow and arrow, but better". It may appear that way at first blush, but once it's out of the starting gate, it will finish the race before its predecessor even gets in one lap.

My interest is therefore in modeling the effects of this kind of advancement. Since a massively multiplayer game can more or less arbitrarily set the distribution and type of goods (and what those goods can do), I think it would be interesting to create a world to take advantage of that, and get some interesting data on how it affects things.

Specifically, I'm thinking of the idea of many worlds, each of which has different economic and technological underpinnings. For example, a post-apocalyptic world where technology is high enough that people can survive in small enclaves. A world of high fantasy and magic, where monsters run rampant and the economy is largely about how to travel and communicate over distance... a world of tribal plainspeople where gods exist and a major part of the economy is in sacrificing to them and receiving their blessings... there are a million possibilities.

One of the big problems with this is player population. It's almost impossible to guess how much population a game will have, and if you aim for a specific amount, you'll probably either never reach it or blow right past it. This idea of "gated worlds" would allow you to control the population in any given economy by allowing or disallowing players access: if a world is getting too hot, block new players from going there. If a world is too cold, make the player advantages of getting goods from that world higher. Add new worlds (even simple duplicates) as needed.

Of course, you'll still have the problem of a minimum player number you'd have to reach... you need the game to be fun and exciting enough to draw players in. Economies aren't fun and exciting as they stand.

The idea of a bunch of very unique worlds... that's pretty exciting. Especially if there's some kind of advanced crafting system and interpretive transitions: if you're a shaman moving from the tribal world to the future world, you transform into a hacker and all your shamanistic equipment transforms into equivalent hacker tools...

This creates a semi-permeable barrier allowing you to see how things flow between economies, and it also gives the players something really interesting to play around with.

Most interestingly, if you could figure out exactly how, you could actually allow the players to establish and back different kinds of economic models. Not just "pick and choose" from existing models, but actually implement entirely new models. For example, what about an economic model where copyright protects a work from corporate or government duplication, but not from individual duplication? What about an economic model where the primary currency is dragon scales, and they degrade over time? What about an economic model where data is completely free - no copyright, no government-assisted protection... if you can find it, you can duplicate it infinitely? What about an economic model where cash is backed by acres of arable land?

Anyway, that's how I would do it, if someone gave me a few million dollars of grant money. :D

Thursday, May 15, 2008

Simple Memetics for Character Personalities

I've been reading Murray Gell-Mann's stuff, and one of the thing he talks about fairly regularly is the idea of logical depth and complexity. You can find a decent summary here, if you're interested.

The difficulty with algorithmic characters rather than scripted characters is not one of finding an algorithm. There are a lot of algorithms that work well enough, so long as you're not trying to do any natural language stuff. The problem is that the characters don't really have any depth. Of course they're going to be shallow and overly simple: they don't have decades of experience to make them complex! Haven't you ever seen Blade Runner?

So the real issue is how to inject depth into the characters.

The two basic methods are to script the depth or to generate the depth. Of the two, scripted is significantly better because it allows you to write in extremely deep things without needing to "back them up" with a full history or allow in a wide variety of muddying factors.

For example, if I want to make my game focus on the nature of honor, I can script in several different approaches for the characters to take. Not only do I avoid the need to script in some kind of system for algorithmically building honor codes, I also insure that the honor codes in the game are interesting and coherent to a modern audience.

"Scripted" doesn't have to mean painstakingly added for each character. If you script in the content once removed, you can allow characters to "grow" into the content. So far, the easiest way I've found to do this is using a simple system of memetics.

If you script in cultural memes, you can use a simple system of exposure to determine how strongly a character feels about a meme. While this can be done live, it is probably better to do it in a rough, approximate fashion while determining the character's associations, friends, living conditions, and so forth. IE, when you build the character, build his memetic framework simultaneously: don't try to simulate it explicitly.

In essence, this system means that if your parents are gamers, you'll catch the "gamer" meme. If your parents are religious, you'll catch that religion's meme. And so forth.

But this doesn't necessarily determine how you'll feel about a meme. The child of gamers might grow up a gamer... or he might grow up thinking gamers (and geeks in general) are pretty lame. Similarly, growing up religious doesn't mean you stay religious.

There's another scalar in addition to simple like/dislike of a meme. That's "obsession". Generally, the more challenged a meme is, the more you obsess about it.

What this means is that if you're a geek, but you're not obsessed, you're still a geek to the core. You just don't run around proselytizing. You're comfortable with the fact that you're a geek and other people aren't. If you're an obsessive geek, you tend to proselytize, and you tend to argue with other geeks of a slightly different flavor about which flavor of geek is best.

Similarly, if you're anti-geek but not obsessive, you're fine with the fact that there are geeks. You just don't think like them and don't like their stuff. On the other hand, if you're an obsessive anti-geek, you'll make fun of geeks and what they stand for.

There are some relatively easy models to control the spread of memes, how strongly you identify with a meme, and how obsessive you are about it. Adding in some noise is also a good idea if you're doing rough "backstory-style" meme generation rather than moment-to-moment simulation. I won't cover them here, because I want to cover something else before I run out of interested readers.

The big issue with this is the same as before. Producing a world full of memes and then haphazardly plugging them into a character's mind will not produce a meaningful character. There needs to be a landscape of memes, and there needs to be an understanding that some memes are tinier than others, and can actually be simulated by noise.

For example, people who are geeks have an opinion on Star Wars. Some of them may be sick of giving that opinion, but they still have an opinion. In a game, this is unlikely to matter. It's important that geeks have internal disputes and agreements, because that affects how geeks get along from moment to moment. But it doesn't matter that it's specifically Star Wars or exactly what their specific opinions are. You could just as easily replace Star Wars with anime or linux or make up some random new thing that sounds geeky.

The only reason it would matter is if there is stuff in-game that is associated with a given opinion. For example, if you have Star Wars stuff in-game, you'll need to keep track of that meme explicitly, so you can have certain geeks that buy Star Wars stuff and certain geeks that don't. But it's extremely unlikely to matter whether a geek likes a particular brand of linux: it can be simulated by noise without losing anything.

Anyway, it's important to realize that there is a very strong correlation between some memes. Someone who thinks about linux to any significant degree is also going to have a lot of exposure to Star Wars and anime. They may not like Star Wars or anime, but they'll have an opinion on it, have thought about it.

This correlation is not really a result of any kind of inherent connection between Star Wars and linux. It's a cultural artifact, and therefore needs to be programmed in explicitly. One way to do it is to use umbrellas: there is a "geek" meme, and all these other memes are subordinate. Another way is to use proximity maps and radial expansion: the Star Wars meme is fairly close to the linux meme, and very far away from the sports meme. Someone can be interested in both, but only if they have multiple points of interest to radiate from...

Anyhow, the memes will obviously need to be scripted specific to the game world you're interested in creating. None of these examples are of any use in a high fantasy setting. There, your memes are going to be more likely about racism, magic, honor, nobles... whatever you want your game to involve. You'll need to custom-script memes for every world.

Because worlds are very complex, it will require a lot of memes to get characters to a "minimum complexity" of realism. However, you can take a lot of shortcuts: anything that the player character doesn't interact with at all can be simulated by noise or by faceless, largely random memes that he never gains any opinion about.

And, of course, there are two additional requirements for this.

1) The character AI has to be strong enough to allow the character's opinion to matter. If there is a dueling meme, someone who is pro-dueling should duel a lot.

2) The world has to "clump" characters that share memes together. Whether this is in loose social groups (most of my friends are geeks) or in explicit structures (a fan club) is not really important, except as a matter of flavor. The only important thing is that the "social map" of the world is "bumpy" in way that makes sense.

Tuesday, May 13, 2008

Super Books

I've been thinking about electronic paper - you know, rolls like paper, thin like paper, image can change as needed.

There's a common sci-fi object - an electronic book. An electronic book is made of electronic paper and some kind of computery system to control what displays on the pages.

It always seemed thoroughly pointless to me. You wouldn't need multiple pages. The computer can "turn the page" without you having to physically turn the page.

But there is a use.

Imagine if each page of "paper" is a self-contained wifi-driven computer. Maybe it's paper the thickness of a credit card, with the edges not more electronic paper, but instead wafer-thin electronics.

Each page of paper could then be attached (magnetically, say) to the spine of the book. Or detached.

Then what you could do is disassemble the book. If there's something you need, "rip it out" and put it next to you where you can refer to it, play with it, change it however you need. When you're done, stick it back into the book.

It would effectively be a set of portable monitors - perhaps two dozen small monitors. They're relatively cheap, so you could actually pass them back and forth between collaborators... they're self-contained, frungible, and use insignificant power, so you could actually separate them from their book for a long time, swap them, submit papers on them, use them as game pieces... anything.

Now that, I think... that would be really useful. I would give up books and, probably, every other computer for that.

Monday, May 12, 2008


This review makes me sad...

I downloaded the Mabinogi client. It took a long time, but I was kind of looking forward to the game. It looked very interesting, for an MMORPG. IE, it looked a little interesting. It was theoretically based on one of my favorite mythologies.

Upon creating an account and launching the client, it promptly downloads nProtect GameGuard. Ah GameGuard, how do I love thee? Wait, I can't find a way. GameGuard is one of the unabashedly intrusive "piracy protection systems" that doesn't even have the decency to close when you're not playing the game.

The game was originally Korean, and evidently they're okay with that sort of thing. I'm not.

But it was too late, so I decided to keep going with the intention to at least get a taste for the game. So I try to make a character.

I spend fifteen minutes picking out various little visual details. Colors, shapes of the mouth, etc.

It tells me that I can't make the character I want to make because I don't have a premium account.

It turns out that every single option I chose was not available. Only three or four options from each is available to those with a free account.

These are not, you know, important options. They're the color of the eye, the precise shape of the mouth. They could have at least popped something up that says, "hey, everything with this little symbol is paying customers only!"

So, not about to (A) keep GameGuard on my system a moment longer than required and (B) redesign my entire character, throwing away 15 minutes of work, I uninstalled the damn thing.

I HOPE it uninstalled GameGuard... I can't find any remnants, but with these inane, insane, idiotic, insulting, overbearing, big-brother, invasive little pieces of shit, you can't really be sure.

So, that's my review of Mabinogi.

Sunday, May 11, 2008

Elegance and Complexity

I've been tearing up prototypes as fast as I can make them, pursuing something interesting. Let me describe it.

My first attempt, what sparked my interest, was to build a prototype for a kind of free running game. It was a one-player game with a stack of index cards representing "map tiles". The goal was to use a variety of relatively simple techniques to keep moving, and it featured a few simple pools that you draw on to perform moves. It was more of a toy, less of a game, I just wanted to see whether it could be done fun.

This kind of system, it occurred to me, could be useful in a variety of "skins". To prove the point, I made a system that used the exact same dynamics (set of pools, set of moves, and a self-building randomized map) to represent social interaction.

There were two problems with both of these games. The first problem was randomness: the way the maps were generated led to very weird structures (and personalities) that never would pass muster in a real game. The second problem was a lack of growth. To me, growth or progress is critical. These toys had none. They were simply "keep running, fool!"

It occurred to me that there was a connection between these two problems, so I began to explore the idea. The connection between chaos and progress.

In my exploration, I decided the connection was connection. In order for the larger scale to be interesting, it needs to have "clumpiness" or "roads" or whatever kinds of organized structure you can come up with.

This isn't actually a surprise, if you think about. The base play has these kinds of regularities. It makes sense that higher levels of play would be fundamentally the same. But a bit more depth, because there's something more to it than that...

In a game like, say, Dungeons and Dragons, you have a complex landscape of rules. But although the rules are complex, they are very regular. Certain "clumping", certain statistical groups, always crop up. Over and over. Both on a small scale - to-hit rolls, the potency of magic - and on a large scale - difficulty of monsters, level advancement.

I'm not talking about something weird and mystical, here. I'm talking simple patterns. For example, the magician gets few hit points. This is because he's not supposed to be taking the brunt of the combat, so you damn well better stick him in the back. The warrior's armor class improves as he gets better armor, but that same armor reduces his maximum dex bonus. Magical armor bypasses this pattern of better armor = less dex, but in return magical armor is rare and expensive.

So do you prefer +2 chain mail, or ordinary full plate? Just that simple decision results from the intersection of a few simple patterns: is the magical +2 better than the unaltered bonus from plate mail? Is your dex high enough to make it matter? The situation is complex not because the rules are complex, but because the situation lies on the intersection of half a dozen simple patterns that operate at different "levels".

Dungeons and Dragons isn't particularly elegant about this, but there are many games that are very elegant. Katamari Damacy is the obvious example. The patterns in Katamari Damacy - both in terms of gameplay rules and level construction - are very clear, very simple. They interact in a way that is simple as well... but still very interesting. I suspect there's a fundamental mathematical structure to the timing and layout, although I don't really know how I could even measure it...

A first person shooter has patterns as well. The interacting patterns of movement speed, level design, monster placement, resource allocation, weapon design, and the now-unavoidable "RPG element". If you want to simplify them, you can imagine each as a curve on a graph, and the juicy gameplay takes place where the curves intersect. They can't actually be simplified to a graph, of course, but it gives the basic idea: half a dozen colored wiggles that intersect in many places.

(In reality, I don't think they could even be simplified to a 4D chart... although maybe that's due to the fact that some things (such as level design) are actually a bunch of smaller, simpler patterns interacting!)

Now, this is all pretty simple, pretty basic. This really shouldn't come as much of a surprise to anyone. But if you think about it like I'm thinking about it, then there are some practices and predictions that you can make.

First, you have to remember that a game is the sum of all of its parts. Katamari Damacy is more than just gameplay: the fact that you recognize every silly object you're sucking up, the fact that it's about a kid with a really hilariously bad father, the fact that you're always helping people, all of that rolls up into a very nice bundle. Each of those elements can be thought of as a pattern that interacts, but there is a lot of complexity because they are cultural patterns. They are pieces of extremely, excessively complex patterns from the real world.

This muddies the water up significantly. Those patterns are harder to analyze (or, at least, require different analysis tools) than the much simpler, standalone gameplay patterns. Similarly, you can get away with a lot more immediately complex gameplay patterns if you base them on pre-existing patterns from other popular games... so if you're worried about how long it takes players to learn or become comfortable with various patterns, you'll find that you need to take that into account as well.

In order to try to get a sense for interacting patterns and how players deal with them, you have to account for "primed patterns" based on patterns the players are already familiar with. Otherwise, you'll end up with results that don't add up.

It isn't really feasible to make test games (or even prototypes) that leave out primed patterns, because every kind of play has some pre-existing example that will skew the player's reactions. Also, it is becoming obvious that the priming is a major part of player enjoyment, which makes sense, since it lets you tap into things they already enjoy and piggyback...

Although "pure" game tests are not possible, it may be possible to make a game that tests intersections without caring what the patterns are. If you have a pattern, it interacts with another pattern. By moderating that interaction (making it follow different rules), it should be able to be possible to test for optimal patterns of interaction between patterns.

It should be possible - in theory - to even replace patterns with other patterns to see the difference in optimal interaction algorithms. This would be a bit like spectrophotometry: you find out which "wavelengths" of interactions each pattern tends to produce, and from that you may be able to determine the "elemental makeup" of a complex pattern... but that's in the future. A more basic set of concerns:

There are definitely patterns that operate at different levels. For example, a fantasy game has a fantasy pattern (or, more accurately, a hundred interwoven patterns that don't separate very easily) that underlies the whole game. How does this pattern interact with, say, your combat pattern (which is also actually half a dozen interwoven patterns)? How "often" do they interact? How much "guidance" does one give the other? What kinds of interactions do they provide? Does it matter whether they operate in favor of the player, against the player, or in a more balanced role? Do those options even have meaning? Maybe accessible complexity of interaction is what matters, and not who the complexity favors.

Also, it's pretty clear that a game cannot be made out of single "threads" of pattern, because patterns tend to be imported in interwoven chunks. Does the player's familiarity with the pre-existing patterns cause them to essentially form a single pattern, or do we have to account for the internal "rubbing" of the cluster's patterns caused by our specific use of the cluster?

I've been trying to create prototypes, but none of them have been particularly good tests. Any ideas?

Hell, does anyone even know what I'm talking about?

Friday, May 09, 2008

It's a nail! They're all nails!

Did you ever think you might have the wrong approach?

I understand that some problems are easier to solve with brute force. Brute force tends to be exponential, though, so as the project grows, the amount of brute force required grows faster. How big does something have to get before the amount of brute force becomes prohibitive?

Ask the RIAA, they've found the edge.

To me, when I see a brute force approach, I think "Oh! Look! A puzzle!"

To me, word filters aren't the right solution. People are going to express themselves regardless of what words you filter, and there are quite a few people who are more offended by the filters than by the language. For example, someone saying "the dumbfuck totally reamed me up the ass with a cactus when he ditched" is fine by me. When some twelve-year-old starts spamming, it doesn't matter whether he's spamming homophobic swears in caps or just a large number of random symbols. Either way, he's a nuisance in a way that my potty-mouthed friend is not.

To me, a word filter is a desperate attempt to cover asses, not an attempt to actually solve any kind of problem. That's the problem with a brute-force approach: it's usually treating symptoms, not diseases. Dying of cancer but with wonderfully clear sinuses is still dying.

The issue here is that the disease is not one that actually relates to chatting. In fact, it has many symptoms endemic to the game world that have nothing to do with chatting. (Hah! I used "endemic" properly! HA HAHAHA! Well, I can cross that off my list...)

What is the disease?

Maybe it's lupus!

Hee hee... no, actually, lupus is a pretty good analogy. Lupus is an auto-immune disorder that causes the body to attack itself. That's pretty much what MMOGs are doing: some bits of the body (certain players) are viciously interfering with other bits of the body (everyone who is not a dick).

The question is not "why is player A griefing player B". We already know why: players are dicks. The question is "what design would make player A unable or unwilling to grief player B without reducing the fun for either of them?"

I think it has to do with population density, and I've got a lot of little theories on exactly how and why... but what do you guys think?


Finally! A case of lupus!

Thursday, May 08, 2008

Open that little black box, yeah!

The other day, I was talking to a friend about those distributed computing things, like SETI@home and the protein folding thing. The protein one interested me. I said something like:

"The weird thing is, we don't know the algorithm for protein folding - not even a little. So they're probably folding at random and then, what, testing to see whether any of the folding was close to a physical test fold?

"Maybe they're testing folding algorithms? Like ALife, testing to see which algorithms produce closest to known results, reproducing the best? No, that would require one hell of a breakthrough in an unrelated field before it could be done..."

Apparently, they were musing the same things I was musing, because they've largely given up on the idea of using your spare CPU cycles to randomly fold things. Now they're using YOUR spare cycles to make YOU randomly fold things. In all honesty, that's a much, much better idea.

Still, even with this new, less stupid method, I don't think anything will come of it. All of these things stink of bad grant allocation. Sort of like when you see those images of children on milk cartons, and they say things like "32 billion children who go missing are rescued every year..."

Yeah, but how many of them were rescued because their faces were on milk cartons? Zero? Negative two?

Protein folding is an important endeavor, but does this help? Even if it does, WHO does it help? Who gets the final patent? Who gets to charge $120 a milligram?

Anyway, check it out. See if you disagree.

Saturday, May 03, 2008

Generating Uniqueness

Once again, I'm interested in how to generate unique content. For me, this usually means NPCs. After all, if you can generate unique NPCs, everything else is easy. :D

To me, there are a few specific types of NPC uniqueness to be achieved. Let me go over them.

The first, and easiest, is simple statistical deviation. He's got a strength of twelve, she's five foot three, he has a kindness of 43, she has a longsword +4 vs dragons. Whatever. Also included here is anything where you have a fair number of options that are a list, rather than generated on the fly. For example, hair type or elemental alignment.

Statistical deviation is good because it is fairly cheap to implement and allows for detailed feedback. If his strength is twelve, he can just barely lift the grate. If she's five foot three, you look down on her head and can't find her in a crowd. Both scripted and emergent feedback are fairly easy (scripted: the grate requires 11 strength, emergent: people obscure the camera, so you can't see the girl).

However, statistical deviation is fairly boring, especially when using large numbers of characters, very small numbers of characters, or player-rolled characters. In these situations, the deviation is either too weak, too random, or a maddening gambling game (click reroll eight billion times).

If you don't see why, try rolling up random characters in your favorite tabletop RPG. If you roll up a few, you end up with weird, pointless characters that would never make a good party. Roll up a lot, you start to lose track of which characters are "interesting", and even which exist. Try to roll up the best you can get, you'll find there's always something that's not quite how you wanted it... maybe next time!

So, you need more than statistical deviation. Another method is associative deviation, which associates characters with some in-world thing to give them an anchor. This random character is a member of the mage's guild. That random character is in love with the queen. That character is an outcast, and that character is a republican. Alignments are a typical example of this, although I really hate alignments.

These are different from things like elemental damage type and hair color because associative deviation gives you a "path" between characters, other characters, places, and actions. Mage guild members "clump up" and cooperate. Outcasts are treated like crap by almost everyone. Lawful evil people tend to pursue specific activities. I mean, if hair color or elemental damage type is a significant cause of social "clumping", then sure, it's associative rather than statistical deviation.

These are not too difficult to create, and you can weight them to show up more frequently or less frequently based on a large number of factors. This allows you to create a pleasantly "bumpy" "topology" of NPCs instead of the painfully bland "field of nameless NPCs all alike".

Obviously, categories are just approximations. Some things will be both statistical and associative. For example, how wealthy you are. It's a simple statistical deviation, but it has emergent (and probably scripted) effects on how you interact with the game world.


Those are the two easy methods of generating unique characters, but while they create unique characters, they don't really create unique characters. Worlds inhabited by such NPCs feel kind of flat and full of pointlessness, although it can be a good starting point for a few scripters aiming to generate a few thousand NPCs.

There are a few more ways of generating unique characters, which I'll explain.

One is superlative deviation. This is basically statistical deviation, except taken to an absurd extreme. For example, the range of strength might be 20-80. This character has -32, or maybe 499. By falling massively outside the bounds of common power, the deviation causes him to be very unique. Of course, it needs to be very uncommon: if every tenth person has superlative strength, it's not really very unique or interesting. Similarly, the character has to know he has superlative whatever and adapt his performance (and, preferably, his social interactions) to his superlatives.

There are a wide variety of superlatives that don't require any kind of baseline statistical deviation. For example, you probably won't have statistical deviation on how well someone can hear, but you can certainly have someone who is deaf, or someone who can hear people's heartbeats from a mile away.

The difficulty with superlatives is balance. You either have to throw balance out the window, or you have to carefully control who can be superlative, when and where.

Another kind of uniqueness you can have is reactive deviation, in which a character is given a very unusual, unique way to react to certain kinds of things. For example, one character might be allergic to sunlight. Or maybe a character is terrified of the water. Maybe someone really, really likes donuts.

It's actually not too difficult to whip up a few thousand unique combinations using a few simple tables, but you need to have a character AI advanced enough to change its actions based on its goals and reactions. It needs to be able to hunt for donuts, or notice water and react to it. Moreover, it can't be blind about it: someone who really likes donuts is not going to jump off a cliff after that Krispy Kreme, unless you're doing a comedy game. He's just going to get really angry at whoever wasted the donut. Similarly, the man who fears water needs to be able to try to fight that fear if circumstances require.

This also covers characters with unusual or reversed progressions. For example, if someone starts at a high level and loses levels as he gains experience. That's not such a flat example as a fear of water, but it falls in the same category.

Obviously, this requires pretty solid AI and a fairly good sim, although it's not impossible. My favorite side effect of this is that it's pretty easy to make a character arc out of their strange reactions: he has to overcome his fear of water, that one has to fight his donut-stuffing mouth or fail the team...

However, my favorite kind of uniqueness is recombinant content. This has an easy example, but it's nightmarishly complex at the deepest levels.

The example for recombinant content is the ability to combine a wide variety of clothes templates and color them however you want. If you want shorts and a green polo shirt, fine. If you want fishnet stockings and a fuzzy bodice, fine. If you want fishnet stockings and a green polo shirt, fine.

This allows the player to create a unique look out of a wide variety of pieces.

The problem with it is twofold. First, the characters have to have a heuristic to keep from idiotic combos (IE, fishnets and polo shirts). This isn't too terribly hard with clothes - a few subculture markers and some basic color rules will do the trick. But the second problem is that clothes are a rotten, shallow example.

Instead, the real example is the character of the character. While characters have a baseline AI that handles the basics and may have statistical deviations for personality traits, the personalities these produce is bland at best and terribly broken at worst.

Instead, a series of "pieces" could be combined, like combining clothes. Like clothes, the pieces can vary in and of themselves, having different "colors", "patterns", "layouts", "textures", "prints", whatever you can think of that might have a correlation.

"Pieces" are significantly more complex than clothes, largely because they're not exactly clearly defined, are they? Are pieces memories of past events? Or are they special personality tendencies to give someone that interesting, subtle oddness? Or maybe they're connections to other characters and places? Or buried elemental capabilities that tend to surface, granting both power and odd behavior?

The choices are essentially unlimited, which is the most difficult part of this, for me. Because, when you implement it, you have to cut the choices down to just a very select subset. One you can not only build heuristics for assembling, but one that you can make have effects in game that make sense.

Anyhow, those are my five ways of making unique characters. Anything to add or comment on?

Friday, May 02, 2008

Hooray for the Uncanny Valley...

The video I've seen of GTA4 is irritating to me, because they still use canned animations... I find canned animations are distractingly inhuman. "Uncanny", yes. Especially if they're "realistic".

Well, for those who want to know more about the uncanny valley, there's a series on youtube. Although it's not exactly in depth (it bears an uncanny-valley resemblance to an actual paper on the subject ;) ), it has some interesting ideas and it's from someone who is definitely an authority in the field.