Star Wars Episode I: Jedi Power Battles (Remaster)
Role - UI and Platform Programmer
Engine: Custom
Language: C, C++
Platforms: Switch, PS4, PS5, Xbox One, Xbox Series, Steam, GOG
Release Date: January 23, 2025
Originally, since this project was a bit out of my wheelhouse, I was only supposed to implement the localization system for this game during an early milestone. However, because I adapted quickly to the game's Custom C Engine and my knowledge of scalable UI implementation up to that point, I ended up spending upwards of a year on it.
During my work on the game's localization (text and font swapping across languages), I noticed some major issues with the UI setup. UI elements were positioned from the top-left corner of the screen using raw pixel coordinates of the game's original 640x480 resolution, and the entire final image was then stretched to a 16:9 aspect ratio. I offered to reimplement the UI to be much more scalable. This included implementing a custom pivot-and-anchor system based on the setup I had become accustomed to in Unity. I then had to manually reprogram every screen, element, and animation using this new system. The end result was a game that scaled across resolutions from the game's original 480p all the way to modern-day ultrawide displays. I even managed to fix many of the UI bugs that were present in both original releases of the game, on PS1 and Dreamcast.
While the majority of my time was spent on the game's UI systems, I also handled many other tasks throughout the game's development. Though I had worked on platform-specific code in my previous projects, this was the most I had worked with each platform's devkit and API. I handled many tasks across all platforms, including input handling, settings, icons, save data, and more. For Steam specifically, I set up nearly every major platform feature, including cloud saving, achievements, controller/icon switching, and activity sharing.
As a last anecdote, I modified the core movement of the game to better support modern analogue sticks. Early on, while playing, I noticed the game was locked to 8 directional movement. This was fine when using a D-Pad, since you are locked to 8 directions anyway, but felt pretty clunky on a stick. I mentioned this concern to the team, but it was not a high-priority issue, and most people did not think it was worth spending time changing or was too risky. Eventually, I decided to dive into the code and implement it myself, adding an option to switch between 8-directional and omnidirectional movement. The change was universally appreciated by both the internal and publishing teams, making the platforming sections much more enjoyable to the point that the 8-directional movement option was removed entirely in favor of the omnidirectional one.