top | item 6345975

Games That Teach Programming: A Brief Overview

90 points| jlees | 12 years ago |gamasutra.com | reply

54 comments

order
[+] edtechdev|12 years ago|reply
He forgot about all the robot fighting games, where you 'program' a robot (or tank) to fight other robots/tanks, such as: http://fightcodegame.com/ http://robocode.sourceforge.net/ http://www.nessbots.com/ and dozens of others: http://www.sumost.ca/steve/games/

Also, there are tools that make it easier for kids/beginners to create games, and in doing so learn programming, such as: http://www.playmycode.com/ http://pixieengine.com/ https://www.scirra.com/construct2

Some other LightBot-like games include Cargo-Bot, Robologic, and several others: http://breakoutmentors.com/kids-programming-resources/

There's ComputerCraft in Minecraft, etc.

And there's learning programming by modding games/simulations such as minecraft

[+] _frog|12 years ago|reply
I'd like to throw in a mention for LittleBigPlanet 2[1] on the PS3 as well. The first game in the series allowed users to create their own platforming levels using simple but powerful tools, which more talented creators used to build things like physical logic gates that allowed for more interactive creations. In LBP2, the developers embraced that side of the game by adding proper logic gates which could be packed into microchips, objects that allowed creators to read raw button inputs from the controller, and so on. People have gotten incredibly creative with those tools, going so far as to build everything from custom games to ray tracers in it. Also the visual style of that game is just incredibly charming, far cry from the aesthetic of most modern AAA games.

Another worthy mention is SpaceChem[2], a game that revolves around bonding elements together using a deceptively sophisticated visual programming language. It's not really directly about programming, more of a puzzle game really, but I feel like it uses the same part of my brain that programming does and it'd be a good way to get people into the coding mindset.

[1]: http://www.littlebigplanet.com/games/littlebigplanet-2

[2]: http://www.spacechemthegame.com

[+] kwikshot|12 years ago|reply
Is LittleBigPlanet 2 a significant improvement on the first one? I'm wondering if it's worth buying the second one at this point
[+] mentos|12 years ago|reply
Running an Ultima Online server with an emulator called RunUO was a fantastic learning tool for me in high school.

I've always thought you could craft a curriculum around developing for the emulator.

You could start off small as I did by just teaching students how to create items in the game. Show the inheritance hierarchy where 'Uber Sword' inherits from 'Sword' which inherits from a base class 'Weapon'..

Teach students how to write their own spells in the game with delays and different damage types which exposes them to simple if/else logic, timers, enums, etc.

Advance to creating your own monsters and NPCs that respond to player speech which teaches state/simple AI/string manipulation.

You could leave the server running 24/7 so players could play/develop/hangout together.

Show how items disappear from the game world on reboot and how to serialize the game objects.

You could have an exam in the game where players showcase what they've developed and culminate with an all-class battle.

I think a stripped down MMO like this could be the perfect environment to foster creativity/learning.

[+] rms25|12 years ago|reply
Man I remember RunUO, it was crazy having the ability to run your own "shard" or server
[+] 1123581321|12 years ago|reply
My introduction to programming was ZZT-OOP[1], the language built into the roguelike ZZT created by Tim Sweeney (Unreal.)

Each ASCII character with a program was an object and they communicated by passing messages to each other. Items like bullets and the player also could pass messages to these custom objects. I remember piecing together some complicated multi-step, multi-object behaviors in a sort of concurrent programming.

My other introduction was changing the behavior of the gorillas in GORILLAS.BAS. From that I learned about Basic, and eventually wrote my first utility for another game, which was a battle success estimator/damage calculator for Sid Meier's Alpha Centauri.

I think the playfulness of games and the more straightforward representation of objects in games really helps children understand the point of programming and some programming concepts that are more obscured in business/utility software.

http://en.wikipedia.org/wiki/ZZT-oop

[+] jay-anderson|12 years ago|reply
ZZT was also my first programming experience. It was great. The message passing concurrency was pretty nice except it worked as an external goto. Also zzt-oop had lots of shortcoming so people had to come with with very creative workarounds (especially for arithmetic). Despite that it was good fun. In some ways it'd be nice to have a modern clone with an improved language and a similar simple model (graphical objects with contained concurrent programs, message passing only).
[+] ruttiger|12 years ago|reply
Anyone play Rocky's Boot? https://en.wikipedia.org/wiki/Rocky%27s_Boots

https://www.google.com/search?q=rocky's+boots&safe=off&clien...

I didn't realize until college that I had been learning EE when I was a kid.

[+] ddbennett|12 years ago|reply
Its successor, Robot Odyssey (http://en.wikipedia.org/wiki/Robot_Odyssey), was great. It was the inspiration to create a programming game as a distraction for users during the bitbucket migration a couple of months ago.

I'd link to the bitbucket game but that's too much self promotion for a Saturday.

Edit: s/it's/its/ -- I know better.

[+] ygra|12 years ago|reply
Weirdly enough, Light Bot is one programming game I enjoyed the least. My personal favourite would probably be Manufactoria [1].

[1] http://pleasingfungus.com/Manufactoria/

[+] prezjordan|12 years ago|reply
Manufactoria gets insanely hard incredibly fast. I need to retake Automata & Computation.
[+] mooze|12 years ago|reply
Tutorials are all very well, but what we really need is the programming equivalent of Geocities or Diaryland. That's how many of us got started with HTML and CSS - by making stuff and trying to get it to look nice.

Ideally this place would take care of the back end and provide a few basic components (e.g. pages, views) for you to structure your app. There would be code boxes for you to type into, and once you click save you'd be able to view and use the app at username.site.com. At first you might piece together a program out of pre-written components via point-and-click, then you might tweak the code to better serve your app, later on you'll get bored with the presets and start writing your own functions...eventually you'll learn to code from scratch.

There are tools that come close to this (GAE for example), but nothing at the absolute-beginner-anyone-can-do-this level.

[+] soora|12 years ago|reply
I personally think games with level editors are one of the best introductions to programming.

My first exposure to "programming" when I was in middle school was using the Warcraft 2 level editor, setting up custom triggers and using my imagination to build something I thought would be fun for others to play.

[+] auganov|12 years ago|reply
Exactly. Or modding/scripting games.

That's basically 1000000x better than those games that stress on learning programming or are build around coding. A game that is good by itself and has a great map editor or a good api for modding. Now that's fun. These "programming games" just make me think of tricking people with no interest in programming to do some. Not that I don't recognize some do enjoy these and fall in love with programming thanks to them.

[+] choxi|12 years ago|reply
I'd like to give a shoutout for our graphical implementation of Ruby Warrior if I may :)

https://www.bloc.io/ruby-warrior

[+] dkersten|12 years ago|reply
I played a few levels of this. Its a load of fun, thanks for sharing.

I did have to Google for ruby tutorials to figure out things like instance variables and I'm sure somebody who has no prior programming experience would really struggle with this. Having said that, this could easily be modified into a proper tutorial and even now its a fun thing game to try out what you learn in some other tutorial.

[+] jaredandrews|12 years ago|reply
Have been playing with this for a few minutes. It's been pretty enjoyable, I especially like the animated graphics. With things like this I always wonder what the experience is like for people who have never programmed. Do you have any idea? I am going to share with some of my non-technical friends but it's possible they won't ever get around to playing it.
[+] FrankenPC|12 years ago|reply
Anyone here remember Omega Tank by Origin? An old DOS PC game that gave you a simple but effective environment to program combat tanks to fight against the computer or programs written by your friends. Awesome game.
[+] siavosh|12 years ago|reply
One programming topic I'd love to see a game for is software concurrency. This is one topic near and dear to my heart which I think a lot of us struggle with since a lot of it can be so counter-intuitive. Reading through "Java Concurrency in Practice", some of the ideas and best practices really popped out at me as something that could be translated into an abstract art style game, and for some reason, the mechanics of guitar hero with multiple guitars visualized in my head. It would be a fast paced game with trippy colors and great digitized procedural music, and you shouldn't need to know anything about programming to play. Threads could be visualized as lines going through space, and you have to protect data units with good use of abstractions, queues, locks etc so they don't get corrupted. And the better you get, the more threads you have to deal with and more advanced topics/tools you'd need to use. I'm not a game developer, but I'd love it if such a game existed :)
[+] asgard1024|12 years ago|reply
Someone mentioned Spacechem in the comments. I don't want to register there to comment, but Spacechem is pretty much all about synchronization of two threads of execution. Also, it's worth noting someone actually built a Turing machine in it.

I also wonder why Minecraft (and especially Redpower 2 mod) didn't get a mention.

I also enjoyed Lightbot, btw. But someone should turn that to a real game, not just flash (bigger desk, larger program space).

[+] thejteam|12 years ago|reply
My daughter used Microsoft Kodu Game Lab at summer camp and had a blast. I just started to look at it but it looks like a decent intro for at least the 7-8 year old group.
[+] kephra|12 years ago|reply
I wonder that the article does not mention Second Life. SL is a real boring thing, as long as you only consume it, but it becomes fascinating, once you start to design.

I know several people who learned Gimp because of SL, or scripting. Scripts could be as easy as a "say hello" if someone walks through a door, or as complex as self driving cars, or a 200x100 meter big pinball game, that requires 3 players: One for each flipper, and one inside the ball. Linden Scripting Language makes quarternions as easy to use as Havok physics.

[+] abstrct|12 years ago|reply
There is also the Schemaverse (http://schemaverse.com), a multi-player space battle game for learning SQL, pl/pgSQL, and really any other language that has a library for connecting to PostgreSQL
[+] drill_sarge|12 years ago|reply
I don't know, but the game which got me interested in programming was Quake because of QuakeC. The game itself doesn't have anything to do with programming at all etc. but you can look in all the game files (not only code, also art assets etc.) and it was so easy to change things around. To build a simple level and write some scripted events, was really rewarding because you made something in really short time which you could actually really "see" (in the gameworld).

Those games which try to teach you programming with little games/puzzles or whatever don't have any value to me. I don't know...