A cross-platform multiplayer Uno clone for Windows and macOS.
If you know the traditional Uno rules then you already know how to play. There are only a few changes, namely that you start with 8 cards instead of 7, and there's no need to declare "Uno" (although you're more than welcome to enforce this rule manually when you play with friends).
Matches use a lobby-based system where the "host" is given a 6-digit ID, and other players can join based on that code. The host isn't the server, any client can be the host of a lobby. You can start a game with any number of players between one (though it's a bit lonely) and theoretically infinity but practically around sixty-four. When the host starts the match, the game starts for everyone and ends when one player gets rid of all their cards (or everyone leaves the lobby). The host and the players can choose to remain in the same lobby for another game, or leave. If the host leaves during the match, the new host is whoever joined most recently.
To learn more about the development of this game, see this article.
| Lobby | In game |
|---|---|
![]() |
![]() |
You can build the game for both Windows and macOS using Unity. Just make sure you have the right build target.
The server is responsible for managing every lobby that's currently open and syncing the state between clients. In this repo the server address is localhost by default, but if you don't want to play with yourself, you'll have to either:
- Let your friends connect to your computer, or
- Host an instance of the game on a cloud service (Microsoft Azure, Google Cloud, etc.)
It's worth noting that we used a Windows build for the server. Running the server on MacOS should work, but it's untested.
Important
Make sure Server Build is checked. This creates a headless build and lets the game know to run the server scripts.
Before you build the client, make sure you set the correct IP address for the server you want to connect to. To do so:
- In the Offline scene (Assets/Scenes/Offline), locate the
NetworkManagerobject - In the
Une Network Managerscript locate theNetwork Addressfield. - Set the Network Address to the desired IP address.
- Build the client and distribute to your many friends.
A few known issues exist, but they're largely non-gamebreaking. These, in all likelyhood, won't ever be fixed. However, you're free to have a shot at it yourself.
- If the host of a lobby leaves during the results screen, the button to continue won't appear for the new host, forcing the remaining players to create a new lobby to continue the game.
- In the "host local server" option is chosen from the offline debug options, the game will appear to also be a valid client—but treating it as such causes unexpected behavior (e.g., the lobby screen will show all players that are connected to the server, even if they haven't joined a game or are in a different lobby).
Lead Programmers:
Music: Audionautix.com
This project is licensed under the Unlicense (see LICENSE). Do whatever you want — it's yours.
This project uses third-party libraries:


