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.

May 9th, 2025

Since the last post, finalizations on character writing while implementing more Unreal engine specific features that I had more trouble doing in Unity. The general visual appearance of the pixel art with light-effected textures is an attempt to create a 2.5D look similar to triangle strategy, without having the same voxel type appearance it has for its environments and textures.

Moving Ships

The clip above shows the 2D animated ships mixed with the water that receives shadow and reflections from Unreals basic lighting system. In the previous Unity Incarnation, all water and environments were Pixel art with transparency which made dynamic use difficult. In addition, the Rain is a simple niagara system with windforce that makes the rain movement seem less 2D.

Storms

The above clip shows a pixel storm that was relatively simple to create using Unreal’s niagara system. Experimenting with the tech has opened up more opportunity with things I can explore narratively which as been nice. A lot of potential gameplay mechanics as well as story has previously been less possible due to having to purpose everything in pixel art or hand-drawn stuff which massively increases the scope of the work.

Lighting and Glow Effects

Switching from using unlit sprites to lit was originally for the purpose of applying shadow so I didn’t have to create an extra pixel art shadow texture for everything. After getting it to work it made sense to create glow effects as an extra way to cast shadows and make better visuals. The above clip shows a unit with a enchant-buffed weapon, and activating spirit to create another outline glow effect. The room light is dimmed on activation to accent the effect.

Weapon Icons

Other work has just been adding other pixel art assets into the UI, and making sure the game always renders the UI at a specific pixel ratio, regardless of the resolution of the window. In general though, moving from 1×1 pixel art to 2×2 pixel art has been way better for dealing with weird pixel rendering.

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.