top of page

Acies Animi

Project Info

Systems Programmer
Gameplay Programmer
8 (2 Programmers)
Unreal Engine
Strategy
4 Weeks
Coming Soon

Game Summary

Acies Animi unfolds as a strategic showdown of skill on a hexagonal grid, where players embody the Devils or the Angels, engaging in a high-stakes duel. The objective: wrest control of a person's mind by seizing critical regions of their brain. Amid this conflict, a neutral yet formidable faction represented by the brain's libido and ego challenges both sides. The victor is the player who swiftly seizes dominance over the mind, triumphing over the opposing faction.

​

Contribution Summary

  • Hexagonal Grid along with the tiles and that go along with it.

  • Tile highlight for pathing on the grid.

  • A sizable static utility class for the grid.

  • A foundational framework for the actions of the units utilizing a three step process.

  • Unit spawning system.

  • Tile claiming and victory points.

Hexagonal Grid

I initiated the project by designing a customizable hexagonal grid system tailored for easy adjustments within the editor. The focus was on providing designers the flexibility to experiment without altering the underlying code.

The decision was made to have the grid always be horizontally and vertically symmetrical from the midpoint. Because of this I engineered it to uniformly extend its width and height from the centre in both directions.

6x4 layout set in editor.
3x3 layout
3x3 layout set in editor.
3x3 layout set in editor.
6x4 layout
6x4 layout set in editor.

The grid is created based on the settings in the editor by mapping coordinates to tile types, then systematically placed tiles based on this map. Finally I ensure all tiles were appropriately connected to all of their neighbours.

Hexagonal Tiles

I made the tiles to be actor components to the grid. There are four distinct types that are all created and set up during grid creation. I made the tools for placing these available in the editor.

 

They're configured by setting a Blueprint and employing hexagonal coordinates for positioning within the grid.

Blueprint references and basic coordinate setup
Blueprint references and basic coordinate setup 

Grid Utility Class

I created a static utility class for the grid. In it I gathered quite a large amount of functions that we used all over the project. Some of them I made pre-emptively, with documentation, so that they were ready to use whenever they were needed and some of them were created on demand.

​

The utility class also houses an implementation of A* pathfinding, providing convenient accessibility. This functionality serves dual purposes: enabling highlighting and facilitating movement within the game.

Neutral units attacking the Devil players units.
A path is highlighted on the grid indicating the path for the unit.

Unit Actions

I created a foundational framework for unit actions to call the specified task over a defined duration, without the need for continuous tick usage. This is similar to the system I created for the Dash in a previous project, EcliPsychosis. This base class, controlling the unit actions, comprises three key functions: StartAction, ExecuteAction, and EndAction, sequenced in that order.

​

The public StartAction function initializes the action by configuring essential variables and triggers the private ExecuteAction function. ExecuteAction, responsible for actually executing the action, employs recursion to repeatedly execute until the specific task is completed, scheduling itself for the subsequent frame. Upon completion of the action, the public EndAction function undertakes necessary clean up within the class before broadcasting a delegate signalling the completion of the action. Derived classes are expected to implement these functions and utilize the base class functions for proper functionality.

A path is highlighted on the grid indicating the path for the unit.
Neutral units attacking the Devil players units. 

The majority of the action classes were developed by another programmer. I am only responsible only for designing and programming the base action and the basic attack action.

Additional Work

In addition to the main features I developed I also made a few smaller things.

​

  • A general unit spawn system.

  • Specialized spawn system for AI and Players derived from the general spawn system.

  • Tile claiming and Victory point system.

  • Game initialization.

  • Highlight system for tiles.

  • Separate debug class as to only include debug logic in editor builds.

Ego sprite

© 2024 by Johan Brandt

bottom of page