Role: Solo developer
Tools Used: Unreal Engine 5, Blender, Photoshop, Procreate, Substance Painter, Substance Designer
Random Dungeon Generation
Like many other roguelike dungeon crawlers, dungeons in To Be a Hero are randomly generated every time the player re-enters them. I use the Dungeon Architect plugin for Unreal Engine to handle this dungeon generation, specifically its Snap Grid Flow Builder that builds dungeons by stitching together modular rooms.
I designed two types of rooms for the starting forest dungeon: standard rooms have basic layouts and for the most part contain random enemies or items in them. Special rooms have either specific enemies, items, puzzles, or story events within them and may not always appear in each iteration of a dungeon.
Dynamic Lock-On Targeting System
I wrote a custom lock-on system to be able to dynamically adjust camera focus onto all interactive objects, NPCs, and enemies in the game. This system works similarly to Z-targeting mechanic from the Legend of Zelda games, where the camera centers itself around the mid-point between the player and active lock-on target and revolves around this point as the characters move around in-game. The lock-on mechanic chooses a target based on its distance to the player, as well as how close the character is to the center of the screen (to favor targets in a more direct view of the camera than the edges). The lock-on also breaks if the player moves too far away from the target (distance-based limiting) or if the player breaks line of sight with the target (to prevent targeting through walls, obstacles, etc.).
Toon-style Post Process
The art style for To Be a Hero is reminiscent of both the Studio Ghibli movies and games like Legend of Zelda: Wind Waker and the Ni no Kuni. All of the characters, items, and other interactable objects feature a post-process effect on them that gives them a cel-shaded look and an outline to make them stand out from the environment more to the player. The post-process has controls for customizing color tint on both the highlights and shadows, the light threshold for separating light/shadow, setting the thickness and color for the outlines (both inside and outside), and thresholds for toggling the effect on objects far away from the camera.
I wrote a custom dialogue system using the Logic Driver Pro plugin that allows me to make dialogue trees through nodes. The system is flexible enough to either write text into the nodes directly, for simple one-off dialogue trees, or read in text from rows of a Data Table (eventually to be able to read in localized text from a CSV).