Nov 17th, 2025

Major C++ Refactor

The last couple months have been devoted to a full refactor of the existing gamecode in Unreal Engine, migrating from full blueprints to C++. I found myself spending alot of time going back and debugging old basic features like UI and camera movement. I figured that the codebase is large enough that I need to add some automated regression testing. I could still do this all in Blueprints but I was also dealing with an annoying issue where packaged builds of the game would error everytime I made a change to my Blueprint Structures. It turns out that this is just a known thing about Unreal Engine, and the lesson learned is create all your base classes and structures in C++ to avoid this problem. (Which sucks) Knowing that I had alot more features that would require more structs, I switched the project to C++. Eventually I just realized doing more in C++ is just going to be easier for writing Unit tests, debugging with breakpoints, Source Control and also it would be nice to have access to Copilot. The one main downside of the switch though has been the IDEs and dev process in C++ (VS IDE or Jetbrains) are quite laggy, crashy and buggy compared to what I’m used to. (Unity and C#). The months in between the refactor and the last post in May have mostly been attempts at more story and character writing.

Cannon Tiles

It’s still in its preliminary stages but I’ve added interactable tiles like a cannon which lets a unit fire an AOE explosion. The hope for this feature is to add it into a larger Ship versus Ship map design. I still have to make the main system itself like Ship health, Movement, Sinking animations.

Attack-Move and End-Turn Shortcuts

I decided to implement a feature from FE NDS games that allowed players to perform an “Attack-Move” where you can select a unit, and as long you move it the selector on top of an enemy, you can skip the action menu entirely and perform an attack. I took it a step further by cutting out the need to move to the adjacent tile before the battle board appears.

Playing the Final Fantasy Tactics Remake really convinced me that this convenience was necessary, as performing a single attack in that game is very cumbersome, both with the number of steps required as well as the controls themselves.

I also added a “Hold To End Turn” Button for additional convenience after playing Metal Slug Tactics. (Although its common in alot of games now). In hindsight, moving a unit to attack and ending turns early are up there as the most common actions a player is trying to perform so they should be made to be quick.

Hotkey Remapping

An obvious inclusion for convenience was adding key remapping which luckily was fairly easy to implement in Unreal with gamepad.

Oct 30, 2024

The last few months have been finalizing the way animations look, programming in base battle mechanics and Enemy AI.

Animations

Years ago the first idle and run animations were done before character writing and visual design were done, so costume and colors were somewhat arbitrarily chosen. After focusing on writing and the game engine switch, it was time to go back and redo the animations with the new costumes and character designs. Since 2021, there have been many fighting game releases by ArcSystemWorks which really elevated how 2.5D games look, giving me alot of great reference and inspiration. In particular, how to get the sweetspot of how many frames to include in each type of animation to create a smoother look.

New | Old

New | Old

Battle Mechanics and Enemy AI

Up until recently, the weapon types that would be in the game were in flux, as I have to figure out what kind of animations I was going to commit to doing. Having characters fight together via the flank/guard system is a major component of the game, and I designed how different weapons would work with that mechanic first. Individually, I wanted to implement something similar to the weapon triangle system in Fire Emblem games, as it’s a nice simple initial layer of how to instructu new players on what to do with their units. Instead of having a RockPaperScissors system between just the melee weapons (sword/axe/lance), I made it so weapons are “countered” by one of the other 5 weapon types. For now the counter effect is 100% hit chance but that will probably change.

Enemy unit AI follows a similar tree to traditional FE games, where they favor available tactics instead of long term strategy, usually at the cost of their lives. With flank/guard being available to enemy units as well, the major adjustments to enemy AI cause them to favor attacking, when they can surround a player unit, and then favor attacking units that they have a weapon counter against. There is a unique exception for Bows, as they have new mechanics compared to FE games, where bows can now attacking at melee range, but do more damage the further way they are from the unit they’re attacking. Enemy Bow units will move as far as possible before attacking.

Next short term goals is to complete the attack, critical attack and death animations for the first character above, and start implementing 2D effects into the main battle animations, to make combat a more cinematic experience.