Posted by: lljkkennedy | June 16, 2011

I’m baaaaaaaack….

Keep tuned in… C++ / DirectX game progress incoming!

Posted by: lljkkennedy | April 14, 2010


Man, it’s been a tough ride, but the dissertation is done!
*goes to sleep*

Posted by: lljkkennedy | April 4, 2010

Automated Planning in Brief

Finished the first draft of my Planning for Dummies guide – I’d really appreciate it if you could give it a read and see if it makes any sense to you! I hope that you learn enough to understand how cool Automated Planning is 🙂

Automated Planning in Brief

I know there’s some typos and formatting issues – don’t worry about those, it’s the concept and readability I’m concerned with at the moment! 🙂

Posted by: lljkkennedy | March 30, 2010

Planning algorithm 95% finished

The last part to the HTN is finished – the planner can see what possible tasks are available in the current state, and knows how to break down complex tasks into smaller atomic operators.

That’s basically the planning stuff done. At this stage, all I need to do is actually implement it performing the actions which is just a list of functions calls as the tasks are decomposed.

To step through – If i choose the task moveStack, it will use the recursive move method to call the subtasks, in this case moveTopmostContainer and moveStack. First it calls moveTopmostContainer which is further decomposed into it’s component tasks which are primitive function calls. Once this is done, it callsmoveStack again but with one less container to move.

This keeps happening until there are no containers left on the first pile, upon which moveStack is no longer valid in the state – however, another task called doNothing would now be valid, and the task is completed.

This is visualized in the 2nd image.

Posted by: lljkkennedy | March 30, 2010

Future Work: Game Designer ease of use

Maybe an external tool can create the list of tasks, preconditions, effects etc and export to XML for the engine to use? Seperates design from code.

Posted by: lljkkennedy | March 29, 2010

Future Work: preconditions based on lighting

Maybe a predicate could check the current lighting level and that would dynamically allow the planner to turn on/off a flashlight for the agent pending on light levels?

Posted by: lljkkennedy | March 29, 2010

Bug: Agent appends preconditions onto existing ones

The Agent, during the updateState function, appends the predicates onto the current state list even if they already exist.

Fix: 2 possible, either traverse the list comparing the new precondition to the existing ones and drop it if exists already, or simply clear the list every think and repopulate it. As the preconditions are regenerated each think, it makes more sense to drop the list and rebuilt it instead of wasting computing time checking against existing ones.

Posted by: lljkkennedy | March 29, 2010

Bug: Framerate degraded by NPCThink

The NPCThink function for my Agent has to interrogate the world to get all the preconditions for the world state. Unfortunately, this destroys the frame rate because it has to traverse the full list of level entities, and the think function is called every frame.

Fix: Limit the drop into the interrogation function to only happen every 2 seconds – the state will not change so much in 2 seconds to have any effect on the performance of the planner, and this fix improves the frame rate tremendously.

Posted by: lljkkennedy | March 29, 2010


Have the thesis mostly up to date on implementation. This blog is going to turn into a bug tracker for the next two weeks as I storm through finishing the implementation and testing.

Posted by: lljkkennedy | March 23, 2010

More Progress

After digging into the engine for a bit, and some questions to the Half Life Coders mailing list, I’m got my AI Agent successfully parsing all my FYP entities in the level and querying their states. Next step is to push all this data into the actual State class, where I can then query for operations to perform.

I’ll also have to start figuring out the engine calls for performing actions, or setting the Agent’s Condition (which is how Source control actions performed )  to the appropriate ones.

100% focus on the development at the moment, aiming to have it finished by 31st March, which then leaves me 2 weeks testing and making the test level a bit more game-like. The writeup is coming strong, I’ve added a few more sections that I’d like to put in to flesh out the Automated Planning sections, and have the Implementation Chapter up to date as of before I started the Half Life coding.

Just need to focus for the next few weeks.

Older Posts »