Team Size: 26
Development Time: 5 Months
Engine: Unreal 5
Role: UI/Settings Programmer
Team Size: 26
Development Time: 5 Months
Engine: Unreal 5
Role: UI/Settings Programmer
Description
Ling and the Corrupted Hollow is a 3D puzzle platformer with Asian inspired locales and atmosphere. The game has you follow Ling as she explores various locations from her past using the power of spirits to help her through.
Role and Responsibilities
I was primarily responsible for implementing all of the user interface elements in the game as well as systems like save files and settings menus.
Created all menu flows in the game using Unreal Engine's built-in widget system and the Common UI plugin.
Created backend code for applying various audio and graphics settings as well as supporting dynamic text for localization.
Worked with artists to bring their UI designs to life while maintaining all proper functionality required by producers and designers.
Worked with other programmers to hook UI widgets into core game mechanics for conveyance. Also ensured save files were structured to store all necessary player data for the save system.
Art and Widgets
Learned Unreal's widget blueprint systems and many tools with the Common UI plugin
Worked with artists to integrate visuals and art into the menus, doing my best to match their vision without compromising functionality
Wrote Unreal C++ libraries for blueprint use in several menu functions that were needed and specially made for our game
Settings Insights
Learned Unreal's Game Settings systems and how to manage them through UI elements. These included settings like resolution, fullscreen mode, and FPS.
Created custom settings pipelines for saving, localization and audio settings which used Unreal Engine's native functions but expanded on them for uses tailored to our team's needs.
Localization Example: Menu textures had text baked into the textures itself meaning the text localization in Unreal's string tables wouldn't apply to them. Instead I created functions that would report the game's current localization and culture to a global game state and had the widgets adapt their texture depending on that culture value.
Game Saves: Unreal's Save Game system was the base for our permanent data system including save files and setting preferences. All game elements and UI elements that use saved data are powered by this backend system.
Post-Mortem
Pains of motivation and development:
This game had a turbulent devlopment cycle to say the very least. The context behind many of the cut features and basic gameplay comes from the fact that our team's vision could not come together early enough to solidify the game's identity.
Learning to work despite a bad atmosphere and poor team morale was one of my biggest takeaways from the experience. Myself and a handful of team members across all disciplines persevered when many others had given up on the project at Alpha which left team morale low and our manpower halved. While difficult, it forced me and others to go beyond our comfort zone and adapt to the team's needs, cutting and optimizing until we could get the final product shipped.
Even though the game as a whole is not necesarily something I am proud of, the works I was able to produce despite poor conditions are invaluable to me giving me confidence that I can keep a good attitude and be self driven when the going gets tough.
Even better If's:
On a personal level I believe there were moments I was not communicating well across disciplines. A lot of pains in the development of the UI stemmed from my inability to explain the Unreal Widget system well enough to our art team leading to lots of miscommunication in what the assets needed to be from a format standpoint. Near the end, I put great effort into documenting and properly getting my artist peers into the UI system in engine which was something that should have happened much earlier in hindsight.
I believe much of the failure in this game's development stems from a weak unification of the team in the ideation phase. While I was doing everything I could by the end of the project, there were opportunities along the way for me to at least be more present for ideation and design decisions when I was asked for my opinion and I believe I was too passive.