Blog Archives

Teaching Kids to Program in 3D

Computer Kids

On Independence Day, my son Timothy and I joined our Boy Scout troop in making preparations for the annual Fourth of July parade. As the other scout leaders and I were talking about how difficult it was to get the kids up that early in the morning and how they’d rather be playing Minecraft, I mentioned that I taught a game design workshop a couple of months ago but all the kids wanted to talk about was Minecraft. One of the leaders then asked me for recommendations about teaching 3D programming to kids. I told him that I would do some research over the weekend and here is what I came up with.

Kodu is a visual programming language from Microsoft Research made specifically for children as young as 5-years-old to create games on the PC and Xbox 360. Kudo uses a game controller or mouse for input rather than a keyboard. Kids can program simply by choosing various options from a visual menu and can create their own game within three minutes, allowing for rapid design iteration. Kids can sculpt landscapes; decorate them with trees, buildings, lakes and other objects; and populate them with interactive characters, gameplay, scoring systems and more using an intuitive icon-based language. Once created, games can be shared and accessed by others. While Kodu isn’t a general purpose programming language — for example, it doesn’t introduce loops, exceptions, or debugging tactics other than trial-and-error — it does teach kids to think like a programmer by introducing the logic and problem solving of programming as well as demonstrating that programming is a creative medium. Kodu is a free download for PC and a $5 download from the indie games channel of the XBOX marketplace.

Although Kudo is very simple to use and comes with a variety of samples and tutorials, you can get additional help with programming from the book Kodu for Kids: The Official Guide to Creating Your Own Video Games, by James Floyd Kelley

If your kids are of middle-school age, you should check out Alice, a free and open source 3D educational programming environment designed by researchers at the University of Virginia as a gentle introduction to object-oriented programming. Instead of using numbers, letters, and punctuation like other programming languages, Alice uses three dimensional figures placed in a storyline. Users select from a gallery of 700 characters and backgrounds, then select the character’s movements through a pulldown menu. Kids drag and drop blocks of text that instantly affect 3D sprites in a virtual world. Using Alice, kids can create 3D animations, interactive games, or videos to share on the web. It’s more advanced than other kid-friendly programming tools, though great for older kids.

A variant of Alice, called Storytelling Alice, features a gallery of 3D characters and scenery with custom animations designed to spark story ideas and is designed to emphasize social interactions between characters. Both programs are free to download and run on Mac and Windows, although Java runtime is required. There are also a number of books providing instruction on programming with Alice, including An Introduction to Programming Using Alice 2.2 by Charles W. Herbert.

For kids who are ready to roll up their sleeves and dive into actual coding, a good language for 3D programming is JavasScript, the only programming language all Web browsers understand without needing any additional software. Kids ages 9-14 can learn to program JavaScript from a free site called Code Monster from Crunchzilla that blends elements of a game and tutorial to teach basic JavasScript skills. This split screen tutorial places JavaScript on the left of the screen and images on the right. When kids alter the variables on the script side, the images transform instantly in response. Under the instruction of a friendly Code Monster sprite, each new lesson brings new colors and shapes to the right side of the screen. The site parses the code and explains errors, with features including offline usage and the ability to remember where the user leaves off.

Kids can learn more about Javascript programming from the book 3D Game Programming for Kids: Create Interactive Worlds with JavaScript, by Chris Strom. This book teaches kids how to make their own online games with interactive examples. Kids can download the ICE Code Editor, which was created especially for this book to make it easy to get started with JavaScript programming.

More ambitious kids may wish to tackle Unity 3D, a powerful 3D rendering engine that is fully integrated with a complete set of intuitive tools for creating 3D video games or other interactive content. Users write programs for the engine using UnityScript, a custom-made scripting language similar to JavaScript. Thousands of of quality, ready-made assets in the Asset Store, and kids can deploy their creations deploy them to the web, PCs, and iOS platforms. Unity is free, and allows anyone to download and use the program right away.

The Unity 3D website contains an education section with tutorials, detailed documentation and community support. Another website, Unity 3D Student, provides “bitesize” tutorial modules combined with challenge to teach kids the skills they need to know to do game development and also get an understanding of how to research further info as they work. For those who like “book learning”, Unity 3D Game Development by Example Beginner’s Guide by Ryan Henson Creighton takes a clear, step-by-step approach to building small, simple game projects using the Unity 3D engine.

Regardless of your child’s age, there are many other tools out there to teach him or her to code. This amazingly creative, increasingly important, and very learnable skill is perceived to be reserved only for those who are geniuses or “wiz kids”. The reality is that coding is something that most people can do with very little effort.



Why Do Game Developers Crunch?

Crunch time. It’s the bane of game development. In order to meet a launch deadline, I’ve often had to work 60, 80, even 100 hours a week on a game I was developing. I remember visiting a developer’s office at midnight while I was producing a Who Framed Roger Rabbit game for Disney, when suddenly the lead programmer pulled a pillow out of his desk drawer and then dived under the desk to catch a couple hours of sleep before resuming his debugging work.

No matter where I’ve worked, no matter what the circumstances, the project eventually involves crunch time for the development team. Those of us who work in the game industry take it for granted, but those who work outside of the industry (especially my wife) often ask me, “why does crunch time need to happen?”

Actually,there are lots of factors contributing to crunch time:

  • Many games are dependent upon creative and/or technical innovation, which is difficult to predict and schedule.
  • Game design is an iterative process. The only way to tell if your game is fun is to observe playtesters playtest it, and if they have problems understanding or enjoying your game, you have to go back, find a solution to the problem, fix it, and then playtest it again. So, it is difficult to predict how many iterations it will take before a game is good enough to fix.
  • Game development is a very complicated endeavor, often involving hundreds of thousands of lines of code and art assets, or even more. There are millions of things that can go wrong, and people make mistakes, especially when they are under pressure or tired.
  • Game publishing is very competitive, and so publishers put pressure on developers to make games faster, cheaper and better. Often those expectations are unrealistic, requiring developers to work overtime to meet a deadline.
  • Some game development teams, especially in the early days of the game industry, are staffed by very young and passionate people who put all of their energies in making a game, even at the expense of their personal lives during the length of the project. This lead to the stereotype of the game developer with no life. I once had a boss at a large publishing company me, “You’re not a real game developer unless you are work 60 hours a week” even when you’re not struggling to meet a deadline. Today, there are companies who work with a Crunch Time Culture, although the game industry has realized that employee burn-out is a problem and are try to find ways to avoid it.

Thankfully, I think things are getting better. While crunch time still happens far too often, more and more managers in the game industry are realizing that working such longer hours is unhealthy and that crunch time can cause more problems than it fixes. Now we just need to find some other way to get 20 hours of productivity out of an 8-hour work day.