Else {Code,Compile); //Stop This Alice: Else Heart.Break()

Well, that's living for you.

Oh sure, this new trailer for else Heart.Break() gives a lovely look at the computer-programming, romance-finding adventure-y RPG-ish game from Blueberry Garden creator Erik Svedäng and friends, but the real question is: what’s up with that syntax change? Last time we cooed and ahhed over its PlayStation 1-era look, the name was stylised as else { Heart.break() } and gosh, doesn’t the Internet enjoy scrutinising other people’s code? Are you happy now, backseat programmers?

More to the point, doesn’t this game look delightful?

Set in that most wonderful of gamethings, a simulated world where other people go about their daily lives, else Heart.Break()’s officially described as “a game about friendship, love and technology in a place where bits have replaced atoms.” You’ve just moved to a new city for your first job, see, so you’re trying to settle in, make friends, find love, and so, They say, “stop the terrible deeds of the people ruling the city.” Gosh, what an adventure!

And sure, you can chat to folks and write and compile actual computer code to change things in the world, but you can also settle down with a cup of coffee to watch the world go by. I do enjoy a good simulated world, and this certainly is a looker with lots of complex little bits to admire. The retro look isn’t just pretty, it also means art is a small enough effort (ha!) that a small team can make something so elaborate. Have a gander:


  1. yhancik says:

    It looks so so so so so nice! But I feel the typeface currently used in speech bubbles doesn’t match the overall style at all. Minor detail though!

    • RARARA says:

      I have to agree on the typeface. Other than that, this is the type of experimental retro graphics I want to see more of.

      • Synesthesia says:

        More of yes. The art direction is absolutely fucking fantastic. PS1 era is a treasure trove for lowpoly ingenuity. The typeface needs to be fixed though. That’s dangerously close to a comicsans.

    • manio22 says:

      I have to agree, the art is totally gorgeous , very interesting to see more.

  2. mzlapq says:

    Actually, else Heart.Break() is more plausible than else { Heart.break() }, because now it seems that the semicolon and everything after it was removed, while else { Heart.break() } has a semicolon missing in the middle.
    More important is the change of break() to Break(), which implies changing complete coding styles, maybe even a language.
    The real affront is the title, { followed by )? Using the comma operator for no reason?

    • Luke says:

      Worse, that either someone has replaced Alice’s code with this monstrosity, and commented out the actually functional code.

      Or Alice felt compelled to provide a solution in a comment no-one is going to see, without actually bothering to compile the project.

      • Geebs says:

        switch(funtimes) {
        case:0 {
        heart.break(); break;
        case:1 {
        happy.joy(); break;
        default: {

        Meh, it looks even sillier in a switch statement.

        • Harlander says:

          Well, of course it looks sillier.

          Who uses a switch statement for a conditional with only two states?

          • Geebs says:

            People who can’t be bothered to type a longer example.

          • Harlander says:

            Ah, laziness.

            It’s actually the prime virtue of the engineer.

          • Corb says:

            if you were truly being lazy you would also ignore the extra brackets. ‘break;’ is enough to signify the end of a case statement.

          • Geebs says:

            <- loves brackets, dislikes dot syntax.

    • MadTinkerer says:

      Bah, this is precisely why real hackers use a LISP dialect. Or Assembler.

      (Do I win the Biggest Nerd Award for this comments section? Do I? Do I?)

      • Harlander says:

        You came close, but you needed to use the magic phrase, “any sufficiently complicated programming language becomes an incomplete implementation of Common LISP”.

        You still get the second prize, my undying emnity! And a set of steak knives*

        *allow 3-5 million years for delivery

        • MadTinkerer says:

          “any sufficiently complicated programming language”? Actually, any parse-able string is potentially a valid statement in some potentially implemented DSL. So we could invent a language that could take the text of this article and comments section as input and get some result from it without any errors. This would not just be fun, but defun!

          Please expedite the shipping on those knives, I want to have a barbeque next spring.

      • DanMan says:

        Only if you actually know how to code in Lisp AND Assembler.

      • Esteis says:

        Lisp is, of course, still #1 for key algorithmic techniques such as recursion and condescension.
        –the immortal Verity Stob

    • LionsPhil says:

      That semicolon is optional in languages such as JavaScript and Perl, even in their strict modes.

      This is not the only thing JavaScript and Perl have in common.

      More pressingly, the new one is an else body without surrounding braces, which bad practice allowed by one of C’s brain-damaged syntactic shortcuts, rather than JS or Perl’s (even if they inherit it).

      • Faxmachinen says:

        Slanderous villain! Semicolons are not optional between statements. Curly braces are mandatory after else. Don’t you dare putting Perl and JavaScript in the same sentence again!

        Beard license REVOKED!

    • hjd_uk says:

      apart from the missing semicolon, the biggest argument against “break()” is that in many, many programming languages “break” all lower-case, is a reserved keyword and cannot be a function name. However, “Break” with a capital, is a valid function name.

      Emotion e = ( relationship.Status() ) ? heart.Love() : heart.Break() ;

      • Faxmachinen says:

        While HeartBreak is an Emotion, it doesn’t result from the break() function being called on an actual Heart. I suppose it could be the result of mocking, but that seems rather cruel.

  3. Sam says:

    Backseat programmers are never satisfied. Capitulating on {} is simply opening the floodgates.
    Generally you only use capital-first-letter when naming a class. In this line perhaps Heart is a class, but the naming of the “Break” function suggests it’s something that happens to an individual object of class Heart, so shouldn’t be a static function (which it would have to be if “Heart” is a class (and if all the wild assumptions I’m making about an imaginary language are correct)).
    Microsoft’s .NET stuff recommends naming practically everything with upper-camelCase as this appears to be. But they’re obviously wrong about everything.
    And what’s with the lack of semi-colon? Everyone loves a good semi-colon.

    else heart.break();

    Come to think of it, having just the else in that single line style is a bit messy. There must be a multiline “if” just above it looking awfully lopsided.

    Anyway! The game sounds interesting. Still not terribly clear what you do in that world, but building a game around a functioning and highly interactive little area is nice stuff.
    I kind of want the vertices to have their position judder around like a real PS1 game, and of course run at a tiny resolution. But maybe better to stick with the idealised vision of early textured 3D rather than the reality.

    • Dare_Wreck says:

      > Generally you only use capital-first-letter when naming a class.

      Says who? .NET conventions say to use PascalCase for things beyond the class like method and property names (there is no such thing as “upper camelCase”). I realize you point this out in your comment, but this is programmer religion territory here you’re touching, and not something that is generally considered to be one way or the other by the masses.

    • Charles de Goal says:

      “break” is a keyword in many programming languages, so you have to capitalize the method name in order not to get a syntax error (or you can write it e.g. “break_”, “do_break”, etc.).

  4. MajorManiac says:

    If (guy == ‘nice’) {
    place = ‘friend-zone’;

    Been there.

    • Ehyeh Asher Ehyeh says:

      Oh gods damn it, I am sick of that sentiment, so I’m going to shout at you what I’ve though about shouting at others who’ve voiced it! “nice” is not a personality! No one is going to love, hate or “friendzone” you just for being “nice”! What else do you bring to the table? You’re “nice and exciting”? “nice but tedious”? Guess which one I’d date?

      • Jalan says:

        It’s a personality trait.

      • MajorManiac says:

        Cool your jets Ehyeh. I’m just reinterpreting a scene from the trailer above.

      • DanMan says:

        Uncaught ParserException: “Does not compute”.

        Error at line 1:1 “Oh gods damn i…”.

    • Krazen says:

      while (Girlfriend.State() == ‘ready’) Fork();

      If only.

    • Sam says:

      Your code suggests that the variable “guy” is a string. Not a complex Person, a Human or even a Man, but just a string. All that guy is, is a handful of letters spelling out “nice”.
      This could be taken as arch commentary on the stereotype of the Internet Nice Guy.

      But what really matters is of course the pretend programming.
      if (personA.attractedTo(personB) && personB.attractedTo(personA)) {
      setRelation(personA, personB, Relationship.romantic);
      } else if (personA.likes(personB) && personB.likes(personA)) {
      setRelation(personA, personB, Relationship.friendly);
      } else {
      setRelation(personA, personB, Relationship.distant);

  5. DrollRemark says:

    I’m a programmer, and I couldn’t care less whether the name makes “sense”.

    That said, I did scoff long and hard at the episode of Sherlock where the big mystery was that no-one spotted a tube train missing a carriage until the man himself did, so maybe I’m just a different kind of pedant.

    • Geebs says:

      Best policy with Sherlock is to start scoffing at the opening credits and never let up.

  6. Rao Dao Zao says:

    I wonder if you could name a game with some SQL injection hack and destroy Steam/Origin/Uplay/YourDRMSchemeOfChoice from the inside?

    • Harlander says:

      I hear Injection Quest: Let’s Drop Tables was a big hit!

  7. DrManhatten says:

    musicInTrailer = awful;