EXAPUNKS

EXAPUNK is a fun puzzle games, especially if you enjoy programming: I am writing C++ at work by day, programming fake assembly at night.

EXAPUNKS

EXAPUNKS is a collection of puzzle games that requires programming an assembly-like language to progress to the next levels.  If that sounds like a deterrent, it shouldn't.  Unless you hate reading: there is a lot more reading than other similar puzzle games.

Programming

In this game you must write code so that your EXAs to do work for you.  Although the concepts are far easier if you already have experience with programming, I feel the initial missions and magazine articles do a good job of showing you how it is all supposed to work.  The challenging part of the game is managing registers and tracking logically the data you need, so once you get over the programming facade all you really need is logic.  I am not sure if knowing programming is easier either; I kept on typing the wrong keywords, for example.

Solving puzzles through use of this programming interface is a big draw, because it allows different solutions for the same problem.  Then, it is up to the players to set their own goals depending on how they like to play the game.  That's nice.

I mentioned earlier that reading is involved.  Not just for the set instructions, you have to read to figure out data formats, or just hints about what the puzzles are about.  They are not multi-volume manuals, are easy to read, but difficult to scan.  

Missing string literals added a bit of complication.  It means that you must copy the string from somewhere it already exists.  I guess it is part of the puzzle, but I didn't particular enjoy this aspect.  At some point in the game you'll need to replace a string with another.  The problem is that the data sets have a mixture of numbers and keywords.  The solution for me was from the truth table in the magazine kind of hidden away: TEST will always set T to 0 when you compare keyword with a number.  So:

TEST X > -9999
FJMP DOIT

-9999 is the smallest integer in EXAPUNKS, normally you use it to seek to beginning of a file.  You expect X to be larger than -9999 and T should be 1 after TEST.  But that is not true if X is a keyword, it'll jump to label DOIT.

Debugging

There is no debugger, and so all you get is the ability to step through instructions one at a time, fast (but slow enough to still follow execution), or really fast (to go through all test cases).  Not having break points is particularly cruel, maybe that is part of the author's attempt to discourage longer code.  I feel like some debugging aids would improve my quality of life significantly and make the game feel less like work.  

You may find this useful:

MARK LOOP
NOOP
JUMP LOOP

This code fragment does not modify any registers, and I use it to trap execution so that I can check register contents up to this point.

Level Design

Each level has 100 test cases and you may find your solution doesn't work under all cases.  Often when that happens your EXA will just be stuck spinning cycles.  This is I think the best part of the game, because it asks for an improved solution and usually leads to a more optomized version than my initial version.  In beating the level I've also experienced a kind of personal growth, and it is quite satisfying.

Tying together the levels is a story, but your response will not affect the story later, so early on it made the story unimportant and the interactions with EMBER-2 uninteresting for me.  I think logic games don't really require a reason to solve puzzles, but it is an interesting attempt.  This, and the magazines that give you hints about solving the levels do add a nice style and theme to everything.

I like how many levels require the REPL keyword to make sure size of your EXAs stay under the limit.  And, like how concurrency is a mine field in real life, debugging the effects of REPL in-game is just as painful without any debugging aid.  Playing this game is like working a second job sometimes.

Mini Games

There are games in EXAPUNKS that do not involve programming, and they are fun distractions.  One of them is like an old-style match-four game, unlocking the mini game involves passing a level where you disable region lockout protection of a fictional game console.  I smiled because I totally could relate to the situation.

I remember, to play imported games, I bought a modchip and was trying to attach it to the Dreamcast main board using a soldering iron that was probably three times too big, and made these unintended cherry blossom petal burn marks on the board.  30 minutes into my test session the console crashed and I had to open it back up to re-attach one of the wires that came off.  Good times.

The mini game HACK*MATCH exists as a real NES cartridge.  You can read about it here.

Mini Mini Games

You can also program a handheld console in this game, but the lack of high-level language kind of killed it for me.  You can animate sprites, so that was something.  Some really determined players released games for it, which you can play with EXAPUNKS: TEC Redshift Player.  It takes a lot of effort and time to write these mini mini games, these players should all be proud of their accomplishments.  It is nice to see the developer releasing the player so that more people can see great work from passionate players.

If You Write Code...

If you have programming background, this game is easy to get into and will provide you plenty of entertainment.

The achievements, which are totally not obvious when reading the descriptions, are fun puzzles that you can solve along with the main goals.  I also like how apparence of EXAs change if you include KILL command in your code.  It is these little things plus the mini (and mini-mini) games that made me feel there is much more to EXAPUNKS worth investing more of my time.  In the end I think that is what makes a great game: in exchange for your time (and money) it keeps you entertained without feeling time is wasted.