Verj_Ohnfran

Behavior Potential uses for Psychology based game AI

Recommended Posts

Hello,

I have designed an AI system for games that replicates cognitive psychology models and theories, so that NPCs and other virtual characters can behave in more human-like and interesting ways.

I have built a prototype in the Unity game engine, and it can produce quite complex behaviour, including learning and creativity. I am now wanting to develop it further and am looking for people or organisations to help. I am thinking about how I could present my AI system, and what would be a good way of demonstrating it. If you have any suggestions it would be great to hear them. 

I have a website that explains my AI system in detail:

 

www.electronicminds.co.uk

 

If you have any comments about the AI system, or know anyone who might be interested in helping to develop it, I would really appreciate hearing from you.

Thanks for the help.

Share this post


Link to post
Share on other sites
alvaro    21266

Real progress in AI requires a metric by which to evaluate progress. If you can define quantitatively how satisfied you are with the behavior of your agents, you can always tweak things to improve it. Otherwise, you'll be flying blind.

What you describe is an open-ended project with ill-defined [if at all defined] goals. I don't believe this will lead anywhere. Hey, you asked. :)

 

Share this post


Link to post
Share on other sites
Scouting Ninja    3975
1 hour ago, Verj_Ohnfran said:

I have built a prototype in the Unity game engine

Then why not share that prototype. As is all you have is a few images and a movie, both very easy to fake.

 

Also isn't this just a state machine with data trees?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By menyo
      I'm currently testing out behaviortree's with the LibGDX AI library. I have read a lot about behaviortree's past couple days but it's hard to get clear how I need to build the tree for my specific scenario. I'm looking to use a behaviortree for a Rimworld like game where the players units are not directly controllable. In the first place I'm wondering if I should have a single big tree for the complete AI or many smaller tree's, for example a separate tree for:
      Moving an item Building a building Crafting an item Resting when sleepy Eating when hungry In the examples I have seen they all talk about a "single job". Like entering a building, GoTo -> Open Door -> GoTo -> Close door. But what if I need to check if I have the keys on me? And I need to check a lot of these variables.
      When A unit is Idle I'd like him to maintain his primary needs if he has access to them. If his needs are satisfied enough he can take on certain jobs like building walls or crafting items. I have a a lot of different jobs but jobs like building or crafting items are relatively the same with a different outcome so I could probably make a abstract job for that, it helps but I will still end up with a really huge tree though.
      Another issue I'm facing is that when tasks are running, and something more important pops up (enemy spotted or some kind of emergence task) the unit should stop it's current task and act accordingly to the interruption. So since the task is running I need to do those checks on each runnable task then returned failed/cancelled and further down the sequence I need to do another check for these interruptions and handle them accordingly. I have briefly read into dynamic branches, not sure if GDX AI supports this but adding a behavior to the tree to handle an interruption seems a good idea. These dynamic branches also opens the opportunity to hold behaviors at the jobs and once a unit accepts a job it inserts that branch into it's own tree.
      I hope I'm clear, it's hard to explain and get a global view of a complex behavior tree. I have read several times that behavior tree's are very easy to understand and implement. Well, that might be the case for those small tree's I find everywhere. On the other hand I might be over complicating things.
    • By ApochPiQ
      I've just posted a pre-release edition of Curvature, my utility-theory AI design tool. Curvature provides a complete end-to-end solution for designing utility-based AI agents; you can specify the knowledge representation for the world, filter the knowledge into "considerations" which affect how an agent will make decisions and choose behaviors, and then plop a few agents into a dummy world and watch them run around and interact with things.
      Preview 1 (Core) contains the base functionality of the tool but leaves a lot of areas unpolished. My goal with this preview is to get feedback on how well the tool works as a general concept, and start refining the actual UI into something more attractive and fluid. The preview kit contains a data file with a very rudimentary "scenario" set up for you, so you can see how things work without cutting through a bunch of clutter.
      Give it a test drive, let me know here or via the Issue Tracker on GitHub what you like and don't like, and have fun!
    • By Marc Klein
      Hello,
      I'm using BMfont to create a Bitmap font for my text Rendering. I noticed some strange behaviour when I use the option "force Offsets to Zero".
      If I use this option my rendering resultions looks ok, but without it, there is some missing space between some characters.
      I attached the BMFont configuration files and font that I used.
      In the rendering result with variable Offset you can see that there is missing space right next to the "r" letter.
      To get the source and destination of my render rectangles I basically to following:
      void getBakedQuad(const fontchar_t* f, int* x_cursor, int * y_cursor, SDL_Rect* src, SDL_Rect* dest) {
      dest->x = *x_cursor + f->xoffset;
      dest->y = *y_cursor + f->yoffset;
      dest->w = f->width;
      dest->h = f->height;
      src->x = f->x;
      src->y = f->y;
      src->w = f->width;
      src->h = f->height;
      *x_cursor += f->xadvance;
      }
      Has somebody noticed a similar behaviour?
      orbitron-bold.otf
      SIL Open Font License.txt
      variable_offset.bmfc
      variable_offset.fnt


      zero_offset.bmfc
      zero_offset.fnt


    • By codeliftsleep
      I'm building an American football simulation(think football manager), and am wondering about the best way of implementing AI based on various inputs which are weighted based on the personality of the NPC...I have a version of Raymond Cattell's16PF model built into the game to be able to use their various personality traits to help guide decisions.
      I am going to use this extensively so I need this to be both flexible and able to handle many different scenarios.
      For instance, a GM has to be able to decide whether he wants to resign a veteran player for big dollars or try and replace them through the draft. They need to be able to have a coherent system for not only making a decision in a vacuum as a single decision but also making a decision as part of a "plan" as to how to build the team...For instance it makes no sense for a GM to make decisions that don't align with each other in terms of the big picture. I want to be able to have the decisions take in a wide range of variables/personality traits to come up with a decision. 
       
      There is no NPC per se...There isn't going to be any animations connected to this, no shooting, following, etc...just decisions which trigger actions. In a situation like a draft, there is one team "on the clock" and 31 other teams behind the scenes working on trying to decide if they want to try and trade up, trade down, etc which can change based on things like who just got picked, the drop off between the highest graded player at their position/group and the next highest graded player in that position/next group, if a player lasts past a certain point, etc...
      There needs to be all of these things going on simultaneous for all the teams, obviously the team on the clock is goifn to have to decide whether it wants to make a pick or take any of the offers to move down in the draft from other teams that might want to move up, etc..
      So I am planning on making use of something called Behavior Bricks by Padaone Games( bb.padaonegames.com )which is a Behavior Tree but in conversations with others who have worked on AI in major projects like this(EA sports) they said to combine this with a State Machine.
      My question is would I be able to do this using just Behavior Bricks or would I need to build the state machine separately?  Is there something else already created for this type of purpose that I could take advantage of?
  • Popular Now