{"id":2176,"date":"2024-04-13T09:16:18","date_gmt":"2024-04-13T08:16:18","guid":{"rendered":"https:\/\/www.katsbits.com\/site\/?p=2176"},"modified":"2024-04-13T09:16:18","modified_gmt":"2024-04-13T08:16:18","slug":"donotenter-clip-brush","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/site\/donotenter-clip-brush\/","title":{"rendered":"Using DONOTENTER Clip Brushes"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.katsbits.com\/site\/donotenter-clip-brush\/#Directing_Bot_Navigation\" >Directing Bot Navigation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/site\/donotenter-clip-brush\/#Using_Donotenter_Around_Jump_Pads\" >Using Donotenter Around Jump Pads<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/site\/donotenter-clip-brush\/#Donotenter_Corridors_Corners\" >Donotenter, Corridors &amp; Corners<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/site\/donotenter-clip-brush\/#Donotenter_Dead_Space\" >Donotenter &amp; Dead Space<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/site\/donotenter-clip-brush\/#Botclip_Non-Axial_Placement\" >Botclip &amp; Non-Axial Placement<\/a><\/li><\/ul><\/nav><\/div>\n<p>The problems associated with how the level designed can prevent bots accessing certain areas within a map without resorting to or using botclip are relatively easy to solve using the donotenter clipbrush volume. Most of the images shown below are &#8216;exceptions to the rule&#8217; on using <b>DoNotEnter<\/b> clip brushes however, as it&#8217;s usual usage tends to apply to structures with flat walls and floors; as soon as level designer starts to rough things up a bit, with terrain or by clipping around corners, for want of a better way of putting it, they have to re-think how various botclips should be placed.<\/p>\n<p>The following information should be considered examples of use rather than a steadfast guide or specific &#8216;tutorial&#8217; on how the brushes are generally used to solve unexpected, odd or unusual bot behaviour that other approaches don&#8217;t fix or aren&#8217;t that effective, especially where jump pads and the aforementioned terrain are concerned.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Directing_Bot_Navigation\"><\/span>Directing Bot Navigation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Although for the most part, bots will happily navigate around a level without incident. Occasionally, due to the way BSPC is compiled, it presents navigational problems resulting in random and erratic movement. For example, the image below shows a typical jumppad placed in a level. Nothing obscures it or impedes navigation, but for some unknown reason bots will simply refuse to take a straight path off a jump pad (regardless of any &#8216;persuading&#8217; that might be done with bot_roams etc), taking peculiar flight paths into or near the walls despite there being plenty of space around their trajectory and\/or no obstruction to their motion. Using BotClip brushes to &#8216;guide&#8217; behaviour by &#8216;tunneling&#8217; their movement is usually out of the question in instances where open or &#8216;free&#8217; passage is necessary; simply put, bots navigate too far away from walls where blotclip would be of use so all that would achieve is a set of invisible walls that bots will collide with.<\/p>\n<p>This is where the donotenter clipbrush comes into play. It acts like the standard botclip brush in that a bot on seeing it, will treat anything contained within the volume as a &#8216;no-go&#8217; area. Having said that however, the donotenter clipbrush will also be treated as &#8216;optional&#8217; in the sense that it <b><i>can<\/i><\/b> be navigated through if necessary, although that (and it) will generally be avoided.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Using_Donotenter_Around_Jump_Pads\"><\/span>Using Donotenter Around Jump Pads<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>After placing donotenter clip brushes as shown below, indicated by the yellow brush volumes, bots took a more &#8216;correct&#8217; path off the jumppad, straight up and forward. Note the use of the large pale blue bot &#8216;weights&#8217; (&quot;<b>bot_roam<\/b>&quot;) that &#8216;prompt&#8217; bot behaviour &#8211; they influence bot navigation by acting as optional target destinations for bots.<\/p>\n<blockquote>\n<p><b>Design note<\/b>: note how much bot clipping you have to do in maps with rocks&#8230;!! Have a really good read through the information in the above links, it&#8217;s very useful to know even if you&#8217;re not too worried by altering your connection settings (these links are quite old now [but still relevant] and may have been cleared and or deleted from their original source).<\/p>\n<\/blockquote>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-clip-brush-volume.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-clip-brush-volume_sml.jpg\" alt=\"Using donotenter around a jumppad to direct navigation without necessarily restricting it with botclip\" width=\"640\" height=\"360\" border=\"0\" title=\"Using donotenter around a jumppad to direct navigation without necessarily restricting it with botclip\" \/><\/a><\/p>\n<p>DONOTENTER used on the sides of a jump pad to guide bots to follow a central path without restricting lateral movement when necessary<\/p>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Donotenter_Corridors_Corners\"><\/span>Donotenter, Corridors &amp; Corners<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Donotenter can also be used to control bot navigation along corridors and around corners to prevent wayward access when the use of botclip is not possible or impractical. For example, in the image below an &#8216;exposed&#8217; corner section (shown encased inside the yellow donotenter clip brush) ordinarily means bots cutting across it whenever they&#8217;re in the area, as this is a terrain section it causes additional navigational problems that should minimised. However, this can&#8217;t be done using botclip as that presents a solid wall to the AI they can&#8217;t pass through, even in death, something that needs to be avoided (in game you&#8217;d see them hitting an invisible wall). Encasing the area in donotenter means we can direct or force navigation without physically restricting it with invisible walls of botclip.<\/p>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-corner-navigation.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-corner-navigation_sml.jpg\" alt=\"Using donotenter corner clipping for better navigation\" width=\"640\" height=\"360\" border=\"0\" title=\"Using donotenter corner clipping for better navigation\" \/><\/a><\/p>\n<p>DONOTENTER used to corner clip creating a &#8216;go go&#8217; area<\/p>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Donotenter_Dead_Space\"><\/span>Donotenter &amp; Dead Space<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sometimes as a result of BSPC calculations interesting behaviour arises that turns out to be quite and interesting game play mechanic. Shown in the image below is a tree behind which bots would camp. They constantly got stuck there though so that even under fire they tended to just stand on the spot. To solve this donotenter was placed behind the tree which resulted in their continued camping, this time without getting &#8216;stuck&#8217;, they could even run along the length of the wall behind the trees without problems.<\/p>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-model-clip.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-model-clip_sml.jpg\" alt=\"donotenter clipbrush placed behind objects to allow better bot navigation\" width=\"640\" height=\"360\" border=\"0\" title=\"donotenter clipbrush placed behind objects to allow better bot navigation\" \/><\/a><\/p>\n<p>Clipping behind free standing objects to prevent to much BOT navigation in &#8216;dead&#8217; areas<\/p>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Botclip_Non-Axial_Placement\"><\/span>Botclip &amp; Non-Axial Placement<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The above tutorial is discussed in the context of using donotenter where blotclip isn&#8217;t possible. Shown below is an example of this in terms of how using blotclip means that the distance between a wall surface and the areas used for navigation by bots is so large that it presents game play problems as a result of having to restrict bot movement too liberally because a clear path is sought. The designer could place the botclip closer to the rock surface and then using donotenter to give a wider birth for navigation without necessarily restricting it.<\/p>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-botclip.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/donotenter_clipbrush\/donotenter-botclip_sml.jpg\" alt=\"liberal use of Bot clip\" width=\"640\" height=\"360\" border=\"0\" title=\"liberal use of Bot clip\" \/><\/a><\/p>\n<p>General bot clip usage. Extreme depth may be required based on brushwork.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":2177,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[327,543,129,488,331,544,542,17,109,108,107],"class_list":["post-2176","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-map","tag-botclip","tag-bots","tag-brush-volumes","tag-bsp","tag-bspc","tag-clip-brushes","tag-idtech","tag-level-design","tag-level-editing","tag-radiant"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/2176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/comments?post=2176"}],"version-history":[{"count":2,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/2176\/revisions"}],"predecessor-version":[{"id":2182,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/2176\/revisions\/2182"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/media\/2177"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/media?parent=2176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/categories?post=2176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/tags?post=2176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}