UNE is a cross-platform multiplayer clone of the popular card game UNO, and the first multiplayer and cross-platform game I developed. I was inspired to create it after a friend wanted to play Ubisoft's UNO game but couldn't due to only owning a Mac (Ubisoft's UNO is Windows exclusive). I also take issue with Ubisoft's adaptation only allowing 4-player games (no more, no less). I saw this as the perfect opportunity to dive into multiplayer development, as I figured UNO was a simple enough game that I could focus on developing the networking code instead of having to worry about the game design.

Development
This project was collaboration with another developer and friend who shared my desire for a cross-platform UNO. I led the project and was responsible for the multiplayer architecture and gameplay features. I chose Unity and C# as my weapons of choice, a decision I'd later regret. I began development in 2020, but at the time Unity had no built-in multiplayer support, forcing us to rely on third-party solutions.
I eventually settled on Mirror, an open-source networking library for Unity. I chose Mirror over others for its architecture: servers and clients share a codebase, eliminating the need for separate versions of the game. Mirror also had good documentation and community support, and along with being open-source, seemed pretty easy to learn (spoiler alert: it was not).
What was planned as a brief introduction to networking turned into a long and frustrating process, with increasingly odd and specific bugs. First, cards wouldn't show in the game. Then, they would only show for the host of the lobby. It got to a point where there was an entire checklist of conditions that had to be met to recreate a certain bug, and even then it wouldn't happen half the time! There was also an entire ordeal with player profile images since Mirror only allowed certain data types to be sent over the network. I'll spare you my rant on platform-specific bugs, but you can imagine the issues I ran into developing for macOS while not owning a single Apple device. Finally, sfter 5 months of development, mostly spent on excessive bug testing, we had a working game

Result
Using Microsoft Azure to host a server, I successfully played multiple games with friends online. The core gameplay is, of course, identical to the UNO card game we all know and love (custom rules withholding). The game uses a lobby system, where one player hosts and gives each other player a 6-digit code to join, which was actually overly robust for our needs, allowing multiple lobbies to be played simultaneously by different groups. Any number of players can join a lobby (from 2 to 8), an improvement over Ubisoft's game. Additionally, cross-platform works “flawlessly”, despite my not owning a Mac and not being able to test it in person due to quarantine, which is another point on the board for UNE.
Here is where UNE falls short: firstly, my lack of licensing rights, secondly, my $0 budget forcing me to use Microsoft Azure's free trial, but most importantly, an (albeit understandable) lack of polish when compared to its official counterpart. There are no custom game modes, no fancy effects, and still some (very niche) bugs.
I'm honestly impressed with how well this project turned out overall, especially considering it was my first attempt at a multiplayer or cross-platform game. Although Unity's lack of official multiplayer support was hellish, I'm glad I was able to make it work in the end. If I were to work on any similar projects in the future, I would almost definitely be using a different game engine (unless Unity begins offering better multiplayer support). Still, I'm grateful I worked on this project and what I was able to accomplish with UNE.