{"id":1432,"date":"2025-07-14T17:17:03","date_gmt":"2025-07-14T17:17:03","guid":{"rendered":"https:\/\/abdoubouam.com\/?p=1432"},"modified":"2025-07-14T17:19:25","modified_gmt":"2025-07-14T17:19:25","slug":"devlog-week-81-82","status":"publish","type":"post","link":"https:\/\/abdoubouam.com\/index.php\/2025\/07\/14\/devlog-week-81-82\/","title":{"rendered":"Devlog Week 81-82"},"content":{"rendered":"\n<p>The past two weeks were productive. I&#8217;m still working on my portfolio and applying to jobs in addition to game development. Here&#8217;s what I did.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Rotary Hammer<\/h2>\n\n\n\n<p>I added another portfolio piece. I always wanted to make power tools because they have intricate shapes and designs. I tried once a long time ago but abandoned it because I was way in over my head. I spent a lot of time texturing and detailing it, I&#8217;m quite happy with the result. Check out the ArtStation post for more renders : <a href=\"https:\/\/www.artstation.com\/artwork\/Ez8VL2\">https:\/\/www.artstation.com\/artwork\/Ez8VL2<\/a><\/p>\n\n\n\n<figure class=\"wp-block-gallery 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\\\/2025\\\/07\\\/RotaryHammerF.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1403&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=\"1403\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF.jpg\" alt=\"\" class=\"wp-image-1403\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/RotaryHammerF-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\\\/2025\\\/07\\\/1.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1410&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=\"1410\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1.jpg\" alt=\"\" class=\"wp-image-1410\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/1-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\\\/2025\\\/07\\\/7.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1416&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=\"1416\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7.jpg\" alt=\"\" class=\"wp-image-1416\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/7-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\\\/2025\\\/07\\\/5.jpg&quot;,&quot;figureClassNames&quot;:&quot;wp-block-image size-large&quot;,&quot;figureStyles&quot;:null,&quot;imgClassNames&quot;:&quot;wp-image-1414&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=\"1414\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5.jpg\" alt=\"\" class=\"wp-image-1414\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5.jpg 1920w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5-300x169.jpg 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5-768x432.jpg 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5-1536x864.jpg 1536w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5-1000x563.jpg 1000w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5-230x129.jpg 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5-350x197.jpg 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/5-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\">Rotary Hammer<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Dream Stability <\/h2>\n\n\n\n<p>I already had the concept of dream stability implemented a very long time ago, but now I made it super easy to control. Just add the dream controller to a level and set the stability value, and it will take care of adjusting the post-process effect and the distortions. Below is a test with in in the main world, where it&#8217;s normally not supposed to be used, but it looks trippy.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/dreamstability.mp4\"><\/video><figcaption class=\"wp-element-caption\">Dream Stability<\/figcaption><\/figure>\n\n\n\n<p>I need to fine tune the look and add support for sounds when I need to use it. But this will do for now.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New Skeleton<\/h2>\n\n\n\n<p>When making the robot nodel I experimented a lot with the skeletons and rigs, and I ended up with about 5 different skeletons and rigs. I decided that the best course of action would be to adjust the Mannequinn rig and add the missing bones, like the ear antennae and the jaw. I did that, and retargeted the animations, so now it works fine and I don&#8217;t have any unnecessary assets. I can make animations for it without worrying about invalidating them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Facial Expressions<\/h2>\n\n\n\n<p>With the new skeleton, I made a few animations for facial expressions. The term is used loosely because it can also refer to nodding and similar things. The decision to add &#8220;dog ears&#8221; antennae was made a long time ago, to compensate for the lack of actual facial expressions. I&#8217;m taking inspiration from exaggerated animations from old WB and Disney cartoons and some stylized and expressive new ones.<br>Below is an example animation, from Blender.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/sad.mp4\"><\/video><figcaption class=\"wp-element-caption\">Sad facial expression, rendered in Blender<\/figcaption><\/figure>\n\n\n\n<p>With the animation exported I had to integrate it with the interaction system. I already had a &#8220;facial expression&#8221; interaction type that I didn&#8217;t properly implement yet, so I added the actual logic to it. If you interact with an NPC and you reach a facial expresison line (eg. `<em>Facial Expresison, Happy<\/em>`), the interaction system will search the expressions data table for a row called Happy, and from there it will retreive the animation asset and the shader parameters used for the eye (eye size, open\/closed eyelids, random movement, use a custom animation&#8230;etc).<\/p>\n\n\n\n<p>Here is an example from Unreal, with everything implemented and working properly. (Ignore the weight painting issues, I was still in the process of transitioning to the new skeleton)<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/Expressions_in_ue.mp4\"><\/video><figcaption class=\"wp-element-caption\">Facial Expression Demo<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">offsensive words detection<\/h2>\n\n\n\n<p>I will eventually allow the player to pick a name for their character, and for that I had to add a list to block some offensive words. I made two lists : Strict offensive words, and normal offensive words.<br>The strict offensive words will ban any word containing them, even as a substring in the middle of the name. For example let&#8217;s say &#8220;Cat&#8221; is a strictly banned word, that will mean the words &#8220;category&#8221;, &#8220;placate&#8221;, &#8220;educate&#8221;, &#8220;provocative&#8221; and so on will all be banned too. This is only reserved for severe ones, like slurs.<br>As for the normal list, it will only bad a word if it&#8217;s very similar to what&#8217;s on the list. If &#8220;Hose&#8221; is in the list for example, &#8220;chose&#8221; and &#8220;those&#8221; will be fine, and only &#8220;hose&#8221;, &#8220;HOSE&#8221;, &#8220;Hoses&#8221; and so on will be banned.<br>I&#8217;m fine with letting the player use profanity in their name, it&#8217;s their choice after all, I&#8217;m just trying to prevent slurs for obvious reasons, and also the very lazy and obvious ones, at least be creative with it lol.<br>Fun fact : I banned SteamUser, Username, User, Player and so on for the username autofill (detailed below). But internally they&#8217;re handled like offensive words.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Username<\/h2>\n\n\n\n<p>I had the idea of reading the username from the PC and using it in a 4th wall breaking dialog. I quickly wrote a short interaction with the subject of simulation theory, and my goal is to surprise some players by knowing their username and using it in dialog, especially if it&#8217;s different from the picked player name.<br>While doing this I also fixed some bugs with the chatter system, and used it here to portray a character reading a book out loud.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/simulationtheory.mp4\"><\/video><figcaption class=\"wp-element-caption\">Simulation Theory. The name &#8220;Abdou&#8221; is read from my Windows username.<\/figcaption><\/figure>\n\n\n\n<p>If the username happens to match the player name, or it&#8217;s in the forbidden list (this is why User, SteamUser&#8230;etc are banned), then it will be replaced by a fallback name called &#8220;Elidith&#8221;. It&#8217;s just an inside joke I had with a friend.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Optimization<\/h2>\n\n\n\n<p>While I was optimizing some lights and converting everything to static\/stationary, I noticed a significant drop in performance for some reason.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"138\" height=\"56\" data-id=\"1433\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image.png\" alt=\"\" class=\"wp-image-1433\"\/><figcaption class=\"wp-element-caption\">No Baked Lighting<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"123\" height=\"81\" data-id=\"1434\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-1.png\" alt=\"\" class=\"wp-image-1434\"\/><figcaption class=\"wp-element-caption\">With Baked Lighting<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>Performance on the steamdeck was even worse, it went from ~60 down to ~15. I isolated the issue to the directional light being stationary at first. It didn&#8217;t happen with it being dynamic or static. The next day while discussing some environment art stuff with a friend we mentioned double-sided shadows and I remembered I had that temporarily enabled for the terrain, a <em>massive <\/em>(placeholder) single object with a few hundred thousand triangles. Disabling it gave a performance uplift, and things are actaully a bit faster with baked lighting, as they should be.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"114\" height=\"40\" data-id=\"1436\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-3.png\" alt=\"\" class=\"wp-image-1436\"\/><figcaption class=\"wp-element-caption\">No Baked Lighting<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"103\" height=\"63\" data-id=\"1435\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-2.png\" alt=\"\" class=\"wp-image-1435\"\/><figcaption class=\"wp-element-caption\">With Baked Lighting<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>The good thing is that I got a huge performance increase on the SteamDeck too, ~110FPS at 75% resolution, vs ~60 at 50% resolution previously. Even the challenging parts where all unoptimized rooftops and trees were visible it still hovered comfortably above 60m that&#8217;s a good sign.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"810\" height=\"456\" src=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-4.png\" alt=\"\" class=\"wp-image-1437\" srcset=\"https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-4.png 810w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-4-300x169.png 300w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-4-768x432.png 768w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-4-230x129.png 230w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-4-350x197.png 350w, https:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/image-4-480x270.png 480w\" sizes=\"(max-width: 810px) 100vw, 810px\" \/><figcaption class=\"wp-element-caption\">SteamDeck performance<\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Misc<\/h2>\n\n\n\n<p>I made a batch .exr\/.hdr to .tbsky converter plugin for Marmoset Toolbag. I needed it to convery my HDRI library and add it to Marmoset&#8217;s user library without doing so by hand.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video controls src=\"http:\/\/abdoubouam.com\/wp-content\/uploads\/2025\/07\/tbsky.mp4\"><\/video><figcaption class=\"wp-element-caption\">Batch EXR\/HDRI to TBSky converter<\/figcaption><\/figure>\n\n\n\n<p>The plugin can be downloaded from here if you want it. It is compatible with Marmoset 5.02 Beta, maybe other versions too <a href=\"https:\/\/pastebin.com\/AYPRS3ks\">https:\/\/pastebin.com\/AYPRS3ks<\/a><\/p>\n\n\n\n<p>I also finished Chapter 3 of Deltarune, things are starting to get interesting. I played Blender Studio&#8217;s Dog Walk too, it was cute and I really liked the paper and watercolor style, it&#8217;s very well executed.<\/p>\n\n\n\n<p>That&#8217;s about it for this week, thanks for reading, and I hope to see you again next time!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The past two weeks were productive. I&#8217;m still working on my portfolio and applying to jobs in addition to game development. Here&#8217;s what I did. Rotary Hammer I added another portfolio piece. I always wanted to make power tools because they have intricate shapes and designs. I tried once a long time ago but abandoned it because I was way in over my head. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1431,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[],"_links":{"self":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/1432"}],"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=1432"}],"version-history":[{"count":8,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/1432\/revisions"}],"predecessor-version":[{"id":1445,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/posts\/1432\/revisions\/1445"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media\/1431"}],"wp:attachment":[{"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/media?parent=1432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/categories?post=1432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abdoubouam.com\/index.php\/wp-json\/wp\/v2\/tags?post=1432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}