Tuesday, September 22, 2009

PathBuilder part 1

Today I have made sure that my PathBuilder(as I would like to call it) application actually generates the necessary sectors (axis aligned boxes) and portals (clip planes that connect sectors together). See the two previous posts for more info about what this app does.

Now the user can click on a position with the mouse where the path-data generation should start scanning from:


As you can see that the sectors are displayed with some alpha and portals displayed with full alpha and red color(some flickering appears but this is only due to the fact that the portals are placed at perfect alignment to the "sector walls", hence they are called clip planes). The app still doesn't perform accurate collision tests though, so there are still some errors left.



It also saves the generated information to a XML structured file. You can view a full copy of the generated file for the above sample here.

Also, today I've started reading some articles about state of the art AI and found a really interesting article based on the game Fear. Here's the link to it http://aigamedev.com/open/reviews/fear-ai/, this is probably what I will be spending my time on for the rest of this week and I really recommend you to read it if you are interested in advanced AI programming, for games of course.

Sunday, September 20, 2009

Follow up

This post is a follow up of the previous post I made.

As I mentioned, there is a new [sub] project on the rise but as of now I can't really tell you much about it other than it will be a RTS styled game.
What I can show you is a few screen shots from a demo that show unit selection:



The demo performs box and single-click selections like in any standard RTS game.
Although currently it doesn't work on the per polygon level, it checks against the objects bounding boxes.
About 30-40 % of the visual aspects and mechanics of this demo is scripted. And don't mind the visuals, they are of course place holders!

Stay tuned for more!

So little time to blog...

I haven't had much time to update my blog the last weeks, the good news is that the reason for that is because I have been completely working my ass of.
I'll try to sum up the progress I made since the last post and show a few screenys while I'm at it.

This is it in a nutshell:
* Solved linker errors (Obviously ^^)
* Helper application for creating binding code to Lua
* Continued expanding framework
* Framework almost completely bound to Lua scripting language, (and most of the core functionality of Ogre and PhysX)
* Ability to run scripts and script code from console
* Added simplified game objects(Scenery, Bodies, Models, and more) , all scriptable.
* Added ObjectFactory for straightforward game object creation
* Simple GUI objects (mouse cursor and images)
* Implemented very easy way of performing ray-scans and per-object selections
* Learned how Ogre compositor(post-process shaders) works and got a Bloom shader working (next will be HDR =) )
* Nailed all memory leaks down (there are a few left that comes from third party libs and will be fixed by their founders)

There is probably loads of stuff that I simply forgot to mention now but all that will hopefully be appear in later posts.


Here's how bloom looks like:



The wipeout-styled ship in the screenshots where made by a fellow student of mine (Gunnar Fors)
Many thanks goes to him for lending me his model and textures!


Last week I also made a application that will help me in a new sub project (more info about this project coming up).
Following this article http://www.gamasutra.com/features/20020405/smith_01.htm, the application steps through a scene of any complexity and returns a set of path-finding information that could later be used to navigate a AI character through a game world.
Here are some screen shots:




The green space are the scanned area and the red boxes is optimized axis aligned bounding boxes (called sectors in the article).
At the moment it doesn't actually perform collision test on the scenery (only simple ray-scans), the small box in the middle will be used for that, and it only operates on the xz plane. Luckily these problems are not that trivial to fix(and will be in the future).

I'll have to continue this post with a follow up, otherwise I'll hit the image limit.