Creature AI:

An AI framework that can be applied to classes of creatures so that they will have an array of emotional responses (e.g. anger, happiness, fright) reflected by some sort of behavior (e.g. fighting, befriending, fleeing). Perhaps implementing a notion of degree of severity of emotion (e.g. annoyed, angry, furious).


Start of Program (May 24) Familiarize self with PySoy API and how example games make use of the library, etc. Review extant game AI models. Investigate emotion's role in AI and emergent behavior.

Midterm Evaluation (July 12) Test version of the AI module that produces different output (basis of producing different creature behavior) when fed test input manually.

Final Evaluation (Aug 16)

A usable AI module with one or two very simple "game" examples of how the module may be utilized with PySoy. Documentation targeted towards PySoy game makers who are interested in using the module. Documentation will address prerequisites to using the module, what the module is meant to do, parameters that may be adjusted (e.g. different emotions, degrees of emotion, seeding value). Other unforeseen issues may also be included in this, as it becomes apparent during development and testing.

Framework implementation ideas

(This part is under heavy construction)

Initialization Generate a vector (using Python's list type) of initial configurations (also vectors) to serve as starting internal states of each individual (creature). The values in the initial configurations will a pseudorandomly generated value from the closed continuous interval [0,1]. Each value will reflect the probability of a particular emotion (each emotion is represented by a value in a particular index position) being manifested by the creature's behavior prior to any provokation by the user.

Ranking and Selection When the user enters the creature's radius, the creature's internal state values are ranked from high to low. The highest ranked state value (representative of a particular emotion) is selected. If two or more state values are equal, one is selected randomly. Another pseudorandomly generated number is selected from the closed continuous interval [0,1], representing emotional threshold. If the number is above a certain number (TBD), and the emotion taking prevalence is anger, the create will aggressively attack the user without any provokation other than being in its radius. If the number is below the threshold value, the create will withold from attacking unless the user tries to interact with him (talk, attack). Besides anger, I would also like to represent sadness and happiness (possible more?). Fear will be acted upon by fleeing, sadness by avoidance, and happiness by remaining docile. The effect of the user's action on creatures with these different emotional states will be different--attacking a fearful creature will result in their fleeing, attacking a happy creature will result in either fear or anger (fleeing or fighting). Talking to these creatures will also lead to different outcomes--fear: avoidance (may ultimately flee or warm up to you eventually--need to think more about implementing this), happiness: (will be open to talking to you--in a particular game this might be reflected by giving helpful hints or an item), anger (without the aggressiveness threshold): attack.