PC, Unreal Engine 4.17
Rots'n'Bots started as a university project developed by three Games Design students at the University of South Wales. The idea was to create a entry level strategy game to introduce casual players to the genre. The project is still in development as of 01/2019.
Turned Based & Real time
Rots'n'Bots is a turned based strategy game mixed with some real time strategy elements to it. Both players play their turns at the same time while the turn system regulates resource gains as well as unit actions.
Rock, Paper, scissors
All attack units follow the rock, paper, scissors model, each unit having an advantage over the other. The 3 types of unit Rots'n'Bots have are: light unit, range unit and heavy unit. Each unit being the counter to the following one.
Easy to play
The whole idea is to have a strategy game stripped down to its essentials while keeping enough depth for replayability. The research system coupled with the unit balancing makes it so that each game is different and has its own strategies.
Rots'n'Bots is currently playable via LAN and Steam. One player will host a game which gives him access to a few match settings (Map to play, length of a turn, max amount of turns ...) while the other will join him via a server browser or via the invite system.
My role during this project was to prototype and implement mechanics to the game. As main programer, I was also in charge of making the mechanics work online. The project was made using Unreal Engine 4.17 and blueprints. We have however encountered several limitation of blueprints which led us to implement certain features using C++.
The followings are some of the most important systems I designed and implemented for the game.
Hexagonal grid system
This is the hexagon grid the player interacts with when he wants to per example move a unit. Every map has one that the level designer can edit. I made it so that the grid is editable through the editor to facilitate map designing. Here's a list of possible customisation:
- Grid size
- Remove tiles
- Change tiles height (affects gameplay)
- Add specific resources on a tile
- Add control point on a tile
- Add units or building to spawn on start
While playing the player has control over a camera which can move in all direction using either WASD or by dragging around with the mouse, rotate by 90° using Q and E, and move closer or further from the grid with the mouse wheel. Players can also control the camera similarly using a controller. To compensate for the loss of accuracy, I implemented a way to move from tiles to tiles allowing players to navigate the grid quickly and efficiently.
Additionally, the camera act as a gate for all interactions between players and the grid, allowing players to click any visible tiles.
Players can learn and train offline against the computer. The AI I designed has 4 different play styles depending on his current state (resources, unit capacity, quantity of attack units ready and who possess the control point):
Defensive: Protect building while more units is being created.
Controlling: Sends Attack units to the control points to conquer it.
Offensive: Roam the map and attack on sight.
Ultra Offensive: Rush to the enemy settlement to destroy it.
In order to improve the hexagonal grid system, I decided to design and create a new map. The particularity of this map is that it is short but wide. That way, players can brawl in close quarters but at the same time have the option to go around for sneak attacks.
In terms of improvement made following the making of the map, they mainly revolve around ease of use. The most notable change was the addition of a Blutility blueprint enabling the customisation of the grid via the editor camera and some UI buttons instead of manually editing tiles individually.
This project was the first time I had to design systems that would work over a network. The game currently uses Unreal Engine's session feature that work following a Server/Client model. I had to make sure both players had access to the same mechanics while still relying on their own situation (each player's resources, researches etc ...). My work also included trying to optimise the game and make sure the lag doesn't interfere to much with gameplay.
The game currently has 2 factions, 9 different units and 8 different buildings. Although both factions have units that follows the Rock, Paper, Scissors model, we wanted units from different factions to have different characteristics. Every units stats from any factions can be modified to modify their: attack damage, defence damage, price in any of the 3 resources, turn required to activate, action points and health. The goal was to be able to balance the units efficiently.
More information including videos and screenshots can be found here.