Monday, February 18, 2008

Content inSANITY!

This is GDC week, which means I post all my rambling, half-baked ideas, comforted by the fact that nobody will read them. Example follows.

I really like player-created content. A lot. But there are a lot of not-so-great things about it. Tools, for example: everyone's content creation tools are really shitty. Also, how to partition/direct the content. Not simply to avoid griefers, but also to avoid damaging an immersive experience with anachronisms.

How to get players to create content - the right kind of content - without pain?

This isn't the answer, but I like it anyway.

...

On the other side of the theoretical universe, I like the idea of a game that teaches you how to program. Sort of a Diamond Age type thing.

"What if," I thought to myself, "I put peanut butter in my chocolate?"

"And," I replied, "chocolate in my peanut butter?"

...

My previous thoughts on a teaching game have been pretty similar to the mainstream. Give the player a puzzle, they solve it using whatever thing you're trying to teach them.

Instead, what if we give the player access to the tools, but not puzzles? Just let them play. There would be some kind of overarching plot or something to keep the world they create in interesting, but the point is that there would be very few (if any) puzzles that need to be solved. Think Sim City instead of The Incredible Machine.

For example, let's say we're trying to teach the player how to program.

Instead of actually using programming, let's use nanotech. The "program" is actually a program for a nanotech swarm that builds things out of goo. It contains all sorts of simple commands like "move forward", "secrete metal", "spawn new swarm and start their execution on line 40", etc, etc.

Using this code judiciously, it should be possible to build basically any device. Depending on the limitations of the physics engines, certain things may be impossible (like clothes, maybe) but that's not a limitation on the programming system. It's a limitation on the engine. Some things also may require assembly: it may be hard (prohibitively?) to build a functioning car out of a single program, but each individual piece would be easy.

Of course, creating complex things out of simple instructions is a suicide mission, like programming Windows in assembly code. So there would need to be a way to create and use higher-level languages...

Think about creating a higher-level language in the same way as creating a program for the nanoswarm: the language serves as a set of instructions for a lexical swarm. Whereas the nanoswarm has instructions like "secrete metal in goo", the lexiswarm would have instructions like "print instructions to nanoswarm". Instead of "spawn new nanoswarm operating on line 40", it would be "spawn new computation thread starting on line 40".

While it's not terribly transparent at first glance, it does work out. You can simulate every higher-language feature I can think of if you make your "core language elements" cover a specific set of abilities. Then you can simply plug your language into whatever strata you want. Make your language control nanoswarms. Make your language control the language of nanoswarms. Make your language control the physical behavior of the final product... make a language that controls the language that controls the physical behaviors...

By layering in this way, it should be possible to (A) start slow and (B) allow for anything you care to allow for. Similarly, while the tools technically suck, they suck in a very immersive way... and players are welcome to improve them by building languages that control the tools.

In fact, it doesn't take much effort to see that it is perfectly plausible to have "life forms" that reproduce, move, see, and think simply by layering the languages properly.

...

As mentioned, the universe would have to have some kind of force in it - probably a plot - to keep the game moving. Wouldn't want the player to stagnate. But one option that can't be overlooked is in the sharing of content between players. Not only content as we think of it, but also grammars and languages that the players have built to make creating content easier.

Depending on the limitations of the engine, it is theoretically possible for a player to build anything from a delicate bracelet to a Dyson sphere. (That would be a lot of goo, though...)

An important element of this is that the designers, when they build the game, will have to build it with the same tools. Human bodies, for example, would not be special cases. They would be built with the same language system. Growth is possible because they have an internal system to convert some objects ("food") into goo, which can then be converted into whatever is needed. Reproduction is possible because the womb is basically a sack of goo that follows the same basic ideas.

Not all languages (in fact, only one language) builds things out of goo.

Things like solar system mechanics would technically be built with the same languages. This obviously has nothing to do with goo. But theoretically, if the players figured out how to do it, they could build solar systems. And if they built a language that controlled how a solar system was built... maybe they really could build a Dyson sphere...

In fact, it may be possible to have a language that specifies the drama or culture or society of an area...

Or dialog...

1 comment:

Scott W said...

Games that actually function, and can be altered, in the way you describe (or even in far smaller ways) are very rare these days.

It's bizarre (not to mention irritating).