Archive for April, 2013

Scourge, Part IV: Kneel before Quad!

Wednesday, April 3rd, 2013

I’ve realized recently that Scourge’s client has many layers, and jotting down a list of those layers helps maintain my perspective of the work yet to do. Distinguishing layers is an easy activity – if System A connects to System B, and A can invalidate B, but B cannot invalidate A, then A is a layer above B. That’s helped me identify the following layers, each of which has its own problem space:

  • Server connection – are we online? (HTTP/UDP comms)
  • Session – are we authenticated and up to date? (user object)
  • Battle – who are we fighting and what actions can we take? (the ROPES)
  • UI Narrative – what action/data is the player considering? (narrative tree nodes)
  • View – What does each button and view component look like? (view objects)
  • Renderer – What does each particle look like? (glyph objects, model arrays)
  • Graphics – What does each pixel look like? (GPU buffers, write-only)

And that’s only the stuff that’s going into the demo! I left out the AI stuff from this list, because like the state of the human player, it interacts with this layer cake at some level. It’s just a higher level than the one human beings interact with.

Anyway, while I’ve spent a lot of time focusing on the Session and Battle layers in the past, for this post I will focus on the Renderer and Graphics layers, which I’ve been working on for the past three months. They’re only a piece of the puzzle, and currently the Graphics layer is dependent on Flash and Stage3D, but that’s a small price to pay for the ability to work this stuff out while I wait for Haxe 3, H3D and NME’s OpenGL features to stabilize. (As I’ve previously mentioned, Scourge should be able to target every platform that one can target through NME, which is quite a lot. The graphics pipeline just needs to mature a little. I will color your pixels!) (more…)