<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>gamedev — toothywalrus</title><link>https://blog.toothywalrus.dev/topics/gamedev/</link><description>Long-form write-ups about SDR, homelab, electronics and tooling — plus a weekly log of what actually got built.</description><language>en-us</language><lastBuildDate>Thu, 06 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.toothywalrus.dev/topics/gamedev/index.xml" rel="self" type="application/rss+xml"/><item><title>game-lab, week 32: the camera started following the ball</title><link>https://blog.toothywalrus.dev/logbook/2026-w32-game-lab/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.toothywalrus.dev/logbook/2026-w32-game-lab/</guid><category>weeknotes</category><category>gamedev</category><category>typescript</category><description>&lt;p&gt;&lt;code&gt;metamorph-ball&lt;/code&gt; spent the week turning from a physics sandbox into something
with a shape.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The route replaced the sandbox.&lt;/strong&gt; The arena became an actual course, with
obstacles wired into both the physics world and the renderer, a run clock, a
checkpoint cue and a completion panel. There is now a thing to finish, which
is the difference between a demo and a game.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Two new forms.&lt;/strong&gt; A jelly form that squeezes through a grate, plus rubber and
heavy forms with pads that trigger on contact. The grate opens by dropping its
collider, which is either elegant or cheating depending on how closely you
look.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Juice.&lt;/strong&gt; Squash-and-stretch and spark bursts, fired on the same cues as the
audio so the hit reads as one event instead of three. The sound is synthesised
rather than sampled — fewer assets, and it can be tuned per-event instead of
per-file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The change that mattered was four lines.&lt;/strong&gt; The camera now follows the ball
instead of waiting to be dragged. Before that, playing it felt like operating
a diagram. Nothing else this week moved the needle as far.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plumbing:&lt;/strong&gt; a small persistence package for namespaced, versioned local
settings, used first by a quality switch that survives a reload. The asset
pipeline exists now, with one model through it end to end. And the deploy key
is confined to an rrsync jail, so the thing that can write to the server can
only write to one directory.&lt;/p&gt;
&lt;div class="provenance"&gt;
 &lt;h2&gt;Where this came from&lt;/h2&gt;
 &lt;p&gt;Work between 3 and 6 August 2026 in the &lt;code&gt;game-lab&lt;/code&gt; repository — about 20
commits, plus the decision records on the rrsync jail, the grate collider and
the camera. The repository is private.&lt;/p&gt;
&lt;p&gt;Everything above runs in the browser build; the deploy-key jail was applied
and used, not just documented.&lt;/p&gt;

&lt;/div&gt;
</description></item></channel></rss>