Skip to main content

Occult Mystery Game in Unity

·582 words·3 mins

The Game
#

This game was made in a total of five months with a team of six people, first as a student project at the end of our first year of our bachelors degree. We also went back and polished the project for entry to the 2026 Gamebridge student showcase.

In The Occult Catalogue, the player is an antique shop owner who is examining various objects to identify if they are haunted. It’s similar to Papers Please, That’s Not My Neighbour and Phasmophobia, encouraging careful understanding in a light horror atmosphere.

You can play it with a mouse in any browser from the link above!

A screenshot of a first-person 2d pixel art game. The player is behind the counter in a shop. An old woman is standing in the middle of the screen. Her text box reads: Ethel.

My Role
#

I was the lead programmer and project manager on this project. I’ll talk about what I learned from both below.

Code Architecture
#

I took charge of the primary gameplay coding, the workshop and item investigation sections.

I built up a modular, Data-Oriented approach, where each type of item interaction would have its own component, which would use hitboxes and signals to communicate its status and events to other relevant objects. This would let generic parts of individual objects be constructed quickly, and then more specific quirks could subscribe to the events and respond to, say, the light switch, with only one custom script governing unique behaviour.

A screenshot of a pixel art game. The player is in a darkened and purple-tinted workshop. A porcelain baby doll is sitting in the corner of the table. Its eyes and streaks along its arms are glowing yellow.

There were two major flaws in my implementation, however. The first was that my components were intended to all attach to a single Unity object, which also held the visible sprite. This created issues, for example, I couldn’t make objects change shapes, because I couldn’t separate the mouse-over outline component from the normal sprite,

The second major flaw was also layering related. I built the whole system inside Unity’s UI canvas, which was very limited in terms of layering controls. It mostly uses scene hierarchy to control visibility layers, which also controls mouse interaction, and was also important for code behaviour. Ultimately, the scales had very inconsistent visual layers and some interactive difficulties too.

A screenshot of pixel-art scales on a blank background. There's a bright red button below it that says Clear.
I had to resort to adding this clear button, which allows players to avoid softlocks or interaction difficulties related to the layering.

My biggest lesson from all of this is to separate visuals and behaviour at all times, so I don’t have to choose between visual polish and functionality.

Project Management
#

We used the agile project management structure, which wasn’t my first time, but the larger team and interconnected structure created by the puzzle genre required me to think about it in a different way. The nature of a student project is that we were all juggling this alongside other modules and our own private lives. I didn’t want to seem too demanding, so I was hesitant with deadlines and expectations, but I think that only made people feel like they didn’t know what was being asked of them.

Instead, I was advised to bring my teammates closer into the decision-making process. After all, the people with the most accurate understanding of their skills and availability was them, and if they didn’t know, they would know to focus on developing their self-assessment skills, instead of me waiting on an unprompted yes or no.

A screenshot of a pixel-art game. The player is in a cluttered workshop, looking at a desk. A checklist is filling up the centre of the screen. Entries on the checklist include: Status : Haunted, Temperature, Weight, UV Reaction.

What’s Next?
#

I’ve learned a lot from this experience, both in terms of coding and teamwork. I’m looking forward to taking this knowledge onwards for future university projects, and I plan to keep trying to work with lots of different people on different kinds of projects to keep building myself up.