loader
blog-image

Overview

The Dark Occult is a horror game for PC, available on Steam, developed using Unreal Engine. As the main programmer on this project, my responsibilities focused on developing the player’s movements and interactions, implementing gameplay mechanics, creating AI behaviors, and optimizing the performance.

Our team consisted of six dedicated members: me as the programmer, a game designer, a level designer, an environment artist, a 3D artist, and an animator. Over the course of three years, we combined our skills to create an immersive and terrifying horror experience.

There are many variations of passages of Lorem Ipsum available, but an majority have suffered alteration in some form, by injected humour, they randomised words which don't look even slightly believable.

Throughout the development, I worked extensively with C++, creating and exposing various variables and events that allowed the designers to use Unreal Engine’s Blueprint system to craft a wide range of gameplay scenarios. This approach enabled us to develop flexible gameplay elements that could be easily adjusted and expanded upon as needed.

Although a PS4 release was planned, we were unable to finish it. Nonetheless, the project was an incredible journey that honed my skills in game development and programming, and I am proud of what we achieved.

Here are some of the key contributions I made to the project:

  • Gameplay Mechanics: Designed and implemented player behaviors and core gameplay systems using C++.
  • AI Programming: Developed AI behaviors to various characters.
  • Optimization: Optimized game performance to ensure a smooth experience for players.
  • Blueprint Integration: Exposed C++ variables and events for designers to utilize in Blueprints, allowing for versatile and dynamic gameplay design.

Feel free to explore The Dark Occult on Steam to experience the results our work.

Enemies AI

Dolls

One of my favorite AI behaviors I developed for The Dark Occult was the Doll’s AI. Using Unreal Engine’s Behavior Tree system, I crafted an AI that added a unique layer of horror and challenge to the game.

The dolls are relentless pursuers that use the navigation mesh system to navigate the environment when following the player. This allows them to move dynamically and intelligently, adapting to the layout of the game world. If the dolls find themselves on a higher platform, they can jump down to reach the player, adding an extra layer of unpredictability and threat.

Once the dolls get close, they latch onto the player’s leg and begin to stab, dealing continuous damage. This forces the player to shake their leg to dislodge and remove them, creating a tense moment of vulnerability.

Players can also eliminate the dolls by shedding light on them. When exposed to light, the dolls slow down significantly and, after a few seconds, explode. To enhance this mechanic, I implemented a visual feedback system that indicates how much time is left before the dolls explode, allowing players to strategize their actions carefully. Additionally, I created the visual effects for the flashlight on the dolls, adding a dynamic and reactive element that amplifies the tension during these encounters, as showcased in the video below.

This AI behavior was one of the most enjoyable to develop because it combined several elements—navigation, aggression, vulnerability, and a reactive environment—to create a memorable gameplay experience. It also highlighted the potential of Unreal Engine’s Behavior Tree system to design complex and engaging AI.

Main Enemy

The main enemy in The Dark Occult is designed to be the most terrifying presence, relentlessly following the player wherever they go.

Initially appearing only a few times, it becomes increasingly aggressive and shows up more often when provoked.

Using Unreal Engine’s Behavior Tree system and Environmental Query System (EQS), this enemy intelligently selects the best spawn points in the direction the player is running, ensuring it always feels like a looming threat.

Players can only escape this relentless pursuer by finding and entering a safe zone, which I’ll talk about later.

Giant Man

The Giant Man is an amazing enemy, designed to be both terrifying and imposing. It follows the player when it sees or hears him, utilizing Unreal Engine’s sight and hearing perception components to detect the player’s presence. This creates a constant sense of tension as the player never knows when they might be spotted or heard.

When the Giant Man catches the player, it gruesomely cuts off their head. Since the camera is already attached to the player’s head, it follows the head as it rolls on the ground, providing a chilling perspective on the scene.

One of the significant challenges I faced while developing the Giant Man was synchronizing its animations. Given its massive size, the Giant Man had to interact with the environment differently than other characters. This was particularly tricky when it opened doors while following the player. I had to ensure that the animation was precisely timed so that the Giant Man would lean down and touch the door frame with its hand while entering, maintaining the realism and horror of the encounter.

Blind Monster

The Blind Monster is a unique and terrifying enemy, characterized by its lack of sight. Despite its blindness, it has a keen sense of light and reacts aggressively to it. When approaching the Blind Monster, players must be cautious and turn off their flashlight to avoid detection. If the player inadvertently sheds light on the Blind Monster, it will sense the illumination and aggressively pursue the player, culminating in a gruesome kill.

This enemy adds a layer of strategy and tension, as players must carefully manage their flashlight to avoid becoming prey to this relentless foe.

Gameplay Elements

Player’s Behavior & Locomotion

I programmed the player behaviors, including locomotion and interactions with the game world. The camera was set to a first-person perspective, with the player’s body, legs, and hands visible when turning the camera, maintaining a sense of physical presence within the game environment.

The player can crouch, crawl, and navigate tight spaces and holes. He also use a balance mechanic to walk on narrow surfaces, like a piece of wood, where losing balance can result in falling and dying.

I used Animation Blueprints to play the correct animations based on the player’s actions and states. Additionally, I implemented animation blending and inverse kinematics (IK) to allow for simultaneous animations, such as holding the flashlight while running, giving the realism and fluidity of player movements.

Flashlight & Batteries

In The Dark Occult, the environment is generally dark, and the player relies on a flashlight to navigate and illuminate their surroundings.

The flashlight uses inverse kinematics (IK) to stay accurately attached to the player’s position.

It operates on a battery that depletes over time, players have to constantly search for and collect new batteries to keep it functional.

Additionally, the flashlight can be used to attack enemies like the dolls by shedding light on them, and some enemies are sensitive to light and will attack you if you cast lights on them, adding a strategic elements to its use.

Doors & keys

In The Dark Occult, doors play a significant role, and I dedicated substantial time to developing them.

The player interacts with doors based on their position relative to them, triggering different opening animations depending on whether they are directly in front of the door or off-center. This approach adds variety and realism to door interactions.

Additionally, many doors are locked and require keys to open. Each key features a unique symbol that matches the sign on the corresponding door, adding an extra layer of challenge and exploration.

Safe Zones

Safe zones are special rooms where players can escape from the relentless enemy pursuing them.

These areas also serve as save points, allowing players to save their game progress.

The game features multiple safe zones within the main house, providing both refuge from enemies and checkpoints for continued progress.

Chest & Drawers

I programmed various chest & drawers that players can open and interact with. Within these drawers, players can find collectible items, such as batteries and other elements necessary for game progression.

Locked Boxes

Locked boxes require a numeric code to unlock. These boxes often contain key elements and valuable items essential for progression and survival in the game. I used UMG (Unreal Motion Graphics) to add fields and buttons for entering the code.