SUBOPTIMAL Banner Image

SUBOPTIMAL

OVERVIEW

SUBOPTIMAL Promo Image

Dive into the ocean depths with a submarine and some friends to find a lost treasure!

  • Designer Icon

    Technical / Systems Designer

  • Prototype Icon

    4 Weeks (2025)

  • Person Icon

    8

Unreal Unreal Unreal Unreal
Online Co-op Multiplayer Goofy 3D Steam

My Contributions

  • Player state management and item interactions.
  • Applied problem-solving techniques to optimize performance and networking issues.
  • Multiplayer replication through RPCs, RepNotifies, and other settings.

DEVELOPMENT

Project Timeline

Week 1 | Ideation & Core

Prototyping, submarine iterations, multiplayer setup

Week 2 | Pre-Alpha

Player systems, level iterations, multiplayer mechanics

Week 3 | Feature Freeze

UI/UX design, core gameplay loop refinement

Week 4 | Polishing

Playtesting, SFX, VFX, bug fixing

The 'PEAK' Effect & Our USP

Wanting to create a fun, online multiplayer co-op experience with friends, we focused on the following principles:

  • A challenge that requires teamwork and communication
  • Funny moments that arise from player and environment interactions

We took a lot of inspiration from PEAK, however, our USP is the emphasis on communication within the submarine and the tasks needed to operate/maintain it effectively.

Suboptimal Design Image

Online Multiplayer in Unreal Engine

This was a significant challenge, as it was my first time working with it. I had to research and learn about Unreal's networking model, including concepts like server-client architecture, replication, and Remote Procedure Calls (RPCs).

I used the Advanced Sessions plugin and Steam Online Subsystem to manage multiplayer sessions and player connections for a listen server setup. It also allowed us to have a proximity chat, using VOIP and sound attenuation based on distance.

Our Submarine Solution

Creating a moving vehicle in online multiplayer where each player has the freedom to move around was a challenging task. After multiple iterations, I proposed using Unreal's Character Movement Component (CMC) instead of physics, a fake submarine interior, etc.

We took advantage of its built-in client-side prediction and replication, saving us time being robust for our purpose. Upon interacting with the doors, the player would teleport and adjust collision channels to allow them inside the submarine.

Problem-Solving Methods

With lots of networking issues, we used Unreal Insights and lots of packaged builds with different parameters to discover possible causes. Noticing a direct correlation between the host's performance and the client's experience, the team started to optimize.

Reducing Jitter for the Client Players

Looking into the submarine's networking issues, I found that some of the mesh child actors in the blueprint were updating at different frequencies. After this and some optimization of the graphics by a teammate, the client experience was much smoother!

Initial Playtest (Before Jitter Solution)

Final Day Playtest (After Jitter Solution)

Interactions & Held Items

I added two functions to the interaction interface. One for the custom UI hover text per object, and another for disallowing multiple players to use an item at once.

I used a Server RPC called from the player's local PlayerController class in order to make each interaction called on the server. Then, I could do RepNotifies or Multicasts inside the interactable if needed.

I worked closely with our other technical designer to create a base held item class that we could use for any held item. I specifically handled the replication of their properties, their animation implementations, and the proper socket locations.

These two videos show the hammer and squeegee, our two held items that are direct solutions to two of our environmental hazards. The hammer is used for repairing the submarine after collisions, while the squeegee can clean the glass after a squid inks you!

Other Features I Worked On

  • Engine Toggling
  • Oxygen Cable Attachment
  • Player Oxygen & Health
  • Oxygen Burst Design

More Info Below...

REFLECTION

This project was a fantastic learning experience, allowing me to grow significantly as a designer and developer. I gained valuable experience collaborating with various disciplines, how online multiplayer architecture functions, and methods for debugging and analyzing network/optimization issues. I also improved my skills in Unreal Engine, particularly with Blueprints and some C++ implementation.