{"id":429,"date":"2024-04-22T19:01:03","date_gmt":"2024-04-22T19:01:03","guid":{"rendered":"https:\/\/abdoubouam.com\/?p=429"},"modified":"2024-04-22T19:01:03","modified_gmt":"2024-04-22T19:01:03","slug":"devlog-week-18","status":"publish","type":"post","link":"https:\/\/abdoubouam.com\/index.php\/2024\/04\/22\/devlog-week-18\/","title":{"rendered":"Devlog Week 18"},"content":{"rendered":"\n<p>Hello all. This week was spent mostly on technical stuff and programming, but I did make one simple 3D model too. Here&#8217;s a detailed list of what I did:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crowbar 3D Model<\/h2>\n\n\n\n<p>1- I made a simple 3D model of a crowbar, it&#8217;s 288 Triangles total. I wanted it to be a reference to the half-life series.<\/p>\n\n\n\n<figure class=\"wp-block-gallery 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\\\/04\\\/1-1.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-432&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1920,&quot;targetHeight&quot;:1080,&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=\"1024\" height=\"576\" 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=\"432\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-1024x576.jpg\" alt=\"\" class=\"wp-image-432\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-1024x576.jpg 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1-480x270.jpg 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/1-1.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><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\">Render<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/2.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-431&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1920,&quot;targetHeight&quot;:1080,&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=\"1024\" height=\"576\" 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=\"431\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-1024x576.jpg\" alt=\"\" class=\"wp-image-431\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-1024x576.jpg 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2-480x270.jpg 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/2.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><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\">Closeup<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/5-1.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-434&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1920,&quot;targetHeight&quot;:1080,&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=\"1024\" height=\"576\" 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=\"434\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-1024x576.jpg\" alt=\"\" class=\"wp-image-434\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-1024x576.jpg 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1-480x270.jpg 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/5-1.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><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\">Wireframe<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>I also used the blueprints I made previously to make it only appear on rare occasions, so it&#8217;s <em>very<\/em> easy to miss. I changed the code a little bit, for better off-screen detection, with adjustable margins. Here I used a negative margin values, so objects are considered off-screen even when they&#8217;re not, because I also wanted some of the dream &#8220;wonkiness&#8221; to be barely visible near the edges of the screen.<br>This example was captured by coincidence, I was trying to show the crowbar up close, but it disappeared out of existence in front of my eyes.  That&#8217;s exactly the kind of interaction I hope some players will get with this or other objects.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Crowbar-1.mp4\"><\/video><figcaption class=\"wp-element-caption\">I swear I saw a crowbar, where did it go ? <\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Steamdeck<\/h2>\n\n\n\n<p> I got myself a steamdeck, since it&#8217;s the hardware class I want to optimize my game for. I&#8217;m actually very impressed, I&#8217;m getting good framerates, a lot more than I was expecting. 85FPS at the native resolution without having to make quality compromises. Granted it&#8217;s a simple scene, but it&#8217;s still a lot more than I expected.<br>I used static lighting, but that&#8217;s what I&#8217;m going to use for my game anyway, Lumen is just too slow and has a lot of graphical artifacts for my taste.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-1024x576.jpg\" alt=\"\" class=\"wp-image-437\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-1024x576.jpg 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-2048x1152.jpg 2048w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/20240418_133816-480x270.jpg 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Test build running on the Steamdeck<\/figcaption><\/figure>\n\n\n\n<p>I also tested a native Linux build, to see how much performance I&#8217;m losing to the Proton compatibility layer, and I got ~95-100FPS, compared to ~85 on the Windows build. I will continue to use Windows builds for performance testing, but a native Linux build is planned for the final release.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Interaction and Dialog system<\/h2>\n\n\n\n<p>The majority of this week was spent on this. I took the item description system I had and reworked it, now it takes data tables and has complex interactions. So instead of programming every interaction individually with blueprints, I made an &#8220;interpreter&#8221; that reads from a data table (basically an Excel file) and executes that instead.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/image.png&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-439&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1758,&quot;targetHeight&quot;:225,&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=\"1024\" height=\"131\" 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=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1024x131.png\" alt=\"\" class=\"wp-image-439\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1024x131.png 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-300x38.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-768x98.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1536x197.png 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1000x128.png 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-230x29.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-350x45.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-480x61.png 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image.png 1758w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><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\">Interaction Data Table Example<\/figcaption><\/figure>\n\n\n\n<p>Here&#8217;s a video showing the system interpreting the datatable above. Here it just demonstrates the dialog and &#8220;go to&#8221; functionalities. A &#8220;go to&#8221; can be set to jump ahead to a specific scenario, useful for things like the &#8220;choose your own adventure&#8221; books, or to point back to a previous line, in case the dialog is exhausted and I want to repeat a specific line indefinitely. I also made the interaction icon become grey if you reach the last dialog line and there&#8217;s nothing else to show.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_1.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction system test #1<\/figcaption><\/figure>\n\n\n\n<p>More objects can share the same data table, and each have their own progression. This can be useful for example if I want to have many object descriptions in one data table, all I have to do is have all the lines I need in the data table, and set the starting line for each object.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_2.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction system test #2<\/figcaption><\/figure>\n\n\n\n<p>Another type of interaction is &#8220;change camera&#8221;. Unlike &#8220;Dialog&#8221;, this doesn&#8217;t end the interaction, and it immediately loads the next line. It&#8217;s useful to point at an object of interest when you talk with an NPC for example.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_3.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction system test #3<\/figcaption><\/figure>\n\n\n\n<p>I also made a &#8220;Milestone&#8221; system, which is a save state in a way. It is used to save\/set progression. Unlike &#8220;Current Line Number&#8221; that is incremented to the next line on every interaction (except &#8220;Go To&#8221;, which sets it to the desired line number), the milestone is only updated manually.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"112\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-1024x112.png\" alt=\"\" class=\"wp-image-440\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-1024x112.png 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-300x33.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-768x84.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-1000x109.png 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-230x25.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-350x38.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1-480x52.png 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-1.png 1422w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Milestone Test Data Table<\/figcaption><\/figure>\n\n\n\n<p>In this example, the milestone value is initially 1, but line #2 sets it to 4. Line 4 is just some dialog, then line 5 is called, which just tells the game to go back to the milestone value. Since the value is 4, it will repeat the same text every time you interact with it, until something changes it.<br>I programmed a platform to set the milestone of that specific object to line #6. So now when you interact with it, instead of going back to like 4, it will read line 6. Here&#8217;s a video demonstrating it<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_4.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction System Test #4 (Milestones)<\/figcaption><\/figure>\n\n\n\n<p>This is just a simple example, but it can be used for example to make an NPC angry at you if you do something or positively interact with someone they don&#8217;t like.<\/p>\n\n\n\n<p>Tests #5 and #6 are about passing interaction to another object\/NPC. This is for example when you interact with someone in a group, and someone else will start speaking.<br>Test #5 is a normal pass, it doesn&#8217;t set any specific line, only the other actor name<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"121\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-1024x121.png\" alt=\"\" class=\"wp-image-443\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-1024x121.png 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-300x35.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-768x91.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-1000x118.png 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-230x27.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-350x41.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3-480x57.png 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-3.png 1084w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">&#8220;Pass to Actor&#8221; Data Table<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_5.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction System Test #5<\/figcaption><\/figure>\n\n\n\n<p>Test #6 sets a specific line when passing to another actor. The field &#8220;Content&#8221; contains the name of the actor, and &#8220;Extra A&#8221; sets the specific line in its data table, in this case line #3<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1013\" height=\"108\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4.png\" alt=\"\" class=\"wp-image-444\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4.png 1013w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4-300x32.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4-768x82.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4-1000x107.png 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4-230x25.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4-350x37.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-4-480x51.png 480w\" sizes=\"(max-width: 1013px) 100vw, 1013px\" \/><figcaption class=\"wp-element-caption\">&#8220;Pass to Actor&#8221; Data Table<\/figcaption><\/figure>\n\n\n\n<p>And this is the data table of the target actor. As you can see, the line #3 says you&#8217;ve interacted with the coffee grinder object (what passed the interaction to it).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"108\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-1024x108.png\" alt=\"\" class=\"wp-image-445\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-1024x108.png 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-300x32.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-768x81.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-1000x105.png 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-230x24.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-350x37.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5-480x50.png 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-5.png 1427w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Target Actor&#8217;s Data Table<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_6.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction System Test #6<\/figcaption><\/figure>\n\n\n\n<p>The last type of interaction I implemented is the question type. It can either have two answers (yes\/no and custom) or three.<br>This example shows a simple question that doesn&#8217;t set any milestone or jump to a branch. In other words : it doesn&#8217;t matter which option you pick, what comes after that is the same (in this case asking the question again).<br>I used the fields &#8220;Extra A&#8221;, &#8220;Extra B&#8221; and &#8220;Extra C&#8221; to store the answer text, and the number before the &#8220;%&#8221; is the line to go to, if that option is picked. &#8220;6%Yes&#8221; will take you to the line 6 if chosen, for example.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"723\" height=\"177\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-7.png\" alt=\"\" class=\"wp-image-448\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-7.png 723w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-7-300x73.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-7-230x56.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-7-350x86.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-7-480x118.png 480w\" sizes=\"(max-width: 723px) 100vw, 723px\" \/><figcaption class=\"wp-element-caption\">Yes\/No Question Data Table<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_7.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction System Test #7<\/figcaption><\/figure>\n\n\n\n<p>While inconsequential choices are good, some questions need to have consequences. In this test, your answer will be final and it will lock you in a branch. The only difference is that there&#8217;s a &#8220;Go To&#8221; or &#8220;Set Milestone&#8221; that takes you to the lines for that branch. The question &#8220;do you like strawberries&#8221; will never be asked again<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"243\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-1024x243.png\" alt=\"\" class=\"wp-image-446\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-1024x243.png 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-300x71.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-768x182.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-1000x237.png 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-230x55.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-350x83.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6-480x114.png 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/image-6.png 1049w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Yes\/No with Milestones Data Table<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_8.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction System Test #8<\/figcaption><\/figure>\n\n\n\n<p>And finally a multi choice action. It&#8217;s not too different from a two choice or yes\/no question, so I kept this example simple.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/Interaction_Test_9.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interaction System Test #9<\/figcaption><\/figure>\n\n\n\n<p>Those are the interaction types I have programmed this week. I need to finish a &#8220;reputation&#8221; or &#8220;friendliness&#8221; or whatever I end up calling it, which is just a check to see if an NPC likes you enough. I also need for a way to get and set world flags (things like &#8220;did the player buy this item&#8221; or &#8220;player is in the good ending route&#8221; or whatever), and then I&#8217;ll have all the tools I need for storytelling. I&#8217;m not sure yet how the save system works in Unreal, so I&#8217;ll keep the data temporary.<br>There are other features like &#8220;set facial expression&#8221;, &#8220;start animation&#8221;, &#8220;start cutscene&#8221;&#8230;etc, but those are not necessary, and I&#8217;ll leave them for later.<\/p>\n\n\n\n<p>The system is starting to get complex, I should clean it up and organize it better. But I&#8217;ll finish making it first<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;uploadedSrc&quot;:&quot;https:\\\/\\\/abdoubouam.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/interaction.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-430&quot;,&quot;imgStyles&quot;:null,&quot;targetWidth&quot;:1133,&quot;targetHeight&quot;:561,&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=\"1024\" height=\"507\" 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\/04\/interaction-1024x507.jpg\" alt=\"\" class=\"wp-image-430\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction-1024x507.jpg 1024w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction-300x149.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction-768x380.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction-1000x495.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction-230x114.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction-350x173.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction-480x238.jpg 480w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/04\/interaction.jpg 1133w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><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\">Interaction System Blueprint<\/figcaption><\/figure>\n\n\n\n<p>That&#8217;s all for this week. Thanks for reading, and I&#8217;ll hopefully see you again next week.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello all. This week was spent mostly on technical stuff and programming, but I did make one simple 3D model too. Here&#8217;s a detailed list of what I did: Crowbar 3D Model 1- I made a simple 3D model of a crowbar, it&#8217;s 288 Triangles total. I wanted it to be a reference to the half-life series. I also used the blueprints I made [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":430,"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\/429"}],"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=429"}],"version-history":[{"count":9,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/429\/revisions"}],"predecessor-version":[{"id":707,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/429\/revisions\/707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media\/430"}],"wp:attachment":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media?parent=429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/categories?post=429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/tags?post=429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}