Inventory management editor tool screenshot

Adventure Dwarfs

Single-player, Tower Defense, Exploration game in Unreal Engine 5

Key Skill Achievements

β€’ A* Pathfinding β€’ Unreal Engine β€’ Performance Optimizations β€’ Dev blog writing β€’ Maya 3D modelling β€’ Maya Python Scripts

Project Info

🎯 Project goal: Hobby project, which helps me learn new stuff.
πŸ‘¨β€πŸ‘¨β€πŸ‘§β€πŸ‘§ Target audience: Gamers and Game Developers
πŸ“Ί Platform: PC
πŸ‘©πŸ»β€πŸ’» Language: C++
⏳ Timeline: Currently ongoing

Introduction

Me (game developer) and a friend of mine (artist) are creating a single-player, Tower Defense, Exploration game in Unreal Engine 5.

Tower Defense with a twist: The player will not be dragging and dropping defenses on a map from the game interface, like in traditional TD games. The player will be a character gathering resources, building defenses and defending along with the defenses he builds (think of: Orcs Must Die X Minecraft).

Exploration: Every time the player replays a level, the layout of the level will be different. The goal is to make the player explore every time the level starts and not allow him to memorize locations and strategies. Every level play through must be unique.

Preview Image
Technical Highlights
β€’ Custom A* pathfinding: implementation on a 3D grid, including heuristic evaluation and performance tradeoff analysis
β€’ Toolchain integration between Maya and Unreal Engine: using Python-exported JSON and DataTables to build terrain landforms and enabling designers to author terrain outside the engine.
β€’ Custom terrain system: supporting stacked cells (3D grid) for caves, hollow landforms, and layered gameplay spaces.
β€’ Development blog: Learning to write, explain and document my experiences learning new programming and development concepts.

Cool features:

Preview Image
Custom A* Pathfinding on a 3D Grid

Instead of relying on Unreal Engine’s built-in Navigation System, I implemented a custom A* pathfinding solution tailored to the game’s procedural, grid-based terrain.

The system operates directly on the centralized grid map and supports 3D movement, including diagonal traversal across stacked cells. I evaluated multiple heuristic functions (Manhattan, Euclidean, Chebyshev) and selected Euclidean distance to balance path accuracy and performance.

This allowed enemy agents to navigate dynamically generated environments while maintaining predictable and tunable computational costs.

You can read more about how I built that in my development blog.

Data-Driven Content Pipeline (Maya β†’ Unreal)

I designed a data-driven pipeline enabling terrain chunks to be constructed in Autodesk Maya and reconstructed identically inside Unreal Engine at runtime.

Using custom Python export scripts, chunk geometry is serialized into structured JSON data, including cell order, transforms, and metadata. This data is imported into Unreal as Data Tables and consumed by chunk construction code.

The pipeline enforces strict ordering and naming conventions while empowering 3D artists to work independently in Maya. This results in faster iteration, greater creative freedom, and a more robust authoring process with reduced potential for human error.

You can read more about how and what got me to built that in my development blog.

Preview Image
Performance Optimization with Instanced Static Meshes

Early prototypes used individual Static Mesh Components for terrain cells, which quickly became CPU-bound due to excessive draw calls during terrain generation.

I refactored the rendering layer to use Instanced Static Mesh Components (and Hierarchical ISMs where applicable), applying the Flyweight pattern to separate shared mesh data from per-instance transforms.

Profiling with Unreal Insights confirmed that draw calls remained constant regardless of world size, resulting in a substantial FPS improvement during runtime terrain expansion.

You can read more about my process of doing that in my development blog.

You can read more about the development of this game here: