Flammable Penguins Blog The internet home of Claire Blackshaw

5Jun/100

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.

Tagged as: No Comments
5Jun/100

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. 

Tagged as: No Comments
4Jun/100

Query & Response format Cemented

Almost missed last bus home.
Really good progress has been made. Lots of clean up and refactoring making good headway.
Query & Response format cermented.
Basic test bed in.
Hard coded a random populator to fill values.
Unified time sensitive atom structure.
More tomorrow (^_^)

Tagged as: No Comments
1Jun/100

Tumblr Fail




Tumblr Fail

So I wrote this long article about how I switched to an Atomic data model.

How this is one possible implementation of the proposed model. Different code would be written based on language, memory and cpu restrictions. The implementation is a proof of concept. It does not define the model.

Atomic Model

The atomic model uses a damage protocal. It stores a value and the time that value was set.

  • Testing point before any atom returns unkown.
  • Testing between or at an atom returns last value change
  • Testing past last atom return last known value

Blind Spot & Discovery

This system means if a value change occurs and then is changed back before an agent observes it again then they are unaware of event. If however the observed value is different to the last known value then they agent knows an event has occurred and can inquire or investigate.

Anyway I got to run and catch the bus, sorry for short version.

Tagged as: No Comments
25May/100

Concrete Examples of Conversations

Not much progress tonight. Looking at examples and the refrence scenario, getting bogged down in detail.

Will look at a code implementation of Thursday

Tagged as: No Comments
24May/100

Dissertation: Atomic Structure

Dissertation: Atomic Structure

A sample atomic structure laid out in a document.

Query and Response forms also discussed.

Tagged as: No Comments
18May/100

Cube Maps Ahoy




Cube Maps Ahoy

So there is a slight glitch with the reflection but ALMOST there.

Tagged as: No Comments
18May/100

Water




Water

So for those of you curious I’m throwing down some water rendering magic. Not to mention real-time environment cube mapping. Behold the result.

So it’s broken and the ocean needs some motion (pun fully intended). I also may be slightly sleep deprived… but onwards and upwards.

Tagged as: No Comments
17May/100

Shadows are EVIL




Shadows are EVIL!

Okay above you see rough and blurred. The rough pass uses a single sample against the depth buffer. Those bloody pixels are a result of the resolution of the shadow map.

The blurred insanity is a shadow method called PCSS, based on the White Paper, “Integrating Realistic Soft Shadows into Your Game Engine” by Kevin Myers, Randima (Randy) Fernando, & Louis Bavoil. Sadly some of there stuff uses Shader Model 4 so I did my best approximation.

Not happy with either method… pulling my hair out.

17May/100

To Debug it… Draw it




To Debug it… Draw it

Many people will tell you this but whenever you have a problem try to visualise it. This can be applied to almost everything (except cases where visualisation is a constraint, think advanced maths and quantum). So above you see the debug frustum.

Well after fighting with all these various problems I’m thinking to myself… I need to double check my Frustrum. Five minutes to write and BAM problem is instantly visible. The problem I was debugging for 5 hours solved in 5 minutes.

Printf & Debug Draw rocks.

Problem: Shadows giving strange LightViewSpace results

Well the problem manifested in many ways. I was debugging shaders and tweaking render targets. Not to mention twiddling the depth bias so often that it was indecent.

The problem was two fold. Firstly the sun view & position didn’t match up. The result of a quick hack to get the sun in the right place, hacks bad. The second issue was todo with the scene bounds.

The view matrix is built with a look-at call. Well the key is that the centre of the bounds must be equal to the look-at target. Why is this? Well draw some random shapes on an A4 page. Now draw a circle which contains all those objects. Now measure the radius of the circle and draw a square at the centre of the page with double that length per side.

You see the problem, unless the circle is at the centre of the page their will be bits of it outside of the box, which means they won’t be shadowed.

So you compensate for offset and increase the radius. To do this instead of measuring the radius of the circle measure the distance from the centre of the page to the furthest point of the circle.

Before you ask we can’t move the box from the centre of the page as that would change the angle the light was coming from.

Onwards and upwards.