Interstellar Racing League
About Interstellar Racing League
Interstellar Racing League is a high-speed, racing experience, which supports up to 4 players in local splitscreen. Players race along gravity-defying tracks through alien planets to compete for the title of the Galaxy’s Best Racer.
Interstellar racing league was developed over the course of 4 months on a team of 56 people, using Unreal Engine 4.17. On this project, I worked on the UI team, alongside one artist and one UX lead. Together, we developed all menus and UI in the final game.
As the only programmer on the UI team, I was in charge of the system design and implementation of all menus and HUD elements in the game. I also had to work closely with the UI artist and my lead to assure that all UI elements were conveying correctly in-game, and met stakeholder standards.
Main Menu System
This project required a fully fleshed out menu system with multiplayer and singleplayer capabilities, character selection, track selection, resolution options, audio options, and the ability to change control schemes. This system was large and complex, and required constant maintenance to make sure that it was quick and elegant for the players to use.
Developed using blueprint and Unreal's UMG widget sytem, the menu system consists of several sub-menus (options, character select, track select, etc.) which can be navigated easily and seamlessly. To do this, I implemented each individual menu’s functionality into a separate widget blueprint, and consolidated each widget into a single “Main Menu” widget which controls swapping between menus and manages the overall game state. After each menu has been navigated, and players have selected their control schemes, players, and track, the menu loads the correct level, and sends all of this information into the game to make sure players spawn with the correct vehicles and controls. This system allowed developers to work on individual menus independently, while still keeping the overall functionality consolidated into one place.
Back To Top
Multiplayer Character Select Menu
The character select screen required that multiple players to be able to navigate the menu independently and simultaneously, similar to other couch co-op menu systems such as Mario Kart or Super Smash Brothers. This required some design on the PlayerController blueprint for the main menu, which keeps track of the player’s current character selection, and whether or not that player has made their final selection. This state needs to be clearly conveyed to the player as well, with independent cursors and “hover” states for character images.
Back To Top
This project required the HUD to display information about the player’s place, current lap, and powerups, as well as broader race information such as a minimap, indicators for approaching vehicles, and player icons over enemy players. This system had to be designed with split-screen in mind - a single HUD blueprint couldn't be stretched onto the 2-player screen without comprimising the user experience. To address this, we developed 3 different HUDs, which took into account the screen layouts for single player, two player, and three/four player modes. Upon loading into a level, the game instance identifies how many players are in the game, and sets up the hud appropriately.
Back To Top
In any racing game, the player needs to be able to quickly identify other players and CPUs, and gauge where they were in the race. In order to do this, we chose to implement icons over surrounding players, and proximity indicators which appear when a car is approaching the player from behind.
For the player icons, each human player’s HUD requires up to 7 player icons on screen, which track other car's positions while they are in view, and disappear when the enemy car is not visible or too far away. To implement this, I added a set of 7 icons to the screen, and gave each icon an enemy car to “track”. While the target car was visible and within a set range of the player (determined by designers), the icon updates its screen position to be above the car’s screen position, and hides itself if those conditions are not met.
For the proximity indicators, each car has in-world indicators, which become visible when cars approaching from behind get close. When a car meets this criteria, the indicator rotates to “point” at the approaching car, so that the player can make quick decisions to avoid collisions.
Back To Top