My Role

Listed below are most of the duties I was responsible for throughout the course of development for the game throughout the time it was being developed:

• Debugged issues in Unreal Engine 4’s source code caused by compatibility updates between different versions of the game engine
• Created and modified assets using Photoshop
• Developed and debugged Blueprint visual scripts
• Worked with a small team of indie game developers
• Designed initial GDD and periodically revised it
• Determined project schedule and deadlines

Developed player controller and movement mechanics
• Modified the physics system used for acceleration and velocity of character
• Programmed handling of physics objects to allow pickup and throwing them in C++
• Programmed animations for fluid transitions between states
• Created support for using a gamepad to control character
• Scripted custom movement states with Blueprints

Developed leveling and stat system
• Programmed a reusable base class in C++ that could be assigned to any object to give it a level and various stats
• Developed member functions for interacting with level and stat values

Developed inventory and gear system
• Worked on the item base class in C++
• Debugged issues with items picked up and not stored in the player inventory
• Developed interaction capabilities between the item and stat classes to allow items to modify stat values

Developed dialogue, quests, loot table, and NPC interaction system
• Modified camera system to focus on the midpoint between the player and an NPC when interacting for dialogue
• Developed a dialogue system through Blueprints that allows for quickly setting up what NPCs say upon greeting, talking, or presenting a quest to the player
• Developed a quest system capable of checking for item requirements and rewarding items to the player
• Scripted a loot table system for all NPCs that allows developers to easily decide if they should drop loot, how likely they are to drop loot, and how much loot should drop
• Programmed capability for NPCs to be permanently dead in a playthrough if they die

Developed melee combat, combat effects, and shooting system
• Programmed transitions between hit-reaction, combat, and movement animations
• Programmed collision on combat animations
• Developed combat effects: slow, stun, blind, freeze which affect characters differently depending on their stat values
• Scripted a shooting system that aims the character towards the raycasted position of the mouse in 3D world space

Developed menu interfaces, player UI, and vendor system
• Programmed user interfaces using Unreal Motion Graphics
• Created player UI elements that scaled based off the stat class values
• Programmed and debugged GUI interface for interacting with items, stats, vendors, NPCs, lucidity abilities, and system settings such as video and audio

Developed saving, checkpoint, and loading system
• Created save system that stores the application’s last used system settings, player progression data, and the world state of levels
• Created capability to autonomously save data based off triggers or events
• Developed a checkpoint system based off save system that temporarily saves data and is used as a recovery point in the event of death of the player
• Programmed a loading system that retrieves the values from saved data and sets the player, world state, and application settings to load those data values

Developed custom lucidity game mechanic and upgrade system
• Developed a base class to represent the data for all lucidity abilities in C++
• Implemented customized gameplay systems with Blueprint scripting to represent individual abilities
• Created an upgrade system that improved the properties of abilities as they were upgraded to higher levels

Developed custom traps, switches, and doors system
• Scripted custom gameplay systems to activate various types of traps based off collision or interaction events
• Utilized Blueprints to script switch objects that could be interacted with to trigger traps and doors
• Developed door system that could be triggered autonomously by collision or through switches