top of page

Key Responsibilities:

Skyward Tactics

Online session management. Replication.

Action system with Undo functionality

Duration: 10 weeks

Team: 5 programmers

Engine: 

UnrealEngine-AngelScript Logo

Links

GitHub Logo
Itch.io Logo

Skyward Tactics is a prototype for an online co-op tactical rogue-lite, which was my Graduation Project at FutureGames Stockholm.

It is developed using UnrealEngine-AngelScript, a modified version of UnrealEngine 5 developed by Hazelight.

The game's player action system is implemented using a command pattern which allows the player to undo any action they've taken during their turn. It uses a server-authoritative action system which affects game state, and a client-side visualization system using a strategy pattern to create visual effects to display actions taken.

Online Multiplayer

I implemented the use of Epic Online Services (EOS) to allow users to log in to the game with their Epic accounts, and to host and join sessions online. I also helped the team set up their Epic Developer Authentication tool and made sure the game supported it to make their work easier.

FinalBuildFreshGame.png

​Summary of major contributions

 

Character Select
Undo Turn Animation
Ability System Sequence Diagram

The most significant system I implemented was the Action and Ability system. An Action is an object which describes a change to the game state. An Ability is simply a list of Actions. For example, the RocketBoots Ability has a MovementAction and an AreaDamageAction.

All Actions are undoable, using a Command Pattern. They are managed by the server, to which the player can send input through RPC's.

The player activates an item's ability using their UI or a hotkey, as well as selecting a valid target tile.

Once the server receives an RPC with which ability to use and which target to select, it verifies that the player is using the Ability correctly. It then generates instances of the Ability's Actions, and executes them in order.

Any side effects to an Action is also described and handled as an Action, for example the DeathAction.

The game's state is updated by Actions and replicated to clients, as well as the Actions themselves, which are visualized with effects by the ActionVisualizationSystem, see below.

An addition to the Action system above is the ActionVisualizationSystem, which is implemented using a Strategy Pattern.

 

The system is entirely client-based, and creates ActionVisualization objects with visual effects, to interpret server-replicated Actions.

Each frame the VisualizationSystem ticks the ActionVisualization at the front of it's queue, and when the visualization is done, it is dequeued. 

If the Action which caused the Visualization is undone, the Visualization is added to a separate queue in the VisualizationSystem, and ticked in reverse to undo the visual effect.

Action Visualization Sequence Diagram
FinalBuildFreshGame2.png
FinalBuildFrontPageViable.png
bottom of page