Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Opened 14 years ago

Last modified 12 years ago

#134 reopened task

Artificial Intelligence for NPCs

Reported by: patrick Owned by: nobody
Priority: minor Milestone: Old Orxonox tickets orx-v0
Component: AI Version:
Keywords: Cc:
Referenced By: References:

Description

Create a plugable AI module for all NPCs:

  • Ractions triggered by:
    • entering a region in the world
    • doing some action (shooting, pushing bottons)
  • Some simple default reactions implemented in c++
  • Reaction can be defined via Lua scripts

Change History (7)

comment:1 Changed 14 years ago by bknecht

AI theory

AI of NPCs is mainly a bunch of rules the NPC follows when something is happening. There are three tasks when programming an AI for NPCs:

  • How does the NPC get information from the world and the surroundings?
  • What does the NPC do with this information?
  • How can the NPC interact with the world?

AI can be easy or complicated. In Games we know there are three different AI's:

  • Simple AI: The NPC sees the player, he turns to him and shoot. (used in old jump&run-games. Not very brainy)
  • AI with inner states: The NPC sees the player he get alerted (inner state). When the player hides, the NPC doesn't forget that the player was there, but try to take the player out of his hiding place (throws a grenade or follows him). The NPC can be on alert and do things different even when there is no new impuls from the world anymore.(used in HALO for example)
  • Sub-AI's: The NPCs are an organized group. They try to surround the player and try to ambush him. This AI was used in Far-Cry.

comment:2 Changed 14 years ago by bknecht

Another addition which came to me while running in the forest:
A friend of mine once programmed a simulation of flock behavior (Schwarmverhalten). Since we will probably have some mid-"air" combats with spaceships, the AI should be able to fly in flocks and formation.
If needed I can get my friends concept of flocks (of course it's all open source).

comment:3 Changed 14 years ago by patrick

I would like:

  • AI that learns. I am so sick of AI not keeping a log of encounters. There are many learning algorithms out there and none of them apply to full emersion games (like SWG or WoW) and its because there are too many variables—too many parameters to build the small dimensional vector fields of the Win or Learn Fast (WoLF) algorithm. This isn't the only kind of learning though, what about statistical analysis of prior opponents? "I'm a level 54 mage encountering a level 52 warrior, my odds of survival are x% based on past encounters with warriors two levels below me…" Yes, it's pre-canned statistical analysis but things like this could seriously act as a good heuristic for many games.
  • If you reduce the game space or find some really good heuristic (as in the above), dumb it down. Meet the user's pleasure level. It should be a challenge but not such a challenge that victory is unattainable.
  • Use your imagination. That's all I'm going to say about that one. There is no cookbook for heuristics … learn to throw things at the user.
  • Introduce long term "bounty hunter" style AI. I would enjoy an AI that sleeps and is constrained like I am. Introduce simple work parsers to our enemies. The closer you can come to interacting with me on the level of a real human, the more I'm going to like it. I know there are robots out there that understand basic human speech, why can't there be games where we receive phone calls or e-mails from assassins in real life? I know this sounds ridiculous, but make me afraid of my foe outside the game. Get in my head.
  • Introduce random variables. I don't care if you have to build in mechanisms to your game that are illogical so that the AI sometimes goofs up. All humans are fallible at a certain point and if you have differing levels of predictability in your AI, the user will love it.

No NPC should stand by idly as I charge toward it with weapons drawn.

  • If I swiftly and easily kill all N-1 enemies in a group, the Nth one ought to get a clue and run away with its tail between its legs, beg for mercy or at least try a different strategy.
  • No NPC should forget about me simply because I walk out of its view.
  • NPCs should use teamwork.

comment:5 Changed 12 years ago by bknecht

  • Resolution set to invalid
  • Status changed from new to closed

comment:6 Changed 12 years ago by bknecht

  • Milestone changed from 0.5.0_basic_single_player to Old Orxonox tickets

Milestone 0.5.0_basic_single_player deleted

comment:7 Changed 12 years ago by bknecht

  • Resolution invalid deleted
  • Status changed from closed to reopened
Note: See TracTickets for help on using tickets.