Genre: Racing MMORPG
Platform: Windows
Role: Gameplay Programmer
Engine: Unreal 5.2
Design in-game systems for managing loot drops, character construction, multiplayer lobbies, and matchmaking.
Manage multiplayer servers, player and game data through Microsoft PlayFab services.
Code robust and expandable systems in Blueprints and C++.
Build and deploy Linux and Windows servers using Docker to PlayFab multiplayer servers.
Use UnrealGameSync alongside Perforce to manage file versioning and disturbing precompiled binaries of the engine to team members.
Manage the game’s Steam store and game builds through Steamworks.
My role on this project centered around setting up everything multiplayer and systems related. When I joined the game was in a prototype state built in Unreal 5 Early Access and had zero Multiplayer functionality. I helped the team make the decision to restart the project in Unreal 4.27 for stability and compatibility reasons. In the span of 6 months the game was brought of a fresh state to and early access release.
Full server authoritative movement. All movement of the vehicles is handled by the game's dedicated servers.
Setup the game's backend on Microsoft PlayFab services.
Cloud storage of game and user data.
Loot drop system and allows specific parts and weighted rolls based on part types and rarities.
System to manage parts easily using data tables in Unreal
In game store that allows items to be items to be changed daily and purchased using real money through Steam's payment process.
Robust and expandable system to handle vehicle customization and player pawn construction.
Manage the source build of Unreal for the team to use through UnrealGameSync.
Make all the packaged game builds and manage them on Steam.
Given a search filter get only the items that match from the total player's inventory.
Organize the filtered parts
Once the manager is supplied with the index of the current item being viewed it will then load that item and the surrounding items to keep a supplied buffer size.
As the viewed item changed items that out outside the buffer are unloaded and items now in the buffer load.
All loading is async load using PrimaryAssets.
Manager uses a map of the items it is loading to the items that need updates. This means that the manager tells the item cards when to load and unload.
Item cards unload their images when outside of the buffer to recover memory when scrolling. Once back in the buffer the card can be reloaded.