With all of the primary components at some level of alpha, I’ve been working behind the scenes integrating them into a whole and getting the networking up and running again. Each part, the map tabletops and the editors, was created separately and the unification has been filled with lots of “oh, that should be a singleton,” and “that class should really derived from this other one.”
In there, too, has been a lot of work on the networking functions. Unity uses a client-server architecture that, while is understandable, is often frustrating. All communications have to go through the server and be routed back the clients. My desk is littered with rather convoluted sketches and messaging diagrams. It’s further complicated by the use of RPCs (remote procedure calls) to send this data. Unity supports only a handful of data types and most of those are only useful for a fast paced FPS with lots of little packets of data. Unfortunately, I’m moving data sets much larger than a few bytes, though not sending them very often. Whether it’s maps, characters, or images, all of these things need to be serialized into bytes, pushed to the server, and then redistributed to the clients. All workable, but often head-scratching when the data goes missing.
I’ll be out of the country for a week, so I thought I’d better leave behind another video of the progress before I go. In this video you’ll see connections established, characters loaded and shared with the server and other clients, a map loaded and shared with the tabletop, and finally some movement of the miniatures on the shared tabletop.
At this point I’ve watched countless hours of gameplay sessions and feature demos of the existing virtual tabletops. I’ve noticed a few commonalities within them. The first, is that they all look essentially the same. And that look is just an updated version of the 1997 application WebRPG.
However, this is what a live gaming session looks like:
I was looking at all of these as I was trying to work out the basic interface to the Tabletop Connect virtual tabletop. I wanted to maintain the metaphor of the tabletop, without sacrificing the usability. One of the other common features I noticed watching actual gameplay sessions, is that—when the map is in play—most of the other fluff goes away. UI is shifted around and windows made smaller to display as much as the map as possible. It was with this in mind that I settled on the UI.
Most of the game session, when the map is not in use will take place on the virtual tabletop. That is, literally a virtual tabletop. You might remember an early version of this in the Character Editor video. From here character sheets, notes, handouts, and maps can be loaded, arranged, and edited. When a map is needed for gameplay, the map is dragged onto the shared tabletop and loaded for all the players. The same mechanism will be used for sharing handouts and notes. Either dropped onto individual players, or to the tabletop to share with everyone.
The map exists in parallel to the tabletop. Pressing the F1 key switches between them. Each has its own camera and view, so there is no need to reset when switching. Some information will be displayed with the map, as well. Initiative tracker, chat windows, and the like.
In the first look video, you’ll get a preview of the GMs tabletop. There are no players connected, so you’ll only see the shared tabletop icon at the top. When players are connected, this where you’ll see their icons. The player’s tabletop will look very similar, without the map loading. For the video, I stepped pretty slowly through loading and moving the character and monster sheets and tried to keep the camera moves gentle. In practice, it moves much faster and feels similar to arranging windows on your computer desktop.
I’m still deep in getting the Map Editor to alpha—which involved largely gutting much of what I had—but while testing I’ve been struck by the relative speed at which maps can be laid out. I’m not aware of another map editor that allows the user to so quickly put a map together.
Though still using temporary assets, I put together a quick time lapse of editing a map. The total real-time for the edit was 4 minutes and 15 seconds. I don’t expect you watch the process in real-time, so I’ve sped it up only 45 seconds. I hope this gets some of you excited about the idea of making new dungeons.