A banner depicting a hitman on the left and a ghost on the right, with the title in the middle
a cluster of overlapping pink rectangles in the top left corner of the background a cluster of overlapping pink rectangles in the top right corner of the background

Hit & Haunted

A 2D top-down murder mystery puzzle adventure game about a hitman, Ace, who is being haunted by the ghost of his most recent victim, Eli. This unlikely duo of murderer and victim must work together to find the anonymous client who ordered the hit, so that Eli can move on to the afterlife and leave Ace alone.

Play the demo and wishlist the game on Steam!

Role

  • Game Developer
  • Game Designer
  • Director
  • Story Writer

Team

  • Yuki Cai – Game Artist, Producer, Story Writer
  • Joshua Ma – Sound Designer, Character Designer, Script Writer, Story Writer

Tools

  • Unity & C#
  • Visual Studio Code
  • FigJam
  • Google Docs

Context

Semester-long project for Senior Project in Creative Media course at SFU, January – April 2025.

The purpose of this project was to create a digital media project that would make a public debut by the end of the course. My team chose to create a game demo that would be published on Steam. We are also continuing to work on the full game after the course is over.

Game Trailer

Here is a link to the video if the embedded one doesn't load.

Play the demo and wishlist the game on Steam!

Process

Designing Mechanics

When coming up with the concept of a hitman and a ghost working together, the first mechanic I thought of was switching between the two characters to interact with the environment differently. While the hitman could interact with objects and humans in the living world, the ghost would be able to see other ghosts and spiritual energy in the ghost world, as well as phase through walls and possess certain objects.

Switching between Ace and Eli to talk to a ghost in the alleyway.

After we had pitched three game ideas and decided to move forward with this one, I came up with a transportation and deduction mechanic. The player would unlock new locations in the game world by inputting the location's name or address, proving that they had figured out where they need to go.

Inputting a new location in the transport system.

Development

As the sole developer on the team, I did all the development and programming for the game in Unity and C#.

Ace sees the world normally, while Eli sees it in more blue and muted colours. Additionally, Ace can only see the room he is currently in, while Eli can also see some of the surrounding rooms. I achieved these effects using lights and post processing.

Walking through the rooms in Ace's apartment as both Ace and Eli.

Eli can possess certain objects, indicated by a blue outline that appears when the player gets close to it.

Possessing a sink at the cafe.

We also have an inventory system that keeps track of information about objects that will be used or relevant later on in the game.

The inventory system.

A challenge I faced was programming the transport system in a way that would work with the save system. The locations that are available to the player need to be saved so that they can be reloaded from the save file later. The game data is saved in JSON format, and the locations in the transport system use references to game objects in the scene, which could not be saved in a simple file.

I decided to save the names of the available locations as strings, and have an array of all the locations in the scene. When loading data from the save file, the script would find the location object with the matching name and create the correct location button.

Reflection

This project was a lot of firsts for me. It is the first game I worked on that would be published on Steam, and the first project I marketed on social media, which added a lot of pressure to make sure there weren't any major bugs or issues that players could run into. This was my first time implementing a save and load system, which brought more complications and possibilities for errors than I had initially anticipated with the implementation of other mechanics and features. It is also the first time I would publish a demo rather than a full game, and my team did not have the time to plan out the details of future plot points and puzzles, so we are not completely sure of exactly how far we want to take it.

Despite the extra stress and uncertainty, I greatly enjoyed creating the game, and we all agreed that we are passionate about it and want to continue development past the scope of the course. I am glad I had this opportunity to improve my skills in game design and development, and I am excited about the future of our game.