Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
September 30, 2014
arrowPress Releases
September 30, 2014
PR Newswire
View All





If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 
Games That Teach Programming: A Brief Overview
by Rob Lockhart on 09/05/13 11:34:00 am   Expert Blogs   Featured Blogs

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

 

It all started with LOGO.  If you don't remember making this little turtle crawl around and draw stuff, then your childhood wasn't complete.  In fact, you should probably go back and do it now.

I like TURTLES
fwd 20 lt 90 fwd 40

Seymour Papert, a researcher at MIT, reasoned that children could learn programming more easily if they were given a fun programming environment to play around in.  This was so successful in the case studies he observed that he was forced to develop an explanation.  He called his theory of learning 'constructionism' (because the student can construct their own knowledge by experiment).  This spawned a genre of software toys designed to teach programming (all after my time, unfortunately).  Toys like AliceGreenfootRoboMindGameStar Mechanic (my favorite), and Scratch (the most popular).  Even Lego's robotics platform, Lego Mindstorms is an extension of the ideas Papert outlines in his books 'Mindstorms' and 'The Children's Machine' and is perhaps the most faithful to them.

These efforts have engaged millions of students in learning about technology, and has given them great early exposure to the field.  In my own first grade class, we had a teacher (I think his name was Mr. Costa) who took care of the computer lab and taught computer class.  We were taught the basics of LOGO, and then asked to produce a project of our choosing.  My partner and I worked diligently to put together an animated scene of an F1 racetrack, complete with cheering fans and cars circling the track.

racetrack
In my mind, it was amazing, but it probably looked like this.

We were very proud to present what we'd done to the class, but when the time came we found out that we were the only group out of 10 or 12 who had actually done anything substantial.  A few pointy spirals.  A few rounded spirographs. Disappointing.  The next year Mr. Costa was replaced, and our 'computer class' was about typing and learning to use Microsoft Word.

Maybe I was just the right kind of kid to get hooked on programming early, but for most of the first-graders in my class, the motivation just wasn't there.  That's what I see as a lack inherent in these toys built with constructionism in mind: motivation.  Why am I exploring this educational environment?  What am I supposed to do here?  When some students are told "you can do anything," what they hear is "there's nothing to do."

In my case, I was motivated by curiosity.  For many people, motivation is more extrinsic.  Code.org lists resources for motivated adults to learn how to code, usually for career-oriented reasons.  Kids in the third world, and everyone in the eighties, when Papert was doing his work, are at least somewhat motivated by the novelty of interacting with the machine itself.

Woooooo!

Today, getting to interact with a computer is not such a treat.  For many school-age children in the US, it's the default state of being.  The software has to have a better 'why' built into it.  That's where games come in.

Many authors have written (more eloquently than I ever could) why games are such a perfect learning environment.  Central to those arguments is the concept of intrinsic motivation.  Winning a game is gratifying for its own sake (there's evolutionary hard-wiring there).  Games, ideally, keep players always at the edge of their capabilities, wanting to get better to accomplish the next task and unlock the next bit of power-up or narrative or whatever digital carrots the game designer decides to add.  Games also offer a kind of social capital that creative tools cannot;  creative work cannot be compared quantitatively in the way that a score or level can.

Until recently, there haven't been many efforts to create an actual Game that teaches programming.  Let's go over a few.

Screen Shot 2013-09-04 at 4.36.21 PM

Light Bot

This is going to stand in for a whole bunch of what are essentially puzzle games, like Daisy the Dinosaur and Robozzle.  I've got nothing against puzzle games, and I think any game that adequately introduces the mechanics of programming has to have a puzzle component.  That said, puzzle games are the genre of game most like homework.  These games in particular don't introduce any kind of stakes - no reason to complete the puzzles.  Also, one of the principles of responsive games is to decrease, as much as possible, the (user input)/(in game consequences) ratio.  By their nature, these kinds of puzzles require a lot of player input for very little onscreen action.

I titled this section after Light Bot because it's actually the best I've seen in this category, but most entries in the category are characterized by very little professionalism.  It's easy to speculate on the creator's thought process. "I've never made a game before, but I'm a programmer, so how hard could it be to make a game about programming?"

 CodeHero

Code Hero (unfinished)

There's been a lot of hubbub about Code Hero recently, but the concept is still an exciting one.  It uses the concept of the action-puzzle game, popularized by games like Portal and Quantum Conundrum.  It also gives the player a first-person perspective, so they can feel situated in this world where code is so important.  It reminds me of something Papert says in 'The Children's Machine': "What would happen if children who can't do math grew up in Mathland, a place that is to math what France is to French?"  In Code Hero, you grow up in Codeland.  I am anxious for the Primer Labs team to continue development.

The one criticism I have is that this game (and Portal) feel a bit contrived.  I'm in some kind of laboratory environment where I have to complete spatial reasoning puzzles...because...things?  In Portal they call it like it is -- "tests."  A robot is testing you, to see how clever you are.  That narrative conceit (which was always a cop-out) can only be used once.

CodeSpells

Code Spells (unfinished)

Code Spells has all the situated-learning benefits of Code Hero, but also addresses my criticisms by placing the player in a fantasy world where she must help little gnomes to complete tasks.  Meanwhile, there is a monster roaming around.  The idea of code-as-magic is one that I love.  It explains why magic is so often botched and broken, why it takes a lot of concentration and diligence, and why it is best practiced by ancient masters.

All my criticisms of this game are a consequence of it simply not being finished.  I can't wait to see what the team at ThoughtStem adds next.

codemancerlogo_web

Codemancer (unfinished)

I independently decided to use the magical-programming metaphor for a game I'm developing called 'Codemancer' which I'm not ready to talk about in detail, but which I hope will be an example of how to do this genre right.  The main difference in my game is that it has a less specific focus.  I thought it would be better to develop my own visual programming language (which has a lot in common with LOGO), so I could make the basics as accessible as possible.  I hope you'll follow along in its development by following me on twitter here.

I'm not proposing that constructionist learning environments be eliminated.  Whether a student responds to an exploratory style depends on the individual student, and indeed many students respond well.  There are, I believe, a lot of learners who are underserved by making exploration the only means of discovery.  I'm excited for the time, approaching soon, when these learners will have the option of a more narrative, guided, fun-motivated way to learn programming.

 

PS - If you have a game about programming you'd like to see mentioned, please add it as a comment to this post and I'll try to play it and add my thoughts.


Related Jobs

Raven Software / Activision
Raven Software / Activision — Madison, Wisconsin, United States
[09.30.14]

Network Engineer - Raven
Raven Software / Activision
Raven Software / Activision — Madison, Wisconsin, United States
[09.30.14]

Sr. Gameplay Engineer - Raven
Raven Software / Activision
Raven Software / Activision — Madison, Wisconsin, United States
[09.30.14]

Senior FX Artist - Raven
Raven Software / Activision
Raven Software / Activision — Madison, Wisconsin, United States
[09.30.14]

Lead Engineer - Raven






Comments


Urbain Bruno
profile image
Hello Rob, looks like we found someone that shares the same interest as we do!

You can actually take a look at our game Algo-Bot: http://seriousgaming.fishingcactus.com/en/Projets/Algo-Bot/algo-b
ot_programming_technobel.html

While the initial steps are inspired by Lightbot (which is my favorite because of the slow introduction of the different concepts) we added some complexity with variables, functions, conditions and the initial steps are driving you towards an optimization process (and unlike Light Bot we have scores, goals and a plot). Later in the game you not only have to instantiate one single entity (the main robot) but several ones in the same sequence (minor robots) and you have to coordinate all those guys together.

Again later in the game you are given access to the code behind the logical blocks, in LUA and you can script your own logicial blocks to overcome the puzzles in a more clever and controlled way. We wanted to provide context for the players to understand what they were doing and if they understand the goal they can better grasp the complexity of the code behind it and experiment.

The game is already available on an educationnal level and we have some plans to make this game available for everyone to play in a near future.

We also have plans to introduce some multiplayer at some point too.

I'll keep an eye on Codemancer, I just added you on Twitter :)

Cheers

Rob Lockhart
profile image
Followed back! I'd love to play the game -- please let me know when it's more widely available! bobbylox (at) importantlittlegames (dot) com

Jay Margalus
profile image
The analog game realm is ripe with examples. Check out Kaxxt by _why (http://ruby5.envylabs.com/episodes/106-episode-104-august-20-2010
/stories/901-kaxxt and http://www.youtube.com/watch?v=I4U1vO-lMS0). Also quite relevant is this current Kickstarter called "Robot Turtles" http://www.kickstarter.com/projects/danshapiro/robot-turtles-the-
board-game-for-little-programmer.

You've picked a topic very near and dear to my heart, Bobbylox.

Urbain Bruno
profile image
Jay is RoboRally (http://fr.wikipedia.org/wiki/RoboRally) shares a lot with Robot Turtles (well if it was not preschool)?

Jay Margalus
profile image
Never played RoboRally before. It does look a little like Robot Turtles, though. Coincidence?

Urbain Bruno
profile image
http://boardgamegeek.com/boardgame/18/roborally

RoboRally is definitely more mature and intended as a board game rather than an educational game about programming. But with Robot Turtles I guess Dan touches a sweet spot targeting kids (and he removed the complexity of RoboRally in a very clever way).

Rob Lockhart
profile image
Yeah, Robo-Rally was made by Richard Garfield, which is pretty cool.

Patrick Reding
profile image
By far my favourite programming game is SpaceChem. While I'll admit its position-based language isn't directly applicable to any existing programming languages, it definitely encourages thinking like a programmer. Or at any rate, playing it feels fun in the same way writing code feels fun. Its designer, Zachary Barth, has also created a number of other games along these lines.

Rob Lockhart
profile image
Yes, I loved SpaceChem, too, but I wasn't sure if I should include it. Thanks for giving it a shout-out! http://www.spacechemthegame.com/

Mike Nowak
profile image
Absolutely missing "Carnage Heart". Man, did I love that game on the Playstation and probably as hardcore of a game as you could find then. It was basically your standard strategic game with mechs that you can custom build and resources to manage but with the extra customization of being able -- and needing to -- customize your mech's AI in addition to its weapons load-out. There was a complicated tile based programming "language" that gave you access to weapons firing, movement, sensors, and basic programming concepts (ifs, variables, basic math).

It was incredibly satisfying sending a very "weak" mech, in terms of armour, mobility and firepower, against numerous much more powerful foes and seeing it out-smart them to win. I think it's the only strategy game I've played where software literally trumped hardware.

Rob Lockhart
profile image
Interesting. Someone else pointed out something similar to me, which was available in one of the Final Fantasy games?

Emory Myers
profile image
The PSP version is pretty great when played on a Vita.

nicholas ralabate
profile image
It's funny to see visual dataflow programming getting popular not only in programming games (Carnage Heart is amazing) but as a way for non-technical people to make things... UE4 is going to be Kismet only, Microsoft's Kodu, Quartz Composer, whatever that one that's really popular on the Unity store, etc. etc.

Henrike Lode
profile image
Please take a look at Machineers (www.machineers.com). It's a puzzle adventure with the look of Machinarium and gameplay comparable to The Incredible Machine or Cogs where children from 8 years can fix and build machines while stealthily learn logical and computational thinking. This game prepares them to understand the workings of abstract programming concepts through visual metaphors as a preparation for learning programming.
It was prototyped as part of a Master thesis in Game Design at ITU Copenhagen and is currently being developed into a full game, to be released for iPad by the end of 2013.
Check out the commented walkthrough (http://www.youtube.com/watch?v=LVtOgnpEFXI) for a short explanation of the design, download the free demo on the website, or send me your email for the full beta (only for iPad)
Trailer: http://www.youtube.com/watch?v=LxHKmiIuG5c
Thanks!

Rob Lockhart
profile image
Looks awesome! Sign me up for the beta! bobbylox (at) gmail (dot) com

David Smith
profile image
You might want to read "The Wiz Biz" by Rick Cook for an interesting take on magic and programming.

Rob Lockhart
profile image
That book looks awesome. I'll reserve it at the library now.

Alex Rose
profile image
I played a really interesting game as a teenager called Colobot.

http://www.ceebot.com/colobot/index-e.php

You had to land on planets, cultivate uranium, jetpack around, build little bases, fight the indigenous species etc.

More pertinently, there were robots that you could control, or assign basic tasks. But you could also bring up a console window and program their behaviour yourself in C#! Now, back then I thought code was a dark art and I never tried, and subsequently got stuck on one level where I just couldn't keep up with the multitasking anymore that should've been handled by scripts.

Annoyingly, C# is now my favourite language, been using it for a year and a half. If only I'd actually put the effort into that game 8 years ago I might be a programming marvel today :P .

Found a clip of the C# editor on youtube: http://www.youtube.com/watch?v=jqLTZ1dF86U&t=3m45s

Ron Dippold
profile image
There are a whole bunch of ancient games that qualify. Of course they're all probably too old to be too useful to you right now.

Rocky's Boots and Robot Odyssey let you do your own in-game graphical programming and puzzle solving on an Apple II, C64, etc. It was quite the amazing bit of software. ( https://en.wikipedia.org/wiki/Rocky%27s_Boots ) ( https://en.wikipedia.org/wiki/Robot_Odyssey )

RobotWar by the great Silas Marner had you programming robots to fight in an arena using a BASIC-like language ( https://en.wikipedia.org/wiki/RobotWar ). You really could include all the Core War type games here.

I was just looking up info on OMEGA and ran across this: http://programminggames.org/ - well, that covers it.

Rob Lockhart
profile image
Thanks for listing your favorites. I think it's important to point out the distinction between games that require programming and games that teach programming. In any case, I'd never heard of most of these, so thanks!

Ron Dippold
profile image
I would say that Rocky's Boots and Robot Odyssey definitely taught it.... RobotWar not really. Other than by brutally killing you till you learned.

Daniel Bennett
profile image
Robot Odyssey is a great game. I loved playing it as a child and I'm pretty sure it had an impact on my abilities as a young programmer. I play it every once in a while even now and created a mini game (http://bitsquest.bitbucket.org/) for my employer that was heavily inspired by it.

Adam Gashlin
profile image
Very cool, I hadn't heard of your game, I'm very interested in magic-themed games about learning to program. I've written about this a bit on my sparsely populated blog:
http://blog.gashlin.net/?p=8

Nothing much to add to the list, all my favorites have been mentioned, but here are a few:

- ToonTalk is an environment with a gamelike tutorial and world:
http://www.toontalk.com/English/kidsask.htm

- Blockly is a framework for blocks languages, like Scratch, it has a tutorial that's essentially an easy puzzle game:
http://blockly-demo.appspot.com/static/apps/maze/index.html

I'll keep an eye out for Codemancer, I'd love to hear more about it!

Rob Lockhart
profile image
I'll definitely be talking about it more. Stay tuned on twitter @bobbylox!

Mattias Fagerlund
profile image
We (small team, me and a gfx guy) are working on a game called Machinist-Fabrique which brings physically simulated machines and visual programming (a lá Scratch) together. The goal is to teach programming concepts through pure playing, no teaching (if it can be avoided). Having to explain any mechanic in a game is a bit of a failure - the goal is for the users to figure it out for themselves and feel clever, but we'll see.

The game contains a backstory (you need to fix the scrambled machines because they're what supply power to the denziens of the city-factory Fabrique) and a scoring system where you get gold stars for using certain solutions over others.

I intend to have a progression with both more difficult/rewarding puzzles and more difficult programming concepts. Initially it's just events (On machine start) and operations (turn wall left), but sending messages and loops follow shortly. After that, I'll introduce variables and so on. I hope to create something that both small kids and adults can play and enjoy. We'll see.

I'm hoping to release a beta in the not too distant future; See http://www.indiedb.com/games/machinist-fabrique and http://forums.tigsource.com/index.php?topic=35517.0 for more details.

Mattias Fagerlund
profile image
I've released a semi-public beta of the game at http://BarbarianRaidingParty.com/ - it's a windows only game that requires .NET framework 4.0 and DirectX 11

Any feedback would be more than welcome.

/mattias

Martin Exner
profile image
Hi. I have a learn-to-code game in the making. Its called "Coding Pirates" for iOS and Android. The game takes the game mechanics from Light Bot a step further by introducing if-else-statements in a visual programming language. My goal is to make an "easy to lean - hard to master" coding game, targeting middleschool kids and geeky adults ;-) Therefore, the coding still 100% symbol-based but there is no limit for the complexity of the codes you can make.

The plot: Our hero is a pirate. He has a lot of gold, but an evil TAX-man wants his share. Therefore the pirate gets an idea: Hide the treasure on small islands and write a map only he understands! The key element of the game is the map-writing part, which is a lot like coding.

For now we are preparing for the beta tests. You can sign up for testing, and keep updated here: http://constructingkids.com/codingpirates/

Let me hear what you think :)

Rob Lockhart
profile image
I just signed up for your beta. Looking forward to playing!

Mark DeLoura
profile image
Hakitzu on iOS is another interesting one: multiplayer Javascript fighting robots.

Bryan Powell
profile image
Lemmings

Keerthik Omanakuttan
profile image
I worked with a friend on a design for code-driven multiplayer combat game that we're really proud of. Here's our first iteration that we submitted for the Mozilla Game-On jam early 2013 (got an honourable mention).

http://swarmcombat.herokuapp.com/

We think the game is much better suited to a full-fledged desktop environment with multiplayer matchmaking, bot missions, etc, but this is what we made as a proof of concept, and we really enjoyed playing it ourselves!

I think we do a better job of contextualizing coding, and also encourage thinking about other concepts like swarm robotics and interplay between networked elements.

What are your thoughts?

Brad Wedell
profile image
Great article! I'm the founder of http://BotLogic.us - we just launched our prototype at the beginning of August, and are working with educators, parents, players, and gaming professionals to get feedback on the game so that we can optimize it to be more educational and engaging. I would really appreciate any feedback you have!

Rob Lockhart
profile image
I'll check it out!

Raphael Bastide
profile image
modul.io is a multiplayer sandbox which allows to easily setup AI-controlled entities.
It is open source and written in JavaScript.
https://github.com/lisezmoi/modul.io#modulio

Petr Ichor
profile image
I was impressed by the Html5 front end recently developed for the game 'Ruby Warrior'.
find the snazzy new front end at https://www.bloc.io/ruby-warrior
and the original game is at https://github.com/ryanb/ruby-warrior

Rob Lockhart
profile image
It looks cool, to be sure, but doesn't seem to work.

y h
profile image
I still remember "coding" in Logo in a Stealth Transportable PC

Samuel Mlodozeniec
profile image
Hey Rob, nice article. It caught my attention because I'm working on a game that teaches programming as well. It seems to be a burgeoning little niche. Our game is called Beta! and it is a 2D platformer with a built-in console that allows you to code your own levels, change the physics of your level, share your levels with friends and more. We are still in alpha but have done some workshops with groups such as The Village (in Philadelphia) and Black Girls CODE in New York.

Check out our site at www.betathegame.com and if you like what you see sign up for the beta of Beta! If anyone reading has any questions or just wants to talk feel free to email me: samuel {at} hiddenlevelgames {dot} com

P.S Code Hero looks pretty dope!

Rob Lockhart
profile image
I signed up for your mailing list. To be clear, I have no involvement in Code Hero.

Samuel Mlodozeniec
profile image
Cool - I'll be following Codemancer. Good luck!

Jan Paul Posma
profile image
What about "The Robot Club". I haven't heard much about this game, but remember that I played it as a child. It was amazing. (see http://www.allgame.com/game.php?id=23973&tab=credits and http://www.gamasutra.com/view/authors/227160/Eric_Zimmerman.php)

Rob Lockhart
profile image
I've heard about this, too. Any idea where I can play it?

George Saines
profile image
Hi Rob, my cofounders and I have been working on a title called CodeCombat for a few months. The prototype is available here: CodeCombat.com It's very basic at the moment, but it does show the direction we're hoping to take the game. Our goal is to create campaigns that can substitute for lectures/books and provide a more entertaining way for people to learn programming. If you have any critiques for us, we'd love to hear your thoughts!

Rob Lockhart
profile image
I'm getting a 404 error on your website

George Saines
profile image
Thanks for looking Rob, and sorry for the downtime. Nodejitsu has been really unreliable for us, we're switching to Linode today, but if you could check back in a few days, we would really appreciate your feedback.

Michael Hawker
profile image
Hey George,

CodeCombat looks pretty promising. Exciting to see the action element mixed in there. However, I'd have some concerns if you're planning to use it in an educational context in its current state.

I've dropped you a line through your website contact form with more info. Looking forward to chatting with you.

Thanks!

George Saines
profile image
Hi Michael, got your email, and wanted to say thanks for all the detailed feedback, I just responded via email and downloaded Space Battle, but I only have Mac OS, I don't suppose there's a dmg version I could check out? Would love to return the favor and give you any feedback I have.

Thanks again!

Michael Hawker
profile image
Thanks George,

I replied again. Looking forward to checking out CodeCombat more.

Unfortunately, we don't have a Mac version of our server (nor do I have a access to a Mac to try building it there). However, if you can find a machine to run the server on, then you can certainly connect to it from a Mac client as client ships are written in Java. I just updated my post with instructions for setting up a client in jGrasp which does have a Mac port.

If you do have a chance to run it, I'd love to hear your experience.

San Cl
profile image
Rob, thanks for posting this article and thanks to all who posted examples or other titles. I am currently a programming student and have yearned for a game or some sort of game-styled learning tool to help me pick things up and get the petal to the metal so to speak for my programming skills. I am a problem solving oriented person but reading books and looking at screens has never been an exceptional way for me to learn. I recently realized in life that I am a kinesthetic learner and it has made me think about all the things I enjoy or have an interest in and how I could incorporate them into learning in the manner that my mind/body/brain adopts best.

I hope to become a better & thoroughly competent if not a skilled programmer, and when/if I do so I hope to one day make a RPG type game that would help players learn not only the concepts of how coding/programming should work but also some specifics such as how code can be organized/creating a unique and successful coding style etc. But alas for now I have to try to find ways that work for me while the majority of teaching tools are on a screen and all words. I've heard some people mention alice, or visual basic (not exactly a game, but more visually oriented rather than entirely text driven) but I feel like those are kind of easy outs or (no offense to anyone who uses them or created them) somewhat more childlike, young introductory kind of tools.

I look forward to following this discussion more in hopes of what other things may pop up. Again many thanks for posting this as it's been a topic that has bounced around my head for a few months. Keep up the great work!

San.

Michael Hawker
profile image
Hi Rob,

Really nice article covering the history of learning to program and where things are headed. I too remember using Logo back in middle school. We were fortunate enough to have a system which let us hook it up to Legos (way before their Mindstorms/NXT system was out). That was pretty amazing at the time.

I know you mentioned above that you had kind of excluded the 'Programming Games', but I think they're an interesting step at higher levels of education.

Check out what we're doing with Space Battle Arena at Issaquah High School on my site: http://battlearena.mikeware.com/

Thanks!

Or-Tal Kiriati
profile image
Hi Rob, thanks for this excellent article.
I didn't go over all of the games mentioned above obviously but I have 3 main questions:
one, do these games actually teach programming or are they meant to teach the logics of programming, thinking like a programmer? If they do actually teach programming, which language are they most close to?
My 2nd question is do you think there are different types of games to attract boys and girls to programming?
And my last but not least:
I love the visual simplicity of the programming in the games that I have tried. Why cant we program this way? Visually instead of verbally? (Learning C# nowadays, misplacing ";" or similar can drive me nuts...)

Rob Lockhart
profile image
There are a few, like Code Hero, CodeSpells, and now CodeCombat which teach the player a specific programming language. In my experience most teach programming logic in as generic a way as possible, probably so that lessons learned can be applied as broadly as possible.

Damian Esteban
profile image
Let's not forget Scalatron.

This is a really cool way to learn this awesome language:

http://scalatron.github.io/

Jonathan Schor
profile image
We've recently released CodeMonkey. It teaches CoffeeScript! You can try it here:
http://codemonkey.co.il


none
 
Comment: