Foundations for Genuine Game AI

May 12, 2008 - 05:00 AM
News Topics  ·  Get Involved!  ·  Documentation  ·  Things To Do  ·  Developer
Search   
Main Menu

Community
· Game AI
· FEAR Forum
· FEAR Wiki
· Mailing List
· IRC Chat


Files
· Source Downloads
· Public CVS
· Documentation


Resources
· FAQ
· News Topics
· Web Links
· Top List
· Search


Developer
· Feature Requests
· Task Manager
· Bug Tracking

· Manage

Who's Online
We have 4 guests and 0 members online

You are an anonymous user. You can register for free by clicking here


AiGameDev.com Relaunches
Posted by: alexjc on Monday, June 11, 2007 - 10:28 AM GMT
Web Content

AiGameDev.com has relaunched with new content for those interested in Game AI Programming. It features design and development tips and tricks, as well as common software patterns for AI engines.

Also be sure to sign up to the Game AI Newsletter for links to interesting white papers and to stay up-to-date with industry trends. Also sign up if you're keen to be notified of the upcoming release of a new AI engine for decision making and control.



(2982 Reads) comments? Printer friendly page

It's Alive! Get Involved...
Posted by: alexjc on Friday, October 13, 2006 - 01:23 AM GMT
Framework
I'm working on a new project I call Alive! It's a sandbox for learning about artificial intelligence and game programming. My main motivation for Alive! to take similar concepts than FEAR (targeted towards programmers), but make them accessible to anyone. The FEAR codebase has always been clean and well commented by most standards, but beginners always struggle to get started -- despite the documentation. And that's what I want to fix with Alive!

The new architecture is based on experience from my work on the AI system at Rockstar, which in turn was derived from experience with FEAR. Things have changed a lot for the better, and particularly benefited from being written in a dynamic language like Python. The Alive! package is now a fully self-contained environment that you can launch in one click -- although there's not much to do after that yet!

Alive! has been in the works for a few months only, but I've been working on it full time. It's very likely I'll get some funding to keep this going full-time in the near future... As you can imagine, there are lots of cool things to work on in the project; see the screencast for more information. If you want to get involved, drop by in the IRC channel #alive on irc.freenode.net, or send me an email directly with the subject "Alive!".


(4298 Reads) 15 Comments Printer friendly page

New Personal Blog
Posted by: alexjc on Saturday, June 03, 2006 - 12:04 AM GMT
Web Content

I've finally put my blog online. You can find it right here. I'll be posting about my open-source work there, as this site on SourceForge is very slow and harder to maintain.

More about the future direction of the FEAR project very soon...



(2155 Reads) comments? Printer friendly page

FEAR 0.4.0 SDK Release
Posted by: alexjc on Wednesday, March 23, 2005 - 02:22 PM GMT

It's been a while since the last release, and only a small part of the code has changed (a very good sign). The 0.4.x branch is essentially an API freeze that the 0.3.x branch was building up to. This newest SDK instead focuses on fixing known problems and simplifying the process of getting FEAR up and running. And, to the delight of everyone, all the animats from my AI Game Development book are now included in the package.

Changes include:

  • Unit testing support for modules
  • Fully automated distribution
  • Major changes in the documentation
  • Reduction of dependencies, inclusion of xml tools and the template engine in the SDK
  • Fixes to support latest SCons build tool
  • Animats from the AIGD book now included!

I'm very happy with this release in general, and the framework is showing signs of maturity. It'll eventually need a bit more code to support features from dynamic languages (e.g. for a more flexible entity system), but I'll be adding some cool demos first.



(25365 Reads) 10 Comments Printer friendly page

framework: Separation of Concerns
Posted by: alexjc on Wednesday, May 12, 2004 - 05:32 PM GMT
Framework

Preparing my seminar at IPAB and thinking about my imminent re-entry back into the heart of the games industry, I've been reconsidering the future of the project. What makes FEAR useful for education and research is the fact that it is integrated with a game simulation, and the world representation is accessible via simple interfaces. What makes FEAR useful for professional game programmers is that many AI techniques are already implemented (decision trees, neural networks, fuzzy logic, rule-based system, finite state machine, etc.). I've always considered FEAR as both a research and development project, and these two different views make that clear.

  • Development -- I'm very happy with the C++ code for the AI techniques; it's been developed and tested over the past few months/years. The code is written to be intuitive, with lots of comments -- mainly for educational purposes. I would use the majority of the code in a production environment, but there are a few details that make it unattractive. First, the code is writen to expose a virtual interface, which requires two more classes (c.f. pimpl paradigm). Second, the implementation is written with many assumptions in mind, and is mainly customized by editing the code (e.g. if you want to use 'double' instead of 'float' weights in the NN).

  • Research -- Regarding the interfaces and the framework that glues the whole thing together with the Quake 2 platform. The XML models for code generation have proven useful, but they are a bit clunky and not very intuitive. (The new tutorial series makes a point of not using XML to model the brains of the animats, to show there's no dependency on it.) As for the interfaces themselves, they suffer from a simplistic object system. Coming up with a formalised model for objects in the world is quite a challenge, but I think it's essential to develop good AI. Given the progress of related initiatives, I expect this to take a bit of time.

So, short term goals are to reimplement the AI techniques using generic C++ programming. This will make the code like Boost or the STL, but for AI in realtime games. (There's a demand for this in the game AI industry.) I'll be using test driven development from the start, which should make the codebase ideal for professional AI coders. The documentation will be extracted from the litterate C++ code, and the tests will be used directly as examples. In the long term, I hope to do more research with the model-driven object/component representations -- but that's temporarily on hold.



(35153 Reads) 59 Comments Printer friendly page

framework: Preparing the 0.4 Branch
Posted by: alexjc on Thursday, April 08, 2004 - 09:07 AM GMT
Framework

The CVS repository is now in a valid state again after the clean-up and the major reorganisation. You should be able to build straight from CVS by using the build scripts (typing "scons modules demos fear build" works out of the box). The 'cvs log' mechanism works again, so it should be easier to generate a ChangeLog file.

The new structure of the project organises the source files better, so all FEAR related headers files can be found in the same subdirectory. The modules too are sorted hierarchically; for example, the neural network and decision tree modules are part of the AI namespace, etc.

Much of the work that has gone into restructuring the project will end up directly in the 0.4 branch. I'm not yet sure if I'll release 0.4 after a few more changes, or simply make an intermediate release. More soon.



(12946 Reads) 10 Comments Printer friendly page

content: Neural Network Tutorial
Posted by: alexjc on Friday, April 02, 2004 - 05:24 AM GMT
Web Content

I've put up a new issue of Exercises in Game AI Programming. This issue covers neural networks and how to get them to learn deathmatch behaviours. Specifically, the tutorial goes through the methodology to get a perceptron to solve a practical problem. The results are pretty impressive in the end -- if I may say so myself.

As usual, there was a new release, version 0.3.8 which you can find on the project site. Apart from a new neural network animat called Onno, and a refactoring of code in the first two tutorials, there are a couple minor changes.

  • I've changed the definition of the interface import procedure, so it now returns boolean value. This indicates success of the procedure to import interfaces. If the interface doesn't match in name and version, Import() should return false. But if the interface matches and the import fails for technical reasons, an exception should be thrown.
  • I've added a new mechanism for sending messages to any component. This is a very powerful concept, and part of the plan to make the FEAR components smarter and more autonomous (in preparation of the 0.4 branch). This new function is not used extensively yet, but I expect it will be as there are quite a few valid uses for it in the current codebase.

On an admin note, the CVS repository will be in an invalid state for a few days while I fix a few problems. The CVS LOG mechanism should work after the clean-up, and many of the modules and files have been reorganised. Once the SF staff make those changes go live, I'll update the build scripts to make the repository consistent again. Stay tuned!



(34464 Reads) 94 Comments Printer friendly page

download: FEAR 0.3.7 SDK Release
Posted by: alexjc on Wednesday, March 24, 2004 - 02:02 AM GMT
Downloads

Hot on the tails of the last distribution, there's been another release -- version 0.3.7. This contains a few significant changes:

  • A completely automated unit testing framework, implemented with CppUnit and SCons.
  • Reorganisation of files in the module directories, split into source files, definitions and unit testing scripts.
  • Changes in the module API to simplify interaction between the interface implementation and the private module (pimpl).
  • Abstraction of XML usage thanks to a hierarchical structured data container.
  • Support for SCons 0.95.

So there are a few source-level incompatibilities in the Load() and Save() procedures, but the modules remain binary compatible. Download from FEAR project page strongly recommended.



(19779 Reads) 13 Comments Printer friendly page

content: Rule-Based System Tutorial
Posted by: alexjc on Tuesday, March 16, 2004 - 05:53 AM GMT
Web Content

I've just put up a new tutorial about creating a Rule-Based System in a deathmatch bot. It's part of the a series called Exercises in Game AI Programming that will run over the next few months.

The series is based on FEAR and comes with the SDK by default now. Check out the new 0.3.6 release for that matter. The RBS module has been improved. The release now works with the latest Boost library. There were also various bug fixes in the new vector classes, the default workspaces and the templates.



(11779 Reads) 89 Comments Printer friendly page

download: FEAR 0.3.5 SDK Release
Posted by: alexjc on Tuesday, March 02, 2004 - 02:56 AM GMT
Downloads

There's a new release of FEAR, version 0.3.5 in the form of a SDK, both installers and compressed archives. (It seems the most popular format.) There are quite a few changes again, but the CVS LOG mechanism is still broken so the ChangeLog is still missing.

Essentially, two new data-structures have been introduced: euler Angles and SpheriCoord (3d polars). They both have similar formats to Vec3F, but they have been separated from the standard 3D vectors to make the interface definitions more explicit. A few interfaces have been changed in the process (Motion, Physics, Vision, Navigation), replacing Vec3f with these datastructures where appropriate.

Another change in the DLL interface also cause binary incompatibity -- but allows the framework to detect compilation errors better. Download the release right here.



(26381 Reads) 59 Comments Printer friendly page

Poll
Attitude towards Lisp/Scheme?

Never heard of it
Heard of it, willing to try
Some knowledge, don't like it
Reasonable expertise, great language


[ Results | Polls ]


Votes: 731
Comments: 9


Other Stories
· Separation of Concerns (May 12, 2004)
· Preparing the 0.4 Branch (Apr 08, 2004)
· Neural Network Tutorial (Apr 02, 2004)
· FEAR 0.3.7 SDK Release (Mar 24, 2004)
· Rule-Based System Tutorial (Mar 16, 2004)
· FEAR 0.3.5 SDK Release (Mar 02, 2004)
· Library Manual (Feb 24, 2004)
· FEAR 0.3.4 Release (Feb 10, 2004)
· Object Systems (Feb 02, 2004)
· FEAR 0.3.3 Base Release (Jan 22, 2004)

User's Login
 Username
 Password
 Remember me


Don't have an account yet? You can create one. As a registered user you have some advantages like a theme manager, comments configuration and posting comments with your name.

Past Articles
Tuesday, February 24
·Library Manual (31)
Tuesday, February 10
·FEAR 0.3.4 Release (72)
Monday, February 02
·Object Systems (26)
Thursday, January 22
·FEAR 0.3.3 Base Release (35)
Tuesday, December 30
·FEAR 0.3.2 SDK Released (0)
Monday, December 08
·New Docbook Documentation (0)
Monday, October 27
·Next Release (0)
Thursday, August 21
·Packages Merged (23)
Sunday, June 15
·Design Review (0)
Wednesday, June 11
·Sleepless Designers (1)
 Older Articles