| ||||||||||||||
| ||||||||||||||
|
||||||||||||||
Kent Quirk
CogniToy recently produced MindRover, an excellent game that allows you to design your own robots to fight, race, navigate and play in a virtual environment.
G5: How did the idea of MindRover come up? What were your goals in creating MindRover? Back in the mid-90s, I was the user interface designer of a visual programming product. During user interface testing, I discovered that a visual programming system made it possible for even untrained users to develop useful and interesting programs, and they had fun while doing it. I thought it would be great to try to give kids a way to experience the fun of programming without quite so much of the pain, and I started looking for a way to do it. After a brief stint working for an educational software developer, it became clear that fun was vastly more important than any kind of strict "educational" value. After a couple of years of tinkering with the idea, I settled on the concept that eventually became MindRover. The key goal was to make a fun game that relied on programming as the foundation of the user experience. Initially, we actually expected to permit people to write code in a textual programming language as part of the game play, but we discovered ways to make the visual system so expressive that we dropped that feature. I think it improved the game immensely to have that discipline. G5: What is the smartest rover you've managed to create (or you've seen created) using conventional MindRover components? Do you see modern AI techniques being useful in MindRover? I must confess that although I'm the game's designer, I must bow before a couple of the users of MindRover who have created immensely interesting and complex vehicles. If you want to see the best that MindRover can create, visit some of the MindRover fan sites and see the contests they run. The sophistication of the vehicles is astounding, and tremendously fun to watch. But MindRover is really about traditional programming; really advanced AI techniques would be difficult to create using the MindRover interface. In fact, I seriously considered using fuzzy logic as the implementation system, and ran into the "fun" barrier. Fuzzy logic programming requires a small amount of thinking about the fuzzy system, and a whole lot of tweaking parameters. When a MindRover design fails, it usually fails in fun, interesting, and often spectacular ways. When fuzzy logic fails, it just doesn't work as well as you'd expected, and you might not have a good idea why. I also wanted it to be realistic with respect to real robots. The MindRover virtual machine (VM) was designed to be similar in power to a small embedded CPU. Each robot is running its own computer, and its only knowledge of the world is what it can glean from its sensors, which are mostly realistic. (Though we did stretch reality in a few places to make things more fun.) G5: Do you have any tips and tricks for creating good rovers using the interface? Using the ICE language? The key to understanding the MindRover wiring interface is to understand that everything is event-driven. Basically, you normally get notified only when states of things change. The biggest source of difficulty is people wanting to write loops that mostly do nothing except when the state changes; they need to learn to think about the problem a little differently. Usually we find that we're able to suggest an event-driven design that accomplishes the same task without needing a loop. There are a few tips and tricks, little idioms that make life easier:
Regarding ICE, perhaps a little history is in order. As I said above, MindRover was originally designed to allow users to write code in ICE within the game. But we decided it made for better gameplay if we left that out. Consequently, ICE is actually an extremely robust and user-friendly language. It's an object-oriented language with syntax like BASIC (so it's easy to use and relatively free of things like odd punctuation) but semantics like Java. This gives us the ability to use inheritance and encapsulation to build robust, safe systems. We don't officially "support" the concept of direct ICE coding of vehicles, though we do permit it. And we've established a set of interactive pages on our web site where our users can support each other in their explorations, with occasional help from us. Most people coding in ICE are building new components for MindRover. G5: What are your future plans for MindRover? Will they be as AI-focused as the current version? Some form of MindRover 2 is definitely in the works. A focus on programming is key to CogniToy's vision. We're not making any official announcements yet, but the key goals for us will be to open it up to a broader audience by making it easier to get started, while at the same time extending the programming systems in a way that will support more complex behaviors. And of course, we want to bring it up to date with the next generation of gaming technology in graphics and sound and physics. G5: What are your favourite games? Why? Which recent game do you think exhibits the best Artificial Intelligence? What sort of behaviour would you like to see in modern games? Well, I'm a bit schizophrenic. I have to admit I like mind games -- puzzles, adventures and so forth. The harder, the better. I really loved games like Grim Fandango because they make ME think. The AIs in those aren't what the game is about -- though they're often convincing enough to sustain the illusion of live interaction. On the other end of the spectrum, I like shooters. I'm a sucker for a good plot-driven shooter. Unreal and Half-Life were my two favorites of recent times, and I'm cranking my way through No One Lives Forever right now, which I'm really enjoying. The AIs in these games have to do with what the characters do when you start interacting with them, either armed or not. The NPCs in NOLF are usually pretty smart; they hide behind barriers sometimes, charge you if they spot you, run away when they're hurt. But sometimes they just flail about, stuck behind a wall. You probably don't want to hear that my favorite game for most of last year was Tribes, which doesn't even HAVE an AI. I love the teamwork aspect of that game, and I'm anxiously awaiting Tribes 2. G5: Are you interested in the more academic side of Artificial Intelligence? What sort of fields do you see being most applicable to games and robotics in the near future? I'm very interested in genetic algorithms and fuzzy logic, and I've studied some of the more "classic" AI stuff, from Eliza to SHRDLU, as well as Braitenburg Creatures. I guess I'm kind of a constructionist -- I believe in the concept of emergent behaviors (big behaviors coming from small, interacting programs). I don't much care to argue about whether computers can truly be made to "think" (I happen to believe in the value of the Turing test, but I'm not going to fight about religion). I'm not even particularly interested in how to make computers reason like people -- people do that really well already. But making computers navigate competently in the real world is a task I find fascinating, and I think we're most likely to succeed at it by encapsulating small behavior-response systems in a larger goal-seeking engine. So MindRover definitely provides a means to explore some of that problem space. One of my "I'd like to tackle that someday" problems would be using MindRover's description of vehicle wiring as a "genome" and experimenting with genetic algorithms. We have a mechanism (scenarios and competition) for running a fitness test, and it might be possible to generate some surprising and interesting rovers using genetic algorithms. But for now, that's a fantasy. G5: Do you have any funny stories about creating the MindRover AI. One of the contestants in an early MindRover contest was submitted by a 6-year-old, who described the algorithm to his father, who then implemented it for him. They submitted the kid's vehicle because it beat the father's in a head-to-head competition. We brought the demo to our beta kickoff party, and put the game up on the projector. Thirty people stood around watching the demo as we wired up a sample battle vehicle. We hit go, and bit my lip to see what people would think. I knew we had a winner when thirty people started cheering for a virtual robot running itself around the computer screen.
Submitted: 02/02/2001 |
|
|||||||||||||
All content copyright © 1998-2007, Generation5 unless otherwise noted.
- Privacy Policy - Legal - Terms of Use -