Worm Punk
Team Size: 13
Game Engine: Unity
Role(s): UI Programmer, Network Programmer
Worm Punk is an online multiplayer arena deathmatch movement shooter game. You are a worm with no methods of movement other than your shotguns, your hookshot, and your chainsaw. Hop into an arena with up to 5 other online players and try to worm your way to the top of the leaderboard.
Key Contributions
-
Created a lobby spawning and readying up system, a wrist menu displaying tutorial & game info, and an achievement storage & notification system.
-
Engineered a real-time online leaderboard, flexible matchmaking, customizable room settings, and integrated voice chat.
-
Designed an interface including physical levers, dials, and buttons; player HUD for speed, elevation, and kills; personalized nickname/color setup; and networked Jumbotron displaying round time, kills and ranking.
Game Features
For this project, I designed the UI to be an essential tool for players to receive information. The VR environment heavily utilizes physical interaction, such as buttons, sliders, and toggle switches, to navigate through menus and select options. The Inverteboy 3000, located on the player's left wrist, has three screens displaying critical information, including health, kills/deaths, tutorial information, and game settings. Additionally, the Inverteboy features an audio visualizer to show spectrum data for the current music. In combat, I desgined a HUD displaying helpful information, such as powerup duration, kill notifications, and player locations / distance using a front view radar. For the online multiplayer component, I implemented screens that display public room options, room settings, and team information, with Jumbotrons in the arena providing round information like remaining time, the most recent kill, and player leaderboard stats.
Issues and Challenges
I initially faced the challenge of being unfamiliar with VR Development while working on this project. To bridge this gap, I immersed myself in basic VR Development tutorials and played VR games on my own time to understand what makes a unique VR experience.
My strengths come from 2D UI programming, but the project required a tactile 3D UI system. I meticulously kitbashed and designed components such as buttons, dials, and levers for player interaction, with each element triggering events upon activation. After thorough testing, I seamlessly integrated them into the game.
As I began working on the game's menu structures, I came to an important realization; these components would be key for server communication, like joining lobbies or entering room codes. This prompted me to delve into this project's networking system (Photon Unity Network 2). To create a user-friendly multiplayer experience, we chose a server-authoritative system so that players wouldn't need to worry about the hassle of making their own server. The ideal user experience is something that someone can simply hop into, play, and then leave just as quickly.
As I connected network code to my UI components, I grasped concepts like Remote Procedure Calls (RPCs) and learned what should and should not be communicated on the server. I also learned how to efficiently store and share information within the server room. Through these challenges, I acquired the necessary skills to bring our VR game to life, delivering an engaging multiplayer experience.
Reflections
For this project, I designed the UI to be an essential tool for players to receive information. The VR environment heavily utilizes physical interaction, such as buttons, sliders, and toggle switches, to navigate through menus and select options. The Inverteboy 3000, located on the player's left wrist, has three screens displaying critical information, including health, kills/deaths, tutorial information, and game settings. Additionally, the Inverteboy features an audio visualizer to show spectrum data for the current music. In combat, I desgined a HUD displaying helpful information, such as powerup duration, kill notifications, and player locations / distance using a front view radar. For the online multiplayer component, I implemented screens that display public room options, room settings, and team information, with Jumbotrons in the arena providing round information like remaining time, the most recent kill, and player leaderboard stats.