<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Null Band Games</title><link>https://nullband.games/posts/</link><description>Recent content in Posts on Null Band Games</description><generator>Hugo</generator><language>en-us</language><copyright>&amp;copy; Null Band Games, LLC 2025-2026</copyright><lastBuildDate>Mon, 28 Sep 2026 17:18:47 -0400</lastBuildDate><atom:link href="https://nullband.games/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Playtest Takeaways from RocGameFest</title><link>https://nullband.games/posts/2026-09-28-playtest-takeaways-from-rocgamefest/</link><pubDate>Mon, 28 Sep 2026 13:58:25 -0400</pubDate><guid>https://nullband.games/posts/2026-09-28-playtest-takeaways-from-rocgamefest/</guid><description>&lt;p&gt;This past Saturday, I presented &lt;a href="https://store.steampowered.com/app/4466060/The_Patchwork_Ship/"&gt;The Patchwork Ship&lt;/a&gt; at the &lt;a href="https://www.rocgamefest.com/"&gt;2026 Rochester Game Festival&lt;/a&gt;. Deep appreciation to all who stopped by, asked questions, took stickers and business cards, and of course, played it! So, what&amp;rsquo;s changed since the last expo two months ago?&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
 src="https://nullband.games/posts/2026-09-28-playtest-takeaways-from-rocgamefest/PXL_20260926_200849788.MP_hu_376993ad0eb10c63.webp"
 width="1280"
 height="960"
 alt="The first trailer for The Patchwork Ship being projected at the RocGameFest expo while attendees look on and do expo things"
 loading="lazy"
 style="max-width: 100%; height: auto" /&gt;&lt;figcaption&gt;The trailer for The Patchwork Ship being projected at the RocGameFest expo&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Self-Documenting Player Interfaces</title><link>https://nullband.games/posts/2026-09-14-self-documenting-player-interfaces/</link><pubDate>Mon, 14 Sep 2026 12:05:24 -0400</pubDate><guid>https://nullband.games/posts/2026-09-14-self-documenting-player-interfaces/</guid><description>&lt;p&gt;At the last expo, I found myself explaining many mechanics to attendees. Some folks figured it out (but still missed details), while others needed guidance and context. The game didn&amp;rsquo;t crash, but the user experience wasn&amp;rsquo;t smooth either, and I had to interject to describe what to do next. I&amp;rsquo;ve been working on addressing those shortcomings by working on making interfaces that guide the user.&lt;/p&gt;
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-09-14-self-documenting-player-interfaces/patchwork-ship-2026-09-14_12.21.56-edit.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-09-14-self-documenting-player-interfaces/patchwork-ship-2026-09-14_12.21.56-edit.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-09-14-self-documenting-player-interfaces/patchwork-ship-2026-09-14_12.21.56-edit.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-09-14-self-documenting-player-interfaces/patchwork-ship-2026-09-14_12.21.56-edit.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;A Stash is a random reward, which existed in the Map but didn&amp;rsquo;t do anything. Mechanically, this interface is very simple, and is up-front about what it does. As I finish wiring the Stash up, I&amp;rsquo;ll abstract the gifting logic and use it within the Conflict as well to make runs more satisfying.&lt;/p&gt;</description></item><item><title>Procedural Evolution of The Patchwork Ship</title><link>https://nullband.games/posts/2026-09-01-procedural-evolution-patchwork-ship/</link><pubDate>Tue, 01 Sep 2026 14:10:34 -0400</pubDate><guid>https://nullband.games/posts/2026-09-01-procedural-evolution-patchwork-ship/</guid><description>&lt;p&gt;I&amp;rsquo;ve been iterating on the visuals of The Patchwork Ship. I started with an ASCII blob, then a blocky cigar, to colored bricks, a mess of pixels, to its current coherent form.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
 src="https://nullband.games/posts/2026-09-01-procedural-evolution-patchwork-ship/patchwork-ship-generational-triptych_hu_691b8256f20b185d.webp"
 width="900"
 height="300"
 alt="A triptych of three procedurally generated ships"
 loading="lazy"
 style="max-width: 100%; height: auto" /&gt;&lt;figcaption&gt;Three evolutions of The Patchwork Ship generation&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The Patchwork Ship is a game about escaping a dying star. You play a brain-in-a-box probe, manufactured by an abandoned sentient factory that is trying their best to save the trapped souls they have in storage. They keep building ship after ship and send them on their way with the hope that some of them will make it. Therefore, having unique ships is essential to the motif of survival construction, along with an evolving journey that keeps each gameplay loop fresh.&lt;/p&gt;</description></item><item><title>Usability Rabbit Holes</title><link>https://nullband.games/posts/2026-08-12-usability-rabbit-holes/</link><pubDate>Wed, 12 Aug 2026 09:21:24 -0400</pubDate><guid>https://nullband.games/posts/2026-08-12-usability-rabbit-holes/</guid><description>&lt;p&gt;I&amp;rsquo;ve been tackling a lot of rough edges that came up with the live playtesting.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
 src="https://nullband.games/posts/2026-08-12-usability-rabbit-holes/2026-08-12-patchwork-ship-menu_hu_33aeb1a9d8648e60.webp"
 width="1271"
 height="712"
 alt="The main menu for The Patchwork Ship"
 loading="lazy"
 style="max-width: 100%; height: auto" /&gt;&lt;figcaption&gt;The main menu for The Patchwork Ship with updated fonts, versioning, and fortune cookie.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;As I incrementally built up the game, I iterated through multiple fonts; some for aesthetics, some for functionality. What resulted was that I had a ton of fonts installed, but not a lot of consistency. I started with an issue with extended characters not showing, and that revealed a much bigger problem. I ended up swapping almost all fonts throughout the entire game with a low number of highly reused fonts. That also means all interfaces have access to the primary set of font faces; regular, italic, bold, and bold + italic.&lt;/p&gt;</description></item><item><title>First Public Playtest of The Patchwork Ship</title><link>https://nullband.games/posts/2026-08-03-first-public-playtest-patchwork-ship/</link><pubDate>Mon, 03 Aug 2026 15:12:52 -0400</pubDate><guid>https://nullband.games/posts/2026-08-03-first-public-playtest-patchwork-ship/</guid><description>&lt;p&gt;The first public playtest of The Patchwork Ship at the Summer 2026 Lake George Games Expo was a success with a massive amount of takeaways! &lt;em&gt;All photos were taken with verbal consent.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
 src="https://nullband.games/posts/2026-08-03-first-public-playtest-patchwork-ship/LakeGeorgeGamingExpo-20260726_103720-Alexander-Hess_hu_63a69942b79003cc.webp"
 width="1280"
 height="960"
 alt="An attendee playtesting The Patchwork Ship and giving feedback to Jon"
 loading="lazy"
 style="max-width: 100%; height: auto" /&gt;&lt;figcaption&gt;An attendee playtesting The Patchwork Ship and giving feedback to Jon. Photo credit: Alexander Hess&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;There were over 400 tickets sold to the event and I was busy demoing all day. I ended up with five pages of handwritten notes as I watched people play and asked them about their perspectives. I&amp;rsquo;m really deeply appreciative of the time people spent playing and the depth of the feedback that I got!&lt;/p&gt;</description></item><item><title>Announcing The Patchwork Ship, a roguelike deckbuilder</title><link>https://nullband.games/posts/2026-07-25-announcing-patchwork-ship-roguelike-deckbuilder/</link><pubDate>Sat, 25 Jul 2026 17:38:40 -0400</pubDate><guid>https://nullband.games/posts/2026-07-25-announcing-patchwork-ship-roguelike-deckbuilder/</guid><description>&lt;p&gt;I&amp;rsquo;m proud to announce that I&amp;rsquo;ve launched the Steam store page for Null Band Games&amp;rsquo; first commercial release. &lt;a href="https://store.steampowered.com/app/4466060/The_Patchwork_Ship/#game_area_purchase"&gt;Wishlist The Patchwork Ship today&lt;/a&gt;!&lt;/p&gt;


&lt;div class="steam-widget-wrapper" style="margin: 1.5rem 0; max-width: 646px;"&gt;
 &lt;iframe
 src="https://store.steampowered.com/widget/4466060/"
 frameborder="0"
 width="100%"
 height="190"
 loading="lazy"
 style="border-radius: 4px; border: none;"&gt;
 &lt;/iframe&gt;
&lt;/div&gt;


&lt;video controls preload="metadata" width="100%" poster="/posts/2026-07-25-announcing-patchwork-ship-roguelike-deckbuilder/the-patchwork-ship-2026-07-23-teaser-v3.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-07-25-announcing-patchwork-ship-roguelike-deckbuilder/the-patchwork-ship-2026-07-23-teaser-v3.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-07-25-announcing-patchwork-ship-roguelike-deckbuilder/the-patchwork-ship-2026-07-23-teaser-v3.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-07-25-announcing-patchwork-ship-roguelike-deckbuilder/the-patchwork-ship-2026-07-23-teaser-v3.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;The Patchwork Ship is a spacecraft roguelike deckbuilder. As a brain-in-a-box probe, you must evolve, grow, and collaborate with others to escape a dying star.&lt;/p&gt;</description></item><item><title>Cohesive Presence</title><link>https://nullband.games/posts/2026-07-14-cohesive-presence/</link><pubDate>Tue, 14 Jul 2026 10:08:39 -0400</pubDate><guid>https://nullband.games/posts/2026-07-14-cohesive-presence/</guid><description>&lt;p&gt;The swiftly approaching deadline of the expo has been a great motivator, and I&amp;rsquo;ve had to consider both physical and digital presence. On the physical side&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
 src="https://nullband.games/posts/2026-07-14-cohesive-presence/2026-07-14-jon-null-band-games-banner_hu_22a69eb073e48f77.webp"
 width="1280"
 height="1496"
 alt="Jon Peck posing in front of a Null Band Games banner"
 loading="lazy"
 style="max-width: 100%; height: auto" /&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve continued my work on Steam Deck compatibility, but I&amp;rsquo;m not confident I&amp;rsquo;ll be able to get it to the level of polish that I think it should be. I will bring two mice, keyboards, and monitors, along with my two Steam Decks (original LED and a white OLED). This will guarantee that everyone will be able to play and avoids obvious feedback about controller support.&lt;/p&gt;</description></item><item><title>Preparing for the first Expo while in Summer mode</title><link>https://nullband.games/posts/2026-07-06-first-expo-summer-mode/</link><pubDate>Mon, 06 Jul 2026 09:37:15 -0400</pubDate><guid>https://nullband.games/posts/2026-07-06-first-expo-summer-mode/</guid><description>&lt;p&gt;Every time the calendar reminder for an update comes around, I get into a loop; just a couple more features and changes, then it will be ready. Well, it&amp;rsquo;s a month later. Whoops! The occasional updates on Discord are good, but not a replacement for more formal news.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
 src="https://nullband.games/posts/2026-07-06-first-expo-summer-mode/2026-07-06-steamdeck_hu_40b89ee6963e4069.webp"
 width="1280"
 height="797"
 alt="The Patchwork Ship on a Steam Deck"
 loading="lazy"
 style="max-width: 100%; height: auto" /&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Having the Lake George Expo as a goal has given me some discrete goals to work towards. In a perfect world, the game will be playable on a Steam Deck and I&amp;rsquo;ll have a proper EPK. With that in mind&amp;hellip;&lt;/p&gt;</description></item><item><title>Challenging Assumptions</title><link>https://nullband.games/posts/2026-06-08-challenging-assumptions/</link><pubDate>Mon, 08 Jun 2026 10:18:26 -0400</pubDate><guid>https://nullband.games/posts/2026-06-08-challenging-assumptions/</guid><description>&lt;p&gt;I’ve been busy on the path towards a vertical slice because Null Band Games will be exhibiting the game at the &lt;a href="https://lakegeorgegamesexpo.com/"&gt;Lake George Games Expo&lt;/a&gt; on Sunday, July 26, 2026, at the &lt;a href="https://www.fortwilliamhenry.com/"&gt;Fort William Henry Conference Center&lt;/a&gt;! I hope to have everything playable on both of my Steam Decks in time. This will be the first time I have ever exhibited as my own vendor, not on behalf of someone else or showing off a non-commercial project. I’m thinking about making buttons (I already have the materials) and ordering some stickers so folks can have something tangible.&lt;/p&gt;</description></item><item><title>Lingering Encounters</title><link>https://nullband.games/posts/2026-05-13-lingering-encounters/</link><pubDate>Wed, 13 May 2026 21:50:08 -0400</pubDate><guid>https://nullband.games/posts/2026-05-13-lingering-encounters/</guid><description>&lt;p&gt;I had left off with a number of individual pieces that needed to be glued together. I&amp;rsquo;ve been heads down correcting some architectural sins that I had made, which opened the door to saving the game. You can now coherently progress:&lt;/p&gt;
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-05-13-lingering-encounters/2026-05-13-encounters.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-05-13-lingering-encounters/2026-05-13-encounters.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-05-13-lingering-encounters/2026-05-13-encounters.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-05-13-lingering-encounters/2026-05-13-encounters.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;There are a few things here; I didn&amp;rsquo;t show the new game flow (it does exist), but you start on a point, engage in a conflict, and then can experience encounters.&lt;/p&gt;</description></item><item><title>Spinning a Persistent Yarn</title><link>https://nullband.games/posts/2026-04-30-spinning-a-persistent-yarn/</link><pubDate>Thu, 30 Apr 2026 20:50:19 -0400</pubDate><guid>https://nullband.games/posts/2026-04-30-spinning-a-persistent-yarn/</guid><description>&lt;p&gt;Ever have a conversation with a sentient factory? With &lt;a href="https://github.com/YarnSpinnerTool/YarnSpinner-Godot-GDScript"&gt;YarnSpinner for GDScript&lt;/a&gt;, you can!&lt;/p&gt;
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-04-30-spinning-a-persistent-yarn/2026-04-30-factory-talk.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-04-30-spinning-a-persistent-yarn/2026-04-30-factory-talk.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-04-30-spinning-a-persistent-yarn/2026-04-30-factory-talk.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-04-30-spinning-a-persistent-yarn/2026-04-30-factory-talk.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;There&amp;rsquo;s a lot to unpack here, so let&amp;rsquo;s take a step back.&lt;/p&gt;
&lt;p&gt;I had the skeleton of a game, but not the connective tissue; the pieces existed, but there wasn&amp;rsquo;t a cohesive experience, a sense of moving from A to B. I&amp;rsquo;ve been working at adding persistence, which has taken some rearchitecture.&lt;/p&gt;</description></item><item><title>Perfection, the Enemy of Sharing</title><link>https://nullband.games/posts/2026-04-21-perfection-enemy-of-sharing/</link><pubDate>Tue, 21 Apr 2026 09:45:15 -0400</pubDate><guid>https://nullband.games/posts/2026-04-21-perfection-enemy-of-sharing/</guid><description>&lt;p&gt;I&amp;rsquo;ve implemented working Outposts, where you can buy and sell things, repair your ship, and more. It&amp;rsquo;s been in various stages of working for almost two weeks. However, I haven&amp;rsquo;t shared it yet because &amp;ldquo;it&amp;rsquo;s not ready.&amp;rdquo;&lt;/p&gt;
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-04-21-perfection-enemy-of-sharing/2026-04-21-outpost.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-04-21-perfection-enemy-of-sharing/2026-04-21-outpost.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-04-21-perfection-enemy-of-sharing/2026-04-21-outpost.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-04-21-perfection-enemy-of-sharing/2026-04-21-outpost.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;At an Outpost, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Repair your hull&lt;/li&gt;
&lt;li&gt;Buy Schematics, which are permanent cross-run upgrades that allow you to craft devices&lt;/li&gt;
&lt;li&gt;Craft Devices from a Schematic (For a cost)&lt;/li&gt;
&lt;li&gt;Sell Devices (at a loss)&lt;/li&gt;
&lt;li&gt;Buy Devices&lt;/li&gt;
&lt;li&gt;Chat with the Outpost AI&lt;/li&gt;
&lt;li&gt;Attack the Outpost, although this is a bad idea&lt;/li&gt;
&lt;li&gt;Just leave&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I had to make several new data types, build user interfaces, implement state machines, and write some music (my eldest daughter asked for something like Digital Circus). There&amp;rsquo;s even a little display screen in the lower-left that shows contextual text about each action. It&amp;rsquo;s not a mockup, it all works. So, why didn&amp;rsquo;t I show it off?&lt;/p&gt;</description></item><item><title>Procedurally Generating Map</title><link>https://nullband.games/posts/2026-04-06-procedurally-generating-map/</link><pubDate>Mon, 06 Apr 2026 13:08:58 -0400</pubDate><guid>https://nullband.games/posts/2026-04-06-procedurally-generating-map/</guid><description>&lt;p&gt;I worked on map generation over a month ago, then set it aside; I was spinning wheels on rendering and prioritized the conflict loop instead. It&amp;rsquo;s back and more robust.&lt;/p&gt;
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-04-06-procedurally-generating-map/2026-04-06-map.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-04-06-procedurally-generating-map/2026-04-06-map.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-04-06-procedurally-generating-map/2026-04-06-map.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-04-06-procedurally-generating-map/2026-04-06-map.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;My implementation is a directed acyclic graph; you start from the root node and have a series of choices about where you can go, eventually narrowing down to a single terminal node. Traversal works (disabling nodes you can&amp;rsquo;t visit), and since the nodes are practically buttons, I got controller navigation for free (ish).&lt;/p&gt;</description></item><item><title>Carried Away with Upgrades</title><link>https://nullband.games/posts/2026-03-24-carried-away-with-upgrades/</link><pubDate>Tue, 24 Mar 2026 20:11:10 -0400</pubDate><guid>https://nullband.games/posts/2026-03-24-carried-away-with-upgrades/</guid><description>&lt;p&gt;I&amp;rsquo;ve been busy. The game is building and deploying to Steam, I know whether it&amp;rsquo;s been purchased using GodotSteam, I moved to a command queue for animations, I&amp;rsquo;ve implemented FMOD reactive audio, added YarnSpinner for dialog, and started an overworld map. There&amp;rsquo;s also a main menu, settings menu, about ten minutes of original music, and some new gameplay mechanics.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
 src="https://nullband.games/posts/2026-03-24-carried-away-with-upgrades/2026-03-24-main-menu_hu_5754238c037b0c98.webp"
 width="1280"
 height="913"
 alt="Main Menu"
 loading="lazy"
 style="max-width: 100%; height: auto" /&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Tada.&lt;/p&gt;
&lt;p&gt;Yeah, so I broke my own rule, and it&amp;rsquo;s been more than a week since I last posted. I felt like I was making progress, but it wasn&amp;rsquo;t &amp;ldquo;enough&amp;rdquo; to discuss yet. Here it is, almost Wednesday of the next week, and if I don&amp;rsquo;t push myself to write this now, it&amp;rsquo;s going to probably wait until next week.&lt;/p&gt;</description></item><item><title>Reinvented Wheels</title><link>https://nullband.games/posts/2026-03-09-reinvented-wheels/</link><pubDate>Mon, 09 Mar 2026 15:44:02 -0400</pubDate><guid>https://nullband.games/posts/2026-03-09-reinvented-wheels/</guid><description>&lt;p&gt;I was ambitious in my goals last week, but it&amp;rsquo;s paid off. I&amp;rsquo;ve got a preliminary title screen, scenario selection, and a whole lot more under the hood.&lt;/p&gt;
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-03-09-reinvented-wheels/2026-03-09-conflict-select.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-03-09-reinvented-wheels/2026-03-09-conflict-select.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-03-09-reinvented-wheels/2026-03-09-conflict-select.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-03-09-reinvented-wheels/2026-03-09-conflict-select.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;I started by moving away from JSON Schema. Sounded good on paper, but I found myself in an anti-pattern, fighting the Godot way of doing things. I have now formally structured into classes (which I had before) and Godot-managed resources (instead of dynamically creating them at runtime).&lt;/p&gt;</description></item><item><title>Scaling the Foundation</title><link>https://nullband.games/posts/2026-03-02-scaling-foundation/</link><pubDate>Mon, 02 Mar 2026 12:45:54 -0500</pubDate><guid>https://nullband.games/posts/2026-03-02-scaling-foundation/</guid><description>&lt;p&gt;I made some solid progress towards adding more content this week, providing a scaleable foundation.
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-03-02-scaling-foundation/2026-03-02-conflict-updates.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-03-02-scaling-foundation/2026-03-02-conflict-updates.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-03-02-scaling-foundation/2026-03-02-conflict-updates.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-03-02-scaling-foundation/2026-03-02-conflict-updates.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new device and card combo with a new mechanic (evade)&lt;/li&gt;
&lt;li&gt;A global persistent player now exists, along with an abstracted file-based configuration&lt;/li&gt;
&lt;li&gt;The engine now supports multiple opponents with a dynamic layout and repositioning&lt;/li&gt;
&lt;li&gt;Added deck counters such as draw, discard, and spent&lt;/li&gt;
&lt;li&gt;Added hover hints to improve ease of use and improved internal naming for debugging&lt;/li&gt;
&lt;li&gt;Controller Focus is much more complete and user friendly, including sticky targeting&lt;/li&gt;
&lt;li&gt;Intents are smaller, more accurate (off by one), and have a shader effect&lt;/li&gt;
&lt;li&gt;Mouse controls are cleaner on the backend and less buggy&lt;/li&gt;
&lt;li&gt;Implemented a JSON schema for all my data types, facilitating adding more content&lt;/li&gt;
&lt;li&gt;GUT was broken in CI, which I didn&amp;rsquo;t notice because it was failing silently&lt;/li&gt;
&lt;li&gt;Removed some clutter and old prototypes from the codebase (they&amp;rsquo;re still in Git)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sticky targeting is important to me from a usability perspective; I want the game to be smart about minimizing the amount of effort the player needs to put into performing actions. For example, if there are two opponents, you aim at the second and attack, then defend yourself, then go back to attack, assume they still want to attack the second opponent. Same goes for using cards; don&amp;rsquo;t default to the first card, default to the nearest card of the same type, else the closest card. This is supposed to be a strategy card game, not a clicker.&lt;/p&gt;</description></item><item><title>Controller Focus Navigation</title><link>https://nullband.games/posts/2026-02-23-controller-focus-navigation/</link><pubDate>Mon, 23 Feb 2026 12:07:00 -0500</pubDate><guid>https://nullband.games/posts/2026-02-23-controller-focus-navigation/</guid><description>&lt;p&gt;Mouse interactions are staying; I&amp;rsquo;ve been focused on adding natural controller navigation. There&amp;rsquo;s a lot of controller interactions that we take for granted that when implemented cleanly just feels natural, but that hides a bit of a mountain of helpful logic.
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-02-23-controller-focus-navigation/2026-02-23-intents-controller.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-02-23-controller-focus-navigation/2026-02-23-intents-controller.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-02-23-controller-focus-navigation/2026-02-23-intents-controller.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-02-23-controller-focus-navigation/2026-02-23-intents-controller.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
I&amp;rsquo;ve been thinking about it this way; the player wants to know what card they&amp;rsquo;re looking at, which card is selected, and what target that card is going to. Practically, hover the card they chose, highlight when selected, then choose a target. It&amp;rsquo;s also valid to want to choose actions elsewhere on the screen, like configuring a game mechanic or opening a menu. Godot has some built in helpers for knowing which button is closest&amp;hellip; but not everything is a button.&lt;/p&gt;</description></item><item><title>A playable vertical slice and cutting a bad mechanic</title><link>https://nullband.games/posts/2026-02-16-playable-vertical-slice-cutting-bad-mechanic/</link><pubDate>Mon, 16 Feb 2026 10:50:48 -0500</pubDate><guid>https://nullband.games/posts/2026-02-16-playable-vertical-slice-cutting-bad-mechanic/</guid><description>&lt;p&gt;I&amp;rsquo;m making some solid progress on my new game now, and I find myself getting distracted as I start tweaking the content. This is a good thing; it means that I&amp;rsquo;m getting a lot closer to a vertical slice that I can put in front of people and ask for their opinions.
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-02-16-playable-vertical-slice-cutting-bad-mechanic/2026-02-16-device-management.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-02-16-playable-vertical-slice-cutting-bad-mechanic/2026-02-16-device-management.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-02-16-playable-vertical-slice-cutting-bad-mechanic/2026-02-16-device-management.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-02-16-playable-vertical-slice-cutting-bad-mechanic/2026-02-16-device-management.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
Some major changes from last week:&lt;/p&gt;</description></item><item><title>Connecting the Backend to the Frontend</title><link>https://nullband.games/posts/2026-02-09-connecting-backend-frontend/</link><pubDate>Mon, 09 Feb 2026 08:48:51 -0500</pubDate><guid>https://nullband.games/posts/2026-02-09-connecting-backend-frontend/</guid><description>&lt;p&gt;I&amp;rsquo;m incredibly excited about what I did in the past week; I now have a working frontend for the core card battler mechanic!
&lt;video controls preload="metadata" width="100%" poster="/posts/2026-02-09-connecting-backend-frontend/2026-02-09-frontend-conflict.poster.webp" playsinline class="html-video"&gt;
 &lt;source src="https://nullband.games/posts/2026-02-09-connecting-backend-frontend/2026-02-09-frontend-conflict.webm" type="video/webm"&gt;
 &lt;source src="https://nullband.games/posts/2026-02-09-connecting-backend-frontend/2026-02-09-frontend-conflict.mp4" type="video/mp4"&gt;
 &lt;span&gt;Your browser doesn't support embedded videos, but don't worry, you can &lt;a href="https://nullband.games/posts/2026-02-09-connecting-backend-frontend/2026-02-09-frontend-conflict.mp4"&gt;download it&lt;/a&gt; and watch it with your favorite video player!&lt;/span&gt;
&lt;/video&gt;
Previously, I had modeled an entire conflict from start to finish, including several mechanics and end states, but it was running in isolation and practically executable only as unit tests. A picture is worth a thousand words, and boy were those logs verbose. There were several challenges in connecting the frontend.&lt;/p&gt;</description></item><item><title>A Solid Conflict Foundation</title><link>https://nullband.games/posts/2026-02-02-solid-conflict-foundation/</link><pubDate>Mon, 02 Feb 2026 12:11:16 -0500</pubDate><guid>https://nullband.games/posts/2026-02-02-solid-conflict-foundation/</guid><description>&lt;p&gt;I&amp;rsquo;ve been implementing and refining the core gameplay loop. Since last week, many more mechanics have been implemented and wired up. Opponents have AI, mechanisms have costs, you can win or lose, effects are applied resolve on different cadences, and a lot more. There were several refactoring passes to consolidate logic, switch to more scalable models, and to unify nomenclatures. Unit testing and seeding for deterministic experiences have been incredibly important for my development; it allows me to exercise specific mechanics over and over as I iterate.&lt;/p&gt;</description></item><item><title>Building the Core Deckbuilder Loop</title><link>https://nullband.games/posts/2026-01-27-building-core-deckbuilder-loop/</link><pubDate>Tue, 27 Jan 2026 11:04:56 -0500</pubDate><guid>https://nullband.games/posts/2026-01-27-building-core-deckbuilder-loop/</guid><description>&lt;p&gt;I&amp;rsquo;ve been working on one overarching task for over a week, in &lt;a href="https://codecks.io"&gt;Codecks&lt;/a&gt; the card is labeled as &amp;ldquo;Gameplay.&amp;rdquo; I&amp;rsquo;ve got a GDD, sketches, wireframes, and a couple of proof-of-concepts, but the real question I want to answer is whether or not it&amp;rsquo;s fun. In order to do that, I need to build something minimal to actually play the thing. Right now, &amp;ldquo;Gameplay&amp;rdquo; is like the &lt;em&gt;Malcolm in the Middle&lt;/em&gt; bit where Hal tries to change a lightbulb, but is met with a series of blockers:&lt;/p&gt;</description></item><item><title>Skirmish Prototype</title><link>https://nullband.games/posts/2026-01-19-skirmish-prototype/</link><pubDate>Mon, 19 Jan 2026 12:39:23 -0500</pubDate><guid>https://nullband.games/posts/2026-01-19-skirmish-prototype/</guid><description>&lt;p&gt;I&amp;rsquo;ve uploaded my first release to Itch; &lt;a href="https://nullbandgames.itch.io/skirmish"&gt;Skirmish&lt;/a&gt;, a prototype card game! I started working on it while I was first waiting to be accepted into a business startup program, and I continued as I developed my business plan. I wanted to implement a card game using standard playing cards and to practice using Godot. I started with War and got it modeled, but the lack of choice frustrated me - it wasn’t fun at all.&lt;/p&gt;</description></item><item><title>Discussing a Coherent GDD</title><link>https://nullband.games/posts/2026-01-12-discussing-coherent-gdd/</link><pubDate>Mon, 12 Jan 2026 10:30:53 -0500</pubDate><guid>https://nullband.games/posts/2026-01-12-discussing-coherent-gdd/</guid><description>&lt;p&gt;The first draft of the Game Design Document (GDD) for my game is about 80% done, and with it, I&amp;rsquo;m now able discuss it coherently and start getting feedback. On Tuesday, I attended my first &lt;a href="https://rocgamedev.com/"&gt;ROC Game Dev&lt;/a&gt; open project night and chatted with a number of other developers, played what folks were working on, and discussed my project. I heard a cautionary tale of patent squatting on procedurally generated enemy systems; what I was planning didn&amp;rsquo;t intersect, but it was a good warning.&lt;/p&gt;</description></item><item><title>First Game Pre-production Started</title><link>https://nullband.games/posts/2026-01-06-first-game-preproduction-started/</link><pubDate>Tue, 06 Jan 2026 10:12:48 -0500</pubDate><guid>https://nullband.games/posts/2026-01-06-first-game-preproduction-started/</guid><description>&lt;p&gt;The holidays have come and passed, and I&amp;rsquo;ve been working on a Game Design Document (GDD) for my first commercial game. In practice, it&amp;rsquo;s a comprehensive, living, descriptive software design document that will serve as the implementation guide. Right now, it&amp;rsquo;s about 4500 words, and it&amp;rsquo;ll grow a bit more, but I&amp;rsquo;m also going to do an editing pass; it should be accessible and useful. It&amp;rsquo;s over half done.&lt;/p&gt;
&lt;p&gt;There are a lot of resources available for GDDs, such as &lt;a href="https://gamescrye.com/resources/game-design-documents/"&gt;Gamescrye&amp;rsquo;s archive&lt;/a&gt;, &lt;a href="https://www.gamedeveloper.com/design/a-gdd-template-for-the-indie-developer"&gt;Jason Bakker&amp;rsquo;s GDD Template&lt;/a&gt;, and &lt;a href="https://docs.google.com/document/d/1bx-XOP0Y6ffm0MMUvOUb7mejxRu1ZI1nb4o0cRa49Ow/edit?tab=t.0#heading=h.1rwn3pwb244k"&gt;Indie Game Academy&amp;rsquo;s Template&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Finished the Business Foundation</title><link>https://nullband.games/posts/2025-12-22-finished-business-foundation/</link><pubDate>Mon, 22 Dec 2025 09:41:02 -0500</pubDate><guid>https://nullband.games/posts/2025-12-22-finished-business-foundation/</guid><description>&lt;p&gt;I had been planning one game with a long production timeline, but following my last meeting with my SCORE mentors, I think I&amp;rsquo;m going to start with a smaller game set in the same overall universe as what I&amp;rsquo;m envisioning where I can prototype mechanics and style, build an audience and potentially some income. I&amp;rsquo;ll support it, then I&amp;rsquo;ll need to decide if I&amp;rsquo;m going to keep adding on to it (free or DLC), or pivot to the more ambitious plan.&lt;/p&gt;</description></item><item><title>Heads Down in Paperwork</title><link>https://nullband.games/posts/2025-12-12-heads-down-paperwork/</link><pubDate>Fri, 12 Dec 2025 17:48:55 -0500</pubDate><guid>https://nullband.games/posts/2025-12-12-heads-down-paperwork/</guid><description>&lt;p&gt;Time&amp;rsquo;s passed and I haven&amp;rsquo;t made any public updates, but I&amp;rsquo;ve been busy. The limbo was resolved; I was a final candidate, but the job went to someone with more domain knowledge. So it goes! I could absolutely have seen myself doing the job and finding success in that career path. Instead, as I told the friendly (really!) recruiter, thank you so much for the opportunity, and I&amp;rsquo;m going to make video games now!&lt;/p&gt;</description></item><item><title>Floating in Limbo</title><link>https://nullband.games/posts/2025-10-23-floating-in-limbo/</link><pubDate>Thu, 23 Oct 2025 10:14:00 -0400</pubDate><guid>https://nullband.games/posts/2025-10-23-floating-in-limbo/</guid><description>&lt;p&gt;It&amp;rsquo;s been a few weeks since an update. I was applying to a startup program and I wanted to be careful not to be working on the business until I was accepted; I wasn&amp;rsquo;t sure if the diary would count as a business website, so I erred on the side of caution.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been accepted into the startup program! Awkwardly, I&amp;rsquo;m also interviewing at a local business; I had an in-person yesterday, and I set aside the Godot work to focus on React. I did my best at the interview and feel it went reasonably well, but I won&amp;rsquo;t hear until next week about the outcome.&lt;/p&gt;</description></item><item><title>Stretching Beyond</title><link>https://nullband.games/posts/2025-10-01-stretching-beyond/</link><pubDate>Wed, 01 Oct 2025 11:45:00 -0400</pubDate><guid>https://nullband.games/posts/2025-10-01-stretching-beyond/</guid><description>&lt;p&gt;I wrapped up the fifth module of &lt;a href="https://school.gdquest.com/courses/learn_2d_gamedev_godot_4/introduction/welcome_to_learn_2D_gamedev"&gt;Learn 2D Gamedev From Zero&lt;/a&gt;, which despite its name (&amp;ldquo;Loot It All&amp;rdquo;) was focused on collisions, some rudimentary physics interactions (collision layers and masking), and tweening.&lt;/p&gt;
&lt;p&gt;I definitely get inspired and feel pulled when doing tutorials, and sometimes that will drag my progress out. Task lists keep me on track, and I like that there&amp;rsquo;s a very specific progression in this course.&lt;/p&gt;
&lt;p&gt;One of the things that pulled me was the tweening section. Tweening, or &amp;ldquo;inbetweening,&amp;rdquo; is the act of generating intermediate frames between two keyframes in animation. It happens in traditional animation, digital animation, and of course, in user interfaces.&lt;/p&gt;</description></item><item><title>More Than One Way</title><link>https://nullband.games/posts/2025-09-30-more-than-one-way/</link><pubDate>Tue, 30 Sep 2025 20:41:50 -0400</pubDate><guid>https://nullband.games/posts/2025-09-30-more-than-one-way/</guid><description>&lt;p&gt;I&amp;rsquo;ve been making my way through the &lt;a href="https://school.gdquest.com/products/godot-4-early-access"&gt;2D GDQuest&lt;/a&gt; Module 5, which is involving collisions and physics. Neat! So that got me thinking, what about dragging cards? Turns out there&amp;rsquo;s a lot of ways to do this. I went down a YouTube rabbithole comparing many techniques, and I wasn&amp;rsquo;t finding a lot of consensus.&lt;/p&gt;
&lt;p&gt;I happened upon &lt;a href="https://godot.snoeyz.com/drag-and-drop/"&gt;Drag and Drop Systems in Godot by Snoeyz&lt;/a&gt;, which compares three different techniques: native drag and drop, button-based drag and drop, and mouse event-based drag and drop. The author preferred their mouse event-based solution over native, but that may also be biased. The true takeaway:&lt;/p&gt;</description></item><item><title>The First Card</title><link>https://nullband.games/posts/2025-09-29-the-first-card/</link><pubDate>Mon, 29 Sep 2025 21:52:47 -0400</pubDate><guid>https://nullband.games/posts/2025-09-29-the-first-card/</guid><description>&lt;p&gt;I&amp;rsquo;m trying to find the balance between being passionate and being human. I&amp;rsquo;ve experienced what it&amp;rsquo;s like to not be able to turn off and working myself at the expense of my relationships, and I don&amp;rsquo;t want to do that.&lt;/p&gt;
&lt;p&gt;Yesterday, I did make some progress, but not on the course itself, but on a simple playing card. I managed to render a &lt;code&gt;ColorRect&lt;/code&gt; background and created two &lt;code&gt;RichTextLabel&lt;/code&gt; nodes for a value and suit. The root &lt;code&gt;Node2D&lt;/code&gt; script isn&amp;rsquo;t going to win any awards:&lt;/p&gt;</description></item><item><title>GDQuest Progress</title><link>https://nullband.games/posts/2025-09-27-gd-quest-progress/</link><pubDate>Sat, 27 Sep 2025 12:28:12 -0400</pubDate><guid>https://nullband.games/posts/2025-09-27-gd-quest-progress/</guid><description>&lt;p&gt;Yesterday, I restarted working my way through the GDQuest &lt;a href="https://school.gdquest.com/"&gt;Learn 2D Gamedev from Zero with Godot 4&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One of the lessons talked about approaching this with a learning mindset, and included suggestions like a learning plan and a &lt;a href="https://en.wikipedia.org/wiki/Pomodoro_Technique"&gt;Pomodoro timer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I interpreted the learning plan as the need to document my journey; this was something I had been planning on doing anyway, but this was an explicit push.&lt;/p&gt;
&lt;p&gt;I had originally called this a blog; that&amp;rsquo;s from muscle memory, reflecting my emerging experiences on the Internet. More accurately, this is a dev diary, and I&amp;rsquo;ve named it as such. Names are important; they set clear expectations.&lt;/p&gt;</description></item><item><title>Hello World, again.</title><link>https://nullband.games/posts/2025-09-26-hello-world-again/</link><pubDate>Fri, 26 Sep 2025 10:20:26 -0400</pubDate><guid>https://nullband.games/posts/2025-09-26-hello-world-again/</guid><description>&lt;p&gt;Hi there, my name is Jon Peck. I&amp;rsquo;m a software engineer, author, educator, and musician. I also love video games.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m formally starting my journey into game development, and I&amp;rsquo;ll reflect, share, and discuss my progress. By publishing this in public, I&amp;rsquo;m holding myself accountable, and I hope my experiences can help others.&lt;/p&gt;
&lt;p&gt;This first entry is a bit long, but I&amp;rsquo;m looking to give context.&lt;/p&gt;
&lt;p&gt;Over the past couple of decades, my professional career has been focused on custom software development. I worked my way up from IT and customer success positions through college, into coding as my primary responsibility.&lt;/p&gt;</description></item></channel></rss>