General information
Windows (Host) & Android (Player) download: https://mauritsdijkman.itch.io/robo-party
GitHub
The GitHub repository can be found at: https://github.com/MauritsDijkman/RoboParty
Website
The game's website can be found at: https://simonduck123.github.io/ProjectInnovation/
Team
Designers: Simon Duckham and Max Wierda
Engineer: Maurits Dijkman and Niels de Gruijl
Development time
3 weeks
Project information
Assignment
For this project, we had to make a (digital) product (board game, web application, Unity application, etc.) supported by mobile device features (camera/voice/text input, AR, networking, GPS, accelerometer, etc.). The product needed to fit one of the following themes: escape room,
role-playing, multiplayer party games or own theme approved by the guiding teachers.
role-playing, multiplayer party games or own theme approved by the guiding teachers.
My part
During this project I was not the only engineer. Niels de Gruijl joined our team, so the programming work could be divided. Niels focused mostly on networking.
I worked on the following things:
- Accelerometer input
- Microphone input
- Gyroscope input
- Minigames in general
- Victory scene with score indication
- Loading and leaderboard screens
- Score/Leaderboard system
- Host and client separation (different UI, visuals, etc.)
- Joining visual in the lobby
- Game testing (playtests)
- Linking code with graphics
- Graphics and performance optimization
- Little bit of networking
- More small tasks
What did I learn?
- How to get and use the accelerometer, microphone and gyroscope input from a phone
- How to create a score/leaderboard system with scores and names
- How to develop a game for mobile
- How to optimize performance/graphics for mobile
- How to use Photon for networking
How can I play it?
The game can be downloaded from Itch.io for Windows and Android. The game host needs to be on a Windows device and the players on an Android phone.
Game information
Idea
The product needed to use at least three different mobile device features. After we came up with a few ideas, we decided to use the accelerometer, microphone and gyroscope for the mobile device features. We chose to create a multiplayer party game, one of the themes we could choose from. For the multiplayer part, we chose Photon to run servers.
The idea was to create three different minigames. There would be a server host that would display the visuals of the game. The players join with their Android phone. On the phone, the player can join the server and can see information about the current minigame.
Gameplay (created by me)
Because we used a free networking tool called Photon, the network connection is not very good. The players will react 0.5-1 seconds late on the host screen. This is because we used the free version of Photon.
The game start with a main menu where the host can start a server and the client can join a server and type his username. When the host created a server, he will go the join scene. In this scene, when a player has joined, you can see the visual of the player with their name and ready state (red or green light on the ground). On the player's device, when he/she has joined the room/server, you can toggle your ready state. When all players are ready the first minigame will begin.
The menu and connecting is programmed by me and Niels.
Minigame 1
The first minigame uses the accelerometer from the phone of the player. The goal of the player is to collect as much fruit as possible. The player needs to watch out for the bomb! If the player catches a fruit, +1 will add to their score. But if they catch a bomb, -1 will be taken from their score.
The player controls his/her robot on screen by tilting/rotating their phone to the left or right. The robot jumps when the player moves his phone quickly up and down.
In the gameplay video, there is a lot of fruit and bombs. This is because there was a bug with the networking part of this minigame. This bug caused the spawner to spawn a lot of fruit and bombs.
This minigame, not the networking, was programmed by me.
Minigame 2
The second minigame uses the microphone from the phone of the player. The goal of the player is to fly through as much rings as possible and to avoid the birds. When the player flies through a ring, +1 will be added to their score. But when the player touches a bird, -1 will be taken from their score.
The player controls his/her plane by blowing into the mic of their phone. If the microphone input is high enough, the plane will move up. Otherwise it will move down. When the player moves out of the bottom of the screen, he/she dies and it's game over for them for this minigame. Getting the microphone input and translate it to decibels took me a lot of time, but it now works correctly.
In the gameplay video, the other players fall out of the sky and there are a lot of rings and birds. This is because there was a bug with the networking part of this minigame. This bug caused the spawner to spawn a lot of rings and birds and to only work with one player.
This minigame, not the networking, was programmed by me.
Minigame 3
The third minigame used the gyroscope from the phone of the player. The goal of the payer is to smash as much iron ingot as possible and to avoid smashing the bombs. When the player smashes a iron ingot, the ingot will be transformed into a iron bar and +1 will be added to the score of the player. But when the player smashes a bomb, -1 will be taken from their score.
The player controls his/her press by making a smashing movement with their phone. When the smashing movement is detected, the press will move down and smash the object underneath it.
This minigame is programmed by me and Niels.
Score (screen)
Between each minigame, the score of the player is shown. I programmed a file save system that links the playernames to the score. A score can be get, set or changed by giving the name of the player. The system will return or set the score of that player.
Victory scene
After all the minigames are done, it is time to show the score of the players and who won. The score of each player is indicated with a text above their head. All players are standing on poles, the poles move up and stop at the score of the player. This simulates a podium.
The victory scene is programmed by me.