Corporate Cut (Unreal Engine 5)

Home » Blog » Corporate Cut (Unreal Engine 5)

Corporate Cut was a collaborative project by a group of seven individuals as part of the “Game World Design” course at the IT University Copenhagen. We implemented this project inside Unreal Engine 5. In this game, players explore an office setting where individuals get discriminated based on their hairstyle. The catch is that everyone has the same haircut, except for the player character. However, a discovery of a wig with the haircut grants the player the ability to seamlessly switch between two social positions within the office: that of an outsider, with its own unique advantages and disadvantages, and that of an insider.

The player takes over the role of Ezra, an intern on her first day at a movie critic magazine company named “Corporate Cut.” Throughout the game, the player explores the company’s evolution. By interacting with items or characters that describe the various stages of the company’s lifecycle. The ultimate aim is to provide players with a sense of agency and the opportunity to leave their creative mark on this organization. By offering this dynamic gameplay experience, Corporate Cut skillfully examines the balance between the roles of insider and outsider from a lighthearted perspective.

My Role

For Corporate Cut, I took over the role of the tech lead. This made me responsible for guiding the team members who had limited experience with Unreal Engine 5. To achieve this, I organized an initial workshop to introduce everyone to the fundamentals of Unreal Engine. Subsequently, I dedicated considerable time to working individually with team members. In those meetings, we focused on specific aspects of the engine that were relevant to their roles.

For instance, I collaborated closely with the level designer. With him, I discussed important things to keep in mind while doing the level design, such as element grouping and the object setup for lighting. I also had to closely collaborate with our art creator to establish an efficient workflow for exporting, modifying, and reimporting assets within Unreal Engine. This was needed since we also utilized assets of a preexisting asset pack by Synty Studios.

Our animator, who had no prior experience, required also support for the creation of animations. With him, I discussed the process of importing and retargeting animations in Unreal, as well as provided guidelines for creating new animations and adjusting them within the engine.

Apart from my teaching responsibilities, I also fulfilled the role of a traditional tech lead. This involved collaborating with designers to assess if their visions could be implemented in the given time frame. It was crucial for me to be aware of the programming team’s capabilities and factor in the remaining project timeline when making those decisions. Additionally, I prioritized and divided technical tasks between myself and the additional programmer. Because of that, I also had to devote time to ensure the seamless integration of our code to ensure the correct functioning of our game.

Implementation tasks

Considering the other programmer’s limited experience with Unreal Engine and his limited time budget for the project, it was important for me to avoid assigning tasks that would exceed the time he was able to commit to the project. Consequently, I took on interesting tasks to ensure the workload was appropriately distributed.

Wig Shader

One of the assigned tasks involved implementing a shader to replicate the appearance of the wig on the screen when the character wears it. To accomplish this, I utilized Unreal Engine’s material editor to create a customizable material. This allowed us to test and iterate over it smoothly. The designer’s were able to contribute a texture that serves as the foundation for the shader. Additionally, a curve can be applied to define the overall flow of the hairline. To add finer hair details, a texture for additional noise could be provided and be scaled appropriately.

An important consideration was ensuring that the wig consistently covered the top portion of the walls. Typically, as a post-processing effect, the wig shader would move along with the camera, resulting in it only covering the top half of the screen. This would allow players to see the upper parts of the walls even when the wig was equipped. To address this, I implemented a system that dynamically adjusts the shader’s position on the screen based on the player’s current pitch, pushing it up or down respectively.

Different iterations of the Wig-Shader

Dialogue System

Throughout the development of Corporate Cut, I also had the task of implementing a dialogue system for the game. After thorough discussions with the designer regarding the system’s limitations and behavior, we concluded that using JSON files would be the most suitable approach for setting up the dialogue.

Random NPCs

The dialogue system distinguishes between two types of characters. Firstly, there were random characters who select a dialogue from a shared pool of dialogues. Each dialogue consisted of multiple lines, a tag to indicate the speaker (e.g., Player or NPC). Additionally, each line could point to the next line in the dialogue or -1 to signify the dialogue’s ending. When a dialogue for a random character was selected, it would be removed from the pool. This ensures that all possible dialogues for these characters can be encountered without repetition.

Quest NPCs

The other type of dialogue belonged to quest characters. The dialogues for these characters were linked to the current quest segment. Based on this, the appropriate conversation for the current state would be selected from the provided JSON file specific to that character. If a dialogue reached its end without progressing the quest segment, there were two possible behaviors. In some cases, the dialogue for that segment would simply repeat. For example the receptionist consistently provides clues for the current segment. Alternatively, a dialogue for the segment 0 could be provided, which would be used after a segment’s dialogue had been played and the character reverted to a default state.

Instead of traditional voice-over, we opted to use voice reactions for the dialogues. Each line of dialogue had a corresponding field indicating the emotion of this line. This field was used to filter the character’s audio files and select the appropriate one with the matching emotion. Lastly, each character had two JSON files. These distinguish between situations where the player is not wearing a wig or when they are wearing it.

Example Dialogue in Corporate Cut

Mirror

The last thing I want to discuss in more detail is the setup of mirrors within the game. One early decision was that the player should only be able to equip/remove the wig when interacting with a mirror. This visualizes the transformation and provides a clear indication to the player that the shader on the screen represents hair.

Initially, we attempted to achieve this by placing a camera at the mirror’s location and rendering its view onto a plane. However, we quickly discovered that the depth in the texture becomes distorted when the player comes too close. This failed, to replicate realistic mirror behavior.

Initial version of Mirrors in Corporate Cut

To overcome this challenge, I researched how other games implemented mirrors. During this research, I discovered an alternative approach applied in games like Hitman or Mario 64. The solution involved duplicating the environment in front of the mirror and replicating it behind the mirror as well. Consequently, I created a duplicate of the player character with inverted rotation and animations to properly reflect mirror behavior. For this project, we decided that the player character would be the only character capable of being in front of mirrors, reducing the workload to some extent.
In collaboration with our Level Designer, I discussed the behavior of the mirror, ensuring that he was aware that the spaces behind the mirrors had to be free.

Mirror in Corporate Cut

Other Tasks

Apart from the previously discussed systems, there were some additional tasks that I handled during the project. One such task involved preparing the meshes of the asset pack to ensure that light maps could be baked in Unreal Engine without encountering any issues. This was necessary because Lumen posed performance challenges and was not suitable for the examiners’ test setup.

Furthermore, I implemented the quest system. For that I set up a small widget that is accessible by pressing the “ESC” key and displays the current state of the quest. Additionally, I established a system that triggers doors or items when specific events or actions advanced the quests. This approach enabled us to gradually open up the game world to the player as they progressed through the story. It prevented overwhelming them with numerous choices by having all rooms accessible from the beginning.

Conclusion

This project provided me with valuable insights into the role of a tech lead within a smaller team. As a tech lead, the focus of the work extends beyond programming and involves substantial interaction with other departments. When working with a team that is relatively new to the engine we used, a techlead dedicates a significant amount of time to assist each team member in acquiring the necessary knowledge to fulfill their respective tasks. Although the experience was quite demanding, it also presented an opportunity for me to learn new aspects of Unreal Engine. The questions raised by my teammates, which I hadn’t considered by myself, contributed to my learning process.

Corporate Cut Playthrough

4 responses to “Corporate Cut (Unreal Engine 5)”

  1. Development Service Avatar

    Great goods from you, man. I’ve understand your stuff previous to
    and you’re just extremely excellent. I actually like what
    you’ve acquired here, certainly like what you’re stating and
    the way in which you say it. You make it entertaining and you
    still care for to keep it smart. I can not wait to read far more from you.
    This is actually a tremendous website.

  2. enamtechsolutions.com Avatar

    I’m really impressed with your writing skills and also
    with the layout on your blog. Is this a paid theme or did you
    customize it yourself? Anyway keep up the excellent quality
    writing, it is rare to see a nice blog like this one these days.

  3. aspor.ua Avatar

    First of all I want to say great blog! I had a quick
    question in which I’d like to ask if you don’t mind. I was curious to find out
    how you center yourself and clear your head before writing.
    I’ve had a difficult time clearing my thoughts in getting my thoughts out.
    I truly do take pleasure in writing but it just seems like the first 10 to 15
    minutes are generally lost just trying to figure out how to
    begin. Any ideas or tips? Thanks!

  4. unreal engine game development Avatar

    Thanks for your marvelous posting! I genuinely enjoyed reading it,
    you could be a great author.I will always bookmark your blog
    and definitely will come back later on. I want to
    encourage you to continue your great posts, have a nice morning!

Share your love
BlueFruitGames
BlueFruitGames
Articles: 6

4 Comments

  1. Great goods from you, man. I’ve understand your stuff previous to
    and you’re just extremely excellent. I actually like what
    you’ve acquired here, certainly like what you’re stating and
    the way in which you say it. You make it entertaining and you
    still care for to keep it smart. I can not wait to read far more from you.
    This is actually a tremendous website.

  2. I’m really impressed with your writing skills and also
    with the layout on your blog. Is this a paid theme or did you
    customize it yourself? Anyway keep up the excellent quality
    writing, it is rare to see a nice blog like this one these days.

  3. First of all I want to say great blog! I had a quick
    question in which I’d like to ask if you don’t mind. I was curious to find out
    how you center yourself and clear your head before writing.
    I’ve had a difficult time clearing my thoughts in getting my thoughts out.
    I truly do take pleasure in writing but it just seems like the first 10 to 15
    minutes are generally lost just trying to figure out how to
    begin. Any ideas or tips? Thanks!

  4. Thanks for your marvelous posting! I genuinely enjoyed reading it,
    you could be a great author.I will always bookmark your blog
    and definitely will come back later on. I want to
    encourage you to continue your great posts, have a nice morning!

Comments are closed.