Turn-Based Multiplayer Starter Kit
Estimated Release: Spring 2021
Unreal Engine 4.26
Quick match between two players on different computers and networks.
Showcases the Grid, Characters, Actions and Round Handling.
The Kit enables game developers to quickly get started on a Turn-Based game that uses a Grid that players can move and attack on in different types of ways.
The Template is setup for Multiplayer with simple matchmaking and seamless travelling to levels and Gameplay Replication where everything that happens on the Grid Replicates as you would expect.
It also has a simple Blueprint Based 1v1 Battle Game Mode with Turn-Based Round Handling, where each players receives a set amount of time to do their actions before switching to the opposing player. It is by no means balanced or fun, nor is it meant to be as it just a basic template set up for the user to easily define their own rules and add things on top of it.
About 75% of the template is made in C++, focusing on the core regarding the Grid, Character Actions and other Back-End Related things.
Everything made in Blueprint are the things that users might want to customize and change to their needs, such as the Back-End Networking with Creating and Joining Sessions, Seamless Travelling and it's Checks, Game Mode and Round Handling, Character Attacks and Kill Cutscenes.
Almost all of the Blueprints derive off of C++ based classes so adding variables or implementable events to improve communication is easy and quick.
The Grid is Customizable where the user can set how many tiles there should be and height levels. It automatically Traces for Surfaces and Obstacles and registers the data in a structTile TMap.
Every change that occurs on the Grid gets Replicated so it is set on both the Server and the Clients TMap, such as if an obstacle gets destroyed, a character dies or moves to another tile.
Characters can move on the Grid using A*Pathfinding that calculates the Cheapest Path from one tile to another. It has diagonal support and whenever a player wants to move or attack, an outline is drawn on the Grid indicating their Move or Attack Range.
Teleporter from one Tile to another in the form of an Elevator
The Grid Supports Replication where changes that occur to the Grid will need to be called on both Server and Client so both of their structTiles TMap that make up the Grid gets updates.
The Grid can comfortable be Debugged by pressing Show Tile Info which will show some info of each tile such as what character is on it, is it a normal tile or is there an obstacle on it etc.
Customizable Grid Size
The Grid Supports Verticality with Five Different Height Levels where players on higher levels can do more damage to ones below.
It also supports Teleportation between Tiles and Heights, this can be in the form of Elevators, Ladders, Ziplines etc. which all inherit from a Teleporter class. When player arrives to an Teleporter, the C++ side calls the Teleporter to take over, which is handled by a Blueprint deriving off of the Teleporter class. When it has finished moving the character to its destination it gives a callback so the C++ side continues to move the character.
This means users can quickly make several different types of teleporters for whatever situation they want.
Client-Side View of how the Grid Replicates using Debug Tools
Characters & Abilities
The Characters are built to be modular, where they inherit from a Parent and where you can then set their Attack and Move Range, make children and set whether they are Melee or Ranged Based, if Ranged do they spawn a Projectile etc. You can also set what their Basic Attack and Getting Hit Animations should be.
By using a Character Spawner Blueprint the user can easily place and set what characters that should be spawned where and what their values should be. They will be automatically registered on the tile that they were spawned upon.
The Characters Abilities are currently just a simple Basic Attack toward a Single Target and a Secondary Grenade Launcher Area Attack. You can set what cooldown each ability should have, i.e. how many rounds after using it it takes before you can use it again.
Killing another character triggers a Kill Shot Cutscene that focuses on the character that is getting hit. Before the cutscene starts it traces around the character to check if the camera is blocked in any way, then chooses an angle that isn't blocked if there is any.
Showcase of Simple Matchmaking and Seamless Travelling to the game level between two computers on different Networks.
The Back-End Networking is built primarily with Blueprint with C++ derived classes so we could utilize functions such as PreClientTravel and PostSeamlessTravel to determine when the players has finished travelling to the new level.
When they have we start running checks such as if Pawns are valid, have their references, if Grid has finished replicating to all clients etc. When everything is done the game start.
Players Finished Travelling and the Checks that is performed before setting Game State to At Game Level
The Round Handling is also being handled through Blueprint using a Battle Game Mode which derives of a parent Game Mode that handles Network related things such as OnPostLogin, OnSwapPlayerControllers etc. Whereas the Battle Game Mode handles Rounds for 1v1 Battles along with the GameState that it uses to execute what is going to happen next to clients.
Additional Game Modes can be created that derives off of the parent that only holds logic for how their own specific Game Mode should behave, keeping logic between Game Modes separated and structured.
A big pro of keeping much of the Back-End in Blueprint is that it allows users to customize and change the Game Mode, Server Travelling and Sessions to their specific need without having to know C++, although it is recommended.
Battle Game Mode