
Back to Projects
Back to Projects
PROJECT
PROJECT
PROJECT
WILDORE
WILDORE
WILDORE
WildOre is a 2D RPG where you farm, hunt, and explore dungeons to gather resources and rebuild your childhood farm.
WildOre is a 2D RPG where you farm, hunt, and explore dungeons to gather resources and rebuild your childhood farm.
WildOre is a 2D RPG where you farm, hunt, and explore dungeons to gather resources and rebuild your childhood farm.
Procedrual Generation
State Machine
2D Animation
DURATION
20 Weeks
ROLE
Team Lead / Programmer
TEAM SIZE
2
PLATFORM
PC
ENGINE
Unity
OVERVIEW
OVERVIEW
"WildOre" is a 2D RPG/adventure game where players take control of a character who finds themselves back on their childhood farm. They grow crops, hunt animals, forage in the woods, and explore the mines. The player's main mission is to gather enough resources from the forest and the dungeons to repair the farm's ruined buildings.
This was my first project where I worked in a team, serving as the Team Lead. My responsibilities were managing the game's progress and organization, including the documentation.
"WildOre" is a 2D RPG/adventure game where players take control of a character who finds themselves back on their childhood farm. They grow crops, hunt animals, forage in the woods, and explore the mines. The player's main mission is to gather enough resources from the forest and the dungeons to repair the farm's ruined buildings.
This was my first project where I worked in a team, serving as the Team Lead. My responsibilities were managing the game's progress and organization, including the documentation.
TRAILER

MY WORK
EXPLANATION
CODE
Procedural Generation
The Challenge:
We needed a fast dungeon Generator to create unique layout every time a player enters the dungeon. sizes up to 500x500 units per dungeon
My Solution:
I created a custom procedural dungeon generator combining Binary Space Partitioning (BSP) for the structural layout and Cellular Automata for organic cave-like structures. To ensure every map is fully playable, I integrated a Flood Fill algorithm to eliminate isolated pockets and developed a custom corridor-checking algorithm to elimate desgin errors.
Extra:
To speed up our workflow, I didn’t just stop at the generator itself: I built a interactive in-engine tool. This allowed me to instantly test seed generation and even paint custom layouts by hand,
EXPLANATION
CODE
Procedural Generation
The Challenge:
We needed a fast dungeon Generator to create unique layout every time a player enters the dungeon. sizes up to 500x500 units per dungeon
My Solution:
I created a custom procedural dungeon generator combining Binary Space Partitioning (BSP) for the structural layout and Cellular Automata for organic cave-like structures. To ensure every map is fully playable, I integrated a Flood Fill algorithm to eliminate isolated pockets and developed a custom corridor-checking algorithm to elimate desgin errors.
Extra:
To speed up our workflow, I didn’t just stop at the generator itself: I built a interactive in-engine tool. This allowed me to instantly test seed generation and even paint custom layouts by hand,
EXPLANATION
CODE
State Machine / AStar
The Challenge:
We needed an intelligent, role-based AI system where enemies dynamically form squads with Leaders and Minions, defend valuable assets in the mines, and intelligently fallback to standalone behaviors if they are separated from their group.
My Solution:
I built a state machine with six behaviors: Idle, Grouping, Searching, Patrolling, Retreating, and Attacking. The system is driven by a 'Group Manager' from Boss enemies, as well as valuable points of interest around the dungeon that enemies patrol to protect. Everything is designed so that enemies look for groups to fight alongside; however, if no groups or valuable spots are nearby, they will patrol alone and fight independently.
Extra:
To help the chase system, I developed a custom AStar tailored specifically to my dungeon layouts. This ensures enemies can relentlessly pursue the player without getting stuck on walls, environmental decorations, or interactable objects like ores and chests.
EXPLANATION
CODE
State Machine / AStar
The Challenge:
We needed an intelligent, role-based AI system where enemies dynamically form squads with Leaders and Minions, defend valuable assets in the mines, and intelligently fallback to standalone behaviors if they are separated from their group.
My Solution:
I built a state machine with six behaviors: Idle, Grouping, Searching, Patrolling, Retreating, and Attacking. The system is driven by a 'Group Manager' from Boss enemies, as well as valuable points of interest around the dungeon that enemies patrol to protect. Everything is designed so that enemies look for groups to fight alongside; however, if no groups or valuable spots are nearby, they will patrol alone and fight independently.
Extra:
To help the chase system, I developed a custom AStar tailored specifically to my dungeon layouts. This ensures enemies can relentlessly pursue the player without getting stuck on walls, environmental decorations, or interactable objects like ores and chests.
EXPLANATION
CODE
2D Animation
The Challenge:
To support our pixel-art art style, we needed a custom animation controller capable of handling all pixel-based sprite animations across both the player and diverse enemy types. The core challenge was creating a highly generic, reusable system that featured a robust event architecture that triggers on various animation states.
My Solution:
I developed a highly decoupled, ScriptableObject-driven animation controller that requires only a movement component to function. The system automatically calculates the entity's directional vector, handles sprite rendering, and fires precise frame-specific events based on the current animation state. By leveraging ScriptableObjects, adding new actions or behaviors is entirely data-driven and requires zero extra code.
EXPLANATION
CODE
2D Animation
The Challenge:
To support our pixel-art art style, we needed a custom animation controller capable of handling all pixel-based sprite animations across both the player and diverse enemy types. The core challenge was creating a highly generic, reusable system that featured a robust event architecture that triggers on various animation states.
My Solution:
I developed a highly decoupled, ScriptableObject-driven animation controller that requires only a movement component to function. The system automatically calculates the entity's directional vector, handles sprite rendering, and fires precise frame-specific events based on the current animation state. By leveraging ScriptableObjects, adding new actions or behaviors is entirely data-driven and requires zero extra code.
SCREENSHOTS





COPYRIGHT © TOBIAS HOEFLMEIER 2026