Breakdown
Goals
-
Level design
- Level flow
- Refined Blockout
-
Scripting
- Player
- Gameplay Events
- AI
Individual project spanning 10 weeks at 50%.
-
To create a fun and engaging firtsperson action platformer experience
-
Create a level flow that leads the player with distinct form and colors
-
Scripting a complete character ability set
Tools and Assests
-
Plugins: Blockout Tools
-
Animations gathered from Unreal Marketplace
Summary
A firstperson action platformer with a focus on fast paced gameplay.
Run, jump and grapple your way through this arcady factory level to reach the goal.
Scripting
Player Mechanics
The player abilites are the core part of the project. It was crucial to make them function well and to seamlessly work together to make the gameplay feel smooth and engaging.
Wall run
The player can run along walls, run off them and launch themselves away from them. The wall run works on both flat and curved surfaces.
Reflect
The main defense ability that lets the player reflect incoming projectiles. Once mastered the ability can also be used offensively.
Grapple
The player can grapple hook to points across the level.
The grapple hook it made it possible to work with more verticality throughout the level.
Dash
The dash is a combination of three features:
1. Air dash that moves the
player forward in direction they are facing.
2. A timeslow state that slows down enemies and projectiles. This state activates while holding the dash key in the air.
3. Ground dash that moves the player in their movement direction.
Use the air dash and timeslow to gain advantages while engaging enemies and fighting enemies, or change your direction mid air.
The ground dash is a perfect tool to close the gap to enemies and dodge their attacks.
Behavior tree
My AI for this project is a simple one. However I still wanted to use a behavior tree, so I could make iterations if needed while also adding features without reworking any major blueprints.
During play testing it became clear that I needed to implement something that telegraphs to the player that the AI was going to shoot. To make it readable I created a UI charge bar for the AI's fire rate, when the bar fills up to the max a shot would be fired.
The Behavior tree is centered around two main states: shooting and Idle. When the AI senses the player the aim sequence that will also engage the UI charge bar that is attached to the AI activates.
Interactive Top Down
Level Flowchart
Start
Pipeline
Cranes
Factory
Electrical
Construction site
Loading Area
Lobby
Elevator
Tension graph
Workflow
-
Made a list of features I wanted to have in the game
-
Sorted the features into three categories Player, World, Enemy
-
Priority list: player features > enemies > World
-
Creating abilities: Dash > Wall run > Grapple > Slash
-
Creating enemies: Behavior tree > Shooting > Aim at player
-
Player gym to tune features
-
Extra features added reflect > Slide > vaulting
-
Level blockout started: working according to grid on playable areas: setdress and specific assets were exempt from the grid
-
Playtesting and adding gameplay feedback
-
Completed blockout refinement
-
World Mechanics added grapple cranes > doors and buttons to activate them
-
Player mechanic tuning and playtesting
Design Techniques
Affordance
I took inspiration from Mirror's Edge when it came to create a player path. it had to be clear what the player can interact with within the environment. Player agency is important so I made sure the player could still decide how they want to engage with the player path.
Onboarding
I designed the first section to introduce the player mechanics.
Once the player has learned the mechanics they later on use them in combination to master them and gain a sense of accomplishment.
Establishing shot
The establishing shot in the beginning of the level introduces a long and a mid-term goal. throughout the level the long term goal is visable to help the player orient themselves and reinforce a mental map especially after longer indoor sections.
Reflections
I'm proud of this project and happy with how it turned out. I was able to gain a lot of experience both from observing how my peers worked and trying out new methods myself, one new method was to develop the level with a gridbase. At first I thought it might end up being too restrictive but my first week working within the grid my opinion had totally changed. This method helped me make rapid iteration on my level, and to keep the level design in line with player metrics.
Playtesting was crucial throughout the development. Information gathered from the playtests let me make informed and needed changes to player metrics and the blockout.
To make it more fun to playtest I created a speedrun-timer to let my testers compete with each other.
I also added leaderboard where the testers could enter their name and best time to create a friendly competition.
With more time I would add more environmental gameplay for example a section with moving containers to run across, jump and grapple to. I would also add more AI functionalites to have the AI sometimes deploy shields or alert one another.
If I were to make a similar project in the future I would have made a more structured base for the player abilites and use an overarching statemachine to have more control and flexibility.
Thank you for reading
I am part of The Game Assembly’s internship program. As per the agreement between the Games Industry and The Game Assembly, neither student nor company may be in contact with one another regarding internships before April 23rd.
Any internship offers can be made on May 6th, at the earliest.