
Re:Legend
Project Type
Engine
Primary Role
Company
: Professional Project
: Unity
: Game Programmer
: Magnus Games Studio
Early Access Trailer
In this game, the players could tame monsters (magnus) they encounter in the wilds, which would be added to their barn. The players could then visit their barns and feed or interact with their magnus. When in multiplayer, players could also visit each other's barn individually.
The way that the API we used for the project handles game scenes is that all players would be able to see each other and all objects spawned in the game scene if they both have the game scene loaded. This is fine normally, but when it comes to the barn system, every player's barn is different and every barn has multiple floors. This creates a need for a system that reuses the same game scene but acts as if they are different.
To solve the issue I implemented an instancing system. An instance recognizes what object and data it is supposed to contain, and every barn/barn floors were treated as a separate instance. With this, the player would be assigned to an instance when they enters the barn game scene, and would only be presented with the objects and data that they are able to see or interact with. Players would also need to load Monobehaviours that belongs to the instances that they are in.
In the game, players can marry an NPC after completing multiple objectives. I was tasked to handle the marriage system, which includes proposing to the NPC, creating a system that dynamically changes the roles of NPCs and multiplayer players in the wedding cutscene, and also making sure that the marriage system affects the general npc behaviours of the game.
The game was required to support 4 different platforms and 10 different languages, and the UI needs to accomodate these requirements. I worked with the main UI programmer to implement multiple UI and localization systems across the game.
The project relies heavily on Google Sheets to hold data, especially character dialogues which needs to be localized. The import plugin that we used generates a static database from a target Google Sheet. It was working well until multiple sheets have too many texts after the localization were added, which is where the static databases failed because the string length limit was exceeded.
This is where I was tasked to find a solution to it, which I have decided to instead extend the plugin to add a system that generates JSON files and a wrapper for the JSON class. This is where I first learned how a script generator works and how to create one.