Tile Fighters
Complete, Programmer (Unreal Engine 4, Blueprints, C++) - 3D Online Multiplayer Unit Management Game with Custom Tilemap Editor
March 2021 to May 2021
Solo Project
A project focusing on creating tools and expanding the use of Unreal Engine for a 3D unit management simultaneous networked multiplayer game. In this, I explored ways developers can mix the use of C++ and Blueprints in a project and how to best spend time when building a game and other tools.
Features:
- Simultaneous networked multiplayer
- Tilemap Editor for creating and editing tilemaps in 3D Tilemap Editing Tool
- Custom C++ and Blueprint data types
Tilemap Editor
Purpose
Making grid-based games in 2D has been done fairly well, but in a 3D game, it's trickier. Tools like Tiled and the built-in Tilemap tools in Unity and Godot excel in 2D, but there aren't as many readily available for 3D games, especially in Unreal Engine. Hence, the need for a 3D tilemap tool.
Process
Creating a 3D tilemap tool required breaking down the basics: selection of tiles, tile position, tile size, and the ability to place tiles. The tool was developed with a Primary Data Asset holding tile models and icons. Tile Assets could be loaded on demand to create buttons for choosing tiles. The position, size, and placement ability were interconnected, allowing users to define tile size and position dynamically.

Blueprints of how tiles are spawned

Tilemap Editor UI
Result
The final UI, wrapped up as a Utility Blueprint, fulfilled the minimum viable product requirements. Although not perfect, there is room for the tool to grow and become a resource for other game developers.

The final Tilemap in action
C++ and Blueprints
Purpose
Blueprints are efficient for rapid development in Unreal, but C++ offers more readable code when done right. C++ can also create new data types in the engine for users to build Blueprints from. Balancing the use of C++ and Blueprints in the same project was crucial.
Process
The 3D tilemap editor was initially built entirely in C++ using Unreal's UI framework, Slate. However, due to the complexity, Unreal's Editor Utility Widget Blueprint was used to visually design the UI. Blueprint scripting handled functionality, while C++ was employed for creating Primary Data Assets with references to tile information.

Example Tile Data Asset UI

All of the code needed for the Tile Data Asset
Gameplay elements utilized both C++ and Blueprints interchangeably. Spawning player-controlled units was tackled in C++, whereas the Player Controller's blueprint scripting handled other gameplay functionalities.

Code for spawning in the units that the player controls

Part of the Player Controller's Blueprints
Result
Flexibility exists in using Blueprints and C++ in Unreal Engine. Data and class variables are best held in C++, while Blueprints excel in prototyping and rapidly changing gameplay. Some custom data types and classes are more suitable in Blueprints, ensuring smoother visual modifications.