CodeSpells – Proof That Coding Is Arcane Wizardry

Learning to code is something I never did. It certainly wasn’t an option when I was at school in the early 1700s, and attempts to teach myself even HTML tend to succeed as well as my 10 year old attempts to teach myself BASIC. But there seems to be a concerted effort to encourage the current generation of childrenthings to learn this arcane art. Just this week the BBC are launching their new programme of efforts, including TV shows and the Bytesize website, coinciding with the introduction of coding to the British school curriculum.

Which makes it rather good timing for US organisation ThoughtSTEM to launch their Kickstarter for CodeSpells – a third-person action game where your character’s magical options are infinite, because you code them yourself.

Beginning as a university project, getting kids in classrooms to want to engage with coding in order to play, the production is evolving into a wider-reaching, more fully-fledged game. Using a colourful, but still seemingly in-depth system of creating code from combined blocks of text, it will let players imagine and create their own magical abilities, and use them to mess around with the world. The Kickstarter, asking for $50,000, is to get this Creative Mode finished, and start building a mulitplayer mode. This will extend the coding ability further, they hope, letting players create their own activities in a shared sandbox world.

As you can see from the pitch video, their ambitions for the project expand beyond that, with hopes for adding living creatures to the game, and presumably other ideas that coding players will want to see made possible.

They aim to get an alpha version of the project out to backers by December this year, which will presumably resemble the version taken into schools, with a beta starting in June 2015. However, you’ll need to back for a minimum of $30 to get into the beta, while a copy of the released game comes at $15.

It’s by no means the first game to try to encouraging coding through play, but with an academic background and a decent amount of ambition, it’ll be interesting to see where this one heads.


  1. thristhart says:

    Oh dear, that code interface reminds me of the dreadful Lego Mindstorms NXT language. I hope it is much better, because NXT frustrated me to no end with its extremely limited toolset.

    • Dr_Barnowl says:

      It seems to be Scratch

      link to

      Makes sense to re-use an already succesful coding interface.

      I saw earlier builds that used a text language, and I presume there’s no obstacle to continuing to do so.

      • laiwm says:

        I know someone who’s been using it to teach kids to code simple games, seems like a good choice. In particular it’s a nice way of representing things like for-loops and logical operators for the uninitiated.

        • MadMinstrel says:

          Oh for goodness’ sake, children aren’t retarded. Why do all the old farts insist that children need a special language? Computer Science is one of the few disciplines where giving a child the proper tools from the get-go will not result in bodily harm. Sit the little critters in front of a C compiler and let them do their thing.

          • Crafter says:

            haha, maybe not c, but something like python (or Dart) might be perfect for them.
            Scratch is a nice tool to present the concept of programming, but that’s it.

          • iucounu says:

            You know what, though? Scratch is pretty damn good. It’s a Lego kit in which the basic components are things like loops and variables and sprites. I am a layman who hasn’t coded since typing BASIC into my Acorn Electron, but I had a functional Breakout clone running after about 90 minutes of noodling with it (without looking at the manual.) Debugging it was always interesting and educational, which is why I think this sounds like a nifty idea for a game.

            The preferred next step in a lot of the teach-kids-coding books I’ve seen seems to be Python, by the way, rather than C, and some skip things like Scratch entirely. If you can code in anything else, Scratch is probably pointless, but it’s a good way to work out the basic concepts.

          • MadMinstrel says:

            Python is neat, but it’s chock-full of randomly weird things such as the late-binding closures, the mutable default arguments or the pass-by-reference-value thing. C is much more straightforward in this regard and closer to the metal. This is important if you want to tech kids how computers work rather than hiding it behind layers upon layers of abstraction. Not that C is necessarily the best choice, it’s just IMHO better for teaching than a higher level language like python. As an added bonus, there’s a lot of other common languages derived from or inspired by C.

          • Bury The Hammer says:

            From what I have seen (my lady partner is a primary school teacher), scratch is often used with younger children, so I can definitely see some of the need for visualisation when introducing basic concepts. After you’ve taught more basic concepts you can move onto the good stuff – walking before you can run, etc. It’s certainly a lot better than the “FORWARD 8 RIGHT 90” rubbish I was raised on.

            Keep in mind that a lot of it has to be accessible to teachers who never learned to code either – teaching and coding aren’t professions that normally attract the same kind of people.

          • codespells says:

            CodeSpells team member here! We agree that Scratch rocks. We teach in San Diego using Scratch and our students are able to create complex games with it very quickly. The visual programming language we’ve implemented is called Blockly, but it’s essentially Scratch. In CodeSpells, we allow students to flip back & forth between Blockly & Javascript, but we imagine most students will need to start with Blockly to avoid syntax frustrations. Check out the FAQ we just posted about programming languages: link to

          • Tei says:

            I learned programming with much less. I guess if you gives the kid a world, and allow them to interact in this world with source code, they can do some fantastic stuff.

            maybe the real problem is that theres too much different options

          • Stickman says:

            Sit 100 children in from of a C compiler and 99.9 will get bored after 5 minutes of compiler errors and leave. The point of interface-based languages like scratch is to reduce invalid code and provide immediacy of construction and feedback for tasks that kids might actually want to perform. Plus, the goal here isn’t to produce programmers, but to help develop working knowledge of programming concepts for everyone (and in a fun way).

            I’m sure I probably wouldn’t have ever had the patience to get over the barrier-to-entry hump of practical languages if I hadn’t tooled around in Hypercard and LOGO as a kid. I’m guessing you also taught your kids to walk by having them climb Everest.

    • Gap Gen says:

      I remember getting on OK with the GUI-based programming of Mindstorms, but this was 15 years ago or so and I suspect it would have changed in that time.

  2. Crafter says:

    I have already toyed around with this kind of puzzle blocks coding UI targeting kids (based on Scratch).
    I stopped after half an hour : it just becomes way too unwieldy to drag blocks around where you could simply write the instruction ten times more quickly.

    • Ross Angus says:

      It sounds like it’s pitched below your level, but this isn’t a productivity tool: it’s intended to demonstrate the concepts in a way which makes sense to children. Children (and adults) who think in those terms might find it useful.

      • Gap Gen says:

        Yeah, this makes sense – it was frustrating to use Scratch when I’d already gotten familiar with a bunch of other languages, but I can see how it’s more accessible to someone who’s never coded before.

      • Crafter says:

        Maybe. Knowing that I could simply directly write this code way more rapidly does tend to frustrate me but I think that at its core it is an UX issue.
        Having to make unending visits to the left side menu in order to fetch the next code block is just very painfully slow.
        I think that an optional tool akin to the ‘search everywhere’ feature of JetBrains IDEs would be a good solution for this.

        • wisnoskij says:

          Well no one is saying that they absolutely will not have a text interface. But I think a gui one is necessary for the type of audience.

        • Ross Angus says:

          I agree. I’ve worked with a lot of CMSs and I think some of them require substantially more knowledge than would be required to learn HTML. They can also take much longer to do the same thing.

  3. Geebs says:

    Coding is fun because it’s the only context in which you can make things by naming them. It took me thirty years to realise it; I’m all in favour of toy languages, because they might let kids understand that much sooner.

    More of this sort of thing.

    • codespells says:

      Thanks, Geebs! We agree! The more coding games there are in the world, the more kids will love coding. Can you imagine a world where every student knows how to code? I think it’s going to be a pretty cool future, personally.

  4. RayEllis says:

    Sadly, for many kids, I think the “hands-on coding” for something like this will quickly be replaced by cutting/pasting/importing things from forums and the like that other people have generated.
    If there is one thing kids are good at nowadays, it is finding information on the internet and not working it out for themselves.

    Yes, I know, I’m cynical. But that comes from having two twelve year olds come up to me in retail with a joint purchase and have to ask me how much each of them needed to pay. The total amount was just £3.60 and they were unable to work it out.

    • Gap Gen says:

      TBH people copied and pasted code in my day. I was pretty pleased when I wrote some javascript that worked across different frames, and my friends were unable to figure out how it worked so they could steal it for their own sites.

      Then again, I’m all for libraries abstracting away things that you don’t care about. The Minecraft approach to doing everything at the lowest possible level kinda annoys me because then you end up building entire rooms devoted to circuits that open doors.

      • codespells says:

        Copying & pasting code is a skill though! Programmers do it all the time! I think searching & figuring out how to fit someone else’s code into your own is a useful skill in itself. I see where you’re coming from though! I think kids just seeing code or exploring other people’s code can cause learning outcomes!

        • Gap Gen says:

          Yeah, I copy/paste from stackoverflow regularly. I was mainly happy to have written code that was hard to naively copy because it meant I had beaten other people I knew.

        • Ergates_Antius says:

          First rule of programming in a professional environment: Find some existing code that does more or less what you want and modify it.

    • Generico says:

      What you’ve described is just step 1 of the learning process for any creative skill. First you copy, then you modify, then you create. You don’t just learn the C syntax one day and start writing your own OS the next, any more than an artist learns compositional theory and paints an original masterpiece the next day. No, first you learn to paint exactly what you see. Then you learn to use reference material to paint something a little bit different than what you see. Then (if you stick with it long enough) you learn to put your imagination on the canvas.

  5. Battlesheep says:

    Well magic in programming is actually a thing: Magic

    And deep magic is especially fun: Deep magic

  6. GallonOfAlan says:

    Ah, coding in the school curriculum. As opposed to a solid grounding in ‘how to use a computer for what 99% of the population use them for;. The old ‘everyone must be coder’ thing. Noble, but wrong. It’s like saying everyone should be a concert pianist or Formula 1 mechanic. Sure, know how to drive a car and fix basic issues but leave the rest to people who know what they’re doing.

    So – the natural born coders are already doing it of their own volition and will find their own path. That leaves everyone else.

    The trick with them is to identify those with natural ability and then offer a specialised path through the education system, ending in a valued and well-paid apprenticeship. What Germany does with engineering, basically. The scatter-gun approach won’t work.

    There is also an onus on those people who provide the tools to make them simpler and more accessible. It is a very different world from sitting in your bedroom with a BBC B in 1983.

    • Gap Gen says:

      I think it’s fair enough to give kids a taste of something then promptly drop the requirement for it once it’s clear that they’re not into it. I learned programming because my dad is a systems engineer, but a lot of people won’t have that exposure to it. But sure, you can push people too hard in directions that are a waste of time for everyone concerned.

      • wisnoskij says:

        The problems come in when a significant percentage of those people completely unfit for programming stay on and fill the industry with loads of people who will never be good enough and rely on conning their way into jobs.

    • frightlever says:

      The criticism of IT in schools was that it was showing kids how to use computers for what 99% of people used them for, but the kids had already mastered this by the time the lessons were offered so they were bored senseless. That was the experience of my nephews.

      Coding will go straight over the heads of most kids but if it sparks something in some of them then it’ll have been worthwhile.

    • codespells says:

      We definitely won’t turn every kid into a programmer. That just won’t happen. It won’t interest every kid. But we DO want to show kids that coding can be a powerful tool for creative expression. We want to change kids perceptions & by changing perceptions maybe more kids will pursue coding for fun or as a skill.

    • jalf says:

      There’s a huge difference between “everyone should be a coder” and “everyone should learn coding”, in the same way that there’s a difference between “everyone should be a writer”, and “everyone should learn writing”.

      Incidentally, our education system is actually designed with the goal that everyone *should* learn writing.

      Everyone should know what coding is. Coding shouldn’t be reserved for a little clique of social outcasts. It’s something everyone should at least touch and get to try out. Even if they decide that it’s not something they want to do, just having gotten that far is hugely important.

    • Generico says:

      I work in IT, and already there is a HUUUGE gap in productivity and capability between the under 30 crowd that has basic computer literacy and the older crowd that is completely clueless. But even though the younger crowd is more capable in a workplace setting, I know for a fact that my job would be 1000 times easier if they all had even the most basic understanding of programming. If for no other reason than they would not make such absurd requests because they have no concept at all of what’s involved in making a computer system do something new. And in my own experience I can’t tell you how many problems I was able to solve that other IT personnel were stumped by because I have a background in coding and a deeper understanding of the software than they (with no real coding experience) have.

      So yeah, not everyone needs to be a formula 1 mechanic. But knowing how an internal combustion engine works and the basic concept of how gasoline turns your wheels is helpful to everyone that needs to drive. If for no other reason than it might one day save you from being screwed by a mechanic that thinks you’re clueless.

    • Ergates_Antius says:

      Firstly, it’s not really about trying to turn everybody into a coder, it’s recognising that computers and computing are playing an ever increasingly important part of everyday life, and knowing the basics of how computers work is an increasingly useful skill.

      Secondly – if you don’t teach coding to kids how will you identify those with a talent for it?

  7. SuicideKing says:

    Marketing person: “Buzzwords buzzwords buzzwords!”

  8. Sinomatic says:

    Looks like it might be a tad more successful than Code Hero, at least…

  9. baozi says:

    A more futuristic setting would be a better fit IMHO. Generally a better union between the game world and the programming aspect so that it makes sense in the world

  10. vlonk says:

    I saw a german team doing a crowdsourcing a few weeks ago for a similar topic, teaching kids AI programming.
    link to

    Guess the next generation of kids will have some serious learning tech at their disposal.

  11. wisnoskij says:

    Was mildly interested, then I saw the stone golem and omfg, that looks amazing.

    Really looking forward to this game, but the last thing the worlds needs is more mediocre programmers.

    Getting into the industry because you were introduced to the fun creativeness of programming is a sure fire way of creating more useless programmers. Anyone can program, it is literally just drag and drop these days, but the mathematical and engineering genius it takes to actually produce something useful comes from a completely different place and from completely different people.

  12. Ergates_Antius says:

    I had a game on my Amiga in which you could build you own spells from components. I can’t remember what it was called though.

    EDIT: Legend, that was it.

  13. untoreh says:

    I used appinventor to create a basic nyan cat app and contributed first hand to clutter the android market with stupid apps :) that shit had 5k downoads or something, then got removed by legal claim by the owner of nyan cat, lol.