<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Will Kolb&#039;s Blog</title>
	<atom:link href="http://willkolb.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://willkolb.com</link>
	<description></description>
	<lastBuildDate>Sun, 08 Mar 2026 19:35:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://willkolb.com/wp-content/uploads/2024/07/BlogLogo-150x150.png</url>
	<title>Will Kolb&#039;s Blog</title>
	<link>https://willkolb.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Left Vs. Right: The eternal struggle</title>
		<link>https://willkolb.com/?p=1338</link>
					<comments>https://willkolb.com/?p=1338#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Sun, 08 Mar 2026 19:35:19 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1338</guid>

					<description><![CDATA[I&#8217;ve been working on improving the damage system for the bots so that when a limb gets damaged enough it stops being usable. Originally I wanted to do this by dangling the bot from essentially an invisible hanger, then to slowly chip away at bones until the whole thing just kinda flopps over. However, I [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve been working on improving the damage system for the bots so that when a limb gets damaged enough it stops being usable. Originally I wanted to do this by dangling the bot from essentially an invisible hanger, then to slowly chip away at bones until the whole thing just kinda flopps over. However, I think that isn&#8217;t quite as possible/easy as I thought it once was. So my goal now is to manually add in some &#8220;damaged animations&#8221; to handle this kinda situation. Then I&#8217;ll add some blending in between them.</p>



<p> Today I was starting to work on these damaged animations and I spent around an hour not knowing that I don&#8217;t know left from right:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/03/2026-03-08_15-19-37.mp4"></video></figure>



<p>I made the damaged walk forward &#8220;with left arm broken&#8221; animations last night. Turns out it was the right arm the whole time&#8230;.</p>



<p>What <em>should</em> happen is that the left arm should stay raised (then I would make that a physics object so it would hang down).</p>



<p>I also improved the control rig for said animations.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="506" src="https://willkolb.com/wp-content/uploads/2026/03/image-1024x506.png" alt="" class="wp-image-1340" srcset="https://willkolb.com/wp-content/uploads/2026/03/image-1024x506.png 1024w, https://willkolb.com/wp-content/uploads/2026/03/image-300x148.png 300w, https://willkolb.com/wp-content/uploads/2026/03/image-768x379.png 768w, https://willkolb.com/wp-content/uploads/2026/03/image.png 1027w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>This lets me can do some nice twists as needed:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/03/2026-03-08_15-25-32.mp4"></video></figure>



<p>Finally I&#8217;ve converted the project to c++ to let me do some more clever things with what gets damaged on the bot. Specifically I can flip specific bones to kinematic if I need to, flip specific bodies to simulated (which you could kinda do in blueprints). But the big thing was to be able to grab all bone names from any given physics asset. </p>



<pre class="wp-block-code"><code><code>TArray&lt;FName> UBlackLaceCLib::GetPhysicsBodyBoneNames(USkeletalMeshComponent* SkeletalMeshComponent)
{
    TArray&lt;FName> BoneNames;

    if (!IsValid(SkeletalMeshComponent))
    {
        return BoneNames;
    }

    UPhysicsAsset* PhysicsAsset = SkeletalMeshComponent->GetPhysicsAsset();
    if (!IsValid(PhysicsAsset))
    {
        return BoneNames;
    }

    for (USkeletalBodySetup* BodySetup : PhysicsAsset->SkeletalBodySetups)
    {
        if (!IsValid(BodySetup))
        {
            continue;
        }

        BoneNames.Add(BodySetup->BoneName);
    }

    return BoneNames;
}</code></code></pre>



<p>Which honestly its not that complicated but for some reason you just can&#8217;t do this in blueprints.</p>



<p>Why do I need this functionality? Well its to enable adding in a location damage component for the bots. Essentially this component will call the function above to make an array of body parts that can be damaged and their individual health. Then the component has a &#8220;body part destroyed&#8221; event which the patrol bot can bind to. This lets me capture what got hit and ragdoll that specific body part.</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/03/2026-03-08_15-34-00.mp4"></video></figure>



<p>Outside of improving the bot animations I&#8217;m still working on making a cohesive art pass but I&#8217;m still pondering what that means/how to demonstrate it etc.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1338</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://willkolb.com/wp-content/uploads/2026/03/2026-03-08_15-19-37.mp4" length="7571363" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2026/03/2026-03-08_15-25-32.mp4" length="4268553" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2026/03/2026-03-08_15-34-00.mp4" length="23772331" type="video/mp4" />

			</item>
		<item>
		<title>I: man, make I beam</title>
		<link>https://willkolb.com/?p=1332</link>
					<comments>https://willkolb.com/?p=1332#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Sat, 28 Feb 2026 16:52:56 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[GameDev]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1332</guid>

					<description><![CDATA[Made an I-Beam. Was going for a quake 1 ascetic but now I think I ended up too much battle bit. Gonna go back to the drawing board here. I got creative with the UV mapping (at least more so than normal) so I could just kinda throw a single image at the problem. However, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="565" src="https://willkolb.com/wp-content/uploads/2026/02/image-10-1024x565.png" alt="" class="wp-image-1333" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-10-1024x565.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-10-300x165.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-10-768x424.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-10-1536x847.png 1536w, https://willkolb.com/wp-content/uploads/2026/02/image-10-2048x1129.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Made an I-Beam. Was going for a quake 1 ascetic but now I think I ended up too much battle bit. Gonna go back to the drawing board here. I got creative with the UV mapping (at least more so than normal) so I  could just kinda throw a single image at the problem. However, I build everything pretty wrong so the UV Maps are&#8230;odd:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="565" src="https://willkolb.com/wp-content/uploads/2026/02/image-11-1024x565.png" alt="" class="wp-image-1334" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-11-1024x565.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-11-300x165.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-11-768x424.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-11-1536x847.png 1536w, https://willkolb.com/wp-content/uploads/2026/02/image-11-2048x1129.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Well anyways more todo on the general look of things. </p>



<p>its still crazy to me how a unified artistic vision can really make something look good. Quake 2 for example:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="300" height="168" src="https://willkolb.com/wp-content/uploads/2026/02/image-12.png" alt="" class="wp-image-1335" style="width:604px;height:auto"/></figure>



<p>That picture looks SOOO much better than anything I&#8217;ve made and those were guys from early 90s without skeletal animations etc. really drives home how concept artist can drive the whole game.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1332</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>10 Months of No Physics Animations&#8230;</title>
		<link>https://willkolb.com/?p=1321</link>
					<comments>https://willkolb.com/?p=1321#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Sat, 21 Feb 2026 15:43:10 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1321</guid>

					<description><![CDATA[So I&#8217;ve been wanting to make the robots more of a physics simulations since I started the project. However, I&#8217;ve had a hard time of figuring out why I couldn&#8217;t get the physics-based-animation effect I was looking for (See https://willkolb.com/?p=915). I thought I had a decent method which made the ragdolls of the robots stable [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>So I&#8217;ve been wanting to make the robots more of a physics simulations since I started the project. However, I&#8217;ve had a hard time of figuring out why I couldn&#8217;t get the physics-based-animation effect I was looking for (See <a href="https://willkolb.com/?p=915">https://willkolb.com/?p=915</a>). I thought I had a decent method which made the ragdolls of the robots stable but I could never get the full on real-time physics simulation working. I have also had constant issues with control/modular rigs and started ignoring this concept all together. However, in my infinite stubbornness  I tried re-rigging the patrol bot again.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="967" height="675" src="https://willkolb.com/wp-content/uploads/2026/02/image-5.png" alt="" class="wp-image-1322" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-5.png 967w, https://willkolb.com/wp-content/uploads/2026/02/image-5-300x209.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-5-768x536.png 768w" sizes="auto, (max-width: 967px) 100vw, 967px" /><figcaption class="wp-element-caption">New Skeleton</figcaption></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="874" height="642" src="https://willkolb.com/wp-content/uploads/2026/02/image-6.png" alt="" class="wp-image-1323" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-6.png 874w, https://willkolb.com/wp-content/uploads/2026/02/image-6-300x220.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-6-768x564.png 768w" sizes="auto, (max-width: 874px) 100vw, 874px" /><figcaption class="wp-element-caption">Old Skeleton.</figcaption></figure>



<p>It&#8217;s hard to tell just from pictures but the big differences are: the Root bone under the robot, the tail and head portions, and the overall flow goes from tail to head rather than spine to each leg. It&#8217;s easier to see differences when looking at the hierarchy differences:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="471" height="168" src="https://willkolb.com/wp-content/uploads/2026/02/image-7.png" alt="" class="wp-image-1324" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-7.png 471w, https://willkolb.com/wp-content/uploads/2026/02/image-7-300x107.png 300w" sizes="auto, (max-width: 471px) 100vw, 471px" /><figcaption class="wp-element-caption">Old Skeleton</figcaption></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="522" height="232" src="https://willkolb.com/wp-content/uploads/2026/02/image-8.png" alt="" class="wp-image-1325" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-8.png 522w, https://willkolb.com/wp-content/uploads/2026/02/image-8-300x133.png 300w" sizes="auto, (max-width: 522px) 100vw, 522px" /><figcaption class="wp-element-caption">New Skeleton</figcaption></figure>



<p>Now what this enables is that unreal can actually tell what&#8217;s going on for the bot. The biggest benefit is that physics simulations start to become much more stable:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/02/2026-02-21_10-36-22.mp4"></video></figure>



<p>Also I was able to implement a control rig with way more body control than I had before.</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/02/2026-02-21_10-33-32.mp4"></video></figure>



<p>This should enable better and more natural style animations. Specifically the walking animations, jump animations, aiming pitch/yaw and hit reactions <em>should</em> all be much more in tune with the rest of the game. </p>



<p>However now that I&#8217;ve re-rigged the entire bot I&#8217;ll probably need to recreate ALL of the animations&#8230;.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="869" src="https://willkolb.com/wp-content/uploads/2026/02/image-9-1024x869.png" alt="" class="wp-image-1328" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-9-1024x869.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-9-300x255.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-9-768x652.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-9.png 1148w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>On the mapping/animation front: I&#8217;ve been listening to a bunch of the quake 1 soundtrack:</p>



<figure class="wp-block-embed is-type-rich is-provider-soundcloud wp-block-embed-soundcloud wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Quake by Nine Inch Nails" width="500" height="450" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?visual=true&#038;url=https%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F1157578906&#038;show_artwork=true&#038;maxheight=750&#038;maxwidth=500"></iframe>
</div></figure>



<p>and a bunch of pre-Year Zero Nine Inch Nails and now I&#8217;m feeling a low-poly rusty ascetic for the game. However, I think getting the &#8220;game&#8221; part finished first is still my priority. </p>



<p>In other news: my 555 synth project is still moving I just had to get some flux and a new solder tip. Progress is being made&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1321</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://willkolb.com/wp-content/uploads/2026/02/2026-02-21_10-36-22.mp4" length="4241335" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2026/02/2026-02-21_10-33-32.mp4" length="3130972" type="video/mp4" />

			</item>
		<item>
		<title>Grey Boxes: a.k.a &#8220;Brutalism&#8221;</title>
		<link>https://willkolb.com/?p=1314</link>
					<comments>https://willkolb.com/?p=1314#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Thu, 19 Feb 2026 12:51:19 +0000</pubDate>
				<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1314</guid>

					<description><![CDATA[I also fixed a bunch of the shooting systems, re-worked the AI so it doesn&#8217;t try to reload in front of you. I added in some squad placeholders for future collaboration amongst units and started working on another overhaul of the basic bot so I can finally get physics based animations working. Also: (No idea [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="654" src="https://willkolb.com/wp-content/uploads/2026/02/image-1024x654.png" alt="" class="wp-image-1315" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-1024x654.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-300x192.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-768x490.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-1536x981.png 1536w, https://willkolb.com/wp-content/uploads/2026/02/image.png 1784w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="514" src="https://willkolb.com/wp-content/uploads/2026/02/image-1-1024x514.png" alt="" class="wp-image-1316" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-1-1024x514.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-1-300x151.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-1-768x386.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-1-1536x771.png 1536w, https://willkolb.com/wp-content/uploads/2026/02/image-1.png 1894w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="644" src="https://willkolb.com/wp-content/uploads/2026/02/image-2-1024x644.png" alt="" class="wp-image-1317" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-2-1024x644.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-2-300x189.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-2-768x483.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-2-1536x966.png 1536w, https://willkolb.com/wp-content/uploads/2026/02/image-2.png 1594w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="628" src="https://willkolb.com/wp-content/uploads/2026/02/image-3-1024x628.png" alt="" class="wp-image-1318" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-3-1024x628.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-3-300x184.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-3-768x471.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-3-1536x943.png 1536w, https://willkolb.com/wp-content/uploads/2026/02/image-3.png 1672w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>I also fixed a bunch of the shooting systems, re-worked the AI so it doesn&#8217;t try to reload in front of you. I added in some squad placeholders for future collaboration amongst units and started working on another overhaul of the basic bot so I can finally get physics based animations working.</p>



<p>Also:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="346" src="https://willkolb.com/wp-content/uploads/2026/02/image-4-1024x346.png" alt="" class="wp-image-1319" srcset="https://willkolb.com/wp-content/uploads/2026/02/image-4-1024x346.png 1024w, https://willkolb.com/wp-content/uploads/2026/02/image-4-300x101.png 300w, https://willkolb.com/wp-content/uploads/2026/02/image-4-768x259.png 768w, https://willkolb.com/wp-content/uploads/2026/02/image-4-1536x519.png 1536w, https://willkolb.com/wp-content/uploads/2026/02/image-4.png 1764w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>(No idea how to make this look good yet&#8230;)</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1314</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>&#8220;555 burgers, 555 fries, 555 tacos &#8230;&#8221;</title>
		<link>https://willkolb.com/?p=1292</link>
					<comments>https://willkolb.com/?p=1292#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Mon, 26 Jan 2026 14:30:50 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1292</guid>

					<description><![CDATA[Software guy pretends he knows Electrical Engineering]]></description>
										<content:encoded><![CDATA[
<p>Ive been in a creative/motivational null with developing my game so I wanted to do some hardware things to get my mind off of it. About two years ago I had this idea that I wanted to make a bunch of very small modular synths for myself/friends. So I spent around 3-4 months accruing passive components, a crappy amazon box of misc active components (Similar to but not exactly <a href="https://www.amazon.com/Minidodoca-Assortment-Integrated-Circuits-Included/dp/B0BTD88JJG/ref=sr_1_4?crid=1JUZSI4SSCNAU&amp;dib=eyJ2IjoiMSJ9.jxMPUuO1RrS--GqaQw-c9oyFrEAgqh2jWqjpK3fHHuCgAYHh5SzJ5byJcUx4fRKgTtEIa7AfJt4aI11nyOXtaEO3XfhiS30HqTzahBVpE9fdL6aZJiLutzwFUh6103h9b44G4iViH_kkTK5gAGkiGuWYAzb6N3l4LKvGC-dhMHYKJTJ9-2_Q2sw23_BCYqVXoQA_HFxtSZQLAv4op7-xb7_Ej39HJRlTIDFrBQTuqG0.CScnK5QW-bJxsVAnNY_LDWi6PaiCGq0X3iVZh8NNQ6Q&amp;dib_tag=se&amp;keywords=555&amp;qid=1769431736&amp;sprefix=555%2Caps%2C88&amp;sr=8-4&amp;th=1" data-type="link" data-id="https://www.amazon.com/Minidodoca-Assortment-Integrated-Circuits-Included/dp/B0BTD88JJG/ref=sr_1_4?crid=1JUZSI4SSCNAU&amp;dib=eyJ2IjoiMSJ9.jxMPUuO1RrS--GqaQw-c9oyFrEAgqh2jWqjpK3fHHuCgAYHh5SzJ5byJcUx4fRKgTtEIa7AfJt4aI11nyOXtaEO3XfhiS30HqTzahBVpE9fdL6aZJiLutzwFUh6103h9b44G4iViH_kkTK5gAGkiGuWYAzb6N3l4LKvGC-dhMHYKJTJ9-2_Q2sw23_BCYqVXoQA_HFxtSZQLAv4op7-xb7_Ej39HJRlTIDFrBQTuqG0.CScnK5QW-bJxsVAnNY_LDWi6PaiCGq0X3iVZh8NNQ6Q&amp;dib_tag=se&amp;keywords=555&amp;qid=1769431736&amp;sprefix=555%2Caps%2C88&amp;sr=8-4&amp;th=1">this</a> one), a breadboard that I never got rid of from college and a few Arudino boards lying around. The last 3-4 months I wanted to grab an oscilloscope off of facebook marketplace (there&#8217;s some older HP&#8217;s on there that seemed neat) but instead of commuting hard to $150 I instead spent $60 ish on <a href="https://www.amazon.com/FNIRSI-DPOX180H-Oscilloscope-Generator-Innovative/dp/B0CMT5WMFY/ref=pd_sbs_d_sccl_2_1/147-2045410-0434125?pd_rd_w=5RDS0&amp;content-id=amzn1.sym.2cd14f8d-eb5c-4042-b934-4a05eafd2874&amp;pf_rd_p=2cd14f8d-eb5c-4042-b934-4a05eafd2874&amp;pf_rd_r=BK02QFHGM6RZZYDXW21K&amp;pd_rd_wg=1RS5a&amp;pd_rd_r=c1e4c3cd-8b52-4795-88f6-4b7bab9434c0&amp;pd_rd_i=B0CMT5WMFY&amp;th=1">this guy</a> and started re-learning everything that I spent hundreds of thousands of dollars to learn in college (as my day job has been mostly software for 3+ years).</p>



<h2 class="wp-block-heading">THE PLAN</h2>



<p>So my goal is to make a simple oscillator for playing audio frequencies, which I&#8217;ll claim is 0.01hz to 2000hz. With a frequency that is controlled by microcontroller.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="257" src="https://willkolb.com/wp-content/uploads/2026/01/image-8-1024x257.png" alt="" class="wp-image-1295" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-8-1024x257.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-8-300x75.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-8-768x193.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-8-1536x386.png 1536w, https://willkolb.com/wp-content/uploads/2026/01/image-8.png 1783w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You might ask me &#8220;hey why don&#8217;t you just use the microcontroller as the oscillator? <a href="https://electronics.stackexchange.com/questions/354405/converting-pwm-to-analog-voltage">You can literally attach a capacitor to the pwm and use it as a pseudo dac</a>&#8221; . Good point, I have three counter points:</p>



<ul class="wp-block-list">
<li>Then I would claim its a digital synthesizer not an analog one</li>



<li>Way Less Cool</li>



<li>Shut up</li>
</ul>



<p>&#8212;&#8212;&#8212;-</p>



<p>Now that I have the plan in order I can take stock to see what I even have:</p>



<ul class="wp-block-list">
<li>Bunch of passive components (Inductors, resistors, capacitors)</li>



<li>555 timers (NE555)</li>



<li>Misc op amps (LM358, LM324, NE5532, JRC4558)</li>



<li>Voltage comparitors (LM339, LM393)</li>



<li>Nand gates (74Hc00)</li>



<li>Class A/B amplifier (TDA2030)</li>



<li>Teensy 4.1</li>



<li>Raspberry pi</li>



<li>Arudino uno</li>



<li>A bunch of 2n222a BJTs</li>
</ul>



<p>&#8212;&#8212;&#8212;&#8212;</p>



<p>Okay so selecting the Microcontroller is easy: Raspberry pi&#8217;s are lame (I don&#8217;t want/need networking, display out, linux, ext), My arduino Uno uses usb-b and I&#8217;m pretty sure I don&#8217;t have a cable, so that leaves the Teensy.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="322" src="https://willkolb.com/wp-content/uploads/2026/01/image-9-1024x322.png" alt="" class="wp-image-1296" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-9-1024x322.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-9-300x94.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-9-768x242.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-9-1536x483.png 1536w, https://willkolb.com/wp-content/uploads/2026/01/image-9.png 1780w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>On the oscillator side I could use:</p>



<ul class="wp-block-list">
<li><a href="https://components101.com/articles/voltage-controlled-oscillator-using-555">A 555 timer as a vco</a></li>



<li>A Faster <a href="https://www.electronics-tutorials.ws/oscillator/oscillators.html" data-type="link" data-id="https://www.electronics-tutorials.ws/oscillator/oscillators.html">LC Oscillator</a> that I can <a href="https://blog.minicircuits.com/a-quick-guide-to-mixer-topologies/" data-type="link" data-id="https://blog.minicircuits.com/a-quick-guide-to-mixer-topologies/">mix down</a> to audio frequencies</li>



<li><a href="https://www.electronics-tutorials.ws/opamp/op-amp-multivibrator.html" data-type="link" data-id="https://www.electronics-tutorials.ws/opamp/op-amp-multivibrator.html">Op amp multivibrator</a></li>
</ul>



<p>&#8212;&#8212;&#8212;&#8212;</p>



<p>After quick review, oscillator #2 seems&#8230;hard, oscillator #3 could work but it seems like more parts than I wanna use&#8230; Which leaves us with oscillator #1!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="284" src="https://willkolb.com/wp-content/uploads/2026/01/image-10-1024x284.png" alt="" class="wp-image-1297" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-10-1024x284.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-10-300x83.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-10-768x213.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-10-1536x426.png 1536w, https://willkolb.com/wp-content/uploads/2026/01/image-10.png 1798w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>To be honest I haven&#8217;t decided the amp but generally it could be one of two things: </p>



<p>1.) An i2c controlled IC from digikey such as <a href="https://www.analog.com/en/products/max98425a.html">https://www.analog.com/en/products/max98425a.html</a> (if I want to waste money)</p>



<p>2.) A transistor setup that uses a control voltage from the micro-controller</p>



<p>Most likely it would be #2 but I&#8217;ll dig into that later</p>



<h2 class="wp-block-heading">555 timer..time</h2>



<p>Building a voltage controlled oscillator from a 555 timer is a pretty cookie cutter experience:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="900" height="739" src="https://willkolb.com/wp-content/uploads/2026/01/image-11.png" alt="" class="wp-image-1298" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-11.png 900w, https://willkolb.com/wp-content/uploads/2026/01/image-11-300x246.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-11-768x631.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure>



<p>How ever it gets a little complicated when you try to choose your target frequency range.</p>



<p>In my case I&#8217;m aiming for 0.01-2000hz. In college I would do some math to figure this out but most of the equations are already solved in <a href="https://components101.com/articles/voltage-controlled-oscillator-using-555" data-type="link" data-id="https://components101.com/articles/voltage-controlled-oscillator-using-555">various places</a> online. There&#8217;s also a systems management level to all of this, where maximizing your frequency span can create some odd artifacts etc. </p>



<p>So instead of being totally analytical I decided to be more visual:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="706" src="https://willkolb.com/wp-content/uploads/2026/01/image-12-1024x706.png" alt="" class="wp-image-1299" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-12-1024x706.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-12-300x207.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-12-768x530.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-12.png 1211w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>I made some AI slop where I can keep trying combinations until I get an output that I like. HOWEVER, I quickly realized the man problem of using a 555 timer: You really only get 5x of your lowest possible frequency. So in my case if my key frequency was 0.01hz, my highest frequency could only be around 0.05hz, if it wanted it to be 100hz, then my highest would be 500hz etc.</p>



<p>So how do we solve this? I could go back and figure out another oscillator type that has better control&#8230;.OR I COULD THROW MORE 555 OSCILLATORS IN FOR COVERAGE!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="709" src="https://willkolb.com/wp-content/uploads/2026/01/image-13-1024x709.png" alt="" class="wp-image-1300" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-13-1024x709.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-13-300x208.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-13-768x532.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-13-1536x1063.png 1536w, https://willkolb.com/wp-content/uploads/2026/01/image-13.png 1576w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>So then to update the block diagram:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="403" src="https://willkolb.com/wp-content/uploads/2026/01/image-15-1024x403.png" alt="" class="wp-image-1302" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-15-1024x403.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-15-300x118.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-15-768x302.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-15-1536x605.png 1536w, https://willkolb.com/wp-content/uploads/2026/01/image-15.png 1762w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>This is where I left off the oscillator bit. If I wanted to get a single tone out I could try using a single 555 timer with a mosfet to switch between a few capacitors (In the diagram above C1 is the major driver to your frequency range</p>



<h2 class="wp-block-heading">Kinda doing dac stuff</h2>



<p>So the teensy doesn&#8217;t have a dac. It it only has <a href="https://en.wikipedia.org/wiki/Pulse-width_modulation" data-type="link" data-id="https://en.wikipedia.org/wiki/Pulse-width_modulation">pwm</a>, so how do I get an analog value out? Simple, just throw a capacitor (and resistor) in-front of the line and your square wave gets averaged based upon the capacitance of that capacitor (See <a href="https://electronics.stackexchange.com/questions/354405/converting-pwm-to-analog-voltage" data-type="link" data-id="https://electronics.stackexchange.com/questions/354405/converting-pwm-to-analog-voltage">this, again</a>!). A.k.A you put a <a href="https://en.wikipedia.org/wiki/Low-pass_filter">RC LowPass </a>filter in-front of the pwm</p>



<p>Now there&#8217;s some issues with this approach:</p>



<ul class="wp-block-list">
<li>Your output will never be perfectly the level you want, a capacitor charges and discharges so if a square wave hits a capacitor you get some kind of voltage ripple</li>



<li>The capacitor takes time to charge once you start hitting it with pwm, so if you choose capacitance that is too large it will take a long time to obtain your key voltage</li>



<li>Your output voltage is limited from 0 to whatever the top level of your square is</li>
</ul>



<p>&#8212;&#8212;&#8212;&#8212;</p>



<p>So to summarize: my frequency range is limited by the control voltage into my 555 oscillator, which I can determine by a capacitance that I want to be big enough to stay stable when I choose a voltage but small enough so that when I choose a voltage it doesn&#8217;t take seconds to get the output to that voltage.</p>



<p>Again instead of doing math I made a tool!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="712" src="https://willkolb.com/wp-content/uploads/2026/01/image-16-1024x712.png" alt="" class="wp-image-1303" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-16-1024x712.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-16-300x208.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-16-768x534.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-16-1536x1067.png 1536w, https://willkolb.com/wp-content/uploads/2026/01/image-16.png 1580w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Now I can visualize what my control voltage will be based upon the resistor and capacitor</p>



<p>Main things I was trying to do is ensure that the output of my teensy can properly hit the range of the voltage needed for all frequencies of the 555 oscillator. In this case I can go from 0 volts to 3.3volts, and choosing a 2uf capacitor and a 10k ohm resistor seems to be the best trade off of voltage ripple at steady state, and step response.</p>



<h2 class="wp-block-heading">Next steps</h2>



<p>So I didn&#8217;t take any picture here but I have the high band 555 timer laid out on a breadboard and hooked up to the oscilloscope to see it working. The teensy pwm stuff is pretty simple in my opinion so I wasn&#8217;t rushing to get code written. My next steps for this are:</p>



<ul class="wp-block-list">
<li>Put the 555 timer on its own board</li>



<li>Make the other 3, 555 timer boards</li>



<li>Figure out how to make a mixer (and buy some knobs for the mixer)</li>



<li>Figure out how to make a decent amp</li>



<li>Hot glue everything together</li>



<li>Sell on etsy (not really)</li>
</ul>



<p>&#8212;&#8212;&#8212;&#8212;</p>



<p>I threw the tools that I made (claude made) here: <a href="https://github.com/wfkolb/EEUtils/tree/main">https://github.com/wfkolb/EEUtils/tree/main</a> if you&#8217;re interested. Its mostly pyqt and a little numpy in the mix. I&#8217;ll try to keep that updated as I get more math in, I&#8217;ll probably throw a mixer and amp tab in to help me out there. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1292</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Another Thing With Another Gun on it</title>
		<link>https://willkolb.com/?p=1279</link>
					<comments>https://willkolb.com/?p=1279#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 14:51:31 +0000</pubDate>
				<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1279</guid>

					<description><![CDATA[This one is just a stick]]></description>
										<content:encoded><![CDATA[
<p>I have the mantis mostly completed:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/01/2026-01-17_08-53-07.mp4"></video></figure>



<p>I painted it red which I thought might be cool but really its just giving christmas vibes:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="694" src="https://willkolb.com/wp-content/uploads/2026/01/image-1024x694.png" alt="" class="wp-image-1281" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-1024x694.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-300x203.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-768x520.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-1536x1041.png 1536w, https://willkolb.com/wp-content/uploads/2026/01/image.png 1563w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>I definitely need to do another paint pass, also having nothing ontop of that pillar seems kinda crazy. The smoothness of that intersection leaves something to be desired, maybe a wire or some kind of power&#8230;pack&#8230;thing?</p>



<p>Finally as you can tell from the video the mantis stays still unless turning towards the player. The turret at the top is on its own aiming system. I&#8217;m not a fan of the turning on the body front, I have to figure out a way to lock the movement of the turret periodically. To demonstrate what I mean:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/01/2026-01-17_08-59-49.mp4"></video></figure>



<p>The turret looks like its skating across the floor, the patrol bot has this also but its on such a smaller scale it&#8217;s harder to see. I&#8217;ll definitely need to make some kinda scheme to stop movement on certain frames on animation.</p>



<p>So the gun on top of the turret aims in both azimuth and elevation. Both are controlled from the pivot point on the bottom of the gun. Originally I had everything inside a control rig across two different controls, but that proved to be pretty painful as <a href="https://en.wikipedia.org/wiki/Gimbal_lock" data-type="link" data-id="https://en.wikipedia.org/wiki/Gimbal_lock">gimbal lock</a> would mess with everything. Instead of fixing the gimbal lock problem I basically ignored it and disabled the yaw control in the rig for pitch control only. </p>



<p></p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2026/01/2026-01-17_09-04-58.mp4"></video></figure>



<p>Which I think the springiness looks pretty cool, however this gives a different problem. If I just said &#8220;player is at 10 degrees from the tip of the barrel, turn bottom to 10 degrees&#8221; the barrel would never really point at the player. It would have some kind of vertical offset, then you might think &#8220;this is a trig problem!&#8221; however you miss one of the key side distances, because you&#8217;re not really sure what you need to set the angle to&#8230;. I tried drawing below what I&#8217;m talking about:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="947" height="887" src="https://willkolb.com/wp-content/uploads/2026/01/image-1.png" alt="" class="wp-image-1284" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-1.png 947w, https://willkolb.com/wp-content/uploads/2026/01/image-1-300x281.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-1-768x719.png 768w" sizes="auto, (max-width: 947px) 100vw, 947px" /></figure>



<p>This is one of those things that it <strong>REALLY</strong> feels like I&#8217;m failing at some simple trig here. After making a few attempts myself I gave up, started consulting AI to see what silly mistake I made&#8230;it turns out I made a classic <a href="https://en.wikipedia.org/wiki/Inverse_kinematics">Inverse Kinematics</a> problem by doing something a stupid way. </p>



<p>You essentially can&#8217;t figure this out with a systems of equations or any kind of trig because you don&#8217;t have that goal distance to the target. So in this case you need to basically keep guessing and checking the answer to converge on the proper value. Now writing this out I feel kinda dumber HOWEVER the only other way you could really do this is by making individualized animations for each position, knowing what the aim angle is at each position by per-calculating (a <a href="https://en.wikipedia.org/wiki/Lookup_table" data-type="link" data-id="https://en.wikipedia.org/wiki/Lookup_table">look up table</a> of model poses).</p>



<p>Anyways here&#8217;s the rough algorithm:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="526" src="https://willkolb.com/wp-content/uploads/2026/01/image-2-1024x526.png" alt="" class="wp-image-1285" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-2-1024x526.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-2-300x154.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-2-768x395.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-2.png 1537w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Basically:<br>1.) Take your current elevation and determine how far your off on your Z plane and how far off you are on your XY plane (technically this is wrong but I can get away with it because my robot it always correcting azimuth, also its left hand XYZ if anyone is keeping up).<br>2.) Calculate what theta might be if we took the error distance and made an angle guess for the pivot point<br>3.) Run the algorithm again to further update theta.</p>



<p>So now I have a gun that tracks your elevation and azimuth.</p>



<p>On the actual game side I&#8217;m trying to figure out what I want the worlds to be, I think I&#8217;m leaning towards 90s fps alleyways more so than the destroyed corporate buildings I was going with. I started making a kinda warehouse level and I think I&#8217;m going to trash it:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="544" src="https://willkolb.com/wp-content/uploads/2026/01/image-3-1024x544.png" alt="" class="wp-image-1286" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-3-1024x544.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-3-300x159.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-3-768x408.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-3.png 1428w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="512" src="https://willkolb.com/wp-content/uploads/2026/01/image-4-1024x512.png" alt="" class="wp-image-1287" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-4-1024x512.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-4-300x150.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-4-768x384.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-4.png 1495w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="464" src="https://willkolb.com/wp-content/uploads/2026/01/image-5-1024x464.png" alt="" class="wp-image-1288" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-5-1024x464.png 1024w, https://willkolb.com/wp-content/uploads/2026/01/image-5-300x136.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-5-768x348.png 768w, https://willkolb.com/wp-content/uploads/2026/01/image-5.png 1304w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="924" height="566" src="https://willkolb.com/wp-content/uploads/2026/01/image-6.png" alt="" class="wp-image-1289" srcset="https://willkolb.com/wp-content/uploads/2026/01/image-6.png 924w, https://willkolb.com/wp-content/uploads/2026/01/image-6-300x184.png 300w, https://willkolb.com/wp-content/uploads/2026/01/image-6-768x470.png 768w" sizes="auto, (max-width: 924px) 100vw, 924px" /></figure>



<p>The scale in generally all wrong (look how small each step is compared to that huge box) but I think iterating is going to be my friend here. Mostly I wanna keep pumping out trash maps for myself, learn why they&#8217;re trash, and make another map: rinse and repeat until I get something fun and playable.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1279</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://willkolb.com/wp-content/uploads/2026/01/2026-01-17_08-53-07.mp4" length="36521744" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2026/01/2026-01-17_08-59-49.mp4" length="4117353" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2026/01/2026-01-17_09-04-58.mp4" length="2820158" type="video/mp4" />

			</item>
		<item>
		<title>The magic &#8220;do it all&#8221; tool in fact did not do it all.</title>
		<link>https://willkolb.com/?p=1269</link>
					<comments>https://willkolb.com/?p=1269#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Sun, 28 Dec 2025 00:43:12 +0000</pubDate>
				<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1269</guid>

					<description><![CDATA[I gave up on trying to use modular rigs or IK rigs for the mantis bot ( see https://willkolb.com/?p=1239) and I I just manually made my own control rig. This is EXACTLY what I did for the patrol bot awhile back. This time around I wanted I convinced myself that last time was an lack [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I gave up on trying to use modular rigs or IK rigs for the mantis bot ( see <a href="https://willkolb.com/?p=1239">https://willkolb.com/?p=1239</a>) and I I just manually made my own control rig. This is  EXACTLY what I did for the <a href="https://willkolb.com/?p=661" data-type="link" data-id="https://willkolb.com/?p=661">patrol bot</a> awhile back. This time around I wanted I convinced myself that last time was an lack of knowledge that I brute forced around but I&#8217;m now thinking for anything that is NOT: human, symmetrical, rigged by epic games etc. you cannot use modular rigs and you MUST make you&#8217;re own control rigs. </p>



<p>&#8220;Okay that seems like not a big deal why do you care?&#8221; Fair question. I would classify a Modular rig as 3rd grade geometry where there&#8217;s a bunch of pretty buttons and shapes that you can drag/drop into the scene:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="552" src="https://willkolb.com/wp-content/uploads/2025/12/image-12-1024x552.png" alt="" class="wp-image-1270" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-12-1024x552.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-12-300x162.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-12-768x414.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-12-1536x828.png 1536w, https://willkolb.com/wp-content/uploads/2025/12/image-12.png 2007w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Control rigs are the math that someone for Babylonia made in 2000bc and was discovered by some guy in Europe 1000 years later who couldn&#8217;t figure out what was happening until a genius found out they could use that math to make lightning.</p>



<p>Long story short, the control rig is the output of the modular rig&#8221;and if making a modular rig fails then you need to build out your control rig yourself. In my case it wasn&#8217;t that bad (but that was because of my previous experience with the bot).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="775" height="842" src="https://willkolb.com/wp-content/uploads/2025/12/image-13.png" alt="" class="wp-image-1271" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-13.png 775w, https://willkolb.com/wp-content/uploads/2025/12/image-13-276x300.png 276w, https://willkolb.com/wp-content/uploads/2025/12/image-13-768x834.png 768w" sizes="auto, (max-width: 775px) 100vw, 775px" /></figure>



<p>Above is the construction script which takes those red circles from the rig and puts them under each of the legs.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="723" height="949" src="https://willkolb.com/wp-content/uploads/2025/12/image-14.png" alt="" class="wp-image-1272" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-14.png 723w, https://willkolb.com/wp-content/uploads/2025/12/image-14-229x300.png 229w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>



<p>This segment is the forward solve section where IK is applied to each limb. Honestly not that bad to make but the mental gymnastics I was doing to basically say &#8220;hey this easy thing (modular rigs) should be easy&#8221; made me rip my hair out for a few hours.</p>



<p>The final result:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_18-59-19.mp4"></video></figure>



<p>This worked out so much better now I just gotta make like 30 animations and we should have a good boss room fight. </p>



<p>Here&#8217;s a few that I was able to get done pretty quickly:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_19-40-49.mp4"></video></figure>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_19-41-24.mp4"></video></figure>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_19-41-47.mp4"></video></figure>



<p>Cut me some slack on that last one, might move it to be more physics based rather than animating whatever I guessed to be gravity.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1269</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_18-59-19.mp4" length="6219550" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_19-40-49.mp4" length="583405" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_19-41-24.mp4" length="769114" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-27_19-41-47.mp4" length="1772906" type="video/mp4" />

			</item>
		<item>
		<title>&#8220;Raise your hand if you&#8217;re getting shot&#8221;</title>
		<link>https://willkolb.com/?p=1260</link>
					<comments>https://willkolb.com/?p=1260#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Mon, 22 Dec 2025 02:33:08 +0000</pubDate>
				<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1260</guid>

					<description><![CDATA[Unreal engine has its quirks. A big one I found is the idea of &#8220;additive&#8221; animations (see this). Which essentially take the animation you made and subtracts it from a reference pose or animation. This is how you can easily blend ontop of an animation instead of getting some weird median between two existing animations. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_20-34-59.mp4"></video></figure>



<p>Unreal engine has its quirks. A big one I found is the idea of &#8220;additive&#8221; animations (see <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/animation-blueprint-blend-nodes-in-unreal-engine">this</a>). Which essentially take the animation you made and subtracts it from a reference pose or animation. This is how you can easily blend ontop of an animation instead of getting some weird median between two existing animations. I use this technique all the time, in the weapons I use it to add a fire animation ontop of the idle animation so you dont get weird glitching from recoil back to a relaxed state. In the bots I use it for everything that pretty much isn&#8217;t a &#8220;movement&#8221; state. Such as pitch tiling and hit reactions. In this case the hit reactions seem to be blending poorly with the rest of the animations. </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="993" height="764" src="https://willkolb.com/wp-content/uploads/2025/12/image-10.png" alt="" class="wp-image-1262" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-10.png 993w, https://willkolb.com/wp-content/uploads/2025/12/image-10-300x231.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-10-768x591.png 768w" sizes="auto, (max-width: 993px) 100vw, 993px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="786" height="414" src="https://willkolb.com/wp-content/uploads/2025/12/image-11.png" alt="" class="wp-image-1263" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-11.png 786w, https://willkolb.com/wp-content/uploads/2025/12/image-11-300x158.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-11-768x405.png 768w" sizes="auto, (max-width: 786px) 100vw, 786px" /></figure>



<p>I also added in bullet tracers which add a much needed element of feedback to shooting so you don&#8217;t feel like the gun is disconnected from the rest of the world. The problem here was that I was mixing a bunch of domains at the same time. When adding an animation there&#8217;s local space, and mesh space, and if you throw some IK stuff into the mix you hit issues where a vector of length 3 units in one space does not equal the same number of units in another space. In this case I was adding a bunch of animations in local space ontop of my IK rig which was manipulating everything in mesh space. This was harder to catch because I naturally assumed that each operation was isolated (akin to keeping each part of a math problem in parenthesis) however it seems like when ever I start playing with bones the manipulation strategy seems to stick onto the bones. So if I messed with something in local space, the next addition is assumed to be local space, so by switching everything to mesh space its working fine:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_20-53-53.mp4"></video></figure>



<p>In other news I somehow made the mags that the bots spawn on reload really big, which I think is probably a similar domain transfer issue.</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_21-00-13.mp4"></video></figure>



<p>Finally after all that talk about control rigs and modular rigs I&#8217;m hitting issues animating the mantis bot. </p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_21-28-53.mp4"></video></figure>



<p>There are things called &#8220;pole&#8221; controls (see <a href="https://help.autodesk.com/view/MAYAUL/2025/ENU/?guid=GUID-73C8C5B2-B0F8-4B96-9BB3-8AD257747E3D" data-type="link" data-id="https://help.autodesk.com/view/MAYAUL/2025/ENU/?guid=GUID-73C8C5B2-B0F8-4B96-9BB3-8AD257747E3D">this</a>) which act as a place for elbows to point to (in this case the robotic knees) and for some reason unreal put them VERY far away so they&#8217;re pretty un-weidly to handle. I&#8217;m going to have to remake the control rig for this model in order to animate it properly. However even with that kinda broken, half finished animation I think I&#8217;m on track to hit what I want from the mantis bot.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1260</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_20-34-59.mp4" length="14941142" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_20-53-53.mp4" length="4738068" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_21-00-13.mp4" length="1256583" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-21_21-28-53.mp4" length="2992901" type="video/mp4" />

			</item>
		<item>
		<title>&#8220;Well these kinematics are inverted&#8221;</title>
		<link>https://willkolb.com/?p=1253</link>
					<comments>https://willkolb.com/?p=1253#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Sat, 20 Dec 2025 21:37:01 +0000</pubDate>
				<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1253</guid>

					<description><![CDATA[I spent WAY to long getting leg ground detection working for the patrol bots: It still isn&#8217;t that great but it&#8217;s probably as good as I wanted it to be. The big thing is that I can put the bots on ramps and they look kinda right: The basic idea too complicated: essentially you draw [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I spent WAY to long getting leg ground detection working for the patrol bots:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-20_16-24-08.mp4"></video></figure>



<p> It still isn&#8217;t <em>that</em> great but it&#8217;s probably as good as I wanted it to be. The big thing is that I can put the bots on ramps and they look kinda right:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="582" src="https://willkolb.com/wp-content/uploads/2025/12/image-7-1024x582.png" alt="" class="wp-image-1255" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-7-1024x582.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-7-300x171.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-7-768x437.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-7.png 1031w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The basic idea too complicated: essentially you draw a line from the tip of the leg downward, then try to move the tip of the leg into that position. However, directly moving the leg ends up being weird because the rest of the leg doesn&#8217;t move along with it. To solve this you use some <a href="https://en.wikipedia.org/wiki/Inverse_kinematics" data-type="link" data-id="https://en.wikipedia.org/wiki/Inverse_kinematics">IK</a>! From the game perspective this is essentially the process of taking a target and working how the limb will get there, rather than attempting to move the limb to the target. </p>



<p>In unreal there&#8217;s a thing called &#8220;<a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/ik-rig-in-unreal-engine" data-type="link" data-id="https://dev.epicgames.com/documentation/en-us/unreal-engine/ik-rig-in-unreal-engine">IK rigs</a>&#8221; which do a bunch of the work for you but I had NO idea how to properly implement these until I went through it once. Now I think I have a &#8220;handle&#8221; but there&#8217;s some witchcraft in the background that I have no idea <em>why</em> its working. But anyways here&#8217;s the trace logic:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="437" src="https://willkolb.com/wp-content/uploads/2025/12/image-8-1024x437.png" alt="" class="wp-image-1256" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-8-1024x437.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-8-300x128.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-8-768x328.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-8-1536x656.png 1536w, https://willkolb.com/wp-content/uploads/2025/12/image-8-2048x874.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Generally this fires from a bunch of sockets I put in the mesh, then the feet find their way to meet up with the end of those traces.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="761" height="534" src="https://willkolb.com/wp-content/uploads/2025/12/image-9.png" alt="" class="wp-image-1257" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-9.png 761w, https://willkolb.com/wp-content/uploads/2025/12/image-9-300x211.png 300w" sizes="auto, (max-width: 761px) 100vw, 761px" /></figure>



<p>The thin red lines are the traces and red square are the &#8220;goals&#8221; that I want to move the legs to.</p>



<p>Now I just gotta give them some interesting things to walk on&#8230;</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1253</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-20_16-24-08.mp4" length="6260618" type="video/mp4" />

			</item>
		<item>
		<title>Metal Mantis</title>
		<link>https://willkolb.com/?p=1239</link>
					<comments>https://willkolb.com/?p=1239#respond</comments>
		
		<dc:creator><![CDATA[will]]></dc:creator>
		<pubDate>Sun, 14 Dec 2025 17:19:11 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[GameDev]]></category>
		<category><![CDATA[Unreal]]></category>
		<guid isPermaLink="false">https://willkolb.com/?p=1239</guid>

					<description><![CDATA[I&#8217;m constantly pondering what to do about the &#8220;boss room&#8221; for the game. Honestly I&#8217;ve been stumped on how to make it fun. In the meantime I&#8217;ve done a bunch of smaller things on the game such as: Another map I tried my hand at making a much much bigger map: The thought was that [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m constantly pondering what to do about the &#8220;boss room&#8221; for the game. Honestly I&#8217;ve been stumped on how to make it fun. In the meantime I&#8217;ve done a bunch of smaller things on the game such as:</p>



<h2 class="wp-block-heading">Another map</h2>



<p>I tried my hand at making a much much bigger map:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="712" src="https://willkolb.com/wp-content/uploads/2025/12/image-1-1024x712.png" alt="" class="wp-image-1241" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-1-1024x712.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-1-300x209.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-1-768x534.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-1.png 1354w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p> The thought was that the huge white cubes would be some kinda skyscrapers, the cones would be some kind of rubble breaking up sight-lines to make the game play a little closer range. I wanted the player to start at the edge of the city and have a set of terminals to control.</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-22-37.mp4"></video></figure>



<p>The building facades were things I made for a previous project that I never did much more with (see <a href="https://willkolb.com/?p=979">https://willkolb.com/?p=979</a>). Then I applied the fence tool I made (see <a href="https://willkolb.com/?p=1146">https://willkolb.com/?p=1146</a>) to give me the ability to quickly spin up those buildings. If I added some randomization tools to the model I think I would have a tool I probably distribute, but I&#8217;d have to re-write in C++ to make distribution cleaner.</p>



<p>The map is MUCH bigger than anything I made so far and it showed a few holes in what I was thinking. The big one was that its kinda boring walking long distances without some kind of sprinting.</p>



<h2 class="wp-block-heading">Sprinting (and Footstep audio rework)</h2>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-28-34.mp4"></video></figure>



<p>I added a few things here, the sprinting (obviously) the head bobbing and the audio playback tracks. The foot steps are still not amazing, it should be the same footsteps just a bit faster and pitched differently. However I&#8217;m just mixing between two sounds at the moment. You can see the audio graph below</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="626" src="https://willkolb.com/wp-content/uploads/2025/12/image-2-1024x626.png" alt="" class="wp-image-1244" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-2-1024x626.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-2-300x183.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-2-768x470.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-2.png 1377w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>It seems like a lot but really all it really has is that the red &#8220;Sprinting&#8221; input block feeds an audio mixer that goes from walking footsteps to running footsteps. Everything else is just for sound levels and multipliers. I&#8217;m still new to the metasound stuff but there&#8217;s some info here if interested (<a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/metasounds-the-next-generation-sound-sources-in-unreal-engine">https://dev.epicgames.com/documentation/en-us/unreal-engine/metasounds-the-next-generation-sound-sources-in-unreal-engine</a>). Interestingly enough this is probably the most applicable thing to my day-job. If metasounds worked on embedded targets my life would become exponentially easier.</p>



<h2 class="wp-block-heading">Boss Doors</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="497" src="https://willkolb.com/wp-content/uploads/2025/12/image-3-1024x497.png" alt="" class="wp-image-1245" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-3-1024x497.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-3-300x146.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-3-768x373.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-3.png 1350w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>This is kinda wierd to demonstrate visually but basically those two white blocks are &#8220;boss doors&#8221; that will only go down once you capture all points on a map. What that buys me is a place to put all of those overpowered bots I made such as the rocketeer (see <a href="https://willkolb.com/?p=750">https://willkolb.com/?p=750</a>). I have it in there in a very hacked manner where essentially the cubes are marked as &#8220;boss doors&#8221; and then just straight up delete themselves if there&#8217;s no more points to capture. In the future I want to put more of a process to take down the doors once the controls points are captured. </p>



<h2 class="wp-block-heading">Weapon Handling/Damage</h2>



<p>I realized one of the most annoying things is that shooting has WAAYYY to much recoil and its very hard to hit targets so I increased damage and lowered recoil so you have a bit more power on your side. My thought is that I want the player to loose around 5% of health per encounter and each encounter with a bot should take around 5-ish seconds. I have no way to characterize these numbers but simply going by feel. At the end of the day this is something I need to catch if I send out copies to friends for play testing (maybe I should add telemetry?) </p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-48-03.mp4"></video></figure>



<h2 class="wp-block-heading">Mantis Turret</h2>



<p>The turrets kinda suck in the boss area at the moment they&#8217;re just sticks with tubes on the top:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="897" src="https://willkolb.com/wp-content/uploads/2025/12/image-4-1024x897.png" alt="" class="wp-image-1247" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-4-1024x897.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-4-300x263.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-4-768x673.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-4.png 1246w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Not very menacing and they&#8217;re more annoying than anything. So I started thinking about how I would build a kinda moving turret and I came up with this guy: </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="691" src="https://willkolb.com/wp-content/uploads/2025/12/image-5-1024x691.png" alt="" class="wp-image-1248" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-5-1024x691.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-5-300x202.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-5-768x518.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-5.png 1334w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Which fits the same idea that the bots have where the top gun can be pretty much whatever I want just by modeling some kind of mount for it. The gun in this case is a new weapon I&#8217;m currently modeling/rigging.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="590" src="https://willkolb.com/wp-content/uploads/2025/12/image-6-1024x590.png" alt="" class="wp-image-1249" srcset="https://willkolb.com/wp-content/uploads/2025/12/image-6-1024x590.png 1024w, https://willkolb.com/wp-content/uploads/2025/12/image-6-300x173.png 300w, https://willkolb.com/wp-content/uploads/2025/12/image-6-768x442.png 768w, https://willkolb.com/wp-content/uploads/2025/12/image-6-1536x884.png 1536w, https://willkolb.com/wp-content/uploads/2025/12/image-6.png 1624w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Which takes some inspiration from Helldivers Autocannon (<a href="https://helldivers.fandom.com/wiki/AC-8_Autocannon">https://helldivers.fandom.com/wiki/AC-8_Autocannon</a>) But really is more of a Barrett M82 (<a href="https://en.wikipedia.org/wiki/Barrett_M82">https://en.wikipedia.org/wiki/Barrett_M82</a>) turned upside down with a Bren gun style sight (<a href="https://en.wikipedia.org/wiki/Bren_light_machine_gun">https://en.wikipedia.org/wiki/Bren_light_machine_gun</a>).</p>



<p>The gun is far from complete but the Mantis side is rigged and in game:</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-57-25.mp4"></video></figure>



<p>It was surprisingly fast to get working because I found out the proper way to use <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/control-rig-in-unreal-engine">control rigs</a> and <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/modular-control-rigs-in-unreal-engine">modular rigs</a> (<a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/modular-control-rigs-in-unreal-engine">https://dev.epicgames.com/documentation/en-us/unreal-engine/modular-control-rigs-in-unreal-engine</a> , plus see See the wrong way to use these here: <a href="https://willkolb.com/?p=661">https://willkolb.com/?p=661</a>). Originally I thought it was a binary choice but I realized the modular rig is really just a way to auto generate a complex control rig. So now I probably should go back through my models and rework them, but really I think I&#8217;ll keep going with what I have. I still have a dream that all of the bots are physically animated (such as <a href="https://www.youtube.com/watch?v=hWwuinv4MEQ&amp;t=64s">gta4</a>) but I think that dream is becoming a nightmare of technical debt.</p>



<h2 class="wp-block-heading">Future thoughts</h2>



<p>I think my primary map for gameplay testing will be that small alley-like map instead of the large city. Mostly due to the smaller size which should lead to a quicker gameplay loop, I need to add more complexity to the boss room, add some rooms in windows and maybe some map destruction elements (such as windows, wall breaking etc.). Finally I wanted to try to add some vertical elements to each of the bots. I might throw on some more artifacts to make the game less about trying to hit a small horizontal line on the screen.  Also a new name is warranted, &#8220;BlackLace&#8221; was from cyberpunk and any of those elements are straight up gone now. </p>



<p>A bunch to do and I&#8217;m aiming for a June-ish first build to send to people for gameplay testing, not for any reason just to give myself a bit of pressure. Good think it just started to get cold in Massachusetts, now I can justify hiding inside on my computer all day.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://willkolb.com/?feed=rss2&#038;p=1239</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-22-37.mp4" length="20451819" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-28-34.mp4" length="5853004" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-48-03.mp4" length="20461851" type="video/mp4" />
<enclosure url="https://willkolb.com/wp-content/uploads/2025/12/2025-12-14_11-57-25.mp4" length="1536022" type="video/mp4" />

			</item>
	</channel>
</rss>
