top of page

CROSS THE CONTINENT

A Sword Ride till the Horizon.

Project Pitch.

Level & Technical Design Focused Project

Project Pitch.

Experience Goals:
  • Create a fast-paced shooter locomotion system 
  • Design an engaging flow that pushes the player to move forward
  • Finish the level with a Wow moment
Key Responsibilities:
  • Designed and built the level blockout
  • Planned and scripted level enhancers
  • Planned enemy spawning positions
  • Scripted a damage system interface for enemies and the player
  • Designed and scripted enemies' skills, behavior trees, and EQS system
  • Directed and implemented level sequence for a Wow moment

Project Information.

Cross the Continent is a multiplayer first-person shooter level developed by Unreal 5 in three weeks. In this level, the players will start from a cave and explore a nearby shrine to find a soul sword to help cross the ocean. However, the shrine is occupied by mysterious creatures. These creatures are extremely dangerous, and they protect the energy germs that seal the Soul sword.

​

The level's gameplay and locomotion system resembles Apex Legend and Borderlands. All the enemies have scripted skills and are handled by the Unreal 5 Behavior Tree and EQS system. The level contains the following scripted features:

  • Enemy (Base, Melee, Ranged) with skills​

  • Player locomotion system (Sprint, Slide, Vault, Jump)

  • Damage system (Health, ammo, reload)

  • AI Behavior Tree and EQS system

  • Random looting

  • Level enhancer (floating platform controlled by level sequence)

  • Save and load system

Engine: Unreal 5
Play in: Unreal Executable
Work Time: Jan 10, 2024 - Jan 24, 2024
Team Size: Ind
ividual
Play Time: 5 - 10 minutes
Features:

  • Fast-paced shooter gameplay and locomotion system

  • Enemies implemented with Behavior Tree and EQS

  • A sword riding Wow moment

Feature Techniques.

Locomotion

climb.gif

Climbing

The player locomotion system includes walking, sprinting, sliding, climbing, and jumping. All of these are UE 5 Enhanced Input Actions, and their logic is implemented with UE Blueprint.

Managing Method - I defined 4 player movement states and use an enumurator to the state's changes while playing the game. The 4 states are as follows and they are managed by two functions "Resolve Movement State" and "Set Movement State"

  • Walking

  • Sprinting

  • Crouching

  • Sliding

When the player's movement state changes, the execution will trigger "Resolve Movement State" and update to a new state according to the player's input actions.

Sliding - When the player is sprinting, pressing the Crouching key will start sliding. Then, the following steps will be executed to handle the sliding from its beginning to its end:

  1. Begin a "Camera Tilt" by using Timeline to lerp the rotation of the player's camera.

  2. Adding a force calculated by Floor Influence to the player's character to maintain its velocity until the end of a slope. The Floor Influence is calculated by:

    1. Get the unit vector going along with the slope​

    2. Get a parameter specifying if the slope ends

    3. Multiply the unit vector, the parameter, and an extra multiplier scaling the unit vector.

  3. When the player's velocity is too large, scale it to its sprinting speed.

  4. End sliding when timer is end or the slope became flat​

Climbing - Climbing involves a constantly checking if the player is face a climbale objects. This checking is handled by a line trace starting from the player's foot. If the player is face a climbable object, the line trace's hit result will allow the player to climb when the Jump button is pressed.

AI Behaviors

TokensCombat.gif

Combat AI based on tokens

The level includes an AI system developed by UE Behavior Tree involving tree inheritances, tasks, decorators, blackboard, and services. All enemies use the same AI controller handling perception. All behavior tree tasks incorporate the same interface to increase modularity and reduce coupling.

AI Controller - I implemented an AI controller for all enemies in this project. This controller handling the following things:​

  • Initialization

  • Perception

    • Sight

    • Sound

    • Damage

  • Forget the player

  • Seeking an attacker

  • Inform allies of threats

Behavior Tree - I designed and implemented behavior trees from the melee enemies and the ranged enemies in this level. This behavior tree involves usages of:

  • Subtrees

  • Services

  • Tasks

  • EQSs

  • Decorators

Damage and Save & Load System

damage system.gif

Damage System - The damage system is similar to Doom's combat system. An AI has to own a token to start to perform an attack. Otherwise, it will be more defensive and strafe near its target. The damage system collaborates with the enemy base class via an interface.

Token-based Combat System - Aside from functions that handle taking damages and healing, the damage system uses tokeN to give an AI permission to perform an attack. An AI will perform strafing and wait for a new assigned token. After performing an attack, the token will be returned for requests from other enemies in combat.

respawn.gif

Players will respawn after death

Save & Load System - The level includes a best practice of Save & Load System, which allows the player to resume the progression after quitting the game, restart the level, and save progression by checkpoints. The Save involves both an async save and a normal async, although they make little difference under this project's scope.

Save System - The Save & Load System was constructed by:

  • Game Instance (Save & Load execution logic)

  • Save Game class (an object containing all Informative Structures)

  • Two structures storing Save & Load infomation (Including all enemies' information that should be saved locally)

  • Checkpoint actor

  • Save Game Interface

The game will be saved when the player touches a checkpoint volume or finishes a combat area. The game will load the last save file when it starts and when the player dies. The player can also actively load or restart the level.

Load System - The load system in this level is coupled with the player character. After the player's pawn is initialized, the last saved player's attributes override the current ones. This process includes spawning and attaching the corresponding weapon with ammunition status.

Level Desgin Goal.

Level Design Goal.

Release

Exhilaration of Escaping from Confining Environments

Fast-paced

Get in, Kill, Loot, and Leave

Wow moment

A Fantatic Ending of Riding on a Magical Sword

Design Process.

Desig Process.
Design Goal 1.

#1 Release.

Exhilaration of Escaping from Confining Environments.

cave1.gif

Use a confining tunnel to further increase tensions after a combat

Raise tensions with confinement - After the player finishes tough combat at the end of the cave area, I raise their tension a little bit further by having them go through a dark tunnel. The player tensions will grow gradually in this dark, confining, and moist tunnel because of uncertainty.

cave2.gif

Releasing players' tension and pressure by opening horizons

Turn Tension into Exhilaration - When they reach the end of the tunnel, a suddenly open horizon will rush into their eyes. Such a sudden and huge transition from confinement to openness, from dark to bright, and from moist to refreshing will dramatically transform all the tensions and tiredness cumulated before into relaxation and exhilaration. 

Design Goal 2.

#2 Fast-paced.

Get in, Kill, Loot, and Leave

Push Forward 1.png

Presenting Multiple Routes - This level was planned to be compatible with a team of 3 - 4 players. Therefore, several invading routes were planned. All players can quickly and smoothly get into combats, clear the enemies blocking their way, open all loot, and leave for the next place. In addition, to get the player engaged in different routes, I strategically placed loot crates as "Breadcrumb" along with each route.

Framing.png

Framing eye-catching loot items and foreshadowing enemies by patroling

Push Players Forward - To keep pushing the player forward, I implemented a couple of level design techniques to help them engage in the level flow:

  • Framing

  • Foreshadowing

  • Breadcrumbs

  • Pinching

  • Light contrasting

Design Goal 3.

#3 Wowments

A Fantastic Ending of Riding on a Magical Sword.

sword ride.gif

Surprising and flashy - To surprise the player as a reward at the end, I created a level sequence in which the sword unlocked by the player suddenly scaled up and became a vehicle that took the player across the ocean.

Postmortem.

Postmortem.

What Went Well?

  • Technical Success

    • Even though my time was limited, I completed all of a fast-paced shooter's gameplay and AI behavior trees.

  • Flow and Sightline Success​

    • The sudden transition from claustrophobic to openness worked well in releasing the player's tensions and tiredness.

    • The hill after the cave created a good place for specifying the next goals and observing enemies.

  • The ending is cool​

    • Industry fellows' feedback said the flashy and surprising ending is so cool and exciting.​

What Went
Wrong?

  • Assets choices

    • The color themes of most of the assets are similar. It resulted in the situation that some important level elements blend with the nearby environment.​

  • It is not bug-free

    • The climbing action​ involves a severe bug that the player can't end climbing

  • Player's height​

    • While designing, I didn't take the player's height into account. It resulted in the ramp at the end of the cave blocking the player's sightline before they got close to the cliff.

What I
Learned?

  • Feel clearer about my style of workflow

    • A simple sketch would be good enough for quickly blocking out a whole level​

  • AI and Behavior Trees​

    • I didn't touch these two things in UE before and this is the first time and the best practice of polishing my UE technical skills​

  • How to design a level for a team adventure game​

    • This is a project for a 3 - 4 players team. Initially, it created a lot of uncertainty in measuring scales and matrices. Hopefully, by calculating the player's speed and referring to similar games, I managed to make a good scope of level scale and matrix.

Gallery.

Gallery.

bottom of page