Space Horror Game

This is a Devlog for a 1st Person Space Horror game idea I had. The intent here is to walk through the process of creating a project from start to finish. This game is going to be built using Unreal Engine 5, with a strong emphasis on learning how to use the Lumen lighting system and other built in systems to achieve a chilling atmosphere for players. The game itself has you exploring a destitute space station on the surface of Mars, attempting to restart the station’s systems to re-establish communications with Earth in the hopes of sending help before whatever is lurking on the station finds you.

Status: In Progress

 

10/1/2024 - Refactoring (Part 1)

As I begin to move further into this project, I no longer wish to utilize explicitly just blueprints for all of my logic. Using the blueprint system at first for the prototype was an excellent proof of concept, but now that this project is growing in size and scope, I would benefit more long term by properly using the engine in the way that it prefers to be used.

With that said, I began working on refactoring what I’ve got so far into proper C++ classes. This began with the primary character. After today’s session, I successfully setup the basic character’s movement and camera controls, as well as established the input connections necessary for future actions such as object interaction, the flashlight, and the taser. Re-adding this functionality will be the focus of next session.

9/18/2024 - Enemy Health and Taser Configuration

Today, the focus was on setting up the new taser. Previously, the taser was given a particle effect to demonstrate when it was firing. As of today, it now spawns a particle effect on the target as well. Additionally, the spiders now have health values and the taser successfully reduces and eventually kills the spider.

Began separating the taser and eventually the flashlight from the Player object. This will the focus next time. Past that, the spiders need a reduced sight line, and the flashlight and the taser need to utilize a battery system.

9/16/2024 - Basic Combat Setup

It’s been a hot minute, but after finishing up moving, we are back working on the horror game. This project is now a part of an ongoing streaming event and as such, development will be slow to progress. Since last post, I met with my friend to iron details pertaining to the final design of the game. From there, we identified further primary mechanics to be implemented. Today, I began implementing this list starting with a basic combat system. This included giving the Player health and enabling the spider enemies to cause harm to the Player upon collision.

Additionally, I began work on the enemy deterrent, a taser that will share a battery life with the flashlight eventually. Currently, this is only works visually. It has a basic model and a default particle system.

7/5/2024 - Basic Prototype

Now that all the basic mechanics I could immediately think of were implemented, save for the ability to crouch which is on hold for now, I wanted to move towards putting together my first build. The major intent for this was so I could get an idea of how the components I’d built worked together. This allowed me to also start getting a feel for what’s missing, right off the bat. Some things that I realized immediately and that I had to tweak to fix:

  • Wall terminals needed to support having 2 terminals to 1 door, such that when the player activates one terminal to open a door, the terminal on the opposite side of the door reflects the changed state (closed to open, or vice versa) of the door.

  • Door movement needed to support movement in more than just the X-Axis. When I first attempted placing a door that had been rotated 90 degrees from the original, it smacked the character in the face and rotated out of the door frame.

  • There needs to be a way to actually quit the game. Making a build at this point would not allow the player to easily quit.

As desired, creating and playing through the build showed me a few things I’d like to change:

  • Doors should have a timer of 3-5 seconds, after which they close automatically.

  • Enemies need a max visibility distance, and a smaller angle to their field of vision.

  • Enemies need to cause a lose state.

  • Enemies should leap at the player.

  • Enemy audio should travel further.

There were some other noticeable things - some minor environmental bugs, lack of proper lighting throughout the majority of the rooms, and other general issues in optimization. That said, I am incredibly satisfied to have reached this point in such a short time. I intend now to sit down with a friend of mine interested in design to iron out where to go from here. This will be reflected in the design tracking site, hacknplan, which will likely be kept private. That said, I will post highlights of any major decisions that are made. In the meantime, the prototype is currently live on my itch.io page. Feel free to leave a comment.

 
 

Flashlight Up and Running

6/28/2024 - Basic Flashlight

Adding in the Flashlight wasn’t terribly difficult, the hardest part was, as seems to always be the case with the lighting, fine tuning the actual lighting. I expect to tweak this a lot before I land on something I’m really happy with, but this felt like a good landing spot for the night. One major thing I noticed is that there are some fairly noticeable lighting artifacts, particularly when the light is disabled. I’m not sure how to handle it yet, so that’s something I’m listing as a point to return to. I did some small research into it, but I suspect I’ll need to reach out to someone with actual lighting experience in UE to figure out how to handle this.

 

6/27/2024 - AI Player Tracking

Using the AI Behavior Trees in Unreal Engine, I was able to configure the Spider to start tracking the player. I didn’t want to remove the ability for the Spider to pace as it had before, so I configured it to pace as normal until the player is within the Spider’s line of sight. At this point it begins tracking the player. If the player leaves the Spider’s line of sight, the Spider will continue to the player’s last known location. At this point, if the player still can’t be located, it will return to its pacing. Next step is the flashlight.

 

Spider Tracking the Player

 
 

Modified the Spider's IK

6/25/2024 - AI Progress

Inverse Kinematics is an area I’m still learning, so modifying an existing IK system tends to take a lot of experimentation. Such was the case with this step in the process. I mentioned previously how I wanted to fix the Spider from dragging its body across the floor, which upon doing so, showed me that it was also making a lot of very small, but very fast steps, making it almost slide, or rapidly wobble, to its destination. I wound up experimenting with a lot of different values to try and get to an acceptable walking state. I think for where I currently am in the project, this is a satisfactory stopping point. I intend to revisit this in the future some more.

Now that this issue has been resolved, the next step is to work on having the spider hone in on the player once they enter its line of sight. From there, I’d like to add in a flashlight for the player, and the ability to crouch. Currently, that will mark the end of the major mechanics I’m looking to add into the game. I anticipate that following that, this Dev Log may shift into a Design Log for a time being as I iron out more details of the MVP (Minimum Viable Product).

 

6/20/2024 - Basic AI

The past few days have involved a mix of design discussions with a friend of mine, and some work on getting the AI for the robotic spider asset I was hoping to use up and running. I won’t have anything to show for the design elements for some time, we’re still landing on a finish line on those discussions, but after a bit of messing around, I was able to successfully import and configure the robotic spider asset’s AI. Currently it will just pace between two points, but we count all stepping stones on the journey to the finish line. For some reason, the spider’s chest is dragging on the floor, so I’d like to try addressing that next. Once it’s behaving completely as expected with this basic pacing behavior, the next goal will be getting the spider to hone in on the player once they have entered the spider’s line of sight.

 

Basic AI Up and Running

 
 

Computer Terminals Unlock Door Terminals

6/17/2024 - Computer Terminals

I can now assign Wall Terminals, which open and close doors, to a Computer Terminal. Any Wall Terminal assigned to a Computer Terminal is considered "Locked" until the player interacts with the correct Computer Terminal. This is all I needed for basic map progression. I can now lock specific areas of the map off until the player reaches the correct computer. All of this logic was done using Unreal Engine’s Blueprint System. The next step is to begin implementation of a basic enemy AI. Two main patterns I want to follow for now involve some basic hallway pacing and some sight-based tracking when the enemy can physically see the player.

 

6/16/2024 - Terminals and Doors

Now that I had a basic environment to work with, I wanted to begin working on the specific mechanics in the game. The first and most prominent was the ability to interact with specific parts of the environment. For this, I started with creating a terminal that can be interacted with, and a door that responds to the terminal changing state. The breakdown for this mechanic was as follows:

  • Setting up the player to be able to interact with something

  • Setting up the terminal as an interactable item

  • Detecting when the player is close enough to interact with the terminal

  • Changing the light material on the terminal to indicate the interaction occurred

  • Setting up the door to have an assigned terminal to listen to

  • Making the terminal shoot off an event when an interaction occurs

  • Setting up the door to respond when it receives that event call

  • Moving the door

  • Making the door movement smooth

 

Wall Terminals Open and Close Doors

 
 

Utilizing Baked Lighting

6/13/2024 - Initial Internal Lighting

Day two I stepped away from this project so I could run through a quick course on UE5 Lighting, Fog, and Post Processing Basics. Following that, I came into day three with a mission to setup a single room with some basic lighting with no weird flickering or general eye-straining effects. Long term, I believe the rooms are still too bright for a horror game, but comparing the before and after differences between learning how the lighting works, I feel satisfied with where I landed.

One thing of note that I’d like to eventually take and apply to previous projects I’ve done - a lot of the weird flickering and artifacts that I was seeing (visible in the before portion of the video) were a result of my environment being labeled as “Movable” objects, and as such, lighting was constantly being calculated in real time. By changing pieces of the environment to be “Static” or “Stationary” and then building the lighting, a lot of these issues were resolved.

 

6/11/2024 - Initial Environmental Lighting

Originally, I expected the landscape setup from the previous step to be the last piece I worked on before moving into basic gameplay mechanics. The issue was that the interior of the station was pitch black, and when there was lighting, because I didn’t know much related to Lumen setup, there tended to be a lot of stuttering or flickering as the engine was trying to recalculate lighting in real time. This step wound up taking three days. The first day, as can be seen here, involved configuring the skylight and messing around with a Rect light to simulate the light coming in from outside the window. I also went ahead and pulled my atmospheric stars from my Kessler project into this one to help push that Martian landscape atmosphere.

 
 
 

Lisan Al Gaib

6/10/2024 - Basic Martian Landscape

Continuing with the last step, I wanted to continue setting up a more thematic playground. I did this by playing around with landscape materials to paint an empty open world level. Using Quixel Bridge environmental assets, I was able to create a nice red desert to place the space station in.

Up until this project, a lot of the work I had spent training had been focused around how to get a game set up mechanically. I didn’t have a ton of experience with properly setting up a game environment in a way that looked and felt good. The closest I came was with my Slash project. Seeing as the best horror experiences tend to come from a good atmosphere, it was important to me that I could deliver on something like that.

 

6/8/2024 - 3D Implementation Initial Pass

The next piece I decided to tackle was setting up an initial playground, so to speak. Essentially, just taking the design from 2D to 3D and seeing how I felt about it. My thought process was to try and set up a basic version of the environment so that I could start to see how it would kind of look and feel. For this project in general, I expect the level and environment design, as well as the general atmosphere as a whole, were going to be what took the longest to work on, so I wanted to go ahead and get started a bit now.

 

2D vs. 3D Map Visualization

 
 

Full Map Layout, Version 1

6/6/2024 - Map Drafting

Something I wanted to iron out so I could get an initial idea of how the general gameplay was going to pan out, was what a general map should look like. For this, I did some light research into the different kinds of departments that might tend to show up in a given space station. I knew I wanted a Central Command for organizing primary communication amongst the station and beyond. Additionally, I knew I’d want an Electrical department, that the player would have to inevitably restart. Finally, I knew I wanted a Filtration department. I had an idea of having different creepy effects and maybe hallucinations occurring in the game, and thought that having a damaged Filtration system onboard could help that make sense. Those alone, however, did not feel like enough to constitute a satisfying player experience in my opinion, nor enough to feel like a real station.

 

6/5/2024 - Project Ideation

As someone who’s always been a big fan of the Sci-Fi genre, it felt like the most fitting starting place. I had recently acquired an asset pack for setting up a modular space station outpost, similar to those seen in films such as Interstellar. I began putting together a small environment while exploring more ideas. Here’s where I landed as far as story:

  • Backstory: The player crashed on Mars after attempting to follow a recent SOS. After coming to amongst the wreckage, they managed to enter the airlock on this station.

  • The station is seemingly abandoned, but has been overrun by a rogue AI. This AI shows itself to the player in the form of cybernetic spiders crawling around the station.

  • The Player starts by making their way to Central Command to activate the main computer system in an attempt to establish communication with HQ. This will prompt them to have to relocate to other areas of the map to restart portions to the station, in order to reestablish the station’s comms system.

 

Early Map Conceptualization

 
 

Platform 8, Source: Steam

6/4/2024 - Project Inspiration

While I was working on a separate project, I had a favorite content creator playing in the background who was running through a recent thriller title, Platform 8. The game features a 1st person character moving from train car to train car. Each car is essentially identical, with a single passenger sitting on their phone the entire time. What varies per car, is some kind of anomaly that the player has to identify and react to. The game itself was fairly short, barely taking the content creator more than a few hours to complete the game, but what stood out to me was just how much atmosphere the developer was able to create with very few assets, and using effects and the player’s own mind to help deliver the reactions and feelings desired.

Previous
Previous

The Wheel

Next
Next

Deepcover