else { Heart.break() } Will Make Players Programmers

By Craig Pearson on February 18th, 2012 at 10:11 am.

Hello World
Erik Svedang’s Blueberry Garden was a delightful, surreal platformer about exploring a world in order to discover how to play the game, so it’s only right his next game would be an even meatier meta-commentary on games: else { Heart.break() } puts you in a world where the game’s code itself can be accessed and altered by the player, prompted on by characters in the game. Blimey!

Blueberry Garden’s artful silliness has been ditched for a world made up of computers and code, where atoms have been replaced by bits. It enables the player to have a meaningful impact on the game. Hacking the world, using code like a mage would use magic. Svedang points out:

The idea is to create opportunities for truly creative gameplay that goes beyond the kind of puzzle solving and stats improvement normally seen in games. Ideally it even allows the player to free herself from the designer of the game! The goal is an experience that borders the metaphysical, and to create a kind of game where thoughts and knowledge mean everything.

There’s more. There’s a touch of interactive drama to it all, an ecosystem where the characters go about their lives. You’ll become part of that world, part of their lives, even as you’re subverting the rules.

The game assumes the players will have no knowledge of programming to start off with, so there’s not a terrifying barrier to entry. And until I have more info, all I have is “Blimey!”. What? It’s last thing on a Friday, be thankful I’ve not fallen asleep forehead down on my keyboard.

, , , , .

43 Comments »

  1. Terr says:

    Sounds amazing! I really hope it will let you do what they promise. This is the first time I’ve ever heard of this game and this post made me incredibly excited about it already!

  2. MuscleHorse says:

    Sounds genuinely fascinating. I’m interested to see exactly how much power the player will have to rip and rearrange the world, or if it’ll only be a token amount.

  3. Premium User Badge

    AndrewC says:

    Excuse me Mr Computer Game, but your name is just slightly too mannered to be interesting, and instead becomes alienating, like an in-joke. Programming accuracy be damned, just having the { } around Heart.break is enough to denote it’s code-iness (having just the ‘.’ in the middle of ‘heartbreak’ is not quite enough). It’s also symmetrical and interesting to look at. Putting the rest in makes it ungainly. You can’t ‘say’ that name, it doesn’t look like a unified ‘name’ on the page.

    Off-putting.

    But with that out of the way, Mr Computer Game, could you please exist very soon? You seem *incredibly* interesting.

    • Ross Angus says:

      Would you not find else { Heart.break(); } more aesthetic? Let’s have a line terminator!

    • Koozer says:

      And why is it else? Can’t he’ve picked if? or even while(heartbreak==true) { cry(); }

    • Kaira- says:

      I hope Heart::break() is static method, otherwise I have to get angry on someone for this naming convention.

    • Premium User Badge

      AndrewC says:

      You see, Mr Computer Game? This is what happens.

    • Quasar says:

      Else open squiggly bracket heart dot break open bracket closed bracket closed squiggly bracket. That’s how you say it.

    • nuh uh no way says:

      the name itself is alienating, yes. otherwise i don’t understand what the problem is. it’s just a snippet of what could be either javascript or php, etc, the latter half of an if statement, written on one line.

    • Dreamhacker says:

      Why not Heart->break(); ? For that classical, c++’y feel.

    • LionsPhil says:

      Heart might be a reference or bona-fide object on the stack, not a pointer.

      But, yes, the absence of the semicolon is as jarring as the poor choice of capitalisation. Valid for JavaScript, but even there considered poor practice.

    • Shepardus says:

      I registered to say that “break” is a reserved word in C, C++, Java, Javascript, PHP, and quite a few other languages, so break() would not be a valid function name in any of these languages anyway. Therefore your Heart cannot break().

    • LionsPhil says:

      …I’m surprised it took any of us that long to spot that.

  4. ezuz says:

    ” else { Heart.break() } puts you in a world where the game’s code itself can be accessed and altered by the player, prompted on by characters in the game”.

    Altering actual compiled game code at runtime? I think this will rather be the player altering “code” as a part of the game and those changes execute actual compiled code in the game engine (think switch/if-else statements or something similar).
    Doing it so that the user can change (input totally new code into) actual running code at runtime would be extremely difficult if not impossible (though I’m not sure if it is)

    • Toolbox says:

      It’s possible depending on the language, but I would guess that the game just dynamically loads and executes what the player writes as scripts.

    • ezuz says:

      I totally forgot about the possibility of using scripts. I agree, that’s probably the way their doing it. Would be fun to get more info on how their implementing this feature.

    • Torn says:

      Changing compiled game code is not how this (or any other game) would do this.

      The player will be creating and editing small snippets of code that is loaded in and evaluated by the game engine. It will be sandboxed and won’t be the same as patching actual code into a running executable (which would be dangerous). Read up on how scripting and domain-specific languages work.

    • thaspius says:

      Embedding a scripting language inside your C/C++ code
      http://www.debian-administration.org/articles/264

      Lua is a popular script for game AI, it could easily be edited, checked for syntax, then injected into the parts of the game that are using the scripting to run them.

      http://lua-users.org/wiki/LuaUses

  5. Acorino says:

    Reads interesting, looks interesting, but I still have no concrete idea how this will actually play out. But yeah, fascinating, if rather vague premise…

  6. Premium User Badge

    bglamb says:

    Are you sure you haven’t fallen asleep already and are dreaming this?

  7. Jabberwocky says:

    Very neat idea.
    I hope I don’t accidentally program the game to reformat my hard drive.

  8. neolith says:

    Cool idea. Want. :)

  9. Koozer says:

    public static void main(String [] args) {
    gameWon=true;
    System.exit(0);
    }

  10. Unaco says:

    There’s another game that does this, already out and very complete. Dark Signs (and the follow up, Dark Signs Online). Even has its own language (Dsign).

  11. maweki says:

    Yeah, enter Game.Win() and you’ve got it. Easy

  12. Premium User Badge

    mrwonko says:

    Was this perchance created/started for the Global Game Jam? I remember one of the diversifiers being creating a game in which the player codes.

    No, it’s been in the work for years, apparently, but it reminded me nonetheless.

    • Chandos says:

      Yeah I was thinking the same thing. Maybe the diversifier was inspired by this.

  13. Premium User Badge

    Lars Westergren says:

    There is also the Code Hero Kickstarter.
    http://www.kickstarter.com/projects/primerist/code-hero-a-game-that-teaches-you-to-make-games-he

    Sadly looks like it won’t reach its goals, but I think they will try to find another way to finance it. It looks like it has potential, and I think they have already started on the implemention(?)

    • alex@codehero.org says:

      Congratulations to Erik on the progress made on else { Heart.break() }! It looks gorgeous and I want to play it! I don’t mean to detract from the attention this game deserves, but I’m the creator of Code Hero and I wanted to introduce myself and I’ll heartily recommend Heart.break to Code Hero fans in the future! Are you planning on doing a Kickstarter as well? I believe programming games can become a big and fun new genre.

      Code Hero is a game that teaches you how to make your own video games, we are about halfway to our Kickstarter goal, and with your help we are going to make this game! Over, under, around or through whatever it takes we’re going to do. We worked a year so you can play it and back the final game:

      http://www.kickstarter.com/projects/primerist/code-hero-a-game-that-teaches-you-to-make-games-he

      Code Hero is an FPS where your Code Gun shoots code directly at a target and executes on impact. It references the target so you can act upon hitObject in your code or just hit.point if permissions are denied.

      Nothing shall be restrained from you which you have imagined to do. It allows you to literally rip the Unity3D engine apart from within itself and the combat mechanics are akin to fighting in a real-world Defcon hacking CTF competition that looks like something from Neuromancer and Snow Crash. (The current programmer art I did is being replaced by the work of gIZmo, famed Farbrausch demo scene champion, KKrieger 95K self-shadowed FPS game creator and VNV Nation visuals artist ).

      Our Kickstarter owes its success not just to a wonderful game press response from DEVELOP to Destructoid: We’re also getting support that seems unusual for a game from business and education media like TechCrunch and Forbes because Code Hero is something that appeals both to gamers who want to learn to make what they love playing and learners who aspire to master coding and become computer scientists and startup founders.

      A self-volunteered Code Hero Army of fans led by a Greg Samways is spreading our story all the way to schools and the offices of Senators and Congresspeople as a challenge to deliver code literacy to every student and citizen in America.

      It might sound like a tall order to fulfill for a debut indie like us but that’s why we’re kickstarting. I knew it was time to get out of the way and build a team of pro game devs with the skills to do a concept we all care about this much with the proper execution.

      We are indeed already shipping our 0.192 beta to every pledger on Kickstarter! We launched to the public at Minecon in Vegas. 95% of the Minecrafters we met at our booth bought it on the spot or signed up and bought it once we contacted our mailing list. This goes with Minecraft like chocolate and peanut butter.

      I was really emotionally affected by how much Minecraft changed kids’ and parents’ lives. Minecon completed the un-jadednessing necessary to reverse the dirty taste in my mouth left from my first E3. Between PAX and Minecon, I feel like gaming is in a true renaissance of cleverness and creativity back in the hands of fans to create games of our own.

      Though the beta out now which I made almost single-handedly is as a proof of concept compared to what the team we’ve assembled now is building together with your help, you can actually pledge and play Code Hero today.

      Code Hero teaches Unity3D game programming with Javascript first before we branch off into web and C and other languages and technologies in the future. We were in DEVELOP Magazine

      Lots of game developers are pledging to enroll in our Gamebridge Unityversity game development school and some even to get full-time training as interns. One of our interns has already contributed a whole upcoming level to the game and another has just blogged about it:

      http://www.rockhowse.com/?p=108

  14. Quasar says:

    Looks interesting, although I know for a fact that my brain is incapable of such things. I’ll just end up typing “HELP” over and over again, with lots of punctuation.

  15. rulez says:

    Compiler error:
    Heart::break is not a static member of class Heart

  16. Heliocentric says:

    Blueberry Garden is a Survival Horror game, anyone who tells you different is not human, don’t turn your back on them.

  17. Bhazor says:

    Caption “Hello World”

    Yeah thats as far as I ever got as well.
    Courtesy Koozer

    while(failure==true) { cry(); }

    • droid says:

      I’d prefer

      while(true == failure){cry();}

      since a common typo of replacing “==” with “=” will result in a compile time error rather than a bug.

      Though in this case

      while(failure){cry();}

      is better, since failure will cast to type bool if it isn’t aleady.

    • LionsPhil says:

      I’m more concerned that we appear to be depending on cry() having side-effects that modify a global variable in order to break out of that loop. (Or, worse, multithreading without any kind of synchronisation.)

      (…I guess a signal handler?)

    • Premium User Badge

      Llewyn says:

      @LionsPhil: Or perhaps it’s a comment on the impossibility of breaking it.

  18. appropriate touching says:

    If you want to try something similar I’ve had fun messing about with the source code of Frozen Bubble competing with a mate to make the weirdest ball physics, then trying to win with them.
    I don’t think having coding knowledge that stops at BASIC held me back at all, either.