Saturday, March 30, 2013

[MM] Refactoring

I've surrendered to illness.  I'm going to continue working on the game minimally this weekend because it is better than just lying here contemplating how horrible I feel, but there's no way that I can actually finish.

I put in some time refactoring my program to make some of the prototype elements work in a more "real" fashion. The code ballooned from 500 to 800 SLOC in the process, which makes me a little nervous.  This is code with a lot of threading to handle the network management and I'm also terrified of deadlocks.

The characters visible on the main screen are now actual custom G3D::Entity subclasses, not just visual placeholders.  The NPCs are Characters and the PCs are PlayerCharacters.  A PlayerCharacter is created automatically when a new client connects. The PlayerCharacter has a hand of Cards that are shown on the private display and a portrait shown on the main display.

Next implementation steps:

  1. Draw the PlayerCharacters from a queue--right now everyone is the same character!
  2. Put actions on cards.
  3. Track game sessions and automatically restart the client when it connects to a new one.
  4. Put cards into the room.
The gameplay is evolving towards real-time board game play, which is neat. This encourages sneaky actions, too--everything plays out on the main screen in public view, but if you do something during a distracting moment, others might not notice. Design challenges:
  1. I need to keep most important stats and outcomes on the main screen. Otherwise everyone would just look at their own screen, which would thwart the shared experience.
  2. When a character takes an action, he/she goes into cooldown mode.  How should this be presented in a real-time game to avoid it feeling frustrating, like you're just locked out?  
  3. Cooldown times need to be long enough to encourage deliberate, tactical play, but short enough that everyone isn't sitting around waiting at the same time.  I want an asynchronous turn based feel.
  4. AI, my Achilles' Heel in every jam!

1 comment:

  1. That is an excellent photo of a sick man. I wish I had a photo like that when I was pulling a "me".