Skip to content

Planning Muli-unit Manoeuvres using HTN and A*

Array ( [blocks] => specificItem [show] => [itemId] => 15212 [exactSize] => 200 [itemFrame] => none [albumFrame] => none ) Array ( [blocks] => specificItem [show] => [itemId] => 15218 [exactSize] => 200 [itemFrame] => none [albumFrame] => none )
Error (ERROR_STORAGE_FAILURE)
  • in modules/core/classes/GalleryStorage.class at line 494 (GalleryCoreApi::error)
  • in modules/core/classes/Gallery.class at line 202 (GalleryStorage::search)
  • in modules/core/classes/helpers/GalleryUserGroupHelper_simple.class at line 105 (Gallery::search)
  • in modules/core/classes/GalleryCoreApi.class at line 1876 (GalleryUserGroupHelper_simple::fetchGroupsForUser)
  • in modules/core/classes/helpers/GalleryPermissionHelper_simple.class at line 64 (GalleryCoreApi::fetchGroupsForUser)
  • in modules/core/classes/helpers/GalleryPermissionHelper_simple.class at line 39 (GalleryPermissionHelper_simple::_fetchAccessListIds)
  • in modules/core/classes/GalleryCoreApi.class at line 501 (GalleryPermissionHelper_simple::fetchAccessListIds)
  • in modules/core/classes/helpers/GalleryUserHelper_simple.class at line 76 (GalleryCoreApi::fetchAccessListIds)
  • in modules/core/classes/GalleryCoreApi.class at line 566 (GalleryUserHelper_simple::hasItemPermission)
  • in modules/imageblock/classes/ImageBlockHelper.class at line 217 (GalleryCoreApi::hasItemPermission)
  • in modules/imageblock/classes/ImageBlockHelper.class at line 93 (ImageBlockHelper::_getBlockData)
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc at line 1352 (ImageBlockHelper::loadImageBlocks)
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc at line 867
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc(1229) : regexp code at line 1
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc at line 1229
  • in ??? at line 0
  • in /home/aarmgorg/public_html/journal/wp-includes/plugin.php at line 213
  • in /home/aarmgorg/public_html/journal/wp-includes/post-template.php at line 230
  • in /home/aarmgorg/public_html/journal/wp-content/themes/barthelme/page.php at line 12
  • in /home/aarmgorg/public_html/journal/wp-includes/template-loader.php at line 75
  • in /home/aarmgorg/public_html/journal/wp-blog-header.php at line 16
  • in /home/aarmgorg/public_html/index.php at line 4
1
Error (ERROR_STORAGE_FAILURE)
  • in modules/core/classes/GalleryStorage.class at line 494 (GalleryCoreApi::error)
  • in modules/core/classes/Gallery.class at line 202 (GalleryStorage::search)
  • in modules/core/classes/helpers/GalleryUserGroupHelper_simple.class at line 105 (Gallery::search)
  • in modules/core/classes/GalleryCoreApi.class at line 1876 (GalleryUserGroupHelper_simple::fetchGroupsForUser)
  • in modules/core/classes/helpers/GalleryPermissionHelper_simple.class at line 64 (GalleryCoreApi::fetchGroupsForUser)
  • in modules/core/classes/helpers/GalleryPermissionHelper_simple.class at line 39 (GalleryPermissionHelper_simple::_fetchAccessListIds)
  • in modules/core/classes/GalleryCoreApi.class at line 501 (GalleryPermissionHelper_simple::fetchAccessListIds)
  • in modules/core/classes/helpers/GalleryUserHelper_simple.class at line 76 (GalleryCoreApi::fetchAccessListIds)
  • in modules/core/classes/GalleryCoreApi.class at line 566 (GalleryUserHelper_simple::hasItemPermission)
  • in modules/imageblock/classes/ImageBlockHelper.class at line 217 (GalleryCoreApi::hasItemPermission)
  • in modules/imageblock/classes/ImageBlockHelper.class at line 93 (ImageBlockHelper::_getBlockData)
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc at line 1352 (ImageBlockHelper::loadImageBlocks)
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc at line 867
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc(1229) : regexp code at line 1
  • in /home/aarmgorg/public_html/journal/wp-content/plugins/wpg2/wpg2embed.inc at line 1229
  • in ??? at line 0
  • in /home/aarmgorg/public_html/journal/wp-includes/plugin.php at line 213
  • in /home/aarmgorg/public_html/journal/wp-includes/post-template.php at line 230
  • in /home/aarmgorg/public_html/journal/wp-content/themes/barthelme/page.php at line 12
  • in /home/aarmgorg/public_html/journal/wp-includes/template-loader.php at line 75
  • in /home/aarmgorg/public_html/journal/wp-blog-header.php at line 16
  • in /home/aarmgorg/public_html/index.php at line 4
1
Fastest take away slide ever!

William van der Sterren, AI Consultant at CGF-AI and Remco Straatman in the panel discussion.

William’s presentation will discuss the application of HTN and A* to help plan and coordinate groups of units. In the context of a turn-based strategy game, he’ll show how a planner can be used offline to create stimulating new scenarios for current games without the need for manual scripting.

Interesting application of planning on doing strategy in action based games. Would be great if it got fast enough for real time RTS and FPS use. I merged the panel questions onto the end of this – R is Remco Straatman.


Going to treat HTN planning like pathfinding, starting with a node and working on it step by step. The difference to pathfinding is that planning can have combinational explosions of complexity.

PlannedAssault is a mission planner for ArmedAssault which generates a combined arms assault for the user, which basically outputs unit commands and choices – the mission script. These games have a large amount of units but it is hard to have a meaningful defence or assault.

While it is an offline planner, it does have to deliver it to the player in a few minutes. Has to explain what the human has to do as well, as well as when things fail to plan from human-placed units, tell the human!

Military options also often plan backwards from the result they want so the planner can deal with this, as well as normal forward planning.

Basic military action is form up, then formation attack. When planning military actions, there are valid working plans which are terrible ideas, such as sending tanks into woods and infantry in the open.

Hierarchical Task Network Planning is about taking a task and decomposing it into different parts. When a task is chosen its actions are refined into a set of partially ordered tasks – example is TransportedMove with a passenger.

Can bias the players choice of vehicle or action – so if a truck driver, prioritise the use of trucks even if they could walk the distance in a similar time.

Cost estimates are done on assumptions – no obstacles, max speed, and preference for truck usage to move around.

A normal implicit planner will check lots more plans and combinations then is usually feasible (such as 16,000 waypoint nodes). Making it explicit means you can specify depth, amount of plans to return and so forth – which helps when you have 3 transports with 3 passengers, with hundreds of combinations normal.

Doing backwards planning from military manuals – such as an air assault, goes “how do you want troops to end up” which gives “how you attack” then “what units are in what air vehicle” and so on back and back.

This helps cut down the possibilities, and is natural for the military.

Panel Discussion

Why did you choose HTN not STRIPs or anything?
R: Had a look at FEAR’s work and had an implimented version of it, but when there was the possibility of actions being needed to use in order, and designers wanting more control or adding new enemy types, it was a case at looking at other ones. HTN was used since you can handle procedural preconditions, and can do designer made actions.

Any difficulties doing HTN on PS3?
R: Yes, mainly speed and when it had combinational explosions. There was optimisations mainly in the interpreter, so the main plan classes didn’t need as much work. Looking to get overall speed improvements however next time.

How do you make the AI not look completely dumb if planning fails?
R: Very feasible to make the last branch a fallback behaviour as one way to deal with it. Having tools to show why certain parts of the plan failed also helps – the level designers need training to get used to stopping the simulation when something doesn’t go right.

{ 6 } Comments

  1. Perante à sociedade é obrigatório, homem que não arruma namorada é chamado de gay se realmente for gay é chamado de Cabasso e se for mulher vai ser chamada de encalhada.Se você guentar a pressão da sociedade é facultativo.

  2. car insurance quotes | June 4th, 2016 at 21:53 | Permalink

    This is a Tribal War.Most White people have not figured it out yet.I am waiting.The peasants will pogram the jews send the mexicans and negroes back to where ever.When it starts maybe some leaders will try and join in.

  3. I got my nook frozen., your instructions worked fine..I was able to disassemble the unit, unplug battery from main board , wait some time , and plug it again . After assembly ,and charging battery it worked. Thanks,Diego

  4. L’éternel gagnant reste SARKOZY avec tout son plan com’ sur le Grenelle de l’environnement (qui n’a rien changé) et tout ses déplacement dans Air Sarko One…

  5. http://www./ | August 9th, 2016 at 3:32 | Permalink

    Tøffe du som er på tur igjen! Godt med sol, tenker jeg. Riktig god tur. At du legger nye opplevelser inn i bloggen din, tviler jeg ikke på.Gleder meg.

  6. 153 untreue kreditkarte | October 19th, 2016 at 16:32 | Permalink

    Your studio looks like fabric heaven,I’m with the other interstaters, and would love to buy some online. What about selling some of it in mystery packages/mixed bags or colour themed packs on Poppet in the Post, that way you wouldn’t have to muck around with a photo shoot and we would get a lovely surprise!

Post a Comment

Your email is never published nor shared. Required fields are marked *