Monday, January 07, 2008

Classics

Recently I purchased the 50th anniversary edition of Forbidden Planet. It's held up so well! Every geek should have already seen it. If not, do it now!

I'm one of these guys who really loves the classics. I really enjoy watching old movies, reading classic sci-fi... anything "retro" is directed straight at me. Space pirates are a real weakness.

I got to thinking about games. I've been mining Gametap's RPG selection recently, with games like Baldur's Gate and Phantasy Star IV.

We certainly have "classic" games - games we feel nostalgic for. Games that fuel our retro movements. And, like classic movies, these games don't have the right pacing for new audiences. Anyone who watches Charlie Chaplin today will immediately notice that the pacing is old-fashioned. It's not just that it's in black and white, or that there's no voices, or even the classic topics: the speed of the progression, the nature of the camera work, and the level of repetition are all old-fashioned.

Old games have the same thing, of course: playing Baldur's Gate is often infuriating to me because, in the beginning, characters will die in a single hit. Similarly, the way the leveling system works, the kind of repetition, and the progression of the scenes are all noticeably "old fashioned".

Some modern games still have this "old-fashioned feel", like KotOR and whatever is coming out of Japan next week. Many have gone a different path, such as all of the FPS-RPGs.

I also feel something similar about classic tabletop games such as Battletech, Shadowrun and D&D. The new rulesets often change a few facets to try to make it more applicable to a modern audience without losing the oldschool feel.

But if you compare the original D&D to AD&D whatever.5, you'll find that there have been a lot of changes. Similarly, if you compare KotOR to Might and Magic, even though they attempt to have the same fundamental genre, KotOR has pulled in a new direction. And I'm not talking graphics.

One of the defining features of a classic game is the way it handles progression: instead of having a smooth progression, classic games have a mudflated progression. When you get something new in a classic game, it makes whatever you had before pretty useless. You get a sword+2, that old sword+1 is destined for the rubbish heap.

Modern games, on the other hand, progress more fluidly. Let me give an example.

In oldschool D&D, your mage gains spells. Each new level of spells contains spells that are fundamentally just plain cooler than the old spells, so the only reason to use the old spells is to conserve juice.

In KotOR, which is fundamentally D&D-based, your "spells" are Force powers. Instead of leaving you with scads of obsolete force powers, you upgrade a particular power to be more effective. So you never have more than one "Force heal" power, even though it's now level 3 or whatever.

Similarly, instead of replacing your sword+1 with a sword+2, in KotOR you replace a piece of your lightsaber or blaster with a new piece. There is no sword+1 left when you upgrade to a sword+2. Instead, there's a sword+2 and an oo'ooti'oo crystal.

Now, KotOR has an oldschool feel, and it does feature an awful lot of buying new stuff and selling the old. But even it has realized that abandoning old content is less efficient than upgrading old content.

This can even be seen in the characters. Modern RPGs have a few NPCs with full personalities that stay with you for the full game. Classic games have scads of NPCs with barely any personality that tend to die or be replaced on a whim.

To me, the big "classic" feel for an RPG has nothing to do with camera angle or turn-based combat. It has everything to do with scads of content that we burn through however we like.

And I like that.

I'm actually irritated by the kinds of things I see these days. You can upgrade your Jedi Push to Jedi Push II? But that doesn't do what I want it to! I want to be able to pick content that is more to my liking - pick from half a dozen available "Jedi Push II" variants that I happen to stumble across in dungeons and shops. And I want to keep Jedi Push I as a cheap alternative...

So I got to thinking: what if I take this thing that I like, and I polish it up to a mirror shine and design a... "deeply retro" game. A "post-retro" game, to be excruciatingly pompous.

The whole design is fundamentally about content: upgrading, replacing, finding. But instead of walking along a plot path and stumbling across combat content, let's make everything adaptable content.

Your plot is adaptable content. Your personality and history are adaptable content. You stumble across an "heir to the throne" fragment, pop it into a character, and suddenly they were always high-born. You find a "specializes in delicious pastries" fragment, and you can plug it into a village or part of a city and, bam, there have always been delicious pastry shops.

This can even be horrifyingly meta. The underlying plot is that the wizard captured the princess. You can plug new plot fragments in to change why, when, how, who... or add twists such as the princess and the wizard being in cahoots. You can even push it so far as to un-kidnap the princess such that she was never kidnapped in the first place.

It can also be very flat: you do find a sword upgrade, better armor, a new spell. It's not simply high-falutin' concepts.

This is not a game where you build your own plot/setting, not exactly. Because you only have access to the fragments you uncover as you journey. By controlling what kinds and levels of fragments are available in various places, you can dramatically influence the way the game develops.

For example, those ancient, menacing woods said to be inhabited by the undead? Instead of giving out generic combat rewards, they might give out primarily plot fragments. So if the plot is too difficult, too insurmountable or not fun enough, you spend some time killing ghouls and picking up new options.

Now, one further option is that we can make the NPCs - at least the major ones - also able to do this. This could lead to very interesting situations if handled correctly, where you and the evil wizard are vying for who has never been able to cast any magic...

What do you think? Would you enjoy such a game?

14 comments:

Anonymous said...

This concept got me incredibly fired up - there are so many possibilities here from a design standpoint that would be a blast to work on. I would be concerned about trying to find some kind of 'procedural' way of handling the massive number of combinations of elements, however. Trying to individually code each element to work with other elements is clearly too much work to ever be done within a reasonable timeline in a large enough scale to make it interesting. Do you have any concepts to handle the creation of such a system?

Craig Perko said...

Yes.

One of the fundamental ways to handle this kind of chaos is to use "tab A, slot B" mechanics and allow elements to painlessly snap together and stay together, but only when they fit the requirements.

For example, a "kidnapped" plot has a few slots that you can slip cards into: the kidnapper, the kidnapped, where they are, where the kidnapping happened, what they want out of it...

It's fairly easy to then use the cards you slot in as the basis for more cards. Where are they being kept? The evil castle. Now you can slot in zombie guardians and a dungeon...

Similarly, you can slot the characters into other plots, related or not. The stolen princess and the evil wizard are also connected by an "evil alliance" plotline, if you like. Or a "falling in love" plotline. Or both. The wizard may, on the side, be involved in a "opening a Hellgate" plot or a "I'm'a gonna live forever" plot...

The idea here is that each plot contains a basic set of activities which can be trumped by "more core" plots or abilities.

For example, the princess is kidnapped by an evil wizard. Therefore, the princess is kept in a small room in a high tower, and wants to escape.

However, if the evil wizard has a specific powerful ability, it can "trump" his need to keep captives by keeping them in some other fashion. For example, maybe he keeps her sleeping in a block of crystal, or imprisoned in a mirror, or transformed into a bird...

Similarly, if they are in cahoots, this negates the need for captivity of any sort, and the princess is likely to roam the castle - and maybe even the grounds around it - with impunity, since she is a guest rather than a prisoner...

Because people are on-site when they are involved in one plot, they can easily be "cross-slotted" into another plot. For example, if you want to interfere with the "I'm'a gonna live forever" plot, you could slot the kidnapped princess into a "steal and away!" plot, where she grabs the immortality gem and then leaps off her posh parapet, running off into the night after surviving the unsurvivable... the immortality gem trumps her need to survive, which is the lock that keeps her from escaping. Flight would also do the trick, or a really long rope...

The difficulty is dialog, but even that isn't too terribly hard if you restrain yourself...

Patrick said...

This reminds me vaguely of a project you wanted to do in the Spring of 2006.

Let me know if you bring this together, I'd love to help with writing dialogue and/or scripting.

Craig Perko said...

It'll never come together. It requires way too much content.

Anonymous said...

I think that, in the circle of regulars at this blog, I'm going to be the token "I LIKE TO BLOW STUFF UP AND EAT BACON!!1" guy. That said, to the extent that you could transparently integrate this concept into a game of my own heart to help take it off rails, I'm interested.

Probably my favorite thing in the world is a good co-op game, for surprisingly subtle reasons (to me, at least) that I'll get into later on my own blog. But one of the obvious downsides of a co-op game --- at least of the "both of you, on the couch, in front of the TV" variety --- is that the replay value tends to plummet. It winds up being the same experience, over and over.

So while these games are immensely fun the first X times through, eventually, you get to the point where you've unlocked all the secrets and can beat it on ULTRADEATHINSANITYMURDER difficulty without breaking a sweat. At this point, you're just hammering away at the same pleasure center in your brain and it's just not so fun anymore.

BUT! If you could integrate this "plot shards" concept into the game in a somewhat random way, and have a lot of these shards that are all interopable, then theoretically, perhaps you can make a game with a lot more replay value. Perhaps unintuitively, I think the key is to make it not a matter of deliberate user choice. Otherwise, it just turns into another secret to unlock --- grind through all the different possible plot permutations. Basically, the idea is to toss in a bit of entropy, and things will stay fresh.

No clue on the reconciliation between theory and practice here. But I'm optimistic. Like, take games like F.E.A.R. (see? explosions and bacon = my mind), where, outside of the scripted horror stuff, the game is basically a progression of mini-sandboxes with clever AI designed with the idea of emergence in mind. No two fights are the same. So maybe we can create a plot system that also has emergence in mind? And bacon? And explosions?

Anonymous said...

I'm new here, so sorry if it's a big braindump for my first post on this blog (: I found you via Raph Koster's blog, and subscribed to your RSS feed immediately. So, without further ado, I step into the arena with people probably much cleverer than I.

This is beautiful, and it really crystallized a whole set of thoughts I've been having on this adaptable content kick. I really like the idea of slotting cards into other cards - it's a clean way to parameterize an events calculus.

I've written a prototype for this kind of engine, which I've called Herodotus - initially I had only planned to use it for simulating world histories and game plots, but using it for items and the like too is brilliant. It's written in a bit of a weird language called Io, but I'm looking to reimplement it as a web service intended for use with Metaplace.

My favorite applications of it are adaptive difficulty setting(as in your zombie marsh example) and for making player actions and backstories significant. For instance, if character creation includes a "background" parameter - disenfranchised noble, prisoner of war, up-and-coming youngster, winner of a contest, parents slain by bandits, amnesiac, &c - then the game world could adjust itself to consistency with that information. Your starting environment could be a prison, a gutter, a small town, a kindly stranger's cabin. Little bits of your character's history could populate the world: a Scroll of Champions detailing your victory in the contest, your late father's heirloom dagger, hints to your character's identity, and so on. And this could work for everybody.

Other people could even find your stuff! If they don't use it in a while, it could degrade and be replaced in the world; but if John the Sleazy takes your family's dagger, that can adjust the simulation too, and you can discover that it was John who took it, and can go reclaim it for yourself. The mind boggles, and we can start to bury static writing for games. Content packs can be new sets of cards.

Another thought I really liked, though I hadn't considered it in these terms until now, is a multiplayer strategy game taking place in a sci-fi/cyberspace setting where the players act as fanciful hackers, mutating and twisting the landscape and the possibility space and "rules" of the game to disadvantage other players and claim more territory. This kind of "massive mutation" approach is similar to the general vibe of an events calculus-based narrative.

In fact, a lot of fun can be had playing along the border between wholly player-driven and wholly automated event(or "card") generation.

My little prototype (with no sample data yet, sadly) is available at http://joe.garbagecollective.org/Herodotus.zip . Information about the Io language is available at http://www.iolanguage.com . To test Herodotus, you can place it in Io/Addons/ and then, from the Io directory, run "make", then "make testaddons". There should be a little bit of Herodotus test output, and if that bit of the output shows no errors, things are fine! If there's interest, I can give some more information on building simulations with Herodotus. Warning: This is a quick prototype and the code wasn't built for clarity or cleanliness.

The basic idea is: Incidents set and unset Fluents, which are like cards in your terminology. A Fluent is, roughly, "A function of time and various parameters, taking effect at a given time, with a name and a related context." Incidents are applied to a History, which is a log of all things that have transpired. Histories can be queried as to their fluents by time, name, and context. A query to a History can ask for a result - for instance, the population of a city - and the result of a query is aggregated on matching Fluents by a FluentStack. When aggregating adjacent results, the FluentStack delegates to the StackMode of the corresponding Fluents - for instance, "Can cast magic" would stack with boolean replacement(A "yes" always sets to "yes", a "no" always sets to "no"); "baby boom" would stack with exponential growth; "form a valley on this terrain" would stack with subtraction; and so on.

It could be that the representation used in this prototype is too abstract, but it at least forms a good basis for building smoother simulations. For instance, I really like the card metaphor; that could be a great way to go.

To me, the light at the end of the tunnel is the idea that you can start with a little content, then trickle out more as the product is in the market, and live off of microtransactions or subscriptions. Maybe that's naive or overly simplistic, but it's a nice idea (:

Craig Perko said...

Re: Peter (haven't gotten to Joe, but welcome to your both)

The circle of regulars is more like a triangle of regulars, but let's not get into that...

I'm definitely into stories that vary from play to play, but I'm not big into randomly varying the story from play to play.

A game has a certain amount of... "message", for lack of a better term. The algorithms that run it have so much to say and no more.

Tweaking a plot around randomly won't change the fundamental play of the game much. While the replay might be somewhat improved, it wouldn't be much improved, because people would still get bored of only having X, Y, and Z weapon, or jumping puzzles, or whatever your primary play mechanic is.

On the other hand, making the story into a primary play mechanic allows the act of replaying a game to actually be the game, in some sense. The game suddenly has something to say that you can only hear by replaying the game.

I'm not saying every game is like that, and I'm not suggesting mammoth long games should be like that, but something 5-10 hours long? I can see that.

Craig Perko said...

Okay, now re: Joe

I'm not sure if I'll have much time to play around with Io and Herodotus, but I'll take a look.

I've done this kind of thing a LOT with tabletop games, which is why I call them "cards". In the past, I have used actual cards to do this.

The issue is that much of the moment-to-moment content in a tabletop game is created by the players or the GM. The difficulty in implementing this sort of thing on the computer is that you don't have a GM that can patch together a crazy-quilt of plots.

To me, the solution is not to make the game more like a GM, but to make the player more like a GM. The game needs to have an understanding of all of the rules on the RPG level: it needs to understand levels and spells and skills and how to put skeletons in one room and the princess in another and how to make them act on a moment-to-moment basis.

But the game doesn't need more than a passing understanding of the meta stuff. The game doesn't "understand" that a kidnapping card means kidnapping. The game only understands that it has to have X imprison Y and try to hide/defend himself. The additional context comes from layering more plots on this, which the game executes just as blindly using a rigid set of rules about what needs what in the RPG world.

The player can then be rewarded for setting up coherent stories and arcs. The game only has the most primitive understanding.

This works well because it means that new content can be slotted in pretty freely, like new cards in a Magic: the Gathering deck.

Personally, I don't much like the idea of microtransactions. I do like the idea that subscribers can actually create their own cards using some kind of language or tool...

I see no reason why a game like this can't be designed to be solo, co-op, competitive, or some combination of the three.

You seem to be interested in a kind of MMORPG setting... The current game I'm never going to finish uses some really interesting "legend" mechanics that are similar to what you're talking about. The game doesn't feature the player using "cards" as such, but it does feature adaptive plots that arise around the player and that he can affect...

Anonymous said...

I think that a lot of GM-like activities can be automated, though, if the simulation is precise enough. In the end, it's just expanding the 'rules on the RPG level' to cover broader situations, and providing better metadata with the cards - for example, a "kidnap" card could have parameters describing the conditions under which it's available, and the parameters describing valid kidnappers and kidnapped; "kidnap" with "evil wizard", "heir of rival kingdom". "kidnap" occurs if there is someone who is evil and likes kidnapping in striking range of someone who is good and vulnerable and valuable. The hideout, or whether the kidnapper flees forever, or how the kidnapper holds the hostage - these can all be determined by properties of the kidnapper and kidnapped, as you hinted at with the "powerful spell" capturing the hostage in ice. Further properties could be the cowardice of the kidnapper, or the feistiness of the hostage. These are the 'overriding' cards you mentioned earlier.

But choosing them can be very straightforward for the system! There are quite sensible algorithms for simulation that can choose based on player skill, character build, inventory, past experiences, environment, time since last time played, and so on. Designing simulations is hard, but it's definitely not impossible, and it could be useful.

I do like the idea of the player being rewarded for building good stories - it reminds me of MySims a little bit, or rather what I thought MySims was going to be before I started playing it.

MMORPGs are interesting to me, but mainly because I like co-operative puzzles.

Really, this style of gameplay building addresses a whole broad class of games, with uber-meta player-as-storyteller or player-as-god games at one end, and Civilization-esque political/economic/military/whatever simulation games at the other.

I love all this stuff, probably as much as Mr. Bessman loves bacon.

You had mentioned dialog near the end of your first comment, Craig - to me, that's the kicker. Does your approach need tons and tons of little 'dialog atoms' that get mushed together at runtime, or did you have something more elegant in mind?

Craig Perko said...

The problem with creating an explicit algorithm for dealing with content is that you lose a lot of the plug-and-play nature of the game. I prefer to make each card "smart" enough to know what it "needs" and "wants" rather than trying to make the algorithm understand what a card should have.

So, if you plunk down a kidnap card, I would like it to automatically search for and/or create elements that are suitable. You don't have to plunk down eight cards at once: just drop the kidnap card, and it will trawl through the game looking for likely bits to involve.

Dialog is always the hard part: I've written about it a lot before. Unfortunately, I don't have an easy solution. Instead, I use canned "atoms" which end up working pretty much the same way as the overall plot system.

For example, the "kidnapping" card would actually contain dialog snippets for the various activities surrounding it. You'll write up a few snippets for the kidnapping, a few for chatting at random, a few for the invasion, and a few for the final fight/rescue.

You have to write a variety of snippets so that a bad guy can use dialog that sounds something like him. For example, you don't want your evil wizard saying, "quiet, or I cut your throat!" Doesn't make much sense.

What you can do is have a snippet that says "quiet, %threat", and then that snippet trawls through the wizard looking for the best threat in much the same way that the plots overlay and supercede each other. If the wizard is a fire elementalist, he might say "quiet, or I'll have a barbeque". If he's a transmogrifer, he might say, "quiet, or you'll be stuck saying 'ribbit' for the rest of your life".

Similarly, it may be that the wizard doesn't need/want to say "quiet" because one of his cards overrides it. Maybe he's mute. Maybe he doesn't make threats, but simply carries out actions instantly, in which case he'll gag the girl instead of threatening her...

While this does have a significant amount of overhead, it's less than writing whole scripts. You do have to be careful about what overrides what, but a helpful piece of software can assist on that.

By the way, more accurately, this is a "bidding" system. When the kidnapping plot is played, it asks for bids: "who wants to be the kidnapper?"

The potential subjects bid against each other like an auction, with the winner getting the spot.

Olick said...

First things first: Triangle of regulars: Patrick and I?

I completely agree that this sort of thing is a great fun thing to do in a tabletop setting, but a crazy-daunting task to do in an electronic setting.

I think what they mean by "more replayability" is that.. most games are designed that in one playthrough, you not only get all the plot points you would like, but also get sufficient play of the games system. Basically: when you play mario through once, you've done all the jumping that the game has, and not only has the content come to an end, but you've also done everything the games system allows for.
Some games are designed for players to miss, not just content, but game elements in the first play through, arcade games specifically. Arcade games HAVE to have it, since the game has to be fun when you're playing through the first level the twentieth time, you have to have something to do other than the same fifty memorized shooting. They do this, primarily, by putting in a scoring system (preferrably one with enough depth to intrigue hardcore gamers).

However, its the general idea in consoles (and possibly computer games) that games these days will be played to the end of the content then stop playing. So if you make the second playthrough get more content, often by multiple paths , then a person will play the game more, right? Except I have rarely played a game where the game as a system has genuinely been extended by this 'new content' and in fact will replay games where I find the system fun, even if there is nothing 'new' about the game.

I don't think a game like this will need TOO much content. In fact, if you limited the scope intentionally, you could create at LEAST an interesting short prototype. But I'm sure.. whats the term.. a AAA game could be made out of this idea, if only we knew it would work. I mean how many recorded lines did Mass Effect have? Something like.. 22,000? I realize there are elements more complicated than recorded voice but..

Oh yeah. It also sounds like its really fun.

Craig Perko said...

"Some games are designed for players to miss, not just content, but game elements in the first play through"

Many western RPGs are like this. For example, playing through Oblivion as a thief is fundamentally different than as a mage or warrior.

I find this disappointing, because the REplay of these games is more interesting than the actual play. It takes an long freaking time to play through these games, but the most interesting part is seeing the same content from a new angle. (Often, I'll play as pretty much the same character again, because the new angle is provided by experience and poor memory...)

This is pretty much in agreement with what you say, except in reverse. I don't think that all content should be available in one play-through... I think play-throughs should be shorter.

...

Creating a limited game is usually an easier task, but with the requirements for adaptable art and dialog, I'm not sure a limited game is fundamentally any easier. It just has less assets: it still has an extremely complicated engine.

Anonymous said...

A lot of good points made here! Very interesting stuff.

Given that most of us seem to agree that making this into the central mechanic for a game could easily become prohibitively "content creation"-heavy, I think Joe's idea of building the system as a method for creating backstories/histories/etc. would be a great first step. Once in a reasonably working state, it could be used to generate character histories, city histories, item histories - anything that needs it, really. It could be very handy for cutting down on a lot of the 'grunt' history work in a full-scale RPG project. I'd still propose to have a dedicated writer to take feed it the appropriate inputs given the setting and massage the output, making it as cohesive to the overall storyline as possible. Similar to how you can automatically generate terrain in a number of level editors, but you'd still want your level design team to go over it, massaging and polishing it to fit with your game's theme/concept/art/etc.

This is a really long way of saying: I think this could be a great central game conceit, but the several preliminary iterations required to generate enough 'cards' and 'interactions' and the systems that determine those interactions would probably not be that engaging or interesting to play. If someone could develop the system as a 'backstory generator' over the course of a couple years, they might end up with a system that justifies it's development resource cost while it is being improved to the point where it could genuinely fulfill a central role as primary game mechanic.

Craig Perko said...

I have run games like that, but for some reason I can't find any posts on the topic.

I'll post about it tonight. :)