All gameplay code lives in my 2D Platformer template plugin, so the game and the FAB product improve together. Everything is data-driven: one Data Asset per spell, dialogue in a Data Table, puzzles derived from a single base class.
- 01
Spell system
A Data Asset per spell with mana cost, cooldown, element, cast type and tags. Fire Spark is the first: a projectile that burns barricades, lights torches and damages enemies.
- 02
Interaction and elements
An interaction component on the player, interactable actors (doors, checkpoints, pickups, readable tablets, level exits) and an element-reactive interface so fire and water change the world.
- 03
Modular puzzles
A base puzzle class with Solve and Fail. The rune puzzle asks for an order, resets on a mistake and stays solved after a save.
- 04
Enemies and NPCs
A patrolling skeleton guardian with elemental weaknesses, and Master Eldrin, who talks, gives hints and remembers that you have met.
- 05
Save, checkpoints, quests, inventory
One save slot holding the checkpoint, known spells, solved puzzles, picked items and NPC flags, all restored on load.
- 06
Smart Tilemap Builder
Terrain is painted as terrain, not tile by tile: a 47-tile rule set with 18 weighted variants draws edges, moss and ink stalactites, and collisions are merged automatically.
On FAB → - 07
Parallax under a perspective camera
Three parallax scenes per level, sprites scaled by depth so pixel density stays constant, and a Python simulator that checks no hole in the sky appears from any camera point.
On FAB → - 08
Python production pipeline
PixelLab generations forced to the act's palette, scripted tilesets, level JSON with path validation, then headless Unreal builds, Niagara authoring and automated captures.