Vincent Chu Software Dev since 2003

Passionate with technology. Loves developing tools and algorithms to make people's lives easier.
Works at Apple as a software engineer while enjoying the sunshine and the rain in Vancouver.

Multiplayer UNO

With the goal to gain experience with C#, socket programming and WinForm back in 2006, I decided to create a multiplayer online UNO game. Theoretically, it should be able to support 255 players.

Aside

I must admit that even though I have worked with C++ for a while, I actually quite like C#, especially with the IDE from Visual Studio.

I spent around 40-60 hours on this project, and I doubt I would be able to finish it with double the time using C++ and MFC.

Features

- Uses server/client architecture. Everything is done by the server - determining who's turn, what card can be put down, etc.
- Chat Room
- UNO Game Room

Challenges Faced in Programming

-Most of them are interactions of threads, and how the UI get notified when something happens in a thread-safe manner.

-Working with bitmaps. Pasting the bitmaps with correct size onto the buttons, and allow the components on the UI to shift themselves when resizing windows

-Since the house rules I use allow cutting cards (i.e. cards with exactly the same color and number as the current card can be played even though it's not your turn), making sure everyone sees the right sequence of cards being played is also a challenge.

Availability of the game

Since UNO is a copyrighted card game, I am not sure what is the consequence of me developing a electronic version and start distributing it. This is intended to be a proof-of-concept project to work on my programming skills, and to proof what I can do in a short period of time. Download is currently disabled. If you really want the game, drop me a line and see what I can do about it.

Future Release

I hope I'd be able to find the time to convert this into a general card games framework. Ideally, the user can use different preset metadata, and turn the program into multiplayer poker, big 2, or whatever card game.