The Mag-Net

About The Game

This started as an independent study about learning how to create an online game in unity. It started as a first person shooter and that is what it turned out to be by the end of the semester. However the game was not polished and was not interesting so for a game jam some of my friends and I built on the game adding the mechanic of pushing and pulling others players and making the game look like an actual game instead of a prototype. The game is built using Photon Fusion’s networking solution. This made the process a lot easier than networking for game objects since the built in compliments photon created such as networked colliders and rigid bodies.

What I Worked On

For the most part this was a solo project, I created all the code for the project, I started with creating a player prefab that allowed each client to control their own player and camera and then be able to shoot other players. I created the lobby system as well, so each client can create their own room or join other players' rooms. Then later when I revised the game for the game jam, I created the teleport mechanic along with being able to push and pull other players off the map. Finally I created the post processing for the game.

What I learned

I learned a lot through this process, the biggest was the realization of how much goes into creating a multiplayer game, it takes over 10 times the amount of work than a single player game. Other than that it was just learning about how networking works with game development, having to constantly send information from client to server back to other clients. Understanding that you must constantly check that the correct client is able to use input. I had a bug early on where each client could control the others camera but it was because I did not disable the other clients camera and had to do a check if the camera had input authority. I learned how to use rpc’s and when to use them, at first I didn;t entirely understand them because photon uses networked rigid bodies which makes rpc’s for movement not needed so I was just using them to send join and leaving information but I asked my professor and he explained how rpc’s are typically used for everything that needs to be sent to the server for other clients to see or react.