Saturday, December 24, 2005

Part Two; Squishy Brains

This series on how to use pattern adaptation control begins here.

I'm not incredibly happy with the following essay. There's no punch to it. I may replace it at a later date.


The problem with people is that they are endlessly fuzzy.

To coin a fake Wise Buddhist Saying, "a mind is not to be compared to iron or stone, but to water or fire." You should be deeply aware of this, regardless of whether you plan to use pattern adaptation control or not. People are mushy, squishy, prevaricating sloshings.

Some people are proud that they have a strong dedication to a given idea(l). For example, some people are strongly dedicated to censoring anything anyone might say that might offend someone somewhere. I am proud of my dedication to what I consider to be "good science" - by which I mean science that is honest and brilliant, rather than science which necessarily serves a moral purpose.

But these dedications are like a whirlpool or a tornado: they are formed by the eddies in our lives, and they spin ever-stronger as they cause us to actively persue more eddies of that nature. My dedication to good science would fade if I was tossed in a Shanghai jail or some other place where there are no science-y tidbits to feed on. In similar environments, a censorship advocate would not be so concerned with censorship. But perhaps a humane treatment advocate, such as Gandhi, would flourash in such an environment. It depends on the kind of interest, what it feeds off of, and whether it can feed off of anything present.

This sounds like a rather cold dissection of people, but it truth doesn't much care how happy you feel about it. People act depending largely on the situation, and tend to fall into one of two or three categories in any situation, depending on the "spin" they enter it with. If exposed to a new, unfamiliar situation, I am likely to approach it with scientific curiosity and a sense of skepticism. In the same new situation, a censorship advocate might approach it thinking, "is it good for society?" We may end up acting the same way in the situation, or we may end up dramatically different. But we always act in one of a limited number of ways.

As we become more accustomed to the situation, we'll use more nuanced, efficient interactions. Whereas we might deny or blindly obey the wardens in our prison at the beginning, we'll quickly learn more efficient actions as we grow more familiar with the pattern. As we adapt to the pattern.

That, of course, is the key to pattern adaptation control.

When you've designed something, there will be a few simple "use cases". Your mom might use Word for Windows to type up Christmas letters - type type, print, hand-fold, and mail. That is a basic use case.

You, on the other hand, might import graphics into Word, use some pretty layouts, and have a remarkably artistic printout. That is not a basic use case. That is an advanced use case that very, very few new users would even know is possible, let alone how to use.

By simply measuring how the user interacts with Word, you can determine their level of expertise at various use patterns. Do they use the pull-down lists, the icons, or the keyboard shortcuts? Do they change the default options? Do they monkey around with the scripting language?

Of course, few programs bother to do this because they have no meaningful response. What do you do, say, "wow, you're really good at this?" No, what a waste of time.

So what programs do is they have all the options there, but they headline the basic use cases. That's fine, but it's not enough for me. You see, doing that, you're teaching the same pattern no matter what their preferences and capabilities. Also, you're offering no reward for deep, expert use, so your software will rarely get used to its full potential.

By combining the concept that minds are squishable and programs changeable, we can create a kind of synergy between the patterns in the user's mind and the patterns in the program's use. Whether we're writing an interactive novel, a space shooter, or a spreadsheet, we can create a powerfully helpful, organic interaction specialized to each user. All it takes is a little bit of thought ahead of time, and a program that can modify itself on certain levels.

And a knowledge of mental patterns.

The reason that software doesn't do this now, not even games, is because it is a daunting thought. The recombinatory capabilities are staggering, unpredictable, and theoretical. Game designers therefore assume all players will have the same basic set of mental patterns (skills, culture) and use those basic patterns to hook the player into the pattern of their game. Which mental patterns the game designer assumes players have determines which genre the game falls into.

Unfortunately, not everyone has the same basic patterns in the same amounts. Genres lack mass appeal, and even in-genre players have wildly varying opinions. I hated Half Life 2, but liked the Halo games.

Some players can't stand games of luck. Some players will always put all the girls on their team, even if the team stinks. Some players will kill the irritating mascot and leave him dead for the next forty hours of gameplay, even though it makes the game extremely hard.

These variations and vaguaries are a pain in the ass to traditional game designers. "Play it the way it was meant to be played!" This phrase is becoming less common as games become more mainstream, partly because nowadays the player is always right, and partly because nowadays there is never more than one or two very linear ways to play a game.

These linear designers will always be denied mass appeal. It is simply impossible to please all the people with a single offering. My mom will never play No One Lives Forever, even though the writing is something she would enjoy, because the gameplay is something she would not enjoy. She doesn't want to play that game.

An example of a game which offers a little more flexibility is Daggerfall (or, if you prefer, Morrowind). These games allow you to go anywhere and do anything. But they still don't actually offer much in the way of different gameplay - the freedom is illusory. None of the ways of playing the game would appeal to my mom.

The patterns are not adaptive. Instead, a giant pattern is created which you can explore. That's inefficient, to use the mildest possible term.

Better to create a pattern that they explore, and use how they explore it to create the next bit of the pattern.

This sounds a bit like creating your game or plot "automatically". To some extent, it is. But here's the key:

You're not telling your computer to build the game or the plot automatically. You're telling it to get the player to this pattern here using whichever methods the player likes best.

You don't (or, at least, I don't) know of any way to get the computer to automatically detect and synthesize patterns. I can't describe how to build patterns to a computer. All I can do is describe possible patterns and how to pluck them.

For example, Machine City has a plot involving the destruction of the Machine City. It's intended to be an emotional time, as you race around watching the city burn, the people run away, and the buildings crumble. It's a mandatory plot point. You will get there.

But how you get there - and what you see when you do - depends on what kind of player you are. The game uses your preferences to hook you in and warp your perceptions. If you have shown great affection or malice for any particular character, that character plays a prominent role in either causing or highlighting the destruction. The game chooses the destructor in the reverse fashion: whichever faction you haven't had all that much to do with is the one with enough firepower to raze the city (or turn it against itself, etc, etc, etc).

Now, each of these approaches has to be spelled out to some extent. If the monsters attack the city, things go this way and look that way. If the shadows attack the city, something slightly different happens. If you are fond of the city's governor's family, your missions will involve trying to save them. So on, so forth.

But these approaches are also largely combinatory. I don't have to explicitly state "If you like the governor's kids and the city is invaded by monsters and you've shown a preference for high explosives then this happens". Instead, I say, this happens for that situation, that for this, and those for these. The situation is created out of an amalgam: enemies and layouts determined ad hoc rather than from my explicit statements.

The end result is that the core pattern I'm putting into the player's mind is the same: the city is destroyed, how horrible. But the specifics vary because I build off of the most powerful patterns already in their heads. If you like children, you'll find that the destruction of the city contains an unusually sharp "kids in danger" motif. If you like explosives, the city will be exploding as it burns... and the enemies will be resistant to incindiary ammo.

All of this is measured without the player noticing. You don't have to ask, "do you like kids?" Instead, you simply give them the opportunity to interact with kids. If they take it, they like kids. If they don't, they don't.

In this case, the reward for advanement is advancement. That's enough for a game. In the case of a spreadsheet or help file, you would need a very different reward, but the basic idea is the same: people come in with particular preferences. You can measure these preferences by measuring how much they use particular parts of your program and with what skill level. Then, you can evolve your interface and contents specifically to meet their requirements.

The serious problem here is that you can only include patterns you can think of. Without a computer-based language for mental patterns, the computer cannot "discover" new patterns, only measure and utilize old ones. You might be able to get around this by using extensive massively multiplayer preference measurements, but that's not likely to work unless you have tens of thousands of players.

So, for the moment, you'll have to explicitly state what kinds of patterns you want to resonate with... and how those patterns can shape your system.

And I'll explain that in part three. I'll tell you how to put forth a pattern hook, measure the skill and interest of a response, and use that to build further pattern hooks which construct an unrelated pattern of your choice. Expect it soon!

(BTW, although most of my pattern examples are plot, this works just as well for gameplay or even advertisements and sales.)

2 comments:

Patrick said...

Are you suggesting theres a way to design ad-hoc which isn't really ad-hoc? Because if you are, I'm with you.

Do you think fuzzy set theory could have useful application to making the array of adaptation dynamics more trackable?
What about ontological structures, do you think ordering preference dynamics onto dualities and trinities could make this sort of thing more systematic?

Craig Perko said...

I doubt it. The problem is that in order to use fuzzy math and ontological principles is that they require you to have a pretty good idea of WHAT you are tracking. We don't. We have a fuzzy idea.

So what I'm doing is simply good enough for a solid guess. It may be that further math will be able to refine the procedure later, but for now, I'm satisfied with the simplest of math.