Antics is a single-player RTS about ants.
In it, you control a small but growing colony of ants, and by gathering nearby resources you build your strength to be able to defeat a rival ant colony.
The project was a 7-week project at FutureGames, in the Game Project 3 course.
Unit Selection & Control
With an interface for Selectable Units, the player uses a Unit Selector Component to select and give orders to units and buildings, generating overlaps to find selectables, and filter through all valid selectables using a priority system that prevents soldier ants, worker ants and buildings to all be selected together.
Key Contributions
Purchasing System
A Building Menu Component can be added to any structure where resources are spent, whether for purchasing units, buildings or upgrades. A shared PriceDataAsset describes the cost and outcome of the purchase.
Unit Navigation
For movement we used Unreal's built-in navigation, as we did not want to spend our limited time on building our own version. Mostly, this worked just fine, but we did have some issues with units getting stuck in out-of-bounds parts of the level. A quick fix to this issue was an UnstuckComponent. It would, at regular intervals, check if a unit was out of bounds, and if so find the closest navigable space and place the unit there. The component solved the issue without causing any substantial performance losses.
Tutorial System
The QuestManager class controls the game's tutorial. It stores a simple list of quests, stored in the form of QuestBaseAssets, which has multiple child variants used for different quest implementation styles. Designers could easily add new quests by instantiating new QuestAssets, and adding them to the list of quests.
System-heavy RTS
The project was quite demanding; as the RTS style of game is very system-heavy. The game needs camera controls, unit controls, building placement, resource gathering and storage, combat systems, AI, tutorials, etc.
When we started the project and decided to make an RTS game, we were luckily aware of these requirements. We knew that in the first few weeks of development, there wouldn't be much of a game to speak of, compared to some of the other student teams making more easily prototyped games like platformers.
This awareness was key to lasting through the development, because it was only about halfway through the project that we had a fully playable game loop! With less foresight, we might have run the risk of changing lanes earlier out of fear for failure.