Home About EIS →

Learning in Games

Kodu Game LabThis summer, I’m working with Matt MacLaurin at Microsoft Research on Kodu Game Lab.  For those of you who aren’t familiar, Kodu is an environment for people with no programming experience to quickly create games.  Its visual programming language is designed to be intuitively understandable and its library of characters and objects facilitate rapid game development.  If you’re interested in checking it out yourself, it’s currently available for the very reasonable price of $5 through X-Box Live Arcade.

 One of my goals for the summer is to introduce some interesting AI features to the characters of Kodu.  Among those features is learning.  We want Kodu characters to be able to adapt their behavior based on their experiences.

I’m hoping that this will introduce Kodu users to artificial intelligence techniques, but will also inspire innovative game design within Kodu.  After giving it some thought, I realized that games rarely feature something as unpredictable and adaptive as learning.  Generally, game rules are fairly rigid and finely tuned.  Adding learning to such a system can take it in directions game designers never anticipated, which threatens the carefully planned mechanics.  Even in games where learning seems like an obviously good feature, such as strategy games, it is rarely implemented.

I personally believe that adding features like learning to a game system has a lot of potential, and really allows computer games to shine in a way that analog games can’t.  I have a few game concepts in mind that would take advantage of the new features, but I’m very eager to see what creative ideas the blossoming Kodu community develops.  Do you have any ideas for games that feature learning as a central mechanic?  What type of learning would be useful for such games?

One final thought: one of the biggest challenges for introducing learning is making it accessible to people, especially those without extensive technical backgrounds.  As I mentioned above, learning can often result in completely unexpected and unintuitive behaviors developing, which can be fun and exciting, but can also be terribly frustrating.  I want to make sure that any learning features in Kodu improve a designer’s power and enjoyment of the game lab.  Currently, my best solution to this issue is for learning only to generalize existing behaviors to new stimuli.  Does anyone else have any suggestions or ideas related to making learning accessible and useful for inexperienced programmers?


About the author:  Teale is a PhD student hailing from Fairbanks, Alaska. His interests include content generation, artificial life, and educational games.

This entry was posted in Academics and tagged , , , , . Bookmark the permalink. Both comments and trackbacks are currently closed.

14 Comments

  1. Posted July 23, 2009 at 11:09 PM | Permalink

    Wow, that sounds awesome. What location are you working from? How did you get this gig? I’m down with the whole teaching kids how to build games.

  2. ray kennedy
    Posted July 24, 2009 at 9:39 AM | Permalink

    I have an 8 yr old daughter that has been tearing programs apart, looking for hacks for three years now. zoo tycoon, various sims games, she has the aptitude to break this stuff down to the simplest of levels, but, she has yet to understand the signifigance of math if she is ever to really get to see behind the curtain someday, and have the real fun. any suggestions?
    great blog, great luck this summer
    ray

  3. Noah Wardrip-Fruin
    Posted July 24, 2009 at 11:07 AM | Permalink

    Hmmm… maybe a variant on Lemmings in which the player teaches the lemmings new skills, or reasons for making use of existing skills, rather than having a fixed vocabulary activated by the player?

    Also, take a look at what Evans did for Black & White!

  4. Posted July 25, 2009 at 12:12 AM | Permalink

    @ray
    Honestly, I think you’re fighting a losing battle trying to teach an 8 year-old why matrix multiplications are important to movement through 3D space!

    With her obvious passion for pulling stuff apart, I’d wait until she’s a little older before you introduce such things. Passion is the biggest thing to have, the motivation to learn the mathematics comes from that. Right now, it’s going to be hard to communicate the linkage without her knowing things like basic geometry.

    I think that getting her to play with Kodu would be a huge boon: the understanding of logical, step-by-step thinking, that Kodu provides, is a very core skill, and will aid her learning of mathematics later.

    All that said, math skills are really only important for computer programmers, and there are a great number of jobs in the games industry that don’t require any mathematical or programming aptitude at all. They’re all also having the “real fun”!

  5. Posted July 25, 2009 at 12:14 AM | Permalink

    @Teale: Perhaps you are putting the cart before the horse: the problem is that game designs can’t be verified when learning is put in. Maybe if you can “solve” (not necessarily fix, but provably side-step) this problem first, then we can work out what learning could be used for.

    Like Noah said, I think Black and White is the perfect example here.

  6. Posted July 25, 2009 at 12:19 AM | Permalink

    Hi,

    Will be possible to got access to your samples after this KODU GAME LAB?
    I’m writing book about KODU for Polish children (I have 2 schools with more than 100 children which are learning KODU). Any help will be nice ;)

    Kind regards
    Mateusz Kierepka

  7. Adam M. Smith
    Posted July 25, 2009 at 1:23 PM | Permalink

    Teale, could you clarify what kind of learning you are looking to integrate? There are several options that might make sense:

    - magic/fake learning: Maybe characters in the game aren’t technically capable of learning anything (from a machine learning perspective) but they do have data structures describing what they know. The game can decide when to add elements to this bag of knowledge in response to designer-specified events to give the characters the illusion of learning but still have it be under direct designer control. Having bag-of-knowledge support built into the engine might prompt designers to use it instead of shying away from hacking in an extra state variable.

    - neural networks, reinforcement learning, or various low-level statistical methods: The game learns to predict what you do often and can begin to treat players differently when it realizes they are very likely to do certain things. The learned predictors can be used to anticipate player actions to make gameplay more fluid in a game where the player gives repetitive orders to other characters.

    - symbolic logic learning: The game learns concrete facts or rules that describe the player (from observations). This kind of knowledge is structured enough that it could be displayed back to the player in a reasonable way — something that is impossible with neural networks. I can imagine this working especially well for structures like the-pc-always-does-this or the-pc-never-does-this kind of knowledge. Imagine a friendly npc commenting “most of these trunks are empty, you know you’ve opened every trunk we’ve seen in this dungeon?” Sure, you could script detection of this behavior with existing tools, but if character’s were always doing logic learning on the observed history you might notice nifty rules they are learning and decide to expose a few of these through the interface without having to have thought of the idea yourself. Not too many people have heard about logic learning, but I think it is super cool (I learned from this tutorial: http://www.doc.ic.ac.uk/~shm/Software/progol4.2/manual.ps)

  8. Erik
    Posted July 26, 2009 at 3:58 PM | Permalink

    hi what is needed to use/program Kodu?
    An Xbox and Xbox live arcade membership+that $5?

  9. Teale Fristoe
    Posted July 27, 2009 at 10:30 AM | Permalink

    Sherol:
    I’m working from Redmond. I got the gig with a little Noah magic ;)

    ray:
    One of the big advantages of computer games is that it takes care of a lot of the math for you. There’s no state to keep track of, because if the game is designed well, all information you need (and have access to according to the game rules) is at most a few clicks away. For this reason, I think that hacking computer games might not be the best way to gain an appreciation for math.

    I think that getting your daughter excited about analog games might be helpful, though. Many German style board games require a good amount of math, often involving planning about how to acquire a certain number of resources several turns in advance and how to efficiently exchange resources. From personal experience, I can attest to games involving randomness doing wonders for interest in probability. Even a game as simple as Monopoly might make her start to think about the likelihood that two dice will result in a 7 and the like. There’s a reason that the science of probability developed around gambling.

    Of course, I also believe there are some computer games that might help. Civilization 4 comes to mind. It’s a bit more like a board game than many computer games, and features many of the same required computations, just on a grander scale. Not to mention there are all sorts of history lessons in it as well.

    Unfortunately, if you want her to start appreciating some of the advanced math that goes into programming graphics and physics, I’m going to have to agree with Chris: you’re going to have a tough time until she gets older and more exposure to math. However, she might start to get an appreciation for these things if she starts working on her own games. Kodu wouldn’t be a great environment for this, because it takes care of the tough stuff for you, but if she gets into programming even simple text based adventures, she might begin to realize the importance of math.

    Noah:
    I will look into Black and White. I’m really missing the UCSC library right now.

    Chris:
    If I’m understanding you correctly, I think we agree: including learning in a game design makes it very difficult to predict how the game play will work out. I don’t have a good solution for this issue. I will look into Black and White and hope for inspiration.

    Mateusz:
    Feel free to contact me with specific questions about Kodu. I have no samples to share myself, but the Kodu online community is producing some really great publicly available games, all of which are downloadable and modifiable. That would be a great place to start looking for examples of what the program can do.

    Adam:
    My current plan is to use something like very simple neural networks for learning, but I am open to other ideas as well, especially with game designs that make inspiring use of alternative plans.

    I haven’t heard of symbolic logic learning before, but will spend today eagerly looking over the tutorial you suggested.

    I don’t think the fake learning option you mentioned is a good fit for what I want to do. For one thing, something like it can already be implemented using pages or scores. While neither of these options is particularly elegant, hacking rarely is. More importantly, though, I would like the learning options to be at least to some degree unpredictable.

    Ultimately, what’s important to me is that the learning system is understandable to inexperienced users, and that it has real value for at least some games.

    Erik:
    To the best of my knowledge, that’s all you need to get and use Kodu. All programming is done using the x-box controller. I believe you can find Kodu in the community games section, or something like that.

  10. Posted August 5, 2009 at 12:29 PM | Permalink

    I have always wanted to crack my way into the game design industry. Kodu sounds like a great program for newbies but can it really create complicated games with great graphics?

  11. Teale Fristoe
    Posted August 6, 2009 at 9:55 AM | Permalink

    Jon:
    I think that developing complex games in Kodu would be a challenge. The language is very easy to learn and understand, but these virtues come at the cost of serious scalability issues. Also, while the graphics in the environment are great, all games made with it look similar in many ways. If you are trying to break into the game industry with a game of your own, I think you will want distinct graphics that make your game stand out.

    However, I do believe that Kodu has value to game designers of all skill levels, because it allows you to quickly and easily create prototypes of new game ideas. Prototypes are essential for both experimenting with new mechanics, allowing you to figure out what works and what doesn’t, as well as creating a point of reference for sharing original ideas with other people.

  12. Noah James
    Posted November 14, 2010 at 12:45 PM | Permalink

    Designing Games would be a great way for young people who like gaming to learn programming. That is what I have started to do. Great blog!

  13. Joe
    Posted January 4, 2011 at 11:45 AM | Permalink

    I think game design is a dream of many kids, my 10 year old son is getting more involved with the way games are designed. It kind of reminds me of when I was a kid and really loved electronics and would take stuff apart to see how it was put together.

  14. Brian Walekr
    Posted February 27, 2011 at 2:31 PM | Permalink

    Ray,

    How did your daughter get into this level of game interaction? I am looking to introduce my 6 year-old to deeper involvement in games than just playing but am not sure how to get him started……Brian of Fun Games For Math

2 Trackbacks

  • [...] the motivation to learn.  Similarly, there are many educational avenues from the experiencing to building of interactive experiences– whether it is to learn about the technology itself or to be [...]

  • By Learning from Games on August 6, 2009 at 3:07 PM

    [...] Once again, I want to discuss Kodu Game Lab, which I have the privilege of working on this summer.  Kodu is an environment for developing games, not a game, per se.  While I have seen firsthand how engaging it is for kids and how quickly they learn programming techniques from creating with the environment, I want to argue that every game developed in Kodu has massive potential for being educational.  This relies on one simple fact: every game developed in Kodu is open source (of course, Kodu itself isn’t open source; do you really think Microsoft would allow that?).  If someone plays a game and is curious about how it works or has trouble beating it, all he or she has to do is edit it and examine the code to see its inner workings. The Kodu just wants to visit the castle. [...]