Flammable Penguins Blog The internet home of Claire Blackshaw

10Jun/100

Paper Progress

So I was so tired of seeing a computer the last few days I switch to paper notes for a while. Still need to scan / transcribe them to digital format. Here are some highlights

Key Points

Goal: To explore and define a method for game agents to comprehend game objects and events with the ability to query and respond.

Method: By implementing a reference scenario in XNA.

The exact schema I choose for the implementation is trivial, but the graph Query & Response format is key. 

Systems

These systems are listed in order of implementation. For my dissertation I shall only be doing the first three. I do plan to eventually do all of them.

Knowledge Storage: Representing knowledge in graph format.

Query & Response Format: Query an agent and formulate a response

Agent to Agent Discovery: Two agents converse and update their knowledge graph based on response. An agent also needs to resolve data conflicts.

Chinese Whispers: An agent mishears or corrupts data on receiving knowledge.

Lies:An agent intelligently mutates data on output when certain conditions exists.

Input & Output Translation: Data is transformed from graph format to friendlier format. Possible IF parser, GUI system or NL system.

Tagged as: , No Comments
4May/100

Hack our way through the Jungle

Output Log

Created World[Game World]
Building Basic Prop [Template]
Frank.Island.WorldProp
Building Basic Prop [Building Template]
Frank.Island.Building
Building Container Prop [Container Template]
Frank.Island.Container
Building Inventory Prop [Inventory Template]
Frank.Island.Inventory
Building Ingediant Inventory Prop [Ingrediant Template]
Frank.Island.Ingrediant
Building Tool Inventory Prop [Tool Template]
Frank.Island.Tool
Building Food Inventory Prop [Food Template]
Frank.Island.Food
Added Obj[Island] to World[Game World]
Added Obj[Hand] to World[Game World]
Added Obj[HandCam] to World[Game World]

It might not look like much but that little but of text output proves the hacked type system works. It’s horrible, sadly I’ve wasted a weekend trying to do things the “correct way” and failing.

If I have time I want to investigate alternatives

// Horrible HORRIBLE System!!!
// Possibly replace if time permits, or else gourge out my eyes in shame
// Game Gems 1: Magic of Data-Driven Design by Steve Rabin
// Game Gems 2: A Game Entity Factory by F D Laramee
//
// Reflection and C# System.Activator.CreateInstance(…)
// See: http://forums.xna.com/forums/t/39891.aspx

Ah well it works and I have a meeting with my supervisor. Hopefully by tonight I will have that Tree & Oven in game.

Tagged as: No Comments
2May/100

Only one button!

I really wish I had a pretty picture but I don’t. Sadly it’s a problem with grunt coding tasks is there is very little pretty to show for it. In fact most of my work today has been in the Content Pipeline which runs at build time. So its not even runtime code.

XML Data

The XNB system in XNA is great but I had a few hiccups with it. I still don’t think I’m using it in the best way possible. However after ripping up tons of pages of notes I’ve gone with the best solution I can currently think of which no doubt has loads of problems, besides some of the ones I’m already seeing.

Model View Controller

Soooo sooo easy to be a naughty coder. However as this is an academic project and I can be slightly OCD even with production code I’m following it as MUCH as I can. The controller is slightly too coupled to the state which it controls but de-coupling is more messy. 

Always always realise the so called “rules” of software engineering are generalisations and guidelines. You should never break a rule without first understanding it. They need to be flexible and you need to be flexible because the key factor which makes someone an engineer is a way of thinking, analytical problem solving.

A decent education in engineering is mostly about how to think. The tools you use are easily learnt but it’s the process and thought model which is hardest. I think that’s why you see so many true engineers have cross disciplines.

Tomorrow’s Tasks

Well now that a lot of grunt work is in place. The goal for tomorrow is to have the following working.

  • Tree Prop - Loaded from Data, Go through full life cycle and interaction
  • Oven Prop - Loaded from Data, Go through full life cycle and interaction

Bigger than it sounds :)

Tagged as: , No Comments
28Apr/100

XML is XtreMLy Tasty Food

So after the coupling issue I’ve been looking at Object Factories and inventories. Now something I learn to love more and more is Data-Driven development. I cannot express my love for it highly enough.

Also thanks to the amazing work of Shawn Hargreaves and all the XNA folks we have automated reflection and xml processing. Which let me tell you is just MAGIC!

The problem I’ve been battling with the last few hours (other than sheer amazement at how awesome the XNA system is) is defining the data structure and whether the class itself should be spat out or a data format, or settings style system is more appropriate.

So the solution as I have come to found a lot recently is use case. Before you build the system, write a scenario, set of rules, or list of items. Then use those to drive the devolpment.

As I often have said to the team on our new project at work, which is on a very tight schedule, make a choice and be definite. It’s okay to be wrong, but imprecise and fluffy is unforgivable.

Tagged as: , No Comments
25Apr/100

Dropping out of the compo



Okay so I’m dropping out of the compo, with 12 hours left to go. I could make a game but the important parts are done and I just got a much needed reminder to get back on track.

So going into this compo the intention was always to focus on XNA, my tech, and pushing my understanding of both forward by doing a quick use case of a game (i.e. LD)

Which I’ve done, things I’ve learnt and coded since Friday night

Things Learnt

  • Polar Coordinates are NOT generalised
  • Learnt Spherical Coordinate system
  • Leant much more about the DX render pipeline
  • Learnt about Drawable Components
  • Learnt more about generic collections
  • Localised Gravity System
  • Lots of Maths muscles flexed

Re-useable Code 

  • Helper Class for Polar Coordinate
  • Helper Class for Spherical Coordinate
  • Built Orbital Camera based on Spherical Coordinates
  • Proper Debug Render Component

    So lets get back to Frank. I’m going to ignore the animation problems for now as they are a bit of a brick wall and instead look as some game and behaviour based things. Not to mention plugging the LD code into the Frank Project.


    Tagged as: No Comments
    20Apr/100

    Splitting Animations

    The last roadblock I hit was tagging animations for export. Well after talking to the artists at work no-one knows how to do it in 3ds Max 2009 (or any version of Maya).

    So after some digging I found this post on the XNA forums.

    So by parsing a separate text file using the Content Pipeline I can export and tag animations. So a bit of shuffle work and bada boom, problem solved.

    Sorry no visual progress to show, but its a technical issue solved which makes me happy.

    Tagged as: No Comments
    18Apr/100

    Getting into C# and Feeling Stupid

    Today’s Goals

    • Build World Manager
    • Make base Hand & Frank
    • Get Hand to Pick up Frank

    So currently I’m doing one of the things I like least. Building low-level systems and technical plumbing. General I like to work one of two ways. On the bone raw api’s dirty and fast, or working on a high level system.

    The building of engines and low-level framework style system is a crucial element which I never enjoy doing. Also my unfamiliarity with C# and XNA is a big slow down.

    Transforms: Target or Moving?

    The question has arisen about whether target transform or moving transform is better. I’ve used both system in the past.

    Target Transform: Lerps between previous and target to return the current transform.
    Moving Transform: A relative transform which is applied to current transform.

    Tagged as: No Comments
    3Mar/081

    Dungeon Delve

    So my work load is nicley split at the moment between three projects.

    • Gamecube Project: Basically we need to make a game for the gamecube that demonstrates its functionality and shows we know how to use it. Still developing the engine at the moment no game stuff started.
    • Mobile Wii: Python on Symbian S60 on Nokia N95. Using the built in accelaromters to make a little game. Think of it as turning your phone into a Wiimote.
    • Dungeon Delve (Working Title): Conversion of board game to Xbox 360 using XNA. Aims to be fully network playable amoung other things. Current state is rushing for a playable version.

    Well I've been working really hard on Dungeon Delve but I'm learning XNA and C# as I go along. The main thing to make first was the editor. Its not complete at the moment.

    Its missing only two things really: full triggers, and named monsters. Its not the easist tool but it works so time to move on. Below are some screen shots.




    Tagged as: 1 Comment
    22Dec/060

    Game PIT #6 : Merry Xmass for all given values of X

    RSS
    iTunes Link
    MP3

    Christmass is here and so is our show. Oh well we have our Wii's, XNA launched, played Gears of War and University has closed down for the winter break. How do we feel about normal maps and Pizza?

    Come in and Find out.

    Links
    XNA Website
    Sensor Bar Explained
    Wii Accelaromter Explained
    WiiMote Driver
    Normal Mapping

    - Claire Blackshaw

    Tagged as: , No Comments