{"id":1056,"date":"2024-12-30T07:49:53","date_gmt":"2024-12-30T07:49:53","guid":{"rendered":"https:\/\/abdoubouam.com\/?p=1056"},"modified":"2024-12-30T07:49:53","modified_gmt":"2024-12-30T07:49:53","slug":"devlog-week-53-54","status":"publish","type":"post","link":"https:\/\/abdoubouam.com\/index.php\/2024\/12\/30\/devlog-week-53-54\/","title":{"rendered":"Devlog Week 53-54"},"content":{"rendered":"\n<p>Last devlog of the year. Here&#8217;s what I did the past 2 weeks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Blockouts<\/h2>\n\n\n\n<p>I worked a bit on the starting area of the game. The area is relatively modern compared to the rest, so the roads are paved and accessible by cars, and the buildings are modern. The player will wake up in a clinic, so I also included the room with it.<\/p>\n\n\n\n<p>The area also includes a small elementary school and a few more administrative buildings.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-2 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\\\/blockout_5253_01.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1051&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=\"1920\" height=\"1080\" 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=\"1051\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01.jpg\" alt=\"\" class=\"wp-image-1051\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_01-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\\\/blockout_5253_02.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1052&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=\"1920\" height=\"1080\" 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=\"1052\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02.jpg\" alt=\"\" class=\"wp-image-1052\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_02-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\\\/blockout_5253_05.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1054&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=\"1920\" height=\"1080\" 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=\"1054\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05.jpg\" alt=\"\" class=\"wp-image-1054\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_05-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\\\/blockout_5253_06.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1046&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=\"1920\" height=\"1080\" 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=\"1046\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06.jpg\" alt=\"\" class=\"wp-image-1046\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_06-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\\\/blockout_5253_08.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1048&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=\"1920\" height=\"1080\" 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=\"1048\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08.jpg\" alt=\"\" class=\"wp-image-1048\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_08-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\\\/blockout_5253_07.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1047&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=\"1920\" height=\"1080\" 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=\"1047\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07.jpg\" alt=\"\" class=\"wp-image-1047\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_07-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\\\/blockout_5253_09.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1049&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=\"1920\" height=\"1080\" 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=\"1049\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09.jpg\" alt=\"\" class=\"wp-image-1049\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_09-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\\\/blockout_5253_10.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1050&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=\"1920\" height=\"1080\" 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=\"1050\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10.jpg\" alt=\"\" class=\"wp-image-1050\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout_5253_10-480x270.jpg 480w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><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\">Blockouts<\/figcaption><\/figure>\n\n\n\n<p>And here&#8217;s a video recording walking around. The player is intentionally small (approximately 1.4m, or 4&#8217;7&#8243;) because they&#8217;re young, so things do look large. The other NPCs are about the average male size (~1.75m, 5&#8217;10&#8221;)<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/blockout.mp4\"><\/video><figcaption class=\"wp-element-caption\">Walking in the area<\/figcaption><\/figure>\n\n\n\n<p>I also temporarily switched to Lumen for GI. The FPS is too low (50FPS on my workstation, barely 10 on the Steam Deck) and the ghosting issues are too much for my taste (especially when everything is grey and untextured), it&#8217;s still very useful for prototyping so I&#8217;ll keep it for that.<\/p>\n\n\n\n<p>I&#8217;ll keep expanding slowly until I have a full village. things should be faster from now on.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Robot Sounds and mouth &#8220;movement&#8221; visualization<\/h2>\n\n\n\n<p>I added more robot sounds. The idea is to make them distinguishable from the player&#8217;s sounds and a bit older. Here are two recordings of me experimenting and playing them in-game. The volume is a bit too low, so you might have to increase it.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/Sounds_1.mp4\"><\/video><figcaption class=\"wp-element-caption\">Sounds Experiment #1<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/Sounds_2.mp4\"><\/video><figcaption class=\"wp-element-caption\">Sounds Experiment #2<\/figcaption><\/figure>\n\n\n\n<p>With that said, I also added mouth &#8220;movements&#8221; to the robots, so you can clearly see who&#8217;s speaking (also for art direction). Here you can see the new sounds and the mouth moving<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/mouth_sound_viz.mp4\"><\/video><figcaption class=\"wp-element-caption\">New robot sound + mouth moving<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Player Speech<\/h2>\n\n\n\n<p>I added a new interaction type called &#8220;player speak&#8221;, which is a slight variation of the normal &#8220;dialog&#8221;, but instead of your interaction partner actually talking it&#8217;s the player. This is conveyed through the camera pointing back at the player, the name changing to the player&#8217;s name, and also the robot voices changing and the mouth vizualisation.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/player_speak.mp4\"><\/video><figcaption class=\"wp-element-caption\">The player character can now speak<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Scrambled Text<\/h2>\n\n\n\n<p>At certain points in the game the player will come across people who don&#8217;t speak the same language. They use a different communication protocol, so it&#8217;s like speaking a different language. To keep things simple, I am just substituting the letters with other letters (for example &#8220;A&#8221; becomes &#8220;?&#8221;, &#8220;B&#8221; becomes &#8220;P&#8221;, &#8220;C&#8221; becomes &#8220;1&#8221;&#8230;etc).<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/Scrambling.mp4\"><\/video><figcaption class=\"wp-element-caption\">Scrambled Text<\/figcaption><\/figure>\n\n\n\n<p>I also extended this to chatter and greetings.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/Scrambled-Chatter.mp4\"><\/video><figcaption class=\"wp-element-caption\">Scrambled Chatter<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/Scrambled-Greeting.mp4\"><\/video><figcaption class=\"wp-element-caption\">Scrambled Greeting<\/figcaption><\/figure>\n\n\n\n<p><br>I did not expect this to be the first function that needs to be written in C++. It was too slow in blueprints and it kept triggering the infinite loop safeguard because it has 3 nested loops and ran through hundreds of characters. So I quickly looked up how to write a blueprint function library in C++. It wasn&#8217;t as hard as I expected, but one obscure issue that took me a while to figure out was with building it. I didn&#8217;t realize I had to have all instances of the Unreal Editor closed before attempting to do that.<\/p>\n\n\n\n<p>I also noticed that what would normally be runtime errors in Blueprints (index out of bounds for example) crashes the entire engine in C++, so I added a check to make sure the search and find strings have the same length.<\/p>\n\n\n\n<p>Here is the code, nothing fancy, just get an input string, letters to search and letters to replace them with. The Scramble boolean variable is for convenience, if it&#8217;s false then the function will return the input code unchanged.<br>I included more checks to account for internal variables (anything between two $ symbols, like &#8220;Hey there <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">$PlayerName$<\/mark> !&#8221;) and chevrons (&#8220;This is the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">&lt;Highlight_Object><\/mark>key<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">&lt;\/><\/mark> I&#8217;ve been looking for&#8221;), and branching destination (anything before &#8220;%&#8221; in the options, like &#8220;<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Accepted_Tea%<\/mark>Yes, I&#8217;d love some tea, thank you.&#8221; and avoid scrambling them.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1057\" height=\"730\" src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code.jpg\" alt=\"\" class=\"wp-image-1027\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code.jpg 1057w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code-300x207.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code-768x530.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code-1000x691.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code-230x159.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code-350x242.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_code-480x332.jpg 480w\" sizes=\"(max-width: 1057px) 100vw, 1057px\" \/><figcaption class=\"wp-element-caption\">Scramble Text (C++ Code)<\/figcaption><\/figure><\/div>\n\n\n<p>Here&#8217;s what it looks like in the Editor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1048\" height=\"604\" src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node.jpg\" alt=\"\" class=\"wp-image-1028\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node.jpg 1048w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node-300x173.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node-768x443.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node-1000x576.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node-230x133.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node-350x202.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/scramble_node-480x277.jpg 480w\" sizes=\"(max-width: 1048px) 100vw, 1048px\" \/><figcaption class=\"wp-element-caption\">Scramble Text (Resulting Blueprint Node)<\/figcaption><\/figure><\/div>\n\n\n<p>Fun fact : ordering the search letters by their frequency in the English language instead of alphabetical order (so &#8220;etainos&#8230;.&#8221; instead of &#8220;abcdefg&#8230;.&#8221;, because e is the most used letter) results in about 15-20% more performance, because it&#8217;s statistically more likely for a matching letter to be found earlier like that.<\/p>\n\n\n\n<p>I could optimize it by leveraging ASCII code numbers and binary search and things like that, but this only gets executed once when the data is loaded, and it barely has any impact on performance, so this will do.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trigger Animation<\/h2>\n\n\n\n<p>I added a &#8220;trigger animation&#8221; blueprint actor, which is just a trigger box that starts an interaction with a specified actor when the player steps on it. I can even set a starting point from the interaction script.<br>It&#8217;s just a &#8220;proof of concept&#8221; and not the only means to do it. I foresee needing different ways to trigger an interaction, like the current line\/milestone of a specific actor reaching the selected point.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/trigger-interaction.mp4\"><\/video><figcaption class=\"wp-element-caption\">Trigger Interaction<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">New NPC<\/h2>\n\n\n\n<p>I wanted to create an NPC with animations and state machines from scratch to practice, because I didn&#8217;t feel like I understood it well enough. I used a husky model that came with animations  (&#8220;LowPoly Dog &#8211; Husky&#8221; by Radik Bilalov) and reverse-engineered the third person template. I experimented more with State Machines and added things like multiple idle animations, twisting\/leaning the body to the left and right when you rotate, as well as a basic jump and land animations. It doesn&#8217;t look that impressive, especially the jumping and landing animations, but for the purpose of this study it&#8217;s irrelevant. What mattered is that I programmed the movement and controls and the state machines.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/husky4.mp4\"><\/video><figcaption class=\"wp-element-caption\">Husky Third Person character<\/figcaption><\/figure>\n\n\n\n<p>While I was at it, I thought this would be the perfect test for my NPC class. So I swapped the robots with the husky model and made a few small edits and it worked. The AI and greeting and interaction all worked well. From now on all I have to do is to switch the default NPC model with any model I want, and it doesn&#8217;t even have to have the same skeleton, as long as it has an animation blueprint compatible enough.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/husky_army.mp4\"><\/video><figcaption class=\"wp-element-caption\">Husky Army<\/figcaption><\/figure>\n\n\n\n<p>Here&#8217;s another variant with cats just because.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/cats.mp4\"><\/video><figcaption class=\"wp-element-caption\">Cat Army<\/figcaption><\/figure>\n\n\n\n<p>Here are some bloopers for your entertainment<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/parkour.mp4\"><\/video><figcaption class=\"wp-element-caption\">PARKOUR!<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2024\/12\/fast.mp4\"><\/video><figcaption class=\"wp-element-caption\">I am speed<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>That&#8217;s all for this week (and this year). Thanks for reading and have a great week!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last devlog of the year. Here&#8217;s what I did the past 2 weeks. Blockouts I worked a bit on the starting area of the game. The area is relatively modern compared to the rest, so the roads are paved and accessible by cars, and the buildings are modern. The player will wake up in a clinic, so I also included the room with it. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1047,"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\/1056"}],"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=1056"}],"version-history":[{"count":2,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/1056\/revisions"}],"predecessor-version":[{"id":1058,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/1056\/revisions\/1058"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media\/1047"}],"wp:attachment":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media?parent=1056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/categories?post=1056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/tags?post=1056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}