{"id":2458,"date":"2016-03-13T23:48:55","date_gmt":"2016-03-13T23:48:55","guid":{"rendered":"http:\/\/phoenixgamedevelopment.com\/blog\/?p=2458"},"modified":"2016-03-13T23:48:55","modified_gmt":"2016-03-13T23:48:55","slug":"p-167-paranoia-oculus-rift-horror-game-world-constructor-4-navmeshes-and-pathfinding","status":"publish","type":"post","link":"https:\/\/phoenixgamedevelopment.com\/blog\/p-167-paranoia-oculus-rift-horror-game-world-constructor-4-navmeshes-and-pathfinding\/","title":{"rendered":"P-167: Paranoia: Oculus Rift Horror Game: World Constructor 4: Navmeshes and pathfinding"},"content":{"rendered":"<p>While researching AI and pathfinding techniques for this project, I realised that T3D actually has a fantastic navigation and pathfinding resource build in. Daniel Buckmaster created a commercial resource called &#8220;<a href=\"https:\/\/www.garagegames.com\/community\/blog\/view\/21783\/2\">Walkabout<\/a>&#8221; which has, as of T3D 3.7, been made open source and is packaged with the engine.<\/p>\n<p>This resource integrates the <a href=\"https:\/\/github.com\/recastnavigation\/recastnavigation\">recast\u00a0navigation library<\/a>. Based on my very preliminary testing, it is extremely powerful, and supports 3D navigation (ie, it works fine with my multi-storied interiors, and allows the AI to easily travel up stairs) and supports platforms and jumping. It also comes with it&#8217;s own editor, and can not only quickly generate navmeshes, but also regenerate part of a navmesh, which would allow for dynamic content, such as destructable objects, etc.<\/p>\n<p>The below screenshots show the navmesh after it has been created. I have done nothing to modify my art assets or creation code, I simply copied my script files and art over to a 3.8 build of the engine, and created a navmesh using the editor.<\/p>\n<p>The video below shows an AI character plotting a path to the player.<\/p>\n<p>A generic, integrated navmesh resource like this is an excellent addon to T3D, and will save many hours of work in terms of creating custom navigation solutions.<\/p>\n<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/spY0ZtbTHx8\" width=\"420\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>This is a short video that I created which shows off the dynamic level constructor that I have built:<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/7u4mq-4VXRQ\" width=\"420\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2466\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_58-PM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 08_56_58 PM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_58-PM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_58-PM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_58-PM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_58-PM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2465\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_05-PM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 08_57_05 PM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_05-PM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_05-PM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_05-PM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_05-PM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2464\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_15-PM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 08_57_15 PM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_15-PM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_15-PM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_15-PM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_57_15-PM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2463\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_47-PM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 08_56_47 PM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_47-PM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_47-PM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_47-PM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-08_56_47-PM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2462\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-12_57_22-AM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 12_57_22 AM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-12_57_22-AM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-12_57_22-AM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-12_57_22-AM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-12_57_22-AM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2461\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-01_47_05-AM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 01_47_05 AM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-01_47_05-AM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-01_47_05-AM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-01_47_05-AM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-01_47_05-AM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2460\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_00_57-AM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 02_00_57 AM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_00_57-AM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_00_57-AM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_00_57-AM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_00_57-AM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2459\" src=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_05_03-AM-300x238.png\" alt=\"PhoenixGameDevelopment - 13_03_2016 , 02_05_03 AM\" width=\"300\" height=\"238\" srcset=\"https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_05_03-AM-300x238.png 300w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_05_03-AM-768x609.png 768w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_05_03-AM-1024x812.png 1024w, https:\/\/phoenixgamedevelopment.com\/blog\/wp-content\/uploads\/2016\/03\/PhoenixGameDevelopment-13_03_2016-02_05_03-AM.png 1026w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>While researching AI and pathfinding techniques for this project, I realised that T3D actually has a fantastic navigation and pathfinding resource build in. Daniel Buckmaster created a commercial resource called &#8220;Walkabout&#8221; which has, as of T3D 3.7, been made open source and is packaged with the engine. This resource integrates the recast\u00a0navigation library. Based on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,10],"tags":[],"class_list":["post-2458","post","type-post","status-publish","format-standard","hentry","category-p-0","category-software-and-games","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"aioseo_notices":[],"builder_content":"","_links":{"self":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts\/2458"}],"collection":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/comments?post=2458"}],"version-history":[{"count":2,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts\/2458\/revisions"}],"predecessor-version":[{"id":2468,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/posts\/2458\/revisions\/2468"}],"wp:attachment":[{"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/media?parent=2458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/categories?post=2458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/phoenixgamedevelopment.com\/blog\/wp-json\/wp\/v2\/tags?post=2458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}