A horror investigation game where up to four players choose from unique exorcist classes and attempt to expel vengeful ghosts.
Players have three nights to carefully gather evidence without angering them and banish them to the hereafter!
I’ve been wanting to make a multiplayer ghost hunting game for well over 5 years, but I was busy with other projects. In that time period, Phasmophobia was released and became the gold standard for the genre. While it was somewhat discouraging to see someone else also come up with what I thought was a unique idea, I was happy that they released before I’d really began development. This enabled me to ensure that the gameplay and mechanics were different enough.
All programming and ghost models are being done by me, sound design/engineering is by my wife.
Design & Mechanics
Ghost Behavior
Ghosts have different personality stats that affect their behavior, such as their alignment ranging from Innocent to Evil. Their alignment dictates the type of ritual needed to complete the mission. (Exorcism for evil spirits, Purification for innocent.)Their actions are based on a combination of their personality, anger level, player’s fear level, and other factors.
Most ghosts tend to slowly wander the map in an invisible, unmanifested state. When a ghost spots a player while at low anger, depending on its personality it might attempt to communicate or frighten the player.
It can also initiate aggression; at low player fear it manifests and focuses on the player. As long as it can see the player it will raise their fear level at an increasing rate; if it reaches the maximum level, the ghost’s anger increases significantly. Depending on its anger level, it may also attack and attempt to harm the player.
If at any point the ghost’s anger reaches maximum, it will enter a frenzied state, attacking any player it sees. The only way to lower its anger at this point is for the players to flee the area and return the next night.
Player Fear System
Each Player has a simulated Fear level which changes based on various factors.
Spending too long in the dark, witnessing a startling event (A light exploding, a ritual failing, a door slamming etc.), finding disturbing evidence, or encountering a ghost can all raise Fear levels.
Fear levels will gradually decrease in well-lit areas, assuming nothing has recently increased them. Some player classes have abilities to calm their team’s fear level. Medication can also provide temporary resistance to fear.
High fear levels have various consequences: the player can fumble and drop an item when equipping it, or stumble when running, or take longer to open a door. Ghost encounters at high fear can increase the ghost’s anger or trigger aggression.
Evidence
Many objects within the map are searchable, for example, drawers, cardboard boxes, and filing cabinets. A player can interact with them, and even if they contain something, a successful search isn’t guaranteed. However, each object can only be searched a limited number of times, and each unsuccessful search increases the chances of finding anything contained therein. On the final attempt, any contained clues have a 100% chance to be found.
This encourages players to use their tools and evidence to determine where to search, rather than wasting their time randomly searching. While brute-force searching IS possible, it’s a very risky strategy.
Procedural Investigation Generation
The generation system works in several steps. First, it generates an evidence chain. Each type of evidence can potentially be identified in multiple ways, most requiring the player to have identified another piece of evidence to narrow down the correct one. However, at least one will be able to be identified without having any other evidence.
Once the system generates the evidence and how it can be identified, it selects a random room for each. Then, based on the type of clue (Object, bones, newspaper/note), it populates each room with at enough searchable objects to contain the necessary evidence, then spawns the evidence. The remaining rooms are now spawned and randomly populated with dummy evidence.
Stand-in System
Many furniture/decor objects in a map are “stand-in” objects, which are objects that represent a collection of different objects that can randomly spawn in that location.
On map generation, all stand-ins are randomly spawned as one of their potential objects based on the needs of the evidence generation. Each map is only supposed to have a maximum number of searchable objects, so rooms that are designated to contain evidence will have their searchables spawned first.
Stand-ins can also potentially include “sockets”, which are essentially child stand-ins. For example, a desk would have several “drawer” sockets, each of which could spawn either a searchable or unsearchable version of a drawer, as well as “surface” sockets to represent objects laying on the desk, which might spawn as a searchable lock box or as some cosmetic scattered paper.
To help visualize how the scene will look at runtime, each stand-in also has a previewer component that allows me to cycle through the different potential models.