Justus Hörberg

Dwarf Undecided
Dwarf Undecided is a shop management simulator game that takes place in a medieval fantasy world. The player is in charge of a shop where adventurers stop by to fill up on weapons before going on their journies.
The customers don't specify exactly what weapon they want, only what they're using it for, and it's the player's job to figure out what weapon in their inventory suffices their request the most.
Platform: PC
Engine: Unreal Engine 4
Language(s): C++
Development Time: 7 weeks
Team Size: 9 students
My Role: Player Movement/UI Programming
Info
Project Information
Dwarf Undecided was created for our third game project course at FutureGames. Development of the game spanned over the course of seven weeks, with the first involving concept and planning of the game and first playable, and subsequent weeks pre-alpha, alpha, pre-beta, beta, and release.
My Contributions
Textbox System
The textbox system is primarily used for dialog with customers in the game. It is a widget that always exists on the HUD, but isn't activated until the user calls on it. To make a textbox appear, the user calls InitiateTextbox() on the GameHUD class, either through blueprint or C++, where they have to provide an array of text messages, as well as a delegate that will be executed when the textbox closes. In the game, all dialog is provided from text stored in assets referenced by the customers, and the delegates signal the customers to leave the store if they've received a weapon from the player.
Player Movement
The player's ability to move is made possible by a component that upon receiving input, automatically handles movement based on specified speed and acceleration values. When moving, the component will also detect collision before placing the actor at their next position. The collision detection is divided into two parts: one vertical check, and one horizontal. The vertical check (Z-axis) will check for ground, while the horizontal (X and Y-axes) will look for walls and ceilings. If a sweep hits collision, the player's remaining trajectory will be projected onto the surface. If it is flat enough, the component will report that it's on ground.
Footstep Component
For effectful touch (no pun intended), when the player moves on the ground, a sound from their feet will be played between certain intervals. The user has the ability to change what sounds should play when they're walking on what surfaces, as well as how many units they have to travel before the next sound plays. The component checks the player's movement component to determine whether or not the player is currently grounded, as footsteps should only play when they are.


