The game uses multiple screens. The main screen is the game board seen by everyone. Each player also has a web browser (ideally on a multi-touch mobile device, but any HTML5 browser works) to view his or her private hand of cards and initiate actions. There are no controllers used except for these browsers.
Here's a photograph from the first time I successfully connected the mobile device to the main game using a QR code and an iPod's camera:
At that point, my goal was to make a 3D tactical game, inspired by XCOM. The game quickly evolved into this virtual board game:
Main Screen
Mobile Screen
Tonight I implemented the animations for characters picking up, dropping, and giving each other equipment, as shown in this video:
The current implementation is currently 1421 SLOC in C++ and JavaScript (including the object database) and about 3MB of image data files. That's tiny by most project standards but already large enough to concern me. Hobby projects bit-rot quickly because they aren't tested on daily as the underlying APIs evolve. This is also code with a substantial amount of multithreading, which greatly increases the logical complexity and risk that large amounts of code have bugs. There are about 10 threads active at all times to communicate with the mobile devices and load resources to them over asynchronous channels. That's necessary, but also nine too many for comfort.
When I next have an evening to hack on this, the next step is debugging some instabilities arising from all of those threads. I can then move on to implementing actions taken using the fun equipment and skills that are currently in the game in name and stats only but don't yet function.
Morgan McGuire is a professor of Computer Science at Williams College and a professional game developer. He is the author of The Graphics Codex, an essential reference for computer graphics that runs on iPhone, iPad, and iPod Touch.