JavaScript EditorFree JavaScript Editor     Ajax Editor 

Main Page
  Previous Section Next Section

World Interface

The exchange of information with the world is an extremely important part of AI. For animats, this takes the form of interfaces between the brain and the body. In terms of information flow, this leads to two different types of interfaces:

  • Sensors provide a way to acquire information from the surrounding environment.

  • Effectors allow the brain to control the body to act upon the world.

Although it is possible to separate these two types of interfaces in the implementation, FEAR no longer imposes this. Respecting this convention is unnecessary and leads to overly complex code. Instead, it's more convenient to group world interfaces by functionality:

  • Weapon interface allows query of the state of the weapon, change and reload, and then actually use it.

  • Movement interface allows forward/backward and side steps to be performed, as well as turning actions.

  • Physics interface allows the animat to query its internal state: in water, midair, or colliding with a wall.

This approach generally reduces the amount of code required to implement the interfaces. Also, this separation enables you to import different functionality into the AI independently.

The implementation of the world interfaces is called the backend (as far as the AI is concerned). FEAR's framework can be plugged in to arbitrary platforms (for instance, game engines) that implement the backend for the interfaces.

Currently, the recommended platform supported by FEAR is Quake 2. The engine offers a great variety of game types, enabling programmers to develop animats for deathmatch, single player, or even capture the flag. The low-key graphics leave much computational power to the AI. There is tremendous community support for the game, including custom levels and various tools. The entire source code is available, too, making Quake 2 one of the best choices for pure AI development.

      Previous Section Next Section

    JavaScript EditorAjax Editor     JavaScript Editor