A programming game with an interesting premise, but I just couldn’t get into it. I’ve posted a review of it on my blog.
Has someone already created a post for this game? I got an error message saying that the title “Language Arts” has already been used, but I can’t actually find any post with that title.
Thanks for taking a look. For others struggling with the rules, there is an extensive manual. I’m not sure why it wasn’t linked as a ‘Walkthrough’ button on the IFComp site.
It looks like the thread belongs to the private Authors forum. I imagine since we are not authors and can’t access that forum that it would not show up in a search.
Although, I am a little surprised that there is a thread name collision between one group and another. Maybe it is a limitation of the underlying software system of the discussion board.
Correct. Discourse will not allow duplicate thread titles.
Recommended if you like programming (with a very restricted instruction set) and pure puzzles and don’t need much of a story.
The premise of “Language Arts” is that you are a new employee at a company which uses state-of-the-art technology to “solve the clients’ communications needs”, which in effect means editing small pieces of text using a custom programming language.
The game is set in 1993 and has a nicely designed GUI that resembles the MacOS System 7 desktop, which was in use around then.
How do I know it’s set in that year? The in-game system clock shows the current real date and time, except for the year being 1993. Small details like that show how much care went into making this game. Cool!
In the manual and the in-game text, corporate/HR speech is parodied to good effect, for example with your manager reminding you that “there’s no I in team” and to “be the best that you can be”.
The challenge is to write small programs to solve various assignments, using very limited means. The aforementioned “state-of-the-art technology” is meant entirely tongue-in-cheek, because even in 1993, there were higher-level programming languages available, of course.
The assignments consist of working with Scrabble-like letter tiles on a grid, to sort them, count them or to remove sequences matching a given pattern, for example.
You can check the content of adjacent cells and then, depending on the outcome, command the tile to move, or (if it contains a number) add/subtract a number. Later, color comes into play.
Loosely speaking, it’s like assembly language programming, but without registers, or like working with a Turing machine, where a tape is read sequentially and things happen according to rules, depending on the symbols occurring on the tape.
The language does not have any real control flow constructs (except for
if), and practically no state-keeping mechanisms (like variables). There is no way to “tag” letters and numbers, so to speak, or to say: this is the very letter that I moved one step right in the last turn.
There are no blocks of statements; for one tile, you can always only do one thing at a time. Often, one would want to write something like:
IF (RIGHT = X) (ADD 1, COLOR RED, MOVE DOWN), but that’s not possible.
Of course, all of these aspects are so by design and form part of the challenge, but they also make it frustrating at times.
Some points of criticism:
The font in the left panel was quite small. It would be great to make it adjustable, or at least let the user choose between, say, three predefined sizes.
It’s annoying when one sees a problem occurring and one quickly wants to fix something in a rule, but gets the message: “You will need to stop the solution player before any new commands or rules may be entered”. Of course, I understand that one can’t alter the rules while running the program, but maybe the solution runner could be automatically stopped when a new rule is entered in the left panel. (And it’s natural to want to edit the rules while looking at a certain state of the program, usually exactly where the problem occurs which the new rule shall rectify.)
Drag and drop for easy rule reordering would have been great.
There’s a fine line between challenge and frustration, and I sometimes felt quite frustrated at the limitations of the custom programming language, as I said above. This is of course something that will vary widely, and I guess some other people will breeze through where I banged my head against the wall.
However, these points should not detract from the fact that Language Arts is a very impressive and carefully designed puzzle game. One can even create and share custom puzzles (the format is explained in the manual).
I haven’t yet played it through completely (I’ve solved 12 of the puzzles and reached the rank of “Senior Language Engineer”), so I think I’ll come back to it sometime.
“Oh, what an interesting name: Josh. Did you know that in the [years 1973-1993] that name never made the top 100 names, like ever?” Er. In 1980 when I was born it was fourth or fifth, I think. This is off to a good start…
Also this art…I’m not sure I’m going to be able to play it for long if all the characters have eyes like this…
Hrm. And the UI is atrocious, even worse than the Zachtronics games.
If you try to change letters and create a rule on the same line, e.g.
e: if left = i move left, it switches letters but doesn’t create the rule or give any kind of error message.
And…the error messages in general are extremely unhelpful. “While the rules created a proper solution for 1/3, they did not solve 2/3.” Show me the thing that’s causing the problem! You didn’t tell me that there were different things that I couldn’t see at once but had to be solved at once. I spent several minutes typing “hint” and trying to move both words up to the top and generally having no idea of what I was doing wrong.
Gah! If you know enough to tell me that I need to stop the thing before making changes, why can’t you just stop it yourself? And it’s just ridiculous that if I’m previewing a step I can’t move between examples. I’m not doing anything, I’m just changing the view!
Why do I keep having to click in the text box? When I type, there’s only one place where I would ever want the text to go: just make it go there. And on that note: since you’re making me type commands to remove and rearrange rules, why aren’t there commands to run/step/stop the execution?
Bleh. This is why programmers shouldn’t make interfaces. Yeah. I didn’t have high hopes for this: programming games are usually bad. But this is a little below average even for that class of games. I’ve seen any number of programming games made for 48- or 72-hour game jams that were much more interesting and fun than this. Unless it’s deliberately infuriating, in which case it’s not bad but you overdid it a little.
Having stalled out at the moment on the i before e except after c part of the tutorial, a couple thoughts:
I also got caught several times having to press the stop button before typing in rules. When the program halts in failure, it should definitely automatically stop and allow you to type new rules in.
I had a look at the manual and… it seems like there’s a lot of stuff in there that could help if it was integrated into the main gameplay! One issue I had is that I was unable to figure out exactly why rules were or were not firing. It seems as though if I were to step through step by step instead of hitting play that would be helpful? But I didn’t find that out in-app, I had to read the manual.
…oh wow, that was helpful. It let me visualize that my solution was straightforwardly goofed up instead of goofed up in an esoteric way (I had mixed up several rights and lefts). This really should be in the game rather than the manual. Ditto for the fact that letters will swap if and only if each gets the command to move into the other’s square.
A couple of other interface things though… I tried “space” and “nothing” for the syntax for moving into a blank before I hit on “blank” (which I think I remembered from the manual). That should be in the app, and also there should be a help topic that lets you find it.
Also I like the idea that you need to solve several problems at once, but that could be communicated more clearly, and it would really really really help if you could switch among the problems while your solution was playing.
More important, my Brexit solution was bugged:
As soon as I turned “Labour” into “Laboru,” etc. for the other words, it accepted it.
I’d like to see more of this–it’s clearly had a lot of love put into it–but I’d probably wait for a later release with a more polished and tested interface and instructions.
Author note: I updated the entry for the game.
Nothing game-play related was changed, but I tried to alleviate a few pain points that have come up:
- The entry now has a ‘Walkthrough’ button on the IFComp site that points to the game manual
- Entering a new command or rule while the solution player is still running or paused will now automatically stop the player and accept the command or rule.
- The Edit menu now has a menu item called ‘Toggle Font Size’ this will toggle between 12 and 14 point font in the game dialog.
- Fixed the reported bug in the ‘Brexit’ level.
The changes are not thoroughly tested, so it is possible for instance some text might run over at the larger font size.
I beta-tested this game, but only the beginning.
Now I’m doing the harder levels and I LOVE it!
“Homework” was so hard! The only way I could handle 5-5 and 0+0 (was to ‘bounce’ the + or - back and forth to block the 0 as it traveled around…)
After playing this game for 2 hours I got completely stuck on the calculation puzzle that introduces “add” and “sub”. I didn’t make any progress with it because I had no idea even finding a start to a solution.
Now I wanted to mention here that last year there was a similar programming puzzle game that introduced new stuff way better imo. Checking the author I had to find out that the game “Instruction Set” was made by the same person. That explains a few things.
While last year’s game had some frustrating parts I made small progress and reached the end. With this one I’m not sure if I give it another chance.
Here was my idea:
Move the 0 up and to the left, then over one more, and have it take on the value of the left. Then move it over, add or subtract the number below, then put it back.
The hard part was dealing with situations where the left-hand number was 0 or the final answer was 0. In those cases, I bounced the + or - sign back and forth between its original spot and up-right, so the ‘traveling zero’ was blocked.
Thanks for the tips. Seems like I actually had an idea that could lead to a solution of “Homework” but my second thought was that it’s impossible to implement it that way. Now that I know that I’m on the right way I got some ideas for an implementation. Still have to try it out.
Some easier puzzles that introduce stuff like “add/sub” without requiring the usage of too many other rules would have been nice for an easier progression in learning the usable instructions.
I also would compare programming in this game with programming a Turing machine, the restrictions are comparable imo. The Turing machine stores its state on a tape, and Language Arts has a 2D field with symbols positioned on it. Thinking of it this way hopefully lets me solve the rest of the puzzles.
I agree that a gentle introduction to +/- would be better. I honestly thought that puzzle was harder than everything after it!
Is this game Turing complete?
I intentionally did not originally provide full solutions to the game in my walkthrough.
If you are stuck on a particular level and just would like to see how the game advances later on, here is a document with solutions to each level. These are just one possible solution (well two on the level where you can get an achievement for basically cheating). You can used Copy/Paste from the Edit menu to avoid typing these in.
No, actually. The state space is too constrained.