{"id":997,"date":"2024-12-02T02:39:20","date_gmt":"2024-12-02T02:39:20","guid":{"rendered":"https:\/\/abdoubouam.com\/?p=997"},"modified":"2024-12-02T02:39:20","modified_gmt":"2024-12-02T02:39:20","slug":"devlog-week-46-50","status":"publish","type":"post","link":"https:\/\/abdoubouam.com\/index.php\/2024\/12\/02\/devlog-week-46-50\/","title":{"rendered":"Devlog Week 46-50"},"content":{"rendered":"\n<p>It&#8217;s been a while since my last devlog. I took 3 weeks of vacation. I visited Ankara and Istanbul in Turkey, spent a few days with parents, and took a few relaxed days too. I&#8217;ll be back to work at full capacity starting from this Monday.<\/p>\n\n\n\n<p>In the meantime here&#8217;s a summary of what I did.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Marvelous Designer Trial<\/h2>\n\n\n\n<p>I am going to make a lot of clothing and textile simulations for the game, so I took the chance to learn Marvelous Designer in a relaxed manner after returning home. It&#8217;s a very intuitive software and the workflow is very fun, but most importantly very responsive. It can do high density cloth sims in real-time, and I really like how I can pinch and grab and move things while it simulates. The price tag is a bit high, but it&#8217;s worth it for the time saving and the tools offered. Here are a few screenshots<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/MD2.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-985&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:895,&quot;targetHeight&quot;:734,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Enlarge image&quot;,&quot;alt&quot;:&quot;&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"895\" height=\"734\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"985\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/MD2.jpg\" alt=\"\" class=\"wp-image-985\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/MD2.jpg 895w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/MD2-300x246.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/MD2-768x630.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/MD2-230x189.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/MD2-350x287.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/MD2-480x394.jpg 480w\" sizes=\"(max-width: 895px) 100vw, 895px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge image\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/image.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-984&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:502,&quot;targetHeight&quot;:752,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Enlarge image&quot;,&quot;alt&quot;:&quot;&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"502\" height=\"752\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"984\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/image.jpg\" alt=\"\" class=\"wp-image-984\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/image.jpg 502w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/image-200x300.jpg 200w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/image-230x345.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/image-350x524.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/image-480x719.jpg 480w\" sizes=\"(max-width: 502px) 100vw, 502px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge image\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/SMD1.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-994&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1066,&quot;targetHeight&quot;:930,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Enlarge image&quot;,&quot;alt&quot;:&quot;&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1066\" height=\"930\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"994\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1.jpg\" alt=\"\" class=\"wp-image-994\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1.jpg 1066w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1-300x262.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1-768x670.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1-1000x872.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1-230x201.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1-350x305.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD1-480x419.jpg 480w\" sizes=\"(max-width: 1066px) 100vw, 1066px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge image\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/SMD2.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-995&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1066,&quot;targetHeight&quot;:930,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Enlarge image&quot;,&quot;alt&quot;:&quot;&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1066\" height=\"930\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"995\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2.jpg\" alt=\"\" class=\"wp-image-995\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2.jpg 1066w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2-300x262.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2-768x670.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2-1000x872.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2-230x201.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2-350x305.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD2-480x419.jpg 480w\" sizes=\"(max-width: 1066px) 100vw, 1066px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge image\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/SMD3.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-996&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:713,&quot;targetHeight&quot;:846,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Enlarge image&quot;,&quot;alt&quot;:&quot;&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"713\" height=\"846\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"996\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD3.jpg\" alt=\"\" class=\"wp-image-996\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD3.jpg 713w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD3-253x300.jpg 253w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD3-230x273.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD3-350x415.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/SMD3-480x570.jpg 480w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge image\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<figcaption class=\"blocks-gallery-caption wp-element-caption\">Marvelous Designer Trial<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">NPC AI<\/h2>\n\n\n\n<p>I reworked the AI and pathfinding of the NPCs, now it handles obstacles and uses navmeshes properly.<\/p>\n\n\n\n<p>One issue I had was the NPCs clumping in groups when they walk into eachother. I made an extremely basic fix : if stuck for too long, attempt to move to a random location for a short time, then go back to normal navigation again.<br>The top is the result after I added it, the bottom is before. For a very naive fix, it seems to work really well! They still get stuck a little bit, but it looks like they&#8217;re just hanging around.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/obstacle_avoidance.mp4\"><\/video><figcaption class=\"wp-element-caption\">&#8220;unstucking&#8221; algorithm<\/figcaption><\/figure>\n\n\n\n<p>I also added an option to idle the NPC when they reach the last waypoint.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/idle_when_target_reached.mp4\"><\/video><figcaption class=\"wp-element-caption\">Idle when target is reached<\/figcaption><\/figure>\n\n\n\n<p>I added the option to control another NPC&#8217;s AI behavior. In this example the typewriter sets the AI behavior for 5 NPCs at once<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/set_ai_behavior.mp4\"><\/video><figcaption class=\"wp-element-caption\">Set AI behavior (Other Actors)<\/figcaption><\/figure>\n\n\n\n<p>And finally this is just an example I had fun with : a chain of NPCs, each one following the one ahead of it. The group just spins in circles in my test scene.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/spin2.mp4\"><\/video><figcaption class=\"wp-element-caption\">This is *not* a cult<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Chatter<\/h2>\n\n\n\n<p>Chatter is an important storytelling and world building mechanic, it&#8217;s any discussion between two NPCs that does not involve the player. For example you&#8217;re walking in the market and two NPCs are haggling about the price of an item, and that&#8217;s an interaction that does not need you to take place.<br>The text fades with distance, because it&#8217;s harder to hear someone when they&#8217;re far, and the text equivalent would be hard to read.<br>The player character canonically has a very good hearing, so they can overhear conversations. Usually it&#8217;s just day to day matters and small talk, but it can tell stories indirectly about the characters, the events, and even the player.<br>I reworked the chatter system. It&#8217;s now an actor you place in the scene and pick which NPCs it affects, instead of it being an actor component you attach to all NPCs. This makes working with multiple NPCs easier, especially if an NPC can have many possible chatter options. It uses data tables and an array of actors (the NPCs), and only triggers when they are within talking distance.<br>The &#8220;Chatter Party Index&#8221; is to select which NPC is talking, and after the line is properly said, the AI behavior can be set to idle, patrol, follow&#8230;Etc.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/chatter_datatable.png&quot;,&quot;figureClassNames&quot;:&quot;aligncenter size-full&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-992&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:786,&quot;targetHeight&quot;:326,&quot;scaleAttr&quot;:false,&quot;ariaLabel&quot;:&quot;Enlarge image&quot;,&quot;alt&quot;:&quot;&quot;}\" data-wp-interactive=\"core\/image\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"786\" height=\"326\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter_datatable.png\" alt=\"\" class=\"wp-image-992\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter_datatable.png 786w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter_datatable-300x124.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter_datatable-768x319.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter_datatable-230x95.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter_datatable-350x145.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter_datatable-480x199.png 480w\" sizes=\"(max-width: 786px) 100vw, 786px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge image\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"context.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"context.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Chatter Data Table<\/figcaption><\/figure><\/div>\n\n\n<p>In this example, when the first NPC reaches talking distance, they stop and say &#8220;Hey there!&#8221; and talk a bit. After a while the conversation ends and they start walking away (line 7). After that a third NPC will start walking, talk, then follow the other NPC. The entire interaction below is controlled with the chatter system and the data table above.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/chatter.mp4\"><\/video><figcaption class=\"wp-element-caption\">Complex chatter test<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Greetings<\/h2>\n\n\n\n<p>Another small &#8220;social&#8221; mechanic is the greeting. When an NPC is close to another NPC or the player they greet them. This only happens once with every character, so if you have been greeted before by an NPC they will not do it again (in the future this can be reset with certain conditions, such as a timer).<br>The greeting is picked randomly from a provided list of greetings, they can be polite, casual, rude&#8230;etc. The test fades the same way it does for the chatter<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/greetings.mp4\"><\/video><figcaption class=\"wp-element-caption\">Greetings<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Camera Blending<\/h2>\n\n\n\n<p>I thought a bit more about the camera blending, because I felt like it can be dizzying when you spam the interaction button. I adjusted it to not have any smooth transition when you start an interaction, and only have a 0.25-0.5s blending when the interaction ends or when the camera changes from an angle to another withing the same interaction (eg. passing the interaction to another NPC\/Object). My reasoning is that initially you know what object you&#8217;re interacting with, so it&#8217;s easy to locate yourself spacially. But if a camera changes, it can be a bit disorienting, so the smooth transition helps with it.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/camera_blend.mp4\"><\/video><figcaption class=\"wp-element-caption\">Tweaked Camera Blending<\/figcaption><\/figure>\n\n\n\n<p>That&#8217;s all I have for now, thanks for reading!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s been a while since my last devlog. I took 3 weeks of vacation. I visited Ankara and Istanbul in Turkey, spent a few days with parents, and took a few relaxed days too. I&#8217;ll be back to work at full capacity starting from this Monday. In the meantime here&#8217;s a summary of what I did. Marvelous Designer Trial I am going to make [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":998,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/997"}],"collection":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/comments?post=997"}],"version-history":[{"count":1,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/997\/revisions"}],"predecessor-version":[{"id":999,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/997\/revisions\/999"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media\/998"}],"wp:attachment":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media?parent=997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/categories?post=997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/tags?post=997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}