What if I told you that you could learn to code in a modern programming language like Python or JavaScript just by playing a video game? You might say something like, “Yeah, yeah, another edutainment game, right? Those suck!” For the most part, you’d be correct in saying that. But CodeCombat is different.

LearnToCode

CodeCombat lets you learn programming by playing a video game…no, really!

I heard about CodeCombat from my Twitter feed, and clicked on it out of curiosity. After reading the CodeCombat about page, and being particularly impressed by the line, “Not fun like yay a badge but fun like NO MOM I HAVE TO FINISH THE LEVEL,” I decided to give it a try to kill some time.

Several hours, one world, and about 20 stages later, I realized I was more than hooked, and I was truly learning.

CCWorld1

If you give CodeCombat a try, you’ll complete the first world in what seems like no time at all!

Here is a Let’s Play of one of the multiplayer levels from CodeCombat that demonstrates what the game is like.

Let’s play CodeCombat!

Nick Winter, one of the cofounders and developers of CodeCombat, was kind enough to answer some questions for Gaming Rebellion.

Nick Winter

Nick Winter of CodeCombat – cofounder, programmer, all around nice guy.

RizzardCore: So what is CodeCombat?

Nick Winter: CodeCombat is a multiplayer programming game for learning how to code. You write code in real programming languages that controls your hero as you solve mazes, slay ogres, and build things. Along the way, you level up, earn gems, unlock items and heroes, and, you know, learn how to code.

RizzardCore: What platforms is CodeCombat available on?

Nick Winter: It’s an HTML5 game that runs in the browser. We also have an iPad app in the works, where you still use real code, but you manipulate your code via touch rather than using the annoying mobile keyboard most of the time.

RizzardCore: Please tell our readers a little bit about the history behind CodeCombat.

Nick Winter: My cofounders (George and Scott) and I have previously created Skritter, an educational app which teaches Chinese and Japanese characters. George was always frustrated that he couldn’t help out building some of the things he wanted to build because he didn’t have the programming skills required, so he’d have to wait for Scott and I to build it. He had tried a ton of different learn-to-code products out there, but none of them were that much fun, since it can be frustrating at first when all you’re doing is debugging your crappy program that doesn’t really do anything. So for our next trick, we wanted to make learning to code a lot more fun.

about_comic

This comic says it all.

RizzardCore: As a mathematician, I really can’t agree enough with the following statement in your press release: “people fail…to learn a difficult skill through intensive learning when they should be learning through extensive practice.” Could you elaborate on that a bit?

Nick Winter: Intensive practice is when you are doing something really hard to try to improve. The best example of this is working through a textbook, where almost all the material is new, and each page takes ten minutes. You’re learning a lot, but it’s hard and it kind of sucks, and you are going to forget it immediately unless you review (and who wants to review?).

With extensive practice, you’re doing something that’s pretty easy. You’re, say, watching TV in a language where you understand 95% of the words, or you’re reading a book, or you’re playing pretty much any skill-based game. It doesn’t suck at all, you can do it for hours, and because you are practicing the easy stuff all the time, you’ve got your review built in. This is why you get really good at video games, but you might struggle with math. The skills involved in math are way, way easier than the skills involved in StarCraft II, but you’re going to practice StarCraft II more efficiently and far longer than you’re going to study math. With CodeCombat, we wanted to bring that kind of practice to programming, where you just get to write a lot of code extensively.

RizzardCore: Most educational software and video games since the early 80s have been boring, uneducational, or both. I honestly didn’t learn any lasting Geography facts from Carmen Sandiego. On the other hand, the typing software lessons stuck. How do you see educational software evolving in the modern day, and what more do you think could be done?

Nick Winter: You’re right; making a great piece of educational software is hard, so most of them suck. You can say the same thing for video games. Intersecting the two–making a great educational video game–is almost impossible. Typing of the Dead stands out (I love that game), but teaching typing is a pathologically easy case where software developers fall into extensive practice because it’s so obvious for typing.

Watch the CodeCombat trailer and tell me this doesn’t get you psyched to learn some programming!

I think that developers are getting good enough both at games and at educational software now to make it work, but the main thing holding us back is the incentives. It’s even harder to make a great educational video game that monetizes well, so the rare developers that could pull it off are, for better or for worse, making things that make a lot more money. You can do it for younger kids, where the games don’t have to be that fun, but when you’re making stuff for teens and adults to play, they’re not going to fall for it when they could be playing the funnest non-educational games around.

RizzardCore: Roughly how many active users are on CodeCombat?

Nick Winter: 633 players are playing right now, haha–but that’s not a real number. Hour of Code is going on, so there are huge traffic fluctuations going on right now. We’ll see what happens when the dust settles after next week!

RizzardCore: Is CodeCombat currently being utilized in any schools? (If yes, please elaborate, if no, are there any plans along these lines?)

Nick Winter: Most of our players are in schools right now. Teachers are doing CodeCombat in their classrooms for tech classes or vaguely related classes (like math) so that they don’t have to teach a lesson, and the kids love it. But there aren’t enough levels to make a whole semester’s worth of content. Yet.

RizzardCore: Is CodeCombat free and if so how does it stay free?

Nick Winter: We offer the dungeon campaign (the first twenty levels, or about an hour of gameplay when playing fast) for free, and after that we’re trying a new $9.99/mo subscription. It’s not a lot compared to paying for other learn-to-code services, but it is a lot compared to a typical game or what schools often expect, so we’ll see how it goes.

Quick update: we’ve decided to switch it up and keep the core campaign progression free, so that anyone who wants to learn programming can do that. It’s now just the side quest bonus levels that are included in the subscription, so that’ll be totally optional.

CCScreenshot

CodeCombat‘s main quest is completely free!

RizzardCore: I understand that players can become level coders themselves? Could you discuss this and the other character classes detailed on the contributor page?

Nick Winter: CodeCombat is completely open source, and a lot of players have helped out to build the game. We organize them into character classes:

Archmages contribute code on our GitHub and to our game engine via our level editor.

Adventurers help playtest new levels earlier than everyone else, report bugs and balance issues, and they get access to the new levels without a subscription.

Artisans build levels they want to see using the level editor. The player-created level section and the classic algorithms section contain levels built by Artisans.

Diplomats translate our interface and our levels (working on 45 languages so far!).

Scribes write code documentation to make it easier for our players to understand how programming works.

Ambassadors help other players with their programming questions, and help to introduce CodeCombat to more players.

RizzardCore: I understand 5 new levels are released each week. How in-depth do you plan on getting with coding constructs?

Nick Winter: All the way, eventually! There’s no reason we can’t take someone from total beginner to employable software developer, given enough time to build thousands of levels. It will probably take some doing to introduce non-coding engineering skills, like using version control, writing tests, configuring development tools, etc., but we have some ideas for those skills, too.

CCScreenshot2

If you get good enough, you can contribute your own levels to CodeCombat!

RizzardCore: Right now it looks like Python, Javascript, and a few other languages are available to learn in CodeCombat. I haven’t heard of any of the others; could you talk a bit about them, and if you plan on adding other languages, say C# or Basic?

Nick Winter: We ran a parser challenge, where our Archmages contributed parsers for Lua, Clojure, CoffeeScript, and Io. Lua is a great programming language for writing game logic in–many popular games have their core game engines written in C++, but all their higher-level AI logic scripted in Lua. Clojure is a really awesome Lisp dialect that will blow your mind. CoffeeScript is a nicer flavor of JavaScript, which we also have written all of CodeCombat in. And Io is pretty obscure, but has a really interesting feature that there’s hardly any syntax for doing basic method calls–no parentheses, no semicolons, no “this.” access–you just type “moveRight” and you move to the right.

It’s a lot of work to add more languages, especially if they’re very different from interpreted, dynamic languages like JavaScript, so it’s not on our list to add any new ones for a while. It sure would be nice to have C#, though. If an Archmage wants to take up the banner, let’s do it!

RizzardCore: I see some more advanced computer science concepts on the Older Campaigns page, like Bubble Sort, Quicksort, and Tower of Hanoi. Were these removed from the main campaign or are they specifically there to teach those individual concepts?

Nick Winter: They’ve always been a lot harder than the other levels, because the Artisan who built them, Alexandru Caciulescu, wanted to do some levels that were interesting to him and his classmates. So they’re in their own section, and they work differently from the beginner levels (no hero units, no items, etc.–just an algorithms challenge).

RizzardCore: Can you discuss any short- or long-term goals for CodeCombat?

Nick Winter: Short-term, we want to provide an awesome Hour of Code experience to a few million kids this week (12/8/2014). Long term, we hope to get our monetization working really well, grow the team, build a few thousand levels, and teach the world to code. Everything but the first step will be easy. ;)

RizzardCore: Do you have anything else you’d like to add?

Nick Winter: I haven’t touched much on the multiplayer aspects, but we’ve done some really interesting things with competitive programming where your heroes are battling other players, asynchronously and synchronously, and it’s a lot of fun if you get that far into the game, so check it out!

RizzardCore: Nick Winter, thanks so much for your time!

The website is codecombat.com…enjoy!

  • Educational games have come a long with since Math Blasters and Mavis Beacon =)

  • Aaron Alcorn

    This is a really ambitious project, but the idea of “play games, learn to program” is so cool that I think the developers are gonna be successful. I played it for a little while and it got the gears turning in my head!

  • Aggro Sky

    Yeah this is a truly brilliant idea. I am so glad games like this exist.