PewBombDie
Skills: Unity, Unity Networking
PewBombDie is a multiplayer shooting game I made using Unity and Unity Networking.
Goal
In this project, my goal is to explore networking in games. For this purpose, a multiplayer shooting game was chosen.
Gameplay
Terrains
In the game, the players are put in an arena with special terrains like bushes, obstacles and bounced bricks in it.
Brick
In the game, Brick will block the player as well as the bullets.
Bounced Brick
Bounced Bricks will make players and bullets that hit them bounce, so players can use them to create special gameplays, like bouncing the bullet onto another direction to hit other players.
Bush
In Bushes, players are invisible to those who are outside Bushes, but for those players who are in the same Bush, they can see each other. Players can hide in Bush and strike.
Abilities
In the game, the players have two abilities, Dash and Invisible.
Dash
Dash allows the players to move quickly along a direction. Dash also allows the players to go through Bricks.
Invisible makes the players become invisible for a few seconds. This ability can be used to strike or sneak from one Bush to another.
Weapons
In the game, the players have three weapons - rifles, shot guns and bombs.
Rifle
Rifle allows the players to shoot one bullet at a time in a direction. Rifle is useful when the players want to keep at a safe distance while still being able to attack.
Shot gun
Shot gun allows the players to deal tons of damage to others at once. Shot gun will shoot a lot of bullets at once in a fan-shaped area when the players shoot. Shot gun is good for short distance strikes and has good effects working with both abilities. Just use the two abilities to get close to others, and put the shot gun on their face. However, while the shot gun is powerful, it also consumes a lot of ammos at once.
Bomb
In the game, each player carries 10 bombs with him/her, the bombs can be set by the player at the position the player stands; the set bomb will explode and hurt all players near it after it stops ticking. Bombs will be invisible in Bushes, and will also be invisible if the player who sets the bomb is invisible when he/she sets the bomb.
The most challenging part when programming this project was the networking. Now when I look back, the networking I used in this game, Unity Networking, is fairly speaking an easy networking to us. However, it took me quite some time and efforts to learn how to use it. I think the most difficult part is to manage the data transmission. In Unity Networking, there is actually a server provided by Unity, so the networking is technically a Server-Client networking; nevertheless, Unity Networking behaves like a p2p networking, so when writing the scripts, we have to apply the logic of p2p.
As shown above, in a usual Server-Client networking, the clients give the server data, and after calculation, the server passes the data back.
However, in Unity Networking, the server only handles the data transmission, and the calculation is the host's job. As you can see in the demo video in the end, being a host, I didn't suffer any delay, while other players did. It is because the transmission delay between Taiwan, where the clients were, and America, where the server were, was large. Therefore, after understanding how Unity Networking works, we can see it is quite difficult to handle the data between all clients, because the logic of networking and the logic of gameplay can sometimes be different or conflicting with each other.
Conclusion
Over all, I am quite satisfied with this project. I didn't go big like I sometimes did; instead, I focused on small goals and tried to make every aspect of the game simple. For example, I put just a few abilities, some weapons and a relatively simple level. By doing so, I made the game look clean and easy to play.