top of page


My Roles
Programmer, Gameplay Design, Level Design, Sound

"PicoLock is a web game that try to promote middle school students to learn Cryptography. "

This is a collaboration project between CMU ETC and CMU Cylab PicoCTF.

Project Description


PicoLock gameplay is mouse-control only.

Player will use mouse to:

  • navigate main character

  • select cards, and apply cards on objects to change their properties

  • interact with UI


PicoLock has 3 levels in total, which is about 30~40 mins experience.

  1. Level1: classic ciphers theme, drawing inspiration from the Caesar Cipher and the Spartan Cipher.

  2. Level2: RSA theme, drawing inspiration from the public key and private key.

  3. Level3: More difficult RSA, introduce the difficulty to use brute-force strategy in deciphering RSA.

My Roles

Responsible for designing and developing:

Core game mechanics
  • 4 cards functionalities: Translate (Move), Rotate, Modify (Change shape), Scale (Change size)

  • Level 1 Puzzles and mechanics

Interactable Object Effects Implementation

Interactable objects have different effects based on the card player applied to them.

Objects in the scene with specific InteractableBase responds to a specific card type (eg. the ones with IB_Translate will move to next translate slot when player uses Translate Card on it).

Object Model for Script

Inspector for Making Level Design Easier

To make the level design easier, every interactable objects are designed to be easily produced by draging corresponding scripts and assigning data.

Eg. Make an object that can be modified

  1. drag IB_Modify

  2. assign SO_ModifyObjects to set the sequence of object shape change.

Level 1 Puzzle Answer Check Implementations

All puzzles in level 1 require players to change objects to match a specific target, which means we need some answer checkers to check the current status of interactable objects.

The checker logic is listed below, with hierarchy: CipherTarget > IB_CheckerManager > Sub Checkers

Tech Implementation

Use Unity as the platform, and use WebGL to support web-based experience, and use plugins provided by PicoCTF to build on their website.

Our final build is on PicoCTF's Official Website, which requires an account signing up. In this final version, students can save/load their progress under their account.

Project Gallery

bottom of page