Overview

Katalyst is a mini-game compilation that introduces cyber-security concepts to beginners. It was developed during the course of 53605 Interdisciplinary Project in AY2021/2022 Semester 1. It was developed for CyLabs for use in PicoCTF, where it was played over 4000 times.

My Role

Producer, mainly responsible for features such as:

  • Heading meetings with internal & external clients
  • Project design & scope
  • Team Management
  • Audio design
  • Playtesting
  • and Quality-of-life improvements

Duration

August 30, 2021 - December 7, 2021

Project Team

Koh Lewis
Oscar Huang
Jeesub Lee
Josh Li
Tianying Lyu

Tools

Unity
Github

Links

Katalyst Homepage
Play Online

ASCII Codes

In our first game, we introduce ASCII code to our players. ASCII code is a protocol that computers use to translate the electronic signals it receives into English for humans to read and utilize. We make the players do a simplified translation themselves, by putting them into an escape room where they need to decipher the ASCII codes around the room so that they can escape. By the end of the game, the players will have translated at least 3 different sets of codes, and will gain a bit of familiarity with ASCII. After each code, the players will need to interact with their environment in different ways, ultimately ending in a final passcode to win the game.

Since the game is made for beginners who are just starting out, we try to make it as simple as possible. We use a very small subset of characters, removing all uppercase letters and symbols from the codes. This includes spaces, which we choose to leave out by spacing our clues to make it as implicit as possible. We also have left out binary and hexadecimal, so the players only need to worry about translating decimal numbers.

Using Command-line Interfaces & Hashing Functions

Our second game is a score-based game, where players try to feed as many creatures as possible. The players are not allowed to physically touch anything with their hands due to sanitary reasons, so the players need to make use of spells, which they cast using their wand (it is a magic school after all!). To cast spells, the player will need to create the proper commands to make cookies and serve them.

We implemented our essense of a command-line interface (CLI) with our spellcasting menu. Players have a choice of "spells" to cast, emulating a list of commands in a CLI. Each spell also has different options for the spell, which we use to emulate the arguments that commands in a CLI accepts. To make it easier for players to concentrate on the core concepts, we accept a wide range of control options for players to use so that they can use what is comfortable to them. We started with basic clicking, so that players need to click on the options one at a time. This works, but many of our testers used a laptop mousepad, which was inconvenient because they had to move the mouse a lot. We added in keyboard shortcuts to swap commands and arguments and cast spells, so that players who wanted to be quick and efficient could learn and get used to it. Finally, we also added a click-and-drag option, so that players using a mouse have another option for control, based on what they prefer.

Our second teaching moment from this game is the concept of hashes. We are operating a cookie machine in the game to feed the creatures. The cookie machine accepts ingredients, and pops out a cookie based on what was put in. We used the idea of baking to convey hashing, since it shares the similarity of being irreversible and a one-way transaction. One aspect that was hard to convey was that the order of data matters in a hashing function. We try to emphasize that it matters by having the ingredients drop in one at a time, as well has having the first and second item being dropped in affecting different parts of the cookie.

Variables and If-Else Statements

Our third game is a puzzle game, conveying the idea of variables. It uses the idea of a pipe puzzle game - where you start from one side and need to reach the other side by laying down pieces - and expands on it by adding an extra element. The extra element is that the line you draw from the start to the end needs to be a certain power level by the end. The player needs to manage this by choosing what is the starting power, as well as making the line go through pieces which alter the power level of the line.

In later levels, we add on more complexity by adding branching paths. Newly introduced pieces will direct the line in a different direction based on the power level of the line. Players will need to care about the power level throughout the puzzle, instead of only at the end.

Loops

Our last game introduces the idea of loops. Players will need to replicate a potion recipe by etching commands onto a robot automation card. The problem is that each command can only be used once on the card, but the recipe needs multiple iteration of steps. Due to this, players need to use loops to repeat commands so that they can imitate the recipe using the card.

All of these games conveys concepts which are covered during the PicoCTF competition that CyLabs held in January 2021. CyLabs has great resources to teach people the concepts in more detail, so our job was to try to bring in newcomers in a friendly and inviting way. Along with these games, we also have sections to show how the game mechanics tranlate to concepts they can utilize for the competition, as well as links to the competition questions based on which games the players have experienced. Over the course of 14 weeks, our team made four polished games, one game wrapper, and integrated it into the PicoCTF system, which was a huge undertaking and a lot of work in a short amount of time.