Party Madness: Workshop game
Nov 17, 2023
What is Party Madness
Party Madness is an Online Multiplayer game I did for my 2nd workshop during my Game Design diploma at Cambrian College. This was my second game during my diploma, and I took it as a challenge to see what I could do.
This game features an Online Multiplayer with up to 4 players using EOS (Epic Online Services). The multiplayer used the lobby system to make the party accessible only when the players were waiting; the player could also change their character skin.
There were 4 minigames, and each one of them had different mechanics; all the minigames were inspired by other games/minigames, such as Mario Kart, Jump the Club from Fall Guys, King of the Mountain, and Anvil Rain from old Minecraft servers.
The minigames:
- Beat them with a fish: as the name suggests, you are on a platform, and you have to beat the other player out of the platform with a fish; there is also a fish cannon going around shooting fish.
- City Drift: This is the driving minigame; it implements a simple yet fun car driving experience where you drift to the goal and can crash with your friends.
- Don't Let the Anvil Kill You: This is a minigame where anvils fall from the sky; every time, they increase by 2, making it harder to stay alive. As an extra challenge to this minigame, players can punch each other; some cars appear every x seconds (it is a random number), and Vlad (a small reference to one of my professor's games) flies around, dropping a line of anvils behind him.
- Jump The Club: This minigame is inspired by the Fall Guys' minigame Jump the Club (it even has the same name); this minigame consists of 2 Clubs rotating at different speeds, times, and directions; the players have to dodge them by jumping, running, and/or staying still.
Features
Online Multiplayer
As I said above, I used EOS to play online multiplayer because I wanted to play with my friends in another country. EOS wasn't the only option I looked into; I also looked into using Steam, but in the end, I went for EOS, thinking it would be easier because it was from the same company as Unreal. The multiplayer allows 2–4 players to play the game using a P2P connection; when a player creates a party, they are asked to input a password for the lobby. When the game starts, the lobby closes, not letting other players enter the party. When the game ends, all the players are sent to the lobby, and the party is accessible again.
Multiple Minigames
I worked on this for a while; it's a minigame object that lets me add as many minigames as I want without coding everything every single time. This object controls the communication between the game and the minigames. This way, the game mode has to send the info on who won. The info is then added to the scoring system and sent to the players for the next minigame or the lobby, depending on whether a player won.
Minigame mechanics
Each minigame had different mechanics, so I had to develop a way to add this while keeping the basics of the game. It was pretty simple for all the minigames except for City Drift, due to this minigame changing the movement mechanic to a car movement and the goal being the first to finish rather than the last standing. For the rest of the minigames, it was simple: have a parent player controller object and create child controllers that added the mechanics I needed.
Score System
This is straightforward: each player has a score, there is a goal, and each minigame the player wins gives one point. The goal can be modified on the game options while in the lobby.
Trailer
Images and media
My Contributions
Gameplay Code
This was my first time coding a multiplayer game and using EOS, so I created a straightforward multiplayer code to ensure I could make the game. The demo worked and was the base of the rest of the game code. I can say that making multiplayer mechanics and gameplay is not as easy as it looks.
Minigame Mechanics
The minigame mechanics were one of the fun things I did, and I came up with cool and chaotic ideas to make this minigame. It was a challenging yet rewarding activity; it took way too much playtesting and feedback to make fun, fair, and difficult minigames that worked perfectly in the multiplayer environment.
Lobby
This is a simple system, but at the same time, it was the solution to many of my headaches; the lobby let the users choose different characters and length of the match and wait for people to prevent them from playing alone after the party leaves the lobby no one else can join the party.
Minigames UI
I had to make sure the UI was enough for the people to know what was happening but not too much that they get distracted; this was achieved by having a start screen for each minigame, where there is a video of the minigame and the controllers (this also prevents the match to start when people is loading). In-game, there is almost no UI to prevent distractions.
Game Design Document (GDD)
Making this game was difficult, but it wasn't because I had a plan, it would've been way more complicated; the GDD ensured I followed the path I thought of and had all the features on time. I was constantly updating this document due to the many changes I made to the game during development.
Score System
I needed a way to keep track of who was winning; the main idea was to have a main board the players were returning to after each minigame, like in Mario Party or Pummel Party, but due to time constraints and the lack of enough minigames to have the main board, I decided to go for a classic scoreboard. So, the first person to get to the goal wins. The goal was something players could configure.
Online Subsystem implementation
Using EOS wasn't an easy task; there wasn't much online to learn from, so I had to stick to the documentation and bad tutorials to understand what every part of the online subsystem did. Also, EOS was just being implemented on the public release of UE5, making it harder to get consistent results. but at the end I managed to make it, it does miss some of the features that I wanted like joining friends, but I will leave that for a future game that I don't have as many tasks as I had or the time constrain.
Level Design for all the game
Making the minigames mechanically fun was a thing, but I also needed levels consistent with the game's aesthetics. I decided to go for a city style for the game. Using this, I created the environment of each minigame to ensure the minigame could work and the game had consistent aesthetics.
The team
Creative people that worked on this game