February 24, 2005
Not/Non Feeling Content: The Unfairness of Programming
Before Will Wright regales us with The Future of Content, I’d like to get in a few words, to “put down on blog” a few concerns I’ve been mulling over.
There is a serious problem, I believe, that doesn’t get enough attention: by and large, people are not enabled to create dynamic content for interactive experiences. Many people want to do it, I’ve noticed, but most are unable to. And, the path to allowing this to happen is not an easy one.
What does dynamic content mean? In an interactive medium, this means content that is alive, not dead; that reacts to and acts upon other content; content that is not immobile or frozen. Not mere skins, static models, layouts of walls and hallways, or chunks of linear text — but moving, behaving, reactive content: machines, automata, manipulators, generators, even intelligent characters and lifeforms.
First a few words on why users creating dynamic content matters, then some thoughts on solutions.
Some suggest that users creating content is the only feasible way to create rich virtual worlds for us to play in, that there is too much labor involved to put it all on the shoulders of developers. Games are getting more and more expensive to produce, and it’s only getting worse. The economics of game development is at stake.
I think that’s all true. But it’s not the most important reason this matters. The biggest reason that users need to be able to create dynamic content is that they want to, and should be enabled to. I sense this from many folks — players, writers and artists, non-programmer game developers — who when asked about it, often sort of have an air of resignation about this.
I don’t think it’s fair that programmers hold so much of the power to create dynamic, living content. Few of us are programmers; while that number will hopefully increase over time, thanks to curricula like these, it’s not clear to me that even at best the numbers will ever grow beyond a certain percentage of the population. Furthermore, it’s unbalanced gender-wise.
Let me throw in that personally, it’s not exactly in my interest to change this situation. I’m a designer/programmer, and will keep a higher status and paycheck if things stay just as they are.
But I think we risk a can-and-can’t-do type schism if we don’t work on this problem. The truth is, those who can program have an unfair advantage in interactive virtual worlds over those who can’t.
But aren’t unfair advantages such as this just the way it is? The same could be said for the real world, yes? But, ah, see, we have much more control over the laws of virtual worlds, and can do something about it. We can enable people with powers in virtual worlds that are difficult or impossible to achieve in the real world. More on this in a moment.
Some suggest the solution is to train more people to program. That’s a good direction worth pursuing. But the state of the art of programming is hard, no doubt about it. Well, it’s not too too hard to do a little bit of it, but to get to the level where you’re creating really dynamic stuff takes a certain aptitude for engineering, organization, and anal-retentiveness, not to mention years of training and practice, that too few seem to have.
We can and certainly should create better programming tools, to make it easier for people to code. That’s a good idea too, but at a certain point, I’m guessing many people just won’t want to, or will be unable to, deal with all the minute details and complex procedural thinking required.
Ultimately a more successful, even necessary approach will be to shift the burden onto the machine. To enable users to give high-level creative direction, and the computer does the hard work. That is, AI-assisted creation of dynamic content.
In its purest form, this would be programs that can write programs, guided by users. Programs that can recognize, understand and reason about abstract characteristics of complex structures — the characteristics of objects, machines, games, agents, lifeforms, characters, narratives — and can generate concrete new structures with variations on those abstract characteristics. There is research going on in this area, but from what I know about it, it’s in its early stages of course.
Less pie-in-the-sky, but still quite daunting, would be programs that can tweak existing human-made programs in limited but interesting ways, under the user’s direction. Perhaps this would be analogous to a person in real life using a wedding planner to create a custom ceremony, or a sports coach directing a team of players, or a customer requesting a special dish from a receptive chef, or filmmaker Mike Leigh collaborating with his actors.
Ideally, to be both easy enough for users to use, and expressive enough to be interesting, the directions from users would be in natural language. For example, I would describe in words what I want and how it should behave. The computer would create a first draft of it, I’d play around with it, and give additional details, qualifications and tweaks — an iterative process of refining my description of what I want.
Another approach would be to train the content in a natural way; imagine a system where you can create a conversational NPC by acting in character. You behave like what you want, acting it out, and the system picks up on and extrapolates from your direction, filling in the blanks in a common sense way.
In a sense, am I advocating “wizards” here? Perhaps, but not wizards in their existing form, which are pretty rigid, limited and scripted. In fact, I have to admit, existing AI assistants turn me off; I feel like they never really behave how I want, nor give me any where close to the amount of freedom of expression and control I need. But I believe it’s because they’re just not generative enough yet, nor can they yet understand expressive, high-level instruction, or complex detailed instruction.
By now you’re probably thinking, we already see the precursors of these ideas in today’s constructive sim games, and you’re right. Within game worlds, for example, you can create your own dynamic, operating cities, train systems, simple social groups, simple machines and automata. These are more “do-it-yourself” kits than AI assistants. Those who aren’t programmers (and those who are) can enjoy these and create rewarding dynamic content. The precursors to these include things like programming in MUDs (e.g. 1 2) and interactive fiction worlds (e.g. 1 2). We’ve discussed Gnoetry a few times on this blog — a human/computer collaborative poetry composition system.
Assuming for a moment that AI-assisted creation of dynamic content is a good direction to pursue, how do we get there? That’s a whole ‘nother post or ten to write, but in a nutshell: first, we need to create systems that can generate dynamic content from low-level direction from users/programmers, designed in anticipation of future hooks to be added for higher-level direction from non-programmers. This means creating virtual world platforms (e.g., a simulation) in which our dynamic content (machines, automata, lifeforms, characters) can exist and operate. Next, we hand-create canonical example pieces of content in those platforms, and write programs that can generate variations of these example pieces of content. Then, we build a natural interface that can take high-level, abstract direction from non-programmer users, which gets turned into partial / fuzzy low-level direction; the system needs to be able to do additional reasoning to fill in the blanks, possibly by asking additional questions to the user.
I’ll finish this thought piece by suggesting that in general, user created content, AI-assisted or not, will never completely take the place of content created by professional developers. Even in this age of “amateur” production, pros will always be in the role of making some of the best content, since they are trained, highly skilled craftspeople actually getting paid to make content full-time. Developers shouldn’t fear competion from users, and in fact should build AI assistants to enable them to join in the fun, and blur the boundaries a bit.
February 24th, 2005 at 11:24 am
I really, really, really am tired of the “The programmers are holding us back!” cry from people who want to write their own interactive anything (games, stories, worlds, call it what you will). “If only programmer would create easier systems for us to do what we want,” they cry, “the world would be full of exciting and new everything!”
The sad fact is, writing interactive anything is programming. You have to see the possibilities, see how they interconnect, and forsee what those interconnections mean. This here is the fundamental discipline of programming, underneath all of the obfuscated syntax and the sometimes difficult compilers. And this is not a skill that everyone has.
Now, I am not saying that progress doesn’t happen. Programming, programming languages, and programming environments have progressed greatly since the beginning of the art back in the 50s and 60s. But everyone agrees that there is still a long way to go. The sad fact is that we have not improved our art in leaps and bounds, but in a slow, gradual upward progression. And that’s how we’re going to keep going.
So, yes, someday we will hopefully have magical systems that you can give a simple description of the interactive system you want, and it goes off and creates that. But it won’t be now, it won’t be soon, and people with an interactive itch to scratch will be better served not by demanding such “intuitive” systems, but by rolling up their sleeves and learning how things work today, and what part of their dreams they can implement today.
February 24th, 2005 at 12:01 pm
I agree that the programmers are not to blame, but I don’t think that Nick is blaming them.
As a hacker, I see this as a toolkit issue.
Recently, I read an article that said that making a new programming language is like make a gui for programmers. When you think of it this way, it is a matter of making a better ui for artists.
Although it is a cliche, I do think that art and math use different areas of the brain. Some people choose to develop themselves more in some areas than others. Few are generalists, though most readers here probably are as we are crossing the lines in this blog.
The point is to make a toolkit that seem more artistic. This is to use ideas of parc, smalltalk and so on.
My question is, why isn’t Visual Basic seen as a good start? Everytime I hear these complaints, I think, “what about VB?”
I don’t know VB and I am not interested in it personally as I like to do C/python for unix only, personally, but I have heard good things about VB being easy or at least a good start.
I have heard every serious programmer curse the day that VB was ever created, but perhaps this is a good thing for artists out there?
February 24th, 2005 at 12:36 pm
I agree that the programmers are not to blame, but I don’t think that Nick is blaming them.
I’m definitely not – this post is by Andrew.
I think I pretty much agree with katre, for reasons I’ll have to elaborate later. But in brief…
Even the difference between unbounded repetition (while) and bounded repetition (for) is not obvious to beginning students of programming. Recursion is much less obvious. To usefully define behaviors (not a perfect term, but much better than “dynamic content,” I think), you are probably going to have to know about flow control, functional evaluation, and lots of other fundamentals, whether you’re chatting with your magical robot programming butler or writing a program yourself. These are, quite simply, the fundamentals of formally-specified behaviors.
February 24th, 2005 at 2:02 pm
Interestingly, I just attended a lecture yesterday given by a U of Alberta prof who’s team is working on this problem.
ScriptEase is a tool designed to assist in the creation of NWN [NeverWinter Nights] modules by replacing the rather low-level scripting language in the Aurora toolset with a more intuitive, higher-level approach. ScriptEase (pronounce it carefully) uses what was called ‘Generative Design Patterns’ to create scripting code within modules.
The idea is to be able to build a CRPG story out of a set of premade patterns which tend to reoccur within a fantasy RPG setting. For example, “When the PC opens the chest, Monster X appears”, or “When player enters this area, a magic trap holds them in place” were some of the examples shown. These were just ‘Encounter’ patterns – eventually they plan to incorporate large-scale Plot patterns and NPC Behavior patterns. They’re tackling this with a very practical, ‘industrial-strength’ proof of recreating the original NWN module entirely out of such patterns.
Anyway, I don’t think this ultimately removes the fact that you’re still programming (at a higher level than before, with nicer scripting tools), but from the demonstration they did it seemed like a very good approach to solving the real problem of accessibility. They had high school students come in for a day and were able to get a story created pretty easily, apparently. (I’m assuming it wasn’t a high school comp sci class.) Also, their approach allows the programmers to create highly reusable elements of design, save them as ‘atoms’, and then a non-programmer designer can reuse those atoms in their own plot creation knowing that those atoms have been proven effective before (no need to debug the scripting code they encapsulate).
Sort of like making very easy-to-use functions … or macros in Lisp … oh never mind, now I’ve scared people away. ;)
The current tool is Java-based, basically a highly text-based tree of objects. They’re talking about an icon-based, more GUI-ish approach … I don’t know if that’s really necessary though, I think that a textual approach to storytelling is more natural for most people.
February 24th, 2005 at 2:08 pm
And I really need to reply to this:
I don’t think it’s fair that artists hold so much of the power to create really cool environments, intricately detailed 3D models, and slick looking front-end artwork. But being an artist takes time and dedication, and I can’t do both full-time right now.
Saying that we need to take interactive content design away from programmers is like saying that photography has taken art away from artists. It may have revolutionized the art world by its accessibility, but that doesn’t mean that good photography isn’t an art of its own. Make programming more accessible, sure, but don’t pretend it will stop being programming just because we no longer have to do the equivalent of lithography one line at a time.
February 24th, 2005 at 3:22 pm
Josh:
That type of pattern/atom system does sound pretty cool. I think you’re right, a good visually interesting interactive environment will require artists, writers, and programmers working together closely, and this seems like a good model for it. I’d love to try this out, I keep being tempted to pick up NWN anyway.
February 24th, 2005 at 5:41 pm
Just a quick clarification for the moment, more comments later:
Nick wrote, To usefully define behaviors (not a perfect term, but much better than “dynamic content,” I think), you are probably going to have to know about flow control, functional evaluation, and lots of other fundamentals, whether you’re chatting with your magical robot programming butler or writing a program yourself. These are, quite simply, the fundamentals of formally-specified behaviors.
Actually, I’m imagining quite an informal specification, effectively a very under-specified description of what is desired, where the system does a lot of filling in the blanks. Magical? The technology to achieve this is certainly many years off — in its fully realized form probably several decades — but we could imagine simplified versions of it in the nearer-term, that still offer informal specifications.
For example, in the full-blown pie-in-the-sky version, let’s say I wanted to create a new computer-controlled character to inhabit my virtual world. I might say,
“His name is Larry, and he’s a pretty odd guy. He’s very into insects, biology, that kind of thing. He’s always talking about it, how as a kid he raised frogs in a pond in his backyard. Now he lives in the city with me, and really misses the outdoors. He tells a lot of jokes, that are pretty bad, like knock knock jokes and stuff. Sometimes they’re funny though. Sometimes, if he’s depressed, he’ll just keep to himself, listen to Weird Al Yankovic on his tape player in his room, but when he’s happy, he’s always trying to get me to play Stratego with him. He’s obsessed with Napoleon. But now matter how feels he always helps himself to my food, especially anything with cheese. He has a girlfriend, someone he met at work — he’s an assistant manager at a Kinko’s, and she’s a FedEx driver — but I’ve never seen her. I’m actually not sure she exists.”
From this, the system creates an initial character, whose foundation (perhaps 95% of what the character says and does) is drawn from pre-made behaviors for character with an introverted, jokey, friendly personality type. As the user, when I see this first draft of the character, I refine it with:
“Oh, no he’s not fat, he’s actually really skinny. Eats a lot of bad food, but stays really, really skinny. And he does shower and dress neatly, actually. He’s nice, he’s really friendly, always takes out the garbage, cleans up after himself. He’s never late for anything either, always wakes up at 7 in the morning, even on the weekends. Unless he stayed up late the night before watching the cooking shows. He loves the cooking shows, even though he never cooks.”
Etc., etc. Perhaps I’d have to further “act in character” to describe specific things Larry says. For example, the system could have a dialog with me, playing the straight man (e.g. a stranger on the street, a guest to the house), and where I act like Larry, speaking his words. That might be the best way to get specific lines of dialog into the system for Larry.
February 24th, 2005 at 6:52 pm
And as a programmer and a wannabe artist, I’d love to have an AI to which I could say:
“I want a painting a tree – like an oak tree or maybe an elm. It’s very big and old. It’s kind of at the beginning of autumn, so the leaves of the tree are just turning from green to yellow. The catch the light in a way that really makes you feel the warmth of spring, but with a hint of the inevitabililty of winter. It’s standing on a hill with one or two others, smaller trees which stand apart at a distance, but not so far away as to make the tree seem alone.”
I could go on and on, elaborating my description, but I’m never going to get the painting until I learn to paint. And if I really have no artistic ability, then no matter how skillful I am, I may never be able to express the ideas I want. Some people have artistic vision, others don’t. This is a difficult truth for frustrated artists like myself, but I’m not blaming the artists for not making like easier for me.
josh’s comparision to photography is an apt one I think. We can certainly make easier tools, but programming in the hands of the masses, much like the box-brownie did for photography. And many budding programmers may emerge who may never have entered the field otherwise. But it won’t turn non-programmers into good designers of dynamic content. It will just mean lots of generic ‘happy snaps’.
February 24th, 2005 at 9:34 pm
I eat my words.
With little research I came up with an astounding discovery. The kinds of AI Andrew wants are being developed right here in Sydney! The researchers have made a fantastic breakthrough in biological computing, and have managed to make an computing which device which exhibits the strong AI properties that Andrew desires.
The generation process is long and involved, and I won’t go into the messy details, but suffice to say that the system exhibits a remarkable ability for creativity and learning. Unfortunately the development time is rather long (9 months for fabrication alone, and then many years of “training”), but the results are worth the wait.
Versions of this AI have been trained up in exactly the kind of programming tasks Andrew is looking for. They can take natural language descriptions of programming problems and working interactively with an artist or designer they can build actual working code. I’ve had an opportunity to work with one myself, and I found the results most gratifying. At first I found the unusual biological power supply system confusing, but once I realised it could run quite well on just pizza and coke, I soon got the hang of it. The quality of the code output varies, but on the whole I find it quite satisfactory.
My only misgiving is this… the AI has developed a quirk — it has starting trying to claim the programs it writes as “its own”, when they are obviously mine. It makes the preposterous claim that it has done more of the creative work than I have. I have submitted a bug report to the developers and I’m hoping to see a patch available soon.
February 24th, 2005 at 9:45 pm
Okay, well, while we’re on the topic of babies, virtual or not, check this out… and tell me these folks wouldn’t enjoy a little AI-assistance.
February 25th, 2005 at 5:32 am
I realise it’s terribly unfashionable amongst ‘proper’ programmers, but I’m surprised no one has mentioned Macromedia Flash in the context of helping non-programmers to create dynamic content, limited though it is, I can think of few recent tools which have done as much to help non-programmers quickly create compelling dynamic content. It’s certainly more enjoyable to learn than VB and it has the advantage over a ‘wizard’ system of offering a pretty much blank canvas to the user.
Andrews hypothetical system sounds kind of like a souped-up version of Europress softwares ‘Klick and Play’ (http://www.clickteam.com/English/download_main.php?PID=6).
February 25th, 2005 at 5:43 am
One word: holodeck.
February 25th, 2005 at 7:52 am
Andrew> I’ll finish this thought piece by suggesting that in general, user created content, AI-assisted or not, will never completely take the place of content created by professional developers. Even in this age of “amateur” production, pros will always be in the role of making some of the best content, since they are trained, highly skilled craftspeople actually getting paid to make content full-time.
While I’m intrigued by the rest of the thoughts, this one might be too large a concession. See http://papers.ssrn.com/sol3/papers.cfm?abstract_id=601808 for more thoughts, but in brief, if you’re saying that some people will always better at some things (e.g. art, programming, writing) than other people, then okay. That’s hard to argue with. If you’re saying that those people will always be professionals/developers (i.e. commercial & salaried) as opposed to amateurs/players (the Latin root being “love”), I’m not sure I bought the same crystal ball. The question, perhaps, is who will be the best part to aggregate and select the content and deliver it broadly to the public. Perhaps amateurs can do that as well — we’ll have to see.
February 25th, 2005 at 9:52 am
Tom P, I’m interested in what you say about Flash, in part because I’ve been thinking of the same thing from a slightly different angle. I’m doing a bit of a survey of programming tools aimed at non-programmers, and also at the way people try to teach their use. Do you have one or two of the “how to program in Flash” books that you think are particularly good examples?
February 25th, 2005 at 11:58 am
I’ve always been annoyed about how unfair it is that people who know how to play an instrument — especially those who know how to read and write music — have more influence in music than those who don’t.
It sure is annoying that wood-carvers work with only the barest tools — chisels and hammers — that are too hard for me to use. Why should the carvers have so much say in carving? Why don’t they make better tools so I can join in the fun?
And don’t get me started about carpenters. It’s *my* house they are building, so why don’t they use tools that I — with a few minutes of effort — can’t pick up to use to build the house myself?
What so many people conveniently ignore is that the problems that programs attempt to solve are often inherently complex, where the best solution is a compromise consisting of dozens of reasoned trade-offs. Programming — like music, art, and carpentry — is a deeply involved skill and craft.
The tools don’t make the expert. The expert makes the tools.
February 25th, 2005 at 12:35 pm
I think I understand the idea here. There are a few things that most people are agreeing on:
1. It would be nice if everyone could program really well. :)
2. Some people are better at programming than others. This is OK b/c a lot of us want to get paid to program. :)
3. However, just like photography is being made more accessible to the more people via digicams, programming should be made more accessible to people. We realize that these people using these amateur environments would probably always be amateurs.
4. Number 3 is really hard.
5. People are not only taking steps to making it easier to program for artists, but also to programers “to art”.
6. Though some programmers don’t like lay people programming just like pro photographers don’t like crappy camaras: people will snap crappy pics and then go home to try to get some environment to program something. Their work will not rival Halo.
Incidentally, I am and will always be an amateur programmer personally. I use C mostly b/c I like it. I realize that not everyone is going to want to do this and that higher level languages make the lifting easier and more efficient.
I’m amazed at the ideas that people have said here.
One other note, two of the ideas addressed above could be in part by guis. The “make me a picture” in part can be done with the gimp and filters. No, using “oil paint filter” is not the same as spending years with oils (nor as much fun) you can do it.
To create a character, they have had menus for years. There are bodies you can pick and you can customize things. The main thing missing is the way to actually hack the gui to make more attibutes available. The example I’m thinking here is “Mail Order Monsters” by EA (MOM). In MOM you could pick a monster, body mods, attributes, and weapons. Adding more body mods and weapons was beyond the scope of the game, but I see this as the next generation. I think that plugins would be a good way to facilitate this. Making a plugin infrastructure is quite easy. Making the api user friendly is a nightmare.
February 25th, 2005 at 2:08 pm
I notice that many of the commenters that are skeptical of AI-assisted user-created content are programmers… ;-)
First a general comment, before responding to a some specific comments from above. Essentially, several of you are saying it’s only natural that are things we can or can’t do, and programming is one of them. But I’m not saying that AI-assisted user-created content turns non-programmers into programmers, really. The AI is doing all the hard work! I’m suggesting that people be empowered with their own artificial programmer sidekicks, so they can participate in the creation of the really interesting (read: dynamic, behavioral) content in games, virtual worlds, etc. Even if you don’t buy the “fairness” argument, you might buy the economics argument.
(Note: I suppose you could consider this turning non-programmers into programmers, if you view the human/AI collaboration as a single cyborg.)
Maybe with this post essentially I’m just sipping the VR utopia koolaid here. But yes, along these same lines, generally speaking, AI assistance would allow non-painters to create paintings, non-musicians to create music, non-writers to create stories (see my response to Merkin below). All would be collaborations, that today are unavailable to people unless they can find a painter, musician or writer patient enough to take their direction and work with them.
Morris writes, What so many people conveniently ignore is that the problems that programs attempt to solve are often inherently complex, where the best solution is a compromise consisting of dozens of reasoned trade-offs. Programming — like music, art, and carpentry — is a deeply involved skill and craft.
Sure, there are naive folks out there who don’t appreciate what goes into the design and programming of the interactive entertainment they enjoy, and probably some are annoyingly demanding, “hey, c’mon, I could do that too, just make a tool for me! You lazy programmer bastards!” But there are probably just as many people who do appreciate what it takes, and feel left out.
The tools don’t make the expert. The expert makes the tools.
Of course, expert humans will be making these AI assistants. A non-programmer user of these AI assistants does not become an expert.
Katre writes, So, yes, someday we will hopefully have magical systems that you can give a simple description of the interactive system you want, and it goes off and creates that. But it won’t be now, it won’t be soon, and people with an interactive itch to scratch will be better served not by demanding such “intuitive” systems, but by rolling up their sleeves and learning how things work today, and what part of their dreams they can implement today.
That’s true, as we’ve discussed on this blog, but it’s not enough to say “someday we will have”… This is the community of folks who would be working towards that goal, and that’s why we’re talking about it.
Merkin writes, One word: holodeck.
Yeah, when I initially wrote this post, I was thinking about how all this is very similar to the situation of a player collaborating with an AI to create an interactive story. The same overall techniques suggested here — programs that can recognize, understand and reason about abstract characteristics of complex structures, and can generate concrete new structures with variations on those abstract characteristics — would apply to the creation of stories.
However a story created by a Holodeck is a performance, not a dynamic-content object in and of itself. That is, what I’m focusing on in this post is enabling users to create machines that can then be played with by others, not creating story performances.
Greg wrote, If you’re saying that those people will always be professionals/developers (i.e. commercial & salaried) as opposed to amateurs/players (the Latin root being “love”), I’m not sure I bought the same crystal ball.
I’m not saying all talented folks will become paid developers, I’m suggesting that if you’re getting paid to develop content full time, you have the chance to highly productive, creating top-quality content, and therefore will continue to get paid. Greg, are you suggesting that there will be so many talented amateurs/players creating content part-time, that there will be no need for full-time developers? I could believe that, only if those unpaid folks don’t have to support themselves with a day job, and have the time and energy to rival full-time paid developers. (Or, if their AI assistants are so talented that it’s relatively easy to create great content. ;-)
Btw, the folks at Terra Nova, who think about user-created content a lot, have branched off a discussion as well.
February 25th, 2005 at 4:58 pm
I just don’t see this happening, possibly ever. You’re talking about a level of deep interactivity and contextual knowledge that would basically require strong AI of the old-fashioned sentient-box, HAL sort. “Once computer programs understand me fully, they can create what I want just by asking them!” Well, sure, if they ever understand you fully, and by that point they might decide that they have better things to do with their time (or perhaps want to be paid so that they can afford the bandwidth to take a trip to Europe’s networks). It’s of the far-out-there variety of solution at which point most or all visions of how they’ll work are very thin speculation, with a whole lot of Really Big Questions lurking behind them.
Not to stomp on your goals of making interactive development more accessible, because I think that’s a great idea. But ultimately I think that’s going to be about better tools so that the basic principles of programming can be more easily applied, not by pretending those principles won’t exist anymore. And really, it’s the process of pulling pie-in-the-sky dreams back down to reality that’s going to help solve the real issue of accessibility.
For example, your description involved verbally describing an NPC to an AI assistant. Well, speech cognition is Really Damn Hard despite a few decades of research, so how else can we communicate what we want to create? Can we do it visually? Can we compromise with some sort of normal-human-readable script, or a pattern set as used above? What is it about any of these modes of designing that would be inaccessible, and how can we improve it (without abandoning too much useful functionality)?
February 25th, 2005 at 6:31 pm
Andrew> Greg, are you suggesting that there will be so many talented amateurs/players creating content part-time, that there will be no need for full-time developers? I could believe that, only if those unpaid folks don’t have to support themselves with a day job, and have the time and energy to rival full-time paid developers. (Or, if their AI assistants are so talented that it’s relatively easy to create great content. ;-)
Well, coding virtual environments is its own can of worms, as is the idea of that kind of environment as a commodity in a competitive environment separate from the value created by the players themselves in the act of playing. But think about it — we’ve had plenty of free, amateur, player-content-driven MUDs and MOOs and MUSHes in the past. No professionals involved. So history shows this is a fair accompli, right?
But you might say these are all small scale projects that don’t come close to the kind of things that EA does. The ideal counter-examples at this point would not be in games, but might be something like Linux or Wikipedia as rivals to Microsoft or Britannica, or maybe Flikr as a potential source for copyleft images as opposed to Corbis for copyright images. Can this kind of amateur-centric dynamic happen in virtual environments? I’m skeptical at the moment and there are plenty of good reasons to be skeptical, but I don’t know that I’d completely rule out some role for amateur-centric virtual environments. But in any event, you’d still need the developer as aggregator, platform owners, and tool provider…
February 25th, 2005 at 6:32 pm
And Cory should chime in here at some point. :-)
February 26th, 2005 at 1:11 pm
Perhaps you’re wondering, as am I,
WWWWD?
Well, I emailed Will Wright, asking if he had any feedback on this post. He replied that he read it, is too busy to write much — but hinted that he thinks the key to unlocking this issue is “compression”.
Any ideas on what he means by that?
(Later I’ll throw my two cents in, and respond to some more comments.)
February 27th, 2005 at 5:06 am
Hi, I’ve followed your blog with interest for a while now and am pleased to finally jump in.
I was captivated by the idea of an AI assisted character creation system. Here is the picture that I am getting:
An AI assistant that consists of both a library of creative content, and a system for interpreting user input in order to
a) select applicable content, and
b) organize that content into the appropriate structure.
Through an iterative process, the AI assistant might refine its selections of content and structure.
I have few questions about this idea. When looking at the things that make a creative work unique, it seems that the particular character of an artistic work is in large part defined by its unique structural application of familiar symbols and content. It seems there is a discernable essence at the heart of an artistic work that gives structure to its application of creative elements. For instance, sometimes this sort of structure might make up a common thread running through a particular artist’s work. So, my question is this: Andrew, would you envision a system that could interpret the user’s input and interact at this structural level? It sounds like a difficult task, but might result in an interaction enabling deeper creative expression.
Perhaps such a system would require an abstraction of common types of “structure” — this is how I initially read Will Wright’s mention of “compression.” Even so, wouldn’t the palette of structural possibility be essentially fixed at design-time?
February 28th, 2005 at 4:37 pm
It is important not to conflate two separate concepts here: natural language recognition and programming abstraction. Describing complex algorithms via speech and a “loose” description as in the original posting is basically a Strong-AI level problem that, when we can solve, we probably have a lot of better things to do (like fighting off robotic death squads in a post-apocalyptic future, ala Terminator) than applying it to creating avatars. :)
The second problem, however, which is whether the basic concepts of programming can be abstracted away into a more user-friendly approach, is vastly more tractable. People who want to be “amateur” programmers just don’t care about huge categories of things that “professional” programmers have to. In that elimination of vast swaths of problem space, some much more compact, usable, and comprehensible paradigms for programming become possible. As a trivial example, it is much easier for most non-programmers to manipulate functions, variables, etc through a drag-and-drop spatial metaphor rather than the raw text that programmers are more comfortable with. Scripting tools from a variety of single player games are also clear examples of this — the Age of Mythology trigger editor (which I worked on) can pretty quickly let designers fabricate some complicated logic which they would never be able to write directly in our raw scripting language (which the editor generates from the trigger UI).
Different applications, different skill levels, different power levels, different tools. I wouldn’t hold your breath for magically “talking about” what you want to have happen and see it implemented, but I think we are definitely seeing improvements in the capabilities of tools that can bring programming-style power into the hands of people who are never going to be able to cope with dense text interfaces, unstructured logic, and so forth.
February 28th, 2005 at 7:59 pm
I agree enthusiastically with Rob. All AI pipe-dreams aside, we CAN make authoring dynamic content (ie programming) much easier for amateurs. And while I don’t have great expectations that this will make digital artists out of everyone, I hope I’m not such a snob that I think this means we shouldn’t do it.
Is anyone aware of any tools like this out there? I’ve recently encountered Game Maker which looks to be a good example in the field of arcade games.
I believe there are some similar tools for authoring text-based IF (eg Adrift, although most of them are regarded as rather primitive compared to languages such as TADS or Inform.
I seem to remember that there once was a project to write a GUI interface which generated TADS output. Ah… here it is: Plugh. Hmm. It doesn’t seem to have been updated for a while…
Malcolm
March 1st, 2005 at 6:19 pm
And to follow up the photography metaphor, without cheap & easy photography, we would never have this.
Malcolm
March 3rd, 2005 at 5:41 am
Great discussion. I wish I had the time right now to participate.
Yes, I mean compression as discovering the highest level abstraction that will naturaly map into a player comprehensible model. If we can acheive this level of abstraction/compression then we’re in a position to use the computer as a “creative amplifier” on the players efforts.
-Will
March 4th, 2005 at 1:01 am
I too wish I had more time to comment now — I’ll be more free after GDC. I plan to continue contributing to this discussion then — which also has the benefit of being after Will’s talk. I’ll report back here what I learn at the talk :-).
March 4th, 2005 at 8:02 pm
Whereas I have time, but wish I was going to GDC …