Saturday, November 8, 2014

Signs of life

Its been a long time since I've made a post here, but it is not for lack of movement. Sadly, most of the movement has been towards completing class, but now that the end is almost here, I've decided to take stock of what has been done on the RDA and the direction I would like to take things in from here on out.

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.

No comments:

Post a Comment