PSYCHOPOMP

Released: May 2019

Platforms: PC (Windows)

Team Size: Solo

Skill Focus: Prototyping, narrative design

Project Length: 4 weeks

Engine: Unreal Engine 5

Download and play the game on itch.io.

ABOUT THE GAME

Psychopomp is a first-person narrative game that takes place in a subway system populated by the souls of the dead. You are the operator of a ghostly train tasked with transported the deceased, known as "shades" into the afterlife.

However, not everyone is who they seem. Hidden among the passengers are hostile entities referred to as "interlopers", who must be identified and eliminated before the train reaches its destination.

As the driver, it is up to you to decide whether to allow people to enter the train or not. Once on board, interlopers will target any shades also on board, though they can only eliminate one per stop. If no shades are left alive, you will be targeted instead.

All passengers can be interrogated at the station and again once on board. This is the only way to deduce a passenger's true identity, however the time for this is limited. Once the train reaches the next station, you cannot question anyone until the train departs again.

IMAGE GALLERY

DEVELOPMENT BACKGROUND

This game was a student project developed as part of my second year coursework at AIE. It was created to satisfy a fictional client brief asking for a prototype game that emphasised interesting player choice and consequences. The game had to be built from scratch, with no use of existing art assets or code, in about four weeks.

Given these limitations, I decided early on to scope small by restricting the player space to a narrow area, in this case the interior of a subway train. This greatly reduced the amount of time that had to be spent on level design, allowing me to focus instead of building the core dialogue and interaction systems that would create compelling player choice and consequence.

While brainstorming ideas, I settled on a concept inspired by the psychopomp archetype from mythology, typically characterised as a mysterious figure who guides the deceased to the afterlife (such as the ferryman Charon from Greek mythology). Converting this archetype into a modern version simply replaced the rivers of the Underworld with the rail lines of a subway system, and the boat with a train.

From here, I invested most of my time and effort into creating an atmosphere that would invoke the desired emotions out of the player - fear, paranoia, intrigue and uncertainty. By heightening the tension in this way, I felt I could make the player's choices feel more compelling and add real weight to their outcomes.

Similarly, by limiting dialogue time with passengers, the player was forced to make difficult decisions with imperfect and incomplete information. They would never be able to exhaust all dialogue options with each passenger, compounding the challenge of figuring out who is an imposter.

Design Documentation

DESIGN PROCESS

  • I began with greyboxing the main level, starting with the subway station before moving onto the train car itself. Once this was done I tackled the modelling of basic environmental props, including the rail tracks, utility lights, signs, benches, stairs, and the train doors.

Level greybox of the station platform

Level greybox of the train interior

  • After this I implemented the interaction system for the player, also creating the necessary UI for input prompts and HUD features. I also added the functionality for the train doors and the engine control lever.

  • The next step involved building a customisable dialogue system that would allow for branching dialogue choices. This was accomplished using data tables with features such as setting the number of dialogue choices and triggering different scenarios through dialogue (such as eliminating someone suspected of being an interloper).

  • Once this was done, I moved onto the animations for the train itself. To give the impression that the player was moving from station to station in a large subway system, I had the train cycle through several different animation states - entering station, exiting station, and between stations, the latter involving looping continuously while inside the train tunnel area.

  • The next step was the most challenging, as it covered the design and implementation of the passenger system. This involved scripting all the possible interactions between shades, interlopers, and the player - determining if an interloper was present, if a shade was eliminated, and if a fail state had been reached.

  • Next I moved onto the narrative content - designing character profiles and writing dialogue scripts for each of them. Here I also planned the branching narrative aspects, outlining the different outcomes for each passenger based on player choices.

  • The last major step was creating 3D models for the passengers. I blocked out basic mannequin models in various poses, which were aimed at conveying more of the individual personality and behaviour of each passenger.

DESIGN CHALLENGES

Making player choices feel meaningful

  • The biggest challenge I encountered with this project was devising a method to make player choices feel meaningful solely through dialogue.

  • My original plans involved a more complex system where passengers would have skills and traits used to counter world events that would arise, such as a passenger with engineering skills being needed to repair the train if it breaks down.

  • This idea was scrapped fairly on as it was majorly over scoped and would require a lot of branching paths and interactions that I just couldn't implement in time. So I instead narrowed it down to the interplay between the shades and interlopers, and the difficult choice of deciding if they are who they say they are.

  • However, the lack of visual effects, detailed character designs and complex animations meant that all of the important information the player needed to make decisions came from written dialogue and a few other contextual clues based on things like number of stations/passengers.

  • Here I was faced with a new problem - how to subtly communicate the passenger’s true identity without it being too obvious to the player. In solving this problem I tested out several different ideas:

    • (1) Interlopers possess shades, resulting in them having a modified dialogue script with certain inconsistencies. This didn't work as it created a 1 for 1 situation, where one shade was exchanged for one interloper, meaning the overall number of interlopers wouldn’t increase and there would be no difficulty curve.

    • (2) Interlopers turn shades into new interlopers. This would work the same as above, with modified dialogue that had inconsistencies. This was better balanced but created the problem of extra workload, writing two dialogue scripts for every character. In addition, the player has no concrete foundation to prove what the passenger says is true.

    • (3) Interlopers would be identified by errors in speech, such as malapropisms/malaphors, the result of trying to mimick human speech but tripping up. This felt too obvious and also humorous, which wasn't the mood I wanted for the game.

    • (4) Interlopers would have an ID card with their details on it, such as cause of death and personal info, which the player could check when speaking to them. This gave a concrete foundation but made spotting inconsistencies too obvious.

  • Ultimately I settled on the idea of interlopers retaining use of their sensory organs. Commenting on certain sights, sounds and a sense of temperature would be the giveaway. This felt best as these hints are easy to miss and require the player to pay careful attention to what someone is saying, but they also make sense logically in the world of incorporeal ghosts.

Creating the visual effect of moving between stations

  • One of the other challenges I identified early on was creating the visual effect of the train journeying from station to station without it really moving anywhere at all.

  • I managed to disguise this process by having the train loop infinitely between two points while in its transition phase. Once the lever was pulled by the player to progress to the next station, the train would exit the loop, teleport to behind the station scene and then play a new animation of arriving at the station. The same sequence would then happen in reverse when departing from the station.

  • To avoid any of this transition from being visible to the player, I used a combination of volumetric fog, sparse lighting, and a screen vignette.

Train looping sequence, to simulate travel between stations

The same animation sequence, seen from inside the level editor

View from inside the train with volumetric fog active

View from inside the level editor, with the train wrapped in volumetric frog

PASSENGERS

P55 (Shade)

Background
A depressed middle-aged man, who was a wealthy businessman and politician during his life. Lost his wife to cancer and went into a downward spiral of alcoholism and grief, eventually being killed in a car accident while driving under the influence. Survived by two estranged adult children with whom he never reconciled.

Personality
Sad, lonely, jaded, low self-esteem, hates himself, mournful, contemplative, regretful

Identity
Can be identified as a shade as he comments on how he feels nothing physical anymore (hunger, thirst, bodily pain).

P24 (Shade)

Background
A young man whose family was torn apart by domestic violence. He left home as a teenager and briefly pursued a career in the army as a helicopter gunner but was later discharged due to misconduct. Suffering from post-traumatic stress, he ended up as a drug addict before accidentally dying of opioid overdose.

Personality
Disrespectful, arrogant, rude, violent, thin-skinned, emotionally immature

Identity
Can be identified as a shade as he says there is no one else at the station (even though P35 is also there). In addition, he mentions trying to fight other train operators but realised he couldn’t hit them because he lacked a physical body.

P32 (Shade)

Background
An associate professor at an Ivy League university who researched and lectured in physics and mathematics. Extremely intelligent but also deeply misanthropic. Suffered from cystic fibrosis throughout his life, an inherited genetic disease. This dramatically shortened his lifespan and turned him into a nihilist.

Personality
Apathetic, anti-social, nihilistic, resentful, high-minded, intellectually driven

Identity
Can be identified as a shade as he comments how liberating it is to be free of physical needs (hunger, thirst, sex).

P35 (Interloper)

Background
A young woman who grew up in a poor, crime-ridden inner-city suburb. Developed schizophrenia in her adulthood, causing her mental state to deteriorate. She is an interloper, claiming to have been shot and killed in a gangland shooting. In reality, she is trying to find her older sister in the afterlife, who was actually killed in this manner.

Personality
Paranoid, frantic, fearful, anxious, determined, struggling

Identity
Can be identified as an interloper because she mentions trying to talk to P32. In addition, she complains of how much the Underground smells of death and disease, which she claims is triggering her germophobia.

P10 (Interloper)

Background
A pale, sickly young boy with haemophilia who claims to have died suddenly after an uncontrolled haemorrhage. In reality, his parents were both killed when their house was hit by a bomb during wartime. He is an interloper who has entered the subway with the goal of finding them and bringing them back.

Personality
Scared, lonely, curious, trusting, confused, worried

Identity
Can be identified as an interloper because he complains about the burning sensation in his throat from the heat and noxious gas in the underworld. This causes him to cough frequently during dialogue.

P77 (Shade)

Background
A rude, mean-spirited old lady who died alone in a nursing home. Her death was caused by emphysema, contracted from a lifetime of smoking.

Personality
Entitled, condescending, bitter, narcissistic, unapologetic, judgmental

Identity
Can be identified as a shade because despite a lifetime of smoking, she shows no physical symptoms of it, such as coughing or wheezing.

POST MORTEM

  • In retrospect, I think the biggest issue with this project was trying to achieve a satisfying narrative experience without proper visual effects, character designs and animations. Making the core experience work solely through dialogue was the most challenging aspect and the solution still felt somewhat unsatisfying to me.

  • I also felt that the game would have benefitted from a more effective way to heighten the tension and punish the player for mistakes. As it stands, there's no real penalty for denying shades entry. The player can still win so long as they have at least one shade alive and on board (and no interlopers) by the time they reach the end.

    • This could potentially be achieved through a system of randomisation, by having interlopers spawn only if a shade is denied entry, or through changing the dialogue mechanic so that rather than have the timer increase after exiting dialogue, it is constantly going down in real time. This would mean the player has to think fast and can't just sit in dialogue forever.

  • At the end of the day, I was still proud of what I was able to create in such a short time, and the overall mood and atmosphere of the game was highly rated by my peers and trainer.