Money Doors

07.2026

About the project

Money Doors was a product made in collaboration with a bank. The purpose of the game is to teach young teenagers to manage their finances better and avoid too many microtransactions like lootboxes, skins, or gambling sites. The game features multiple money-themed minigames which players complete within a time limit. The true lesson however comes from decisions made between the minigames by testing player's ability to plan their spending, manage risks, take good bargains, and save as much money as possible.

The gameplay loop is simple:
1. Add savings at the beginning of the game;. | 2. Chose a character (no impact for the game so far). | 3. Chose one of the three puzzles. | 4. Bargain with the host. | 5. Choose and pay for the difficulty. | 6. Play through the puzzle. | 7a. If completed: increase your savings. | 7b. If failed: lose money. | 8. Repeat from step 2 until rounds or money runs out. | 9. Show score.

Class Diagram

This is a class diagram I've made to visualise how everything is tied together. The entirety of the diagram (except for individual puzzles) was implemented into the game by me. The system expands more with addition of bargaining system and multiplayer synchronization, but for simplicity, I decided to visualise only the main gameplay loop.

My Contributions

The project was made in collaboration with two other programmers, two artists, and one game designer.

Tech Guide

Because I had the most experience with programming, I focused mainly on structuring the project from the technical side. The Tech Guide features naming conventions, file management, styling, writing, commenting, and debugging code, and managing GitHub repository. The guide is backed up by research I've done while writing it, the sources are linked under every relevant header.

Puzzle Management

One of my proudest works is a Puzzle Manager. The manager will randomize and display all yet-unplayed puzzles in the door choice scene and show their names alongside their icons together with a debug tool that allows developers to play any puzzle. No code is required to add or remove puzzles from the list.

Making new puzzles was quick and easy for other developers. All they needed to do is make a new scene and script inheriting from original puzzle, determine what happens on puzzle_start(), and adjust it for every difficulty.

Player Data

I created a system that stored player's gameplay by tracking how well they did in each puzzle. Every time a player plays through a puzzle, the following data is stored: name of the puzzle, its difficulty, time to complete, and whether it was completed. When visiting statistics, the summary of all puzzles can be seen including each individual puzzle previously played.

This has not only allowed us to test the game more efficiently without needing to look at their gameplay all the time, but also gave the players' opportunity to replay the game and track their statistics.

Bargaining System

The bargaining system was created to allow players to take deals with the host in order to get temporary benefits. Taking the wrong bargain could lead to negative effects. There are good, neutral, and bad bargains. The chance of getting a bad bargain over a good or neutral would increse if the player kept asking for them which is displayed through risk level.

I created a system that allows for inserting new bargains easily. In the video here you can see how a new bargain is added with complex effects: the anser A gives one random difficulty for free; the bargain B makes the easy difficulty free but the other two cost twice as much. All of this was done in just a few minutes (that part of the video is sped up x4) without using any code!