First: after a lot of learning and thinking, I have decided to stop developing the RDA in its current state. The current state of the Python application left a lot to be desired (a semi-finished chat program with some dice rolling functionality). I enjoyed working on it and learned a lot from what I did, but I have realized in the downtime how far away from my original vision the idea has now come in my head.
A major component of what I wanted to do was to have some form of three dimensional view of the playing "table" as it were. I wasn't quite sure how I was going to do that at the time, but I had planned on using QT's OpenGL functionality at some point. I struggled with getting the proof of concept working for so long though that I began to get bored with the networking code and that lead to apathy.
Therefore, earlier in the year I decided to refocus. I became determined to learn what it would take to make a true OpenGL app and began spinning up a test bed in C++. I called this effort "AUG", a shorthand for "Atlas of the Unconquered General", after an artifact that could display an interactive vision of a battlefield for commanders. I was excited about using the new features of C++11, but soon I found how difficult it really is to get OpenGL under control. There are a lot of really good tools out there, but I got busy with class and soon fell back into a groove of never "having enough time".
More than that, though, I was beginning to have doubts about the design of the platform. I had learned a lot about what needed to be done, but I hadn't really changed anything about the design. I also hadn't spent a lot of time thinking about how I'd want it to be used. For instance: what kind of technical experience was I expecting the users to have in order to set up a server to host the game? What kind of experience was I hoping to convey to a user using the app that couldn't, for instance, connect to their friend's server for some reason? While thinking about these questions, I began to think about ways to make things easier for both me and potential future users of what I may finish.
Around this time, I happened to read about WebGL. I can't remember what demo I saw - i think it was of live programming WebGL with an Oculus Rift (seriously cool, btw), but things started to click into place in my mind. A web app could provide the ease of use I was worried about, and the flexibility to provide a host for people technically inclined, or potentially find a host for it online for the public to use with minimal fuss. I read articles about web sockets and began tinkering. Eventually, I picked up three.js, and used some of my web.py experience from class to whip up a simple server. Soon, I had a rudimentary web socket echo server in Python operation. Before long, I had all these components together in a proof of concept that worked surprisingly well.
So far, I've been pleasantly surprised at the ease of learning about and working with the technology I need to make the RDA a web application. From here on, I plan to concentrate my efforts on this, and as such, have broken the tasks down into more easily identifiable chunks:
- RDA (Resplendent Digital Assistant)
- Rules, turn tracking, dice rolling, model of mechanics
- AUG (Atlas of the Unconquered General)
- Scene display, character location and movement, model of world (per-scene)
- IM (Infallible Messenger)
- In game, out of game, and private chat, communications
Maybe this is still all too ambitious. I don't know. We will see as we go along. Right now, I'm working towards learning about the various tools at my disposal (besides three.js) and getting something solid set up so I can begin testing in earnest. Also, I figure if I have a server up and running a few people can at least keep tabs on me and keep me honest and motivated. Until then, don't be surprised if I start posting Javascript snippets.