<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Games on Hongjiang Bao's Blog</title><link>http://baohongjiang.com/en/categories/games/</link><description>Recent content in Games on Hongjiang Bao's Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 07 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://baohongjiang.com/en/categories/games/index.xml" rel="self" type="application/rss+xml"/><item><title>Games I've Made · Playable Demos</title><link>http://baohongjiang.com/en/p/games-ive-made-playable-demos/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid>http://baohongjiang.com/en/p/games-ive-made-playable-demos/</guid><description>&lt;img src="http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/void-protocol.jpg" alt="Featured image of post Games I've Made · Playable Demos" /&gt;&lt;p&gt;This is the &lt;strong&gt;index page&lt;/strong&gt; — every demo of mine that runs in a browser gets added here, which is why it&amp;rsquo;s pinned to the top.&lt;/p&gt;
&lt;p&gt;No downloads, no plugins, no accounts. The link &lt;em&gt;is&lt;/em&gt; the game. Use a &lt;strong&gt;desktop browser (Chrome / Edge)&lt;/strong&gt; — both demos are keyboard-and-mouse, so phones won&amp;rsquo;t work.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1--void-protocol--first-person-wave-shooter"&gt;1 · VOID PROTOCOL — first-person wave shooter
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="http://baohongjiang.com/games/void-protocol/" &gt;&lt;img src="http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/void-protocol.jpg"
width="1280"
height="720"
srcset="http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/void-protocol_hu_cf9c7633bb7ae891.jpg 480w, http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/void-protocol_hu_b6f32f6d59bb2f27.jpg 1024w"
loading="lazy"
alt="VOID PROTOCOL"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align:center;margin:1.4em 0"&gt;
&lt;a href="http://baohongjiang.com/games/void-protocol/" target="_blank" rel="noopener"
style="display:inline-block;padding:.85em 2.4em;border-radius:8px;
background:#05070c;color:#5fe6ff;border:1px solid #5fe6ff;
font-weight:700;letter-spacing:.12em;text-decoration:none"&gt;
▶ PLAY
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;An open arena on four-tier terraced terrain, six weapons, and waves that keep getting heavier.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What makes it unusual: the game ships with zero asset files.&lt;/strong&gt; Textures, sound effects, geometry, animation — all generated at runtime in code. No art files, no audio files, no models. The whole thing is one HTML file plus three.js.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/void-protocol-arena.jpg"
width="1280"
height="720"
srcset="http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/void-protocol-arena_hu_a79485089817e048.jpg 480w, http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/void-protocol-arena_hu_e3f5f75de8dccc5d.jpg 1024w"
loading="lazy"
alt="The arena"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
&gt;&lt;/p&gt;
&lt;h3 id="controls"&gt;Controls
&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WASD&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Move&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Space&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Jump (clears one terrain tier)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Mouse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Look / left click to fire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Shift&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sprint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;R&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reload&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;1-6&lt;/code&gt; / wheel&lt;/td&gt;
&lt;td&gt;Switch weapon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;`&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Debug panel (live sliders for lighting, feel, FOV — plus cheats)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="a-few-things-worth-knowing"&gt;A few things worth knowing
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;The pistol has infinite ammo; the other five are bought from the &lt;strong&gt;armory between waves&lt;/strong&gt;, and each takes three upgrade levels;&lt;/li&gt;
&lt;li&gt;Ammo drops off kills and vacuums toward you as you walk over it;&lt;/li&gt;
&lt;li&gt;Ground enemies have to path around the ramps, but fliers ignore elevation entirely — &lt;strong&gt;high ground stalls the former, not the latter&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;On the minimap, &lt;strong&gt;brightness is height&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="where-its-at"&gt;Where it&amp;rsquo;s at
&lt;/h3&gt;&lt;p&gt;The plan runs in four phases. P1 (modularization, heightfield terrain, jumping) and P2 (weapons, ammo, economy, shop) are done — that&amp;rsquo;s the build you&amp;rsquo;re playing.&lt;/p&gt;
&lt;p&gt;P3 is scaling up the bestiary from 4 enemy types to 14: suicide bombers, shield-bearers, chargers, splitters, and two bosses. P4 is level and audiovisual polish.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A new build lands Monday&lt;/strong&gt;, dropped in at this same link — the URL won&amp;rsquo;t change.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2--frontline--25d-real-time-strategy"&gt;2 · FRONTLINE — 2.5D real-time strategy
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="http://baohongjiang.com/games/frontline/" &gt;&lt;img src="http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/frontline.jpg"
width="1280"
height="720"
srcset="http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/frontline_hu_680a2c8814a63380.jpg 480w, http://baohongjiang.com/p/%E6%88%91%E5%81%9A%E7%9A%84%E6%B8%B8%E6%88%8F-%E5%9C%A8%E7%BA%BF-demo-%E5%90%88%E9%9B%86/frontline_hu_81f16d0e78f922d1.jpg 1024w"
loading="lazy"
alt="FRONTLINE"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align:center;margin:1.4em 0"&gt;
&lt;a href="http://baohongjiang.com/games/frontline/" target="_blank" rel="noopener"
style="display:inline-block;padding:.85em 2.4em;border-radius:8px;
background:#14100a;color:#e0a54a;border:1px solid #e0a54a;
font-weight:700;letter-spacing:.12em;text-decoration:none"&gt;
▶ PLAY
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;A vertical slice of an RTS. &lt;strong&gt;No workers, no mining&lt;/strong&gt; — income comes straight from the strongpoints you hold, so there&amp;rsquo;s exactly one thing to think about: where the line goes next.&lt;/p&gt;
&lt;p&gt;Three mechanics carry all the tactics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cover decides damage&lt;/strong&gt; — sandbags and low walls are directional: 34%–54% reduction from the front, nothing at all once you&amp;rsquo;re flanked. Squads auto-occupy nearby cover per-soldier on arrival, not as one blanket roll;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suppression decides advance&lt;/strong&gt; — units under heavy fire get suppressed and then pinned, tanking their speed and accuracy. Machine gun teams are the kings of suppression;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flanking decides the match&lt;/strong&gt; — which is just the first two put together. A position you can&amp;rsquo;t crack head-on collapses from the side.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Infantry can garrison buildings; machine guns and mortars have to stop and set up, with a firing arc once they do; tanks and AT teams sit at opposite ends of a hard counter chain.&lt;/p&gt;
&lt;h3 id="controls-1"&gt;Controls
&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Left-drag&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Box select&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Right click&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Move / attack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;A + left click&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Attack-move&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Right click a building&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Garrison infantry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;T&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Retreat to base (and reinforce)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Q W E R F G&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Produce units&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;1-4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Control groups (&lt;code&gt;Ctrl&lt;/code&gt; + number to set)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Arrow keys&lt;/code&gt; / screen edge&lt;/td&gt;
&lt;td&gt;Pan camera&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;H&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Help&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Three difficulties: Patrol (resources ×0.8), Regulars (even), Elite Division (resources ×1.3).&lt;/p&gt;
&lt;h3 id="where-its-at-1"&gt;Where it&amp;rsquo;s at
&lt;/h3&gt;&lt;p&gt;The core loop is complete — a match resolves in roughly 10 minutes. While building it I wrote a headless test harness that plays the game against itself to verify the map and the numbers are symmetric. It caught four bugs I could never have seen by eye: a fixed iteration order in the firing loop that let whichever side sat earlier in the array always land damage first; building entrances hardcoded to the south side, which meant one half of the map always had to walk around. The last 20-match symmetry regression came back 10:10.&lt;/p&gt;
&lt;p&gt;Known gaps: the AI doesn&amp;rsquo;t use specialist units well (it plays mortars and machine guns like rifles), machine gun teams and armored cars aren&amp;rsquo;t pulling their weight yet, and there&amp;rsquo;s no mobile support at all.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="whats-next"&gt;What&amp;rsquo;s next
&lt;/h2&gt;&lt;p&gt;A few more demos are queued up; each one gets added here when it&amp;rsquo;s done. This post stays pinned, so bookmarking this single page is enough.&lt;/p&gt;
&lt;p&gt;Bugs, suggestions, or just want to complain about the gunfeel — comments are open below.&lt;/p&gt;</description></item></channel></rss>