My boyfriend and I were searching for games to play on our PS4 on a Saturday night when we stumbled upon while True: learn(). A coding game? We were intrigued, but skeptical. It was only $12.99, so we made the decision to purchase it and ended up spending hours fighting over the controller.
In this game, you play as a coder who accidentally found out that their cat is extremely good at coding, but not as good at speaking human language. Now this coder (it’s you!) must learn all there is to know about machine learning and use visual programming to build a cat-to-human speech recognition system.
The game format is simple: you are presented with a vertical task tree of machine learning concepts. You begin with the most basic tasks and unlock harder ones. For each task, you receive an easy in-game tutorial, as well as a short lesson on how the concept works works in real machine learning. Along the way, you unravel various side hustle tasks, such as developing programs for startups or helping companies optimize. You accumulate in-game cash as you complete projects and sell your startup shares.
Now the real questions is: do you actually code?
Simple answer: no. As the game description says, the “coding” portion replies on visual programming, which involves the players manipulating graphics representing program elements. Even as non-programmers, players could easily make the mental model connection between graphical elements on screen and how they are supposed to work. Essentially, the game consists of puzzles which players have to connect system nodes to optimize speed and accuracy by sorting simple shapes and colors, as well as more complex objects later on.
The game concept is straightforward, but it had me hooked. I never had as much fun learning about machine learning from textbooks or Youtube videos as I had from this simple game. Traditional learning can be dry, but while True: learn() gamified the experience of learning and programming. Albeit, the game does not teach coding, but it testifies to the basic concept of programming, which, at the end of day, is just like puzzle-solving.
I took my first programming class in my high school senior year. I stayed for a week before dropping it, blaming my lack of interest on disengaged pedagogy. However, had I had the luxury of discovering while True: learn(), my initial encounter with programming might have fared differently.
I am a big proponent of gamifying the education experience. Educational platforms such as Duolingo have been met with widespread success, and the trend of moving to online learning could only bolster the opportunity of gamifying education. With while True: learn(), students could start learning important concepts of programming as young as grade school, increasing their chances of success in programming courses later in their education.
As of now, while True: learn() cannot replace a traditional education, but it illustrates the trend that education must follow in order for students to stay engaged in this critical transition period to online learning. Educational products can take some notes from this game to improve their successes with students, including:
- Breaking complex concepts into digestible bits while staying faithful to the material
- Respecting the audience by allowing them to solve challenging problems
- Simplifying the game structure for easy follow-throughs and game plays
For future versions of the game, I would love to see these improvements:
- Hints — When players get stuck, they should have access to clues on how to approach the problem-solving. While hints, when used too generously, could become an easy cop-out to actually solving the puzzle on one’s own, it is vital to keep players’ interest and encourage them to stay on the game by cleverly introducing hints. For example, the game could provide a limited number of hints in a single puzzle, or players can earn hints through certain achievements.
- Multiplayer galore! — The game is currently single player, but I could see the game thrive with the option of multiple players. While playing with my boyfriend, we practically fought over the controller and shouted our own methods of solving while the other had control of the game. By adding a multiplayer aspect, the game would reflect the collaborative nature of programming and teach the players to tackle challenges by working together. I could see multiplay working several ways: 1) players could work on one puzzle on the same screen together, 2) players could work on the same puzzle but on split screens and compare solutions afterward, 3) players could work on the same puzzle asynchronously: a player could challenge another player to complete the puzzle on their own time.