
Games That Teach Programming: A Brief Overview - jlees
http://www.gamasutra.com/blogs/RobLockhart/20130905/199667/Games_That_Teach_Programming_A_Brief_Overview.php
======
edtechdev
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://fightcodegame.com/)
[http://robocode.sourceforge.net/](http://robocode.sourceforge.net/)
[http://www.nessbots.com/](http://www.nessbots.com/) and dozens of others:
[http://www.sumost.ca/steve/games/](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://www.playmycode.com/)
[http://pixieengine.com/](http://pixieengine.com/)
[https://www.scirra.com/construct2](https://www.scirra.com/construct2)

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

There's ComputerCraft in Minecraft, etc.

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

~~~
shurcooL
Also Colobot (and CeeBot, etc.) from
[http://www.ceebot.com/](http://www.ceebot.com/).

------
_frog
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](http://www.littlebigplanet.com/games/littlebigplanet-2)

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

~~~
kwikshot
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
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
Man I remember RunUO, it was crazy having the ability to run your own "shard"
or server

------
1123581321
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](http://en.wikipedia.org/wiki/ZZT-oop)

~~~
jay-anderson
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
Anyone play Rocky's Boot?
[https://en.wikipedia.org/wiki/Rocky%27s_Boots](https://en.wikipedia.org/wiki/Rocky%27s_Boots)

[https://www.google.com/search?q=rocky's+boots&safe=off&clien...](https://www.google.com/search?q=rocky's+boots&safe=off&client=safari&rls=en&source=lnms&tbm=isch&sa=X&ei=8X8rUuu5Guv84AOJrYHoDQ&ved=0CAkQ_AUoAQ&biw=1543&bih=1308)

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

~~~
ddbennett
Its successor, Robot Odyssey
([http://en.wikipedia.org/wiki/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.

------
sbierwagen
SpaceChem teaches a lot of programming concepts, even if it's not explicitly a
"programming game"

[http://blog.gashlin.net/?p=415](http://blog.gashlin.net/?p=415)

[http://www.spacechemthegame.com/](http://www.spacechemthegame.com/)

------
ygra
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/](http://pleasingfungus.com/Manufactoria/)

~~~
prezjordan
Manufactoria gets insanely hard incredibly fast. I need to retake Automata &
Computation.

------
mooze
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
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
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
I'd like to give a shoutout for our graphical implementation of Ruby Warrior
if I may :)

[https://www.bloc.io/ruby-warrior](https://www.bloc.io/ruby-warrior)

~~~
jaredandrews
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.

~~~
britta
I have almost no programming experience, and this game expects you to know
quite a bit about programming conventions. My experience so far includes:

* "I don't really know what call means in this context, but based on previous knowledge, I'm guessing I should replace the example words with that."

* "Oh, right, I remember based on previous knowledge that "#" means comment, so I should remove that part too."

* "Oh, maybe I need the exclamation point that previously looked to me just like punctuation, because I know that code is precise about punctuation like that."

* "I don't know how to use if/else in Ruby, but I can guess that I just type 'if' and 'else', because Ruby has a reputation for simplicity."

* "I can also guess based on previous knowledge that indentation probably means something in Ruby, so I'll try indenting things."

And that's about as much guessing as I feel like doing for a game, and I'm
still on level two. (I know I could easily learn how to play the game by
looking at any basic guide to Ruby; I'm just demonstrating how it feels for a
person without any experience.)

------
8ig8
The Big Trak [1] laid the foundation for me even before Logo. I wish I had one
today for my kids.

[1]
[http://en.wikipedia.org/wiki/Big_Trak](http://en.wikipedia.org/wiki/Big_Trak)

~~~
noir_lord
[http://www.amazon.co.uk/Zeon-Limited-BIGTRAK-
Bigtrak/dp/B003...](http://www.amazon.co.uk/Zeon-Limited-BIGTRAK-
Bigtrak/dp/B0035IZ85G/ref=sr_1_1?ie=UTF8&qid=1378652099&sr=8-1&keywords=Big+Trak)

~~~
8ig8
Wow, thank you. I hope it is true to the original.

~~~
noir_lord
The one I saw in a local model shop was identical, they also do a mini-version
which has the same interface but is tiny by comparison.

------
zokier
All the games from Zachtronics probably more or less fit this theme:

[http://www.zachtronicsindustries.com/games/](http://www.zachtronicsindustries.com/games/)

------
FrankenPC
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.

~~~
jmspring
Omega was fun. I still have the box edition. Here is a good link describing
the game --

[http://www.abandonia.com/en/games/29295/Omega.html](http://www.abandonia.com/en/games/29295/Omega.html)

------
siavosh
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
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
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
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.

------
s369610
I have a game that is nearing completion that uses coding (drag and drop,
think logo) with an emphasis on forks and events
[http://moaijs.moaiforge.com/progrocket/index.html](http://moaijs.moaiforge.com/progrocket/index.html)

(requires WebGL)

------
abstrct
There is also the Schemaverse
([http://schemaverse.com](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
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...

------
bpierre
I am building modul.io [1], a “multiplayer sandbox” which allows to setup AI-
controlled entities in JavaScript.

[1]
[https://github.com/lisezmoi/modul.io](https://github.com/lisezmoi/modul.io)

------
trothoun
It's a shame that CogniToy's MindRover is not mentioned, it really captured my
imagination, and I wish there were more games like it. It does appear to be
sadly defunct, however.

~~~
GhotiFish
I was a big fan of that game. I loved trying my hand against the online
competitors, but I was 14 competing against much older people. I got trounced
:(

Still, Corvus's mid tier match. I managed to win it by developing a rover that
could lead its shots.

My god, if I could just go back and time and have another crack at this game
with what I know now.

I wonder if the old data is on one of my hard drives. I made a two vs two
rover mission with large rovers. You could make some scary rovers.

------
RodgerTheGreat
I've built a few games along these lines, the most publicized of which is
Forth Warrior:
[https://github.com/JohnEarnest/Mako/tree/master/games/Warrio...](https://github.com/JohnEarnest/Mako/tree/master/games/Warrior2)

I have some slow backburner plans for a game with similar mechanics but an
easier introduction for total beginners and more challenging end-game tasks
such as dealing with concurrency.

------
DanielRibeiro
Note that CodeHero, who is mentioned here, reached front page in HN last
year[1] with a non flattering headline.

They seem to be doing much better nowadays, I found this recent video[2] of
theirs to be quite inspiring.

[1]
[https://news.ycombinator.com/item?id=4912712](https://news.ycombinator.com/item?id=4912712)

[2] [http://primerlabs.com/codehero](http://primerlabs.com/codehero)

------
paul9290
A year or so ago we we created a site that teaches intro to HTML/CSS via games
called CodePupil. We haven't worked on it for quite sometime, but here are 2
games we created...

[http://codepupil.com/game7.html](http://codepupil.com/game7.html)
[http://codepupil.com/game5.html](http://codepupil.com/game5.html)

------
Pxtl
[http://en.m.wikipedia.org/wiki/Carnage_Heart](http://en.m.wikipedia.org/wiki/Carnage_Heart)

~~~
jbellis
Looks like the PSP re-release was Japan only. :(

------
heurist
Are there any games made to help software developers improve their design or
intuitive skills? Maybe something where you have to minimize dependencies or
visualize program flow, or apply known design patterns to solve problems...
I'm envisioning minigames that are basically koans with immediate feedback. I
think I would find those very useful.

------
Hermel
Kara
([http://www.swisseduc.ch/compscience/karatojava/kara/](http://www.swisseduc.ch/compscience/karatojava/kara/))
is an excellent and fun game to learn finite state machines. Also, there are
variants to learn Java and concurrency.

------
pbhjpbhj
FWIW a list of the game and similar links from this page -
[http://alicious.com/learning-programming-
games/](http://alicious.com/learning-programming-games/). There are reviews of
a few of the links too.

------
quaunaut
It isn't out yet and isn't publically available, but Quadrilateral Cowboy will
feature programming style puzzles heavily.

[http://blendogames.com/qc/](http://blendogames.com/qc/)

------
garybloom
Creating a context where learning to program replaces our school system:
[http://www.gebloom.com/blog/Softworlds](http://www.gebloom.com/blog/Softworlds)

------
icefox
If you made a game that used programming, but didn't play like something
trying to teach you stuff what would it be like?

------
lockes5hadow
Magic the gathering will teach you more about the stack then you ever wanted
to know.

------
cheesylard
It makes me sad that Garry's Mod was not at the top of that list.

------
notb
shbobo.net

