To go back to overview of my Technical Design skills:
Technical Design Level Scripting Gameplay Prototyping
Unreal Engine 5, Miro
School, Personal
A prototype for a level mechanic for Control to add extra challenge to encounters against enemy NPCs.
I asked myself "what if the player could use their Launch ability to make cover options appear during an encounter?" (Launch ability = telepathically pick up and launch items)
I love 3rd person cover shooters, and wanted to explore mechanics that the players can directly interact with.
I started by using the IWALS/AGLS project by Jakub W to have basic cover shooter mechanics in place.
Systems I used or adapted for this project:
Scripting in the player character
Scripting custom blueprint actors
Scripting additionnal manager blueprint actors for added functionality
Adding multiple debugging features for easier prototyping
Adapting inputs
Adapting the camera to match Control
Event dispatchers
Interfaces
Line trace from Player BP
Collision box on Memory Block with dedicated collision channel
Hit actor then makes a custom flashing overlay material visible
Toggles visibility when selecting next Memory Block
Player BP tells currently selected Memory Block to execute Player Interact event.
Memory Block moves up and starts timer (10 sec.).
When 4 sec. left on timer, color changes to red as feedback to player.
Unless Memory Block is already moving up, player can interact again with it, which resets timer and feedback colors.
While player is standing on Memory Block, timer will be cleared, feedback will change to white.
When player leaves Memory Block, new timer starts.
A quarter cone (seen in transluscent orange) moves up quickly when Memory Block moves up.
Quarter cone is set to Unwalkable.
Slope of cone pushes player out of way.
Debug input key set in Level Blueprint to toggle ShowDebug variable in all Memory Blocks, Memory Block Manager and Player blueprints.
Debug features implemented:
Memory Block: show timer, current state, if selected, traces visible, what directions it can move horizontally.
Memory Block Manager: show free space marker, show "Selected!" text above selected Memory Block, print to screen integers of Memory Blocks that can move.
Player: Line trace for selecting Memory Block visible.
Experiment with metrics to find what works best for Control. (It's likely on the small side, cover tends to be bigger in Control)
Test out the feature how to teach the feature in a level.
Add easier way to test out different variables like:
How long it stays up before going back down.
How long before red feedback starts appearing.
Speed of asset movement.
The idea is to have the Memory Blocks shift around during an encounter to heighten the challenge by adding an extra element to keep track of.
Memory Blocks are added to an array in a manager blueprint.
This manager gets from the Memory blocks which of them can move and in what direction
It chooses one to move unless it was the one to have previously moved.
Add possibility to have more than one free space
Design and add more logic regarding if a block can move if it's been raised.
Important Note: Flowcharts in sections below are more high level / overview charts to communicate the overall logic. They are not intended as programming charts. Full code examples are included via blueprintUE.
Asset features (image, click to expand)
Asset features (image, click to expand)
Vector values in PossibleLocations array visible in editor for easier editing by level designer.
Free space is indicated by sphere for debugging purposes.
TextRender Label that aligns with camera view to make it easier to click in editor.
A simple yet useful editor tool I created for placing consistent cover and manage overall metrics in a easy user friendly way!
It is completely managed in the construction script.