Sunday, March 16, 2008

The Ultimate AI Sandbox

It's always good to dream about the ultimate and then scale back to the achievable.

What features would our dream framework have?

Project Wizard

This is what I had earlier called an Automated Sandbox Generator. It would be nice to have a wxPython application that can generate C++ projects once you tell it what platform and options you need.

This made me think about the Sandbox concept in general. (More research!) Maybe some people think it should just be a single application. If you want to write usable AI or get a job in 'The Business' seems like you need to be writing some C++ anyhow. This could change once/if scripting support gets implemented.

3D Graphics

I think Ogre fits the bill nicely. I put the visualization code into it's own subcomponent and used a separate math library if I ever decide to go with something different. A renderer plugin system would be nice where you could switch between libraries but that would be a lot of work and it seems unnecessary.

Physics

I am almost to the point of implementing a physics plugin system. Right now they are implemented as static libraries. One is a wrapper for ODE. The other is a templated impulse based engine I wrote. I may decide to just use Bullet's impulse system instead.

PhysX integration? More research on my part. Doesn't look as flexible as ODE and Bullet.

Path Finding

People could just use Boost A* like I do, or design a path finding engine interface. Not sure.

Steering

Right now I'm using OpenSteer, it might be fun to do an in-house library though. Turtles! =)

Messaging

Botworx has a messaging system I wrote that uses Boost for serialization support to send them between processes and machines. It works for me!

Networking

I need to toss out the socket classes I wrote and replace them with Boost ASIO is what I'm thinking.

Scripting

More work.

The Wrap Up

That is all I can think of right now. It seems like they are listed by priority also. Leave a comment if you think of anything!

No comments: