FEAR SDK - For building AI characters
by Saurav Mohapatra · 03/28/2004 (2:19 pm) · 3 comments
FEAR is a language independent open-source project providing portable support for the creation of genuine Artificial Intelligence within realistic simulated worlds (**phew** ;). It stands for Flexible Embodied Animat aRchitecture... that sounds great if you pronounce that last word by rolling your 'R'! We're trying to bring the best of AI to games, and the best of games environments to AI.
What does FEAR provide?
Essentially, we've drafted a specification, designed a framework (with language specific functionality to support AI systems), we've created a toolset (to enhance development & optimize the software), we've implemented modules with common AI techniques, and defined interfaces with game environments. This allows AI programmers -- hobbyist, researchers and professionals -- to spend less time on the boring details, and get to the interesting design and experimentation; less programming, more AI engineering! We're not providing prefabricated 'miracle' middleware, we're building a generic framework for AI development with a collection of building blocks, and methodologies to extend the system.
How does FEAR work?
After months of researching, endless experimentation and numerous prototypes borrowing technology from many fields, we're finally happy with the AI centric base design - although there's still a lot of work to be done... Essentially, all AI techniques can be seen as modules each providing interfaces; yes, it's common sense OO but few AI projects emphasize this, focusing on single techniques and narrow solutions. Instead, we're looking at the bigger picture, specifically to enhance the benefits of AI OO using abstraction, common functionality and good tools. Most importantly, we provide an easy way to bring all these AI components together (using modern ideas in software architectures) to create intelligent systems.
Doesn't this incur overheads?
The design is indeed very flexible, which makes for fast prototyping, easier debugging and experimentation. Our C++ architecture can replicate most of this flexibility at runtime, so the AI knowledge of the engineer is the bottleneck -- not the programming skills. Despite being surprisingly efficient, in some cases this flexibility is just not worth the runtime penalty. That's where the power of our toolset comes in; a great majority of the 'glue code' is automatically generated, so we can insert different templates and use meta-programming to generate a fully hard-coded architecture. You can get the best of both worlds; flexibility and efficiency at a fraction of the cost.
Is this applicable to synthetic characters?
Of course... frankly, we're struggling to find a domain that can't benefit ;) Artificial creatures can be understood as a body and a brain. It sounds simple, but you'd be surprised how much this simplifies design decisions! The body is subject to the constrains of the world, and the brain is a smart agent that receives information and tries to act accordingly. This is called embodiment when the body is simulated in a biologically plausible fashion. You'll rarely see genuine embodiment; game developers tend to discard this as unnecessary or too computationally expensive. We propose -- along with leading behavioural researchers -- that this is the key to realism and believability. When done right, we also argue that this can be done without overheads, instead simplifying the process. Our existing interfaces help in that respect, and can also be plugged into any game engine (with a bit of work).
Have you got any demos?
Yes. Indeed these are great principles, but FEAR is more than just another crazy theory! On the modular level, we've implemented a few AI techniques; variations of neural networks have been uploaded, and we have another few prototypes on their way (genetic algorithms, decision trees...). With regards to AI architectures and artificial creatures, we have some toy examples in the development kit. These are embodied 'animats' that interact with their world, notably using steering behaviours. To calm the critics, we also have a genuine animat capable of learning movement behaviours, assimilating the terrain and dynamic planning -- while interacting with other players (small improvement are required in the framework, but it will be ported soon). We're also working on standard 'bots' that can cheat to get a bit more information if they want!
What does FEAR provide?
Essentially, we've drafted a specification, designed a framework (with language specific functionality to support AI systems), we've created a toolset (to enhance development & optimize the software), we've implemented modules with common AI techniques, and defined interfaces with game environments. This allows AI programmers -- hobbyist, researchers and professionals -- to spend less time on the boring details, and get to the interesting design and experimentation; less programming, more AI engineering! We're not providing prefabricated 'miracle' middleware, we're building a generic framework for AI development with a collection of building blocks, and methodologies to extend the system.
How does FEAR work?
After months of researching, endless experimentation and numerous prototypes borrowing technology from many fields, we're finally happy with the AI centric base design - although there's still a lot of work to be done... Essentially, all AI techniques can be seen as modules each providing interfaces; yes, it's common sense OO but few AI projects emphasize this, focusing on single techniques and narrow solutions. Instead, we're looking at the bigger picture, specifically to enhance the benefits of AI OO using abstraction, common functionality and good tools. Most importantly, we provide an easy way to bring all these AI components together (using modern ideas in software architectures) to create intelligent systems.
Doesn't this incur overheads?
The design is indeed very flexible, which makes for fast prototyping, easier debugging and experimentation. Our C++ architecture can replicate most of this flexibility at runtime, so the AI knowledge of the engineer is the bottleneck -- not the programming skills. Despite being surprisingly efficient, in some cases this flexibility is just not worth the runtime penalty. That's where the power of our toolset comes in; a great majority of the 'glue code' is automatically generated, so we can insert different templates and use meta-programming to generate a fully hard-coded architecture. You can get the best of both worlds; flexibility and efficiency at a fraction of the cost.
Is this applicable to synthetic characters?
Of course... frankly, we're struggling to find a domain that can't benefit ;) Artificial creatures can be understood as a body and a brain. It sounds simple, but you'd be surprised how much this simplifies design decisions! The body is subject to the constrains of the world, and the brain is a smart agent that receives information and tries to act accordingly. This is called embodiment when the body is simulated in a biologically plausible fashion. You'll rarely see genuine embodiment; game developers tend to discard this as unnecessary or too computationally expensive. We propose -- along with leading behavioural researchers -- that this is the key to realism and believability. When done right, we also argue that this can be done without overheads, instead simplifying the process. Our existing interfaces help in that respect, and can also be plugged into any game engine (with a bit of work).
Have you got any demos?
Yes. Indeed these are great principles, but FEAR is more than just another crazy theory! On the modular level, we've implemented a few AI techniques; variations of neural networks have been uploaded, and we have another few prototypes on their way (genetic algorithms, decision trees...). With regards to AI architectures and artificial creatures, we have some toy examples in the development kit. These are embodied 'animats' that interact with their world, notably using steering behaviours. To calm the critics, we also have a genuine animat capable of learning movement behaviours, assimilating the terrain and dynamic planning -- while interacting with other players (small improvement are required in the framework, but it will be ported soon). We're also working on standard 'bots' that can cheat to get a bit more information if they want!
About the author
#3
buy the book ISBN 1-5927-3004-3
anybody port FEAR to Torque?
10/01/2006 (2:18 am)
check out aigamedev.combuy the book ISBN 1-5927-3004-3
anybody port FEAR to Torque?
Torque Owner Romano Del Vecchio