while True: learn() by Luden.io
I always start out incredibly enthusiastic with programming games, and then as soon as the puzzles progress past the “absolute beginners” level, I end up feeling frustrated and stupid. Why do I keep doing it to myself?
A Question of Motivation
In the case of while True: learn(), the obvious answer is “cats.” The game’s framing story involves a cat who can solve artificial intelligence solutions; the player’s role is a less talented programmer trying to use machine learning to communicate with said feline hacker.
On top of that, I have a layman’s interest in AI and machine learning: the technology responsible for those captchas that want you to click on all of the squares on a grid that contain traffic lights, which I loathe.
On the bright side, though, it’s also the technology behind those neural nets where a programmer feeds in a list of cookie names, for example, or Doctor Who episode titles, and the program comes up with hilarious new ones like “spice biggers” or “The Daleks of the Daleks,” both of which I would eat and/or watch.
Sift and Sort
while True: learn() starts off with the basics, with simple “nodes” representing machine learning concepts like decision trees and expert systems used to solve basic puzzles, like sorting colors, shapes and eventually both.
For added difficulty, improved efficiency – like using fewer nodes and accomplishing tasks in less time – results in more cash, which is used not only to rent server time to run your programs, but also cosmetic stuff to decorate your work space and your cat.
Messing with efficiency is where things get complicated; decision trees are a lot faster than expert systems but also incorporate elements of randomness, which can affect your accuracy. And as SIFT nodes for shape recognition combine with color-sorting, it gets exponentially more difficult, at least for me.
But efficiency is an important consideration, because as you progress in the game, you can also invest and write programs for start-ups, adding the nightmare of the tech sector economy to the nightmare of programming puzzles.
If Cats and Machines Can Learn, So Can I
I don’t pretend to understand the mechanics entirely, but I have enjoyed the process so far. Even if progressing in the game takes me longer than I’d like to admit.
Playing while True: learn() has helped me figure out that one reason I find this kind of game frustrating is because I need to know how everything works in order to feel comfortable moving along to the next puzzle, so I take a lot of time doing research when I’m stuck, not just to find the solution but also the reasoning behind it.
That’s one area where this game shines; it’s already got a robust and friendly community, complete with Discord server and plenty of active discussion on its Steam page. For the knowledge-hungry, the game itself also links to YouTube videos explaining the mathematics and history behind actual machine learning.
Zach Barth, the best known indie developer for programming-themed games like Shenzhen I/O and our 2018 Game of the Year contender Exapunks, started out making educational games before coming to the decision that cramming learning and games together is a losing proposition, as he said in a Google Talk a few years ago, but I do feel like playing while True: learn() has helped me educate myself – for that matter, so do Barth’s own games – albeit slowly and perhaps clumsily.
In comparison to Barth’s Zachlikes, while True: learn() is simpler both in its puzzles and its presentation.
Its simple visual presentation of colored shapes moving between nodes has neither the assembly language abstraction of TIS-100 nor the medieval alchemical flavor of Opus Magnum, but that isn’t a bad thing; it makes the programming puzzles easier for a rank amateur like myself to work out.
Similarly, the framing device is simply that – a bit of added flavor to tie the puzzles together. But it lacks the immersion that Barth usually provides, like the Cronenberg-meets-Neuromancer narrative, completely with print-it-yourself punk ‘zine instructions, in Exapunks.
Again, that isn’t a bad thing, as it lets the puzzles shine more or less on their own. In my case, it also let me focus on learning the mechanics themselves instead of getting impatient for the next bit of accompanying story.
Have I managed to build a fully functioning, AI-driven cat translator yet? Not even close. But I’ve solved some machine learning puzzles thoroughly enough that I can “show my work,” as they used to say in math classes, and for me that’s enough for now.
while True: learn() is available via Steam.
Watch the official trailer for while True: learn() below: