Judging Daring Doers
This year was the first time I was involved in Dare to be Digital. Now I’ll admit that due to time commitments and unfamiliarity, I sent others from my team to mentor but agreed to judge. Now I’m kicking myself, why did I pass up the opportunity to mentor such amazing and brilliant students. In a few weeks these students have produced high quality vertical slices and complete products which in some cases surpass the level of quality I’ve seen in many studio incubations, RnD or pitch teams.
Every game, bar one, blew me away in quality and the teams were talented, engaged individuals who clearly have a future in our industry if they continue at this level. A wide range of platforms and ubiquitous brilliant tools really pushed quality and innovation to an all time high. This year was apparently a watermark year according to the other judges and I’m glad to have been there. In fact my only WTF moment was, where were Microsoft? Some brilliant Kinect work on the floor, almost all of which hit the mark.
So onto the teams themselves...
The Beauty of Restriction
When I first started to enjoy games on my C64 alongside the board games and role-playing games one thing was king, limitations of the medium. Shortly afterwards I learnt BASIC then C, and started making my own games some on paper, and I fell in love with the grid.

Now originally working in mostly text or simple 2D systems the grid was a joy, and the games were so great. Some of my favourite games, such as X-Com, were on the grid. The reason as a programmer I loved the grid is it made things simple. Collision detection, map editing, path-finding all was made simpler by the grid.
Then as I advanced as a programmer, learning new languages and then writing my own game engines. Learning about BSP, Object Models, Raycasting, Vistor patterns... and entering the industry, well I noticed a trend. More and more of my hobby projects in high-school and later were going unfinished mostly due to frustrating technical barriers.
Now I should mention recently in a professional capacity I’ve moved from a programmer role to a design role, though I still code in my free time and do not dismiss the option of flowing back and forth. Well my biggest hobby project over the last year has been “reset” several times. Recently I had a flash of inspiration.
So many of my unfinished projects were grid based (or using some similar arbitrary restriction) but were built on more advanced tech. The trend of technical hair pulling had started when I started using more my more sophisticated engines, in which these technical shortcuts of old like grids were actually MUCH MUCH harder to implement because they went against the grain of the renderer, physics or similar system. I was kidding myself about the technical benefit of these old style short-cuts.
Now if you had actually sat me down at any point and asked me, “Is a grid system optimal in a modern 3D engine” well obviously I would have said NO! So why did I keep pursuing the grid, and similar systems. The truth is love of the Design.
Now I won’t go into a rant about the awesomeness of the grid and its effect on game design, but let us just say it makes a much more interesting game design in many cases. This can be said for many technical limitations, at the time they were done because they were optimal but what many people don’t appreciate is they have value and facets of complexity to be explored. The closest parallels that come to mind are Monochrome Photography or Mosaic Tiles.
Now the lesson I learnt was, “Know the why before addressing the how”. In the example of the grid system once I acknowledge that the only reason I wanted it in-game was the game design benefit and not a technical one, well then my approach completely changed.
My object model became clear and clean without the mess of grids and my render graph all the sudden lost all its mess and clutter. Maps no longer need to be tile based but can be built with geometry in the style of grids and then a “game grid” can be generated offline using a series of collision objects. My lighting system could be broken into an abstract high-level effect and well let’s just say the hair pulling stopped.
It took me around 8 years to realise why I loved the things I loved. Strange but true.
Written for AltDevBlogADay
White Male Privilege

I was born in Natal in the traditional seat of both Zulu and English power. While I was too young to witnesses the nightmarish riots and flames of the conflict I was the generation which needed to fight the war of the mind. The hardest part was to get the white population, myself included, to see there was a war to fight.

This is why we need thought, discussion and process. To overcome the under-currents which our courts, constitutions and social fabric agree are wrong. Yet many of us fail to acknowledge in out daily lives. Only through public discussion and removal of self from the messy problem can we start to see the hidden private laws under which much of our society operates.
Develop Conference

So got back from Develop and was slightly wiped out. So no podcast today, hoping to pipe one out on Monday. I apologise for the delay.
There is good covereage at Develop site and some funny and very good coverage at RPS.
Though I must caution that often the press cherry pick or focus on a tangent of a talk meaning you miss the real value of the talk. In Tim Schafer talk he noted rather amusingly at how Journalists pens work hard whenever he says a number. I do wish more analytical pieces were written and less "wire" pieces which try find facts and spew them out.
Went to two great talks about Technical Art which got my programming brain buzzing on topics of tools and tricks. One from Jolyon Webb from Blitz games, which really got me thinking more and more about doing more with less. The other from James Answer from Sony about EyePet. They had loads of small little tricks.
There was a fascinating talk about dramatic delivery from Georg Backer of Lionhead Studios. It really got me thinking about things in so many ways. It reminded me about the value of work-shopping. I work shopped scenes from all my plays, it was my key tool of refinement, but never have I used it in games. So that was great.
Mostly my mind was buzzing with Kinect, and the future. I've worked with phones, wii-motes and the move. The Wii initially got me super super excited, and to some extent it still does. Move does not, after it arrived a 2 minute play with a lightsaber sensor and I knew its insides and out. It still provides interesting opportunities, but is limited. Kinect is a whole new animal built from old tricks, software is the key.
The talks from Nick Burton, from Rare, and Andrew Oliver, from Blitz, both fired my brain with ideas. The key ingredient here is invention, stop thinking about how to make old games work with new controllers but instead think of games for the controller. I want to write a whole new article on this but yes Kinect is VERY exciting.
Both the Keynotes were brimming fill of good advice, and the other talks gave me a lot to think on. The talk on Business Intelligence from CCP was interesting but a little shallow, a taste of the interesting depths which they delve.
So more to come, but yes my head goes buzz buzz buzz.
Splash Damage
Splash Damage
Okay some actions can affect multiple targets, my old model ignored this and hence broke in a few places. I’ve now fixed this. This resolves a few graph query issues I was having.
Containers
Aaah yes arbitrary containers are extremely useful in a graph systems. They give information based on context. I was using them in all my drawings and notes, but not in code. This has now been fixed and cleans things up.
Multiple Children
I started with a query as a single path in the graph. Then I got lost a bit and thought, of course multiple children are needed. So the query changed from a path to a sub-graph.
The confusion arose because the response is multiple nodes.
This is messy and muddies the model. After trying to handle the sub-graph query I decided it adds nothing, as multiple paths can be submitted consecutively.
So now the query is path, response is a node list.
Query Graph
Okay so loads of code written, which has really found holes and helped smooth out the model.
Query Graph
Okay so the most basic Query format is a Graphed Query.
Pop-able Context
Any item which is pop-able can throw away it’s parents without loss of information. You may want to keep the context if you want to use a “previous topic” action. If the depth is becoming unmanageable however you can slice off the top at Pop-able joints.
Items which are not popable require their context to make sense.
Current Context
The current context is the Query which was passed in, we can then pass out the response nodes.
If you have a general query then an outline will be provided on the context item.
If you have a specific query, for instance the above query could be expressed as.
Object(Knife) -> Event(Stabbing #2) -> Actor( NULL )
Agent Data
What data does each agent hold, well coding really shone light on the dark places and showed up the cracks.
Atom
The Atom element indicates time-sensitive data. It can be attached to anything, to contain a time sensitive element. AtomCollection was a break through, it smooths out the accessing of Time Sensitive data.
Atoms cannot be a child of Event Node.
Talk Base
Person, Place, and Event all inherit from Talk Base.
Talk Base has a list of status which allow generic attachment of time-sensitive data.
Data Groups
At first I was look at expanding the data model but then I thought of data groups. So the Graph provides context.
Verb
I’m still not happy with the verb declarations, the model needs some revision.
I’m thinking of having a dictionary of possible game verbs.
Query Response Format working
Sadly no pretty pictures, but loads of progress. That’s the sad truth of programming, loads of boring text before anything cool happens.
So what are you seeing
- Query Response Format working
- People, Locations, Objects populating with random generator
- No Events Yet
- Generic Time Atom System in place for storing time sensitive data
Next steps are to intelligent filter choices based on context.
Also I want to add an output to a file so conversation is visible.


