Re: Ideas for an AI scheme

Stuart Golodetz <[email protected]>
Newsgroups gmane.games.devel.algorithms
Message-ID <[email protected]>
Ryan Juckett wrote:
>
> Given that you mention building a "composite behavior" from the tree, 
> I'm assuming you are looking to build a concurrent hierarchical finite 
> state machine rather than a standard HFSM. In a concurrent HFSM, a 
> node in the tree might have multiple active child states running at once.
>
To be honest, I hadn't got much further than the design I originally 
suggested (well, I have a few more diagrams this end). By "composite 
behaviour" I guess I effectively meant branch nodes in a behaviour tree. 
I'd realised there were going to be some concurrency issues involved 
when I got round to building the behaviour trees, but I hadn't really 
come across the idea of a concurrent HFSM. I think it possibly sounds a 
little over my head at this point :), but it does seem an interesting 
approach. Are you thinking that a standard HFSM won't be ideal for what 
I'm trying to do though? I'm trying to come up with something I can do 
in the time really (I'm writing up a PhD thesis at the same time and 
trying to get the game up and running so I can use it as a demo for job 
interviews among other things, although I ideally also want it to be 
quite flexible).
>
> I've used concurrent HFSMs on multiple titles in the past. The 
> heaviest use of the system was from a third person shooter. The 
> ability to reuse and combine small sub-states to create more 
> complicated behavior proved very useful. For example, different 
> behaviors of moving, aiming, and reloading could all be built 
> separately and then mixed and matched based on higher level 
> transitions (e.g. on a vehicle, hiding in cover, fighting from cover). 
> It was also fairly easy to append new concurrent behaviors onto an agent.
>
> There were two main downsides to the system that I recall. The first 
> was related to the complexity of it all. In a non-concurrent system, 
> you are only in a single branch at any given time. This makes it much 
> easier to visualize what is happening in the agent as well as debug 
> how you got to a given state. It is also a bit easier to grasp the 
> behavior design in a non-concurrent system. By the end we had ambient 
> animals, enemies, scripted allies, vehicles, bosses, and so on all 
> able to start mixing and matching these behavior building blocks. It 
> wasn't that fun to digest.
>
> The second issue was related to different concurrent behaviors 
> fighting for control of a similar feature (e.g. movement). When new 
> features are added, it is easy for conflicts to crop up which require 
> messing with the hierarchy a bunch to work out. To alleviate this 
> nightmare, we ended up supporting multiple "requests" to different 
> systems. For example, if one behavior was telling an agent to move 
> towards cover and then another behavior was telling him to evade an 
> incoming vehicle, the commands from the vehicle evasion could be set 
> as a higher priority. I don't think this is the best solution, but it 
> was much more successful in creating a stable game on schedule than 
> trying to constantly rework the hierarchy.
>
> As for editing the state machines, it was all in the custom scripting 
> language used by the rest of the game. Having a graphical interface 
> would have been great, but the priority of it never worked its way 
> high enough up the todo list. The states were basically just data 
> structures (similar to the XML approach you suggest but probably much 
> less verbose with syntax). At least 99% of the transitions and states 
> were written in C++ for performance reasons although we did support 
> scripted ones.
>
> If you are doing a smaller indie game, I think it would be fine to 
> text edit stuff and the system as a whole should work. As for doing a 
> very large scale big budget game, I'd definitely weigh all your 
> options. I've since become a fan of systems where the transitions were 
> automatically generated for lower level AI behavior - something like a 
> goal/action approach.
Automatically-generated transitions sound interesting - any useful links 
by any chance? (I tried Googling for "fsm automatic transition 
generation goal action" but got a load of stuff on automatic code 
generation instead unfortunately...)

Cheers,
Stu
>  - Ryan
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev 
> ------------------------------------------------------------------------
>
> _______________________________________________
> GDAlgorithms-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list
> Archives:
> http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev

_______________________________________________
GDAlgorithms-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gdalgorithms-list
Archives:
http://sourceforge.net/mailarchive/forum.php?forum_name=gdalgorithms-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.