Unity is in a precarious place with multiplayer at the time of making this game. Unity's in house multiplayer system, UNET is depreciated, and its replacement has yet to come. As a result, we used a package called mirror, which is an essentially a continued version of UNET, with continued support, fixes to issues with with UNET, and additional features.
The Functionality of Mirror is quite simple. There is a Sever, and Clients. In our game, one of the clients host the server on their device, and as a result is dubbed the "host". Each client has a copy of all other client's player gameobjects, each client can move only their own gameobjects on through requests to the server.
While there wasn't many features added this week, it is easy to undervalue what a undertaking multiplayer is in any game. because player's gameobjects are now routed through the server, this means that when a player makes a function call that moves their player for instance, they are attempting to move all objects on the sever. This means that all functions written that have to do with the player, had to be modified to only move the player that belongs to the client making the call. This is mostly able to be accomplished by using the checks that mirror has built in, which are isLocalPlayer, and HasAuthority, which are just as they sound, only executing on the player gameobject that is the local player, or on objects the client has authority over.
In addition to multiplayer support, we added simple character customization, which is to hold over player customization until full group studio customization is added. It functions as a group of radios, where only one color from each category can be selected in order to customize a character.
Added Multiplayer capabilities
Added joining sessions
Added hosting sessions
Basic character customization