<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Playgama Labs</title>
    <description>The latest articles on DEV Community by Playgama Labs (@playgamalabs).</description>
    <link>https://dev.to/playgamalabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4244259%2F29b08db1-ce30-4c96-b608-be35538e154c.png</url>
      <title>DEV Community: Playgama Labs</title>
      <link>https://dev.to/playgamalabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/playgamalabs"/>
    <language>en</language>
    <item>
      <title>Gravity Forge — a browser game in one folder</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 16:08:43 +0000</pubDate>
      <link>https://dev.to/playgamalabs/gravity-forge-a-browser-game-in-one-folder-52e5</link>
      <guid>https://dev.to/playgamalabs/gravity-forge-a-browser-game-in-one-folder-52e5</guid>
      <description>&lt;p&gt;Small, self-contained browser game: You don't move objects — you bend space&lt;/p&gt;

&lt;p&gt;Star cores fall from the sky and you never touch them — you bend the space around them. Place gravity nodes that curve the fall and steer every core into the harvester below. Each wave climbs higher: cores get heavier, wells shift, and the field turns meaner. The stardust you pull in funds the forge, where it buys run upgrades and permanent contracts that give the session a goal. There is a daily &lt;/p&gt;

&lt;p&gt;We wrote it as a single canvas codebase with no engine and no build step worth mentioning, and it ships through the Playgama Bridge SDK to a dozen portals — the same zip, the rules of each portal handled by a thin layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it in the browser:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/rv7bqe5twawory" rel="noopener noreferrer"&gt;https://playgama.ai/play/rv7bqe5twawory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free to play, no signup, works on mobile, interface in 14 languages.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>gamedev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Echo Warden: Fight beside your past selves</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 16:03:12 +0000</pubDate>
      <link>https://dev.to/playgamalabs/echo-warden-fight-beside-your-past-selves-14cc</link>
      <guid>https://dev.to/playgamalabs/echo-warden-fight-beside-your-past-selves-14cc</guid>
      <description>&lt;p&gt;A time-loop arena where you defend a core while an echo of your own previous run fights beside you. The echo replays your steps and your shots exactly, so every loop adds a real defender instead of a memory, and the cleaner your run was, the more useful the ghost becomes. Between loops you draft boons that decide what kind of warden you are, while storms and deeper sectors change the pressure ever&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works.&lt;/strong&gt; We build this on a plain 2D canvas with no engine: the whole game is one &lt;code&gt;game.js&lt;/code&gt; plus a folder of sound files, and the whole build is a single self-contained folder — no external requests, so the platform can cache and audit it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it ships.&lt;/strong&gt; It goes out through the Playgama Bridge SDK, which means progress lives in &lt;code&gt;bridge.storage&lt;/code&gt; and ads go through the platform's own calls. The same zip runs on the portal and on our own sandbox without a single change in game code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/p26guez5tk5tkg" rel="noopener noreferrer"&gt;https://playgama.ai/play/p26guez5tk5tkg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free, no signup, plays on a phone, interface in 14 languages.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>html</category>
      <category>webdev</category>
      <category>indiegamedev</category>
    </item>
    <item>
      <title>Echo Rift — a browser game in one folder</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:57:40 +0000</pubDate>
      <link>https://dev.to/playgamalabs/echo-rift-a-browser-game-in-one-folder-52il</link>
      <guid>https://dev.to/playgamalabs/echo-rift-a-browser-game-in-one-folder-52il</guid>
      <description>&lt;p&gt;Small, self-contained browser game: Defend the core. Your past selves fight beside you.&lt;/p&gt;

&lt;p&gt;A neon arena defence game where your own past shots come back to fight for you. The rift records where you aimed and turns that version of you into an echo turret on your side, so a good wave is a formation you built by accident. You do not win alone: you assemble an army out of your own mistakes and your own clean shots. Hold the core, survive the waves, unlock new turret types and evolve them. T&lt;/p&gt;

&lt;p&gt;We wrote it as a single canvas codebase with no engine and no build step worth mentioning, and it ships through the Playgama Bridge SDK to a dozen portals — the same zip, the rules of each portal handled by a thin layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it in the browser:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/63gksk526qiydo" rel="noopener noreferrer"&gt;https://playgama.ai/play/63gksk526qiydo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free to play, no signup, works on mobile, interface in 14 languages.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>gamedev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Echo Drift: Outfly your own past</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:52:09 +0000</pubDate>
      <link>https://dev.to/playgamalabs/echo-drift-outfly-your-own-past-2bhd</link>
      <guid>https://dev.to/playgamalabs/echo-drift-outfly-your-own-past-2bhd</guid>
      <description>&lt;p&gt;A neon arcade survival game where the opponent is your own trail. Every few seconds an echo of your recent flight cuts across the arena, and it catches you the moment you repeat your own line. Boost, shield, pulse and knockback keep you alive while the waves get denser. Sparks pay for hull, engine and reactor upgrades, so every run makes the next one faster. The longer you fly, the stronger the ec&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works.&lt;/strong&gt; We build this on a plain 2D canvas with no engine: the whole game is one &lt;code&gt;game.js&lt;/code&gt; plus a folder of sound files, and the whole build is a single self-contained folder — no external requests, so the platform can cache and audit it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it ships.&lt;/strong&gt; It goes out through the Playgama Bridge SDK, which means progress lives in &lt;code&gt;bridge.storage&lt;/code&gt; and ads go through the platform's own calls. The same zip runs on the portal and on our own sandbox without a single change in game code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/qffqibuwpp7fv6" rel="noopener noreferrer"&gt;https://playgama.ai/play/qffqibuwpp7fv6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free, no signup, plays on a phone, interface in 14 languages.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>html</category>
      <category>webdev</category>
      <category>indiegamedev</category>
    </item>
    <item>
      <title>Chrono Echo — a browser game in one folder</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:46:38 +0000</pubDate>
      <link>https://dev.to/playgamalabs/chrono-echo-a-browser-game-in-one-folder-m50</link>
      <guid>https://dev.to/playgamalabs/chrono-echo-a-browser-game-in-one-folder-m50</guid>
      <description>&lt;p&gt;Small, self-contained browser game: Time-loop arena survivor&lt;/p&gt;

&lt;p&gt;An arena survivor built on a time loop, where every loop rewinds the arena and your path with it. The echo of where you just walked keeps hunting the place you are about to be, so the safest route is often the one you have not taken yet. Between loops you draft cards that bend the rules in your favour, and the Sanctum keeps what you carry out of the loop for good. Enemies, bosses and storms escala&lt;/p&gt;

&lt;p&gt;We wrote it as a single canvas codebase with no engine and no build step worth mentioning, and it ships through the Playgama Bridge SDK to a dozen portals — the same zip, the rules of each portal handled by a thin layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it in the browser:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/y26yjg3eitwbor" rel="noopener noreferrer"&gt;https://playgama.ai/play/y26yjg3eitwbor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free to play, no signup, works on mobile, interface in 14 languages.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>gamedev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Chameleon: Color puzzle: match the tile, eat every fly, beat the move count.</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:41:07 +0000</pubDate>
      <link>https://dev.to/playgamalabs/chameleon-color-puzzle-match-the-tile-eat-every-fly-beat-the-move-count-2k8</link>
      <guid>https://dev.to/playgamalabs/chameleon-color-puzzle-match-the-tile-eat-every-fly-beat-the-move-count-2k8</guid>
      <description>&lt;p&gt;You are a chameleon on a tiled board. Step onto a colored tile and you take its color. A fly can only be eaten in exactly that color, and every step counts: fewer moves means more stars. The game holds 999 levels, meadows of ten levels each, a daily challenge with one level a day, and an endless run. Later boards add slippery ice, crumbling tiles, portals, a bird that follows your route, fog that &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works.&lt;/strong&gt; We build this on a plain 2D canvas with no engine: the whole game is one &lt;code&gt;game.js&lt;/code&gt; plus a folder of sound files, and the whole build is a single self-contained folder — no external requests, so the platform can cache and audit it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it ships.&lt;/strong&gt; It goes out through the Playgama Bridge SDK, which means progress lives in &lt;code&gt;bridge.storage&lt;/code&gt; and ads go through the platform's own calls. The same zip runs on the portal and on our own sandbox without a single change in game code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/wds6cs2cg5xmao" rel="noopener noreferrer"&gt;https://playgama.ai/play/wds6cs2cg5xmao&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free, no signup, plays on a phone, interface in 14 languages.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>html</category>
      <category>webdev</category>
      <category>indiegamedev</category>
    </item>
    <item>
      <title>AquaSort — a browser game in one folder</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:35:36 +0000</pubDate>
      <link>https://dev.to/playgamalabs/aquasort-a-browser-game-in-one-folder-1759</link>
      <guid>https://dev.to/playgamalabs/aquasort-a-browser-game-in-one-folder-1759</guid>
      <description>&lt;p&gt;Small, self-contained browser game: Sort colourful liquids into tubes&lt;/p&gt;

&lt;p&gt;Pour coloured liquids between tubes until every colour collects in a single vessel. The rules take ten seconds to learn, and the levels never end — the difficulty grows on its own: more colours, locked tubes, stars for thrifty moves. There is a daily challenge with a set task, achievements, a skin collection and cloud saving of your progress.&lt;/p&gt;

&lt;p&gt;We wrote it as a single canvas codebase with no engine and no build step worth mentioning, and it ships through the Playgama Bridge SDK to a dozen portals — the same zip, the rules of each portal handled by a thin layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it in the browser:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/jpwgsvvfavu363" rel="noopener noreferrer"&gt;https://playgama.ai/play/jpwgsvvfavu363&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free to play, no signup, works on mobile, interface in 14 languages.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>gamedev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>AquaSort — a browser game in one folder</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:28:05 +0000</pubDate>
      <link>https://dev.to/playgamalabs/aquasort-a-browser-game-in-one-folder-3nca</link>
      <guid>https://dev.to/playgamalabs/aquasort-a-browser-game-in-one-folder-3nca</guid>
      <description>&lt;p&gt;Small, self-contained browser game: Sort colourful liquids into tubes&lt;/p&gt;

&lt;p&gt;Pour coloured liquids between tubes until every colour collects in a single vessel. The rules take ten seconds to learn, and the levels never end — the difficulty grows on its own: more colours, locked tubes, stars for thrifty moves. There is a daily challenge with a set task, achievements, a skin collection and cloud saving of your progress.&lt;/p&gt;

&lt;p&gt;We wrote it as a single canvas codebase with no engine and no build step worth mentioning, and it ships through the Playgama Bridge SDK to a dozen portals — the same zip, the rules of each portal handled by a thin layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it in the browser:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/jpwgsvvfavu363" rel="noopener noreferrer"&gt;https://playgama.ai/play/jpwgsvvfavu363&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free to play, no signup, works on mobile, interface in 14 languages.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>gamedev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Accretion: Drop dust and planets — build the Sun</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 15:27:49 +0000</pubDate>
      <link>https://dev.to/playgamalabs/accretion-drop-dust-and-planets-build-the-sun-ief</link>
      <guid>https://dev.to/playgamalabs/accretion-drop-dust-and-planets-build-the-sun-ief</guid>
      <description>&lt;p&gt;Accretion is how astrophysics names the growth of worlds: dust sticks into meteors, meteors into comets, comets into planets. Drop dust, meteors and comets into a glass well: two identical bodies merge into the next step of the chain — from dust to the Sun and a black hole. Chains of merges multiply your score, the combo grows to ×3, and merging two black holes triggers the Big Bang: the blast wip&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works.&lt;/strong&gt; We build this on a plain 2D canvas with no engine: the whole game is one &lt;code&gt;game.js&lt;/code&gt; plus a folder of sound files, and the whole build is a single self-contained folder — no external requests, so the platform can cache and audit it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it ships.&lt;/strong&gt; It goes out through the Playgama Bridge SDK, which means progress lives in &lt;code&gt;bridge.storage&lt;/code&gt; and ads go through the platform's own calls. The same zip runs on the portal and on our own sandbox without a single change in game code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://playgama.ai/play/tinwmt5fxxrvhp" rel="noopener noreferrer"&gt;https://playgama.ai/play/tinwmt5fxxrvhp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free, no signup, plays on a phone, interface in 14 languages.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>html</category>
      <category>webdev</category>
      <category>indiegamedev</category>
    </item>
    <item>
      <title>41 browser games, one canvas codebase: how we ship them to a dozen portals</title>
      <dc:creator>Playgama Labs</dc:creator>
      <pubDate>Sat, 14 Nov 2026 13:21:43 +0000</pubDate>
      <link>https://dev.to/playgamalabs/41-browser-games-one-canvas-codebase-how-we-ship-them-to-a-dozen-portals-2p4a</link>
      <guid>https://dev.to/playgamalabs/41-browser-games-one-canvas-codebase-how-we-ship-them-to-a-dozen-portals-2p4a</guid>
      <description>&lt;p&gt;We build HTML5 games on a plain JavaScript canvas — no engine, no plugins — and&lt;br&gt;
ship them through the Playgama Bridge SDK. This is what we actually learned&lt;br&gt;
building them, and where the costs turned out to be.&lt;/p&gt;
&lt;h2&gt;
  
  
  The build is the easy part
&lt;/h2&gt;

&lt;p&gt;A canvas game is a zip with an &lt;code&gt;index.html&lt;/code&gt;. Ours are 0.6–3.8 MB. The portals&lt;br&gt;
work to size budgets of 50 MB (MSN Games) and 30 MB (YouTube Playables), so&lt;br&gt;
the headroom is what makes passing portal review possible at all.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- index.html of a real build --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://bridge.playgama.com/v2/stable/playgama-bridge.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;VERTIKA&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No bundler step worth mentioning, no asset pipeline, no engine version to&lt;br&gt;
negotiate with anyone. The whole game is &lt;code&gt;game.js&lt;/code&gt; plus a folder of sound files.&lt;/p&gt;
&lt;h2&gt;
  
  
  The bridge is the interesting part
&lt;/h2&gt;

&lt;p&gt;The Bridge SDK is a thin layer over the platform — storage, ads, leaderboards,&lt;br&gt;
achievements, social — and it is &lt;em&gt;not&lt;/em&gt; an engine. It does not take over your&lt;br&gt;
game loop, and it degrades gracefully when a capability is not available.&lt;/p&gt;

&lt;p&gt;That matters more than it sounds. The same zip runs on our own sandbox and on&lt;br&gt;
20+ partner portals, and on each of them the bridge exposes a different subset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// what actually differs between portals, and why a thin layer beats a full SDK&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;canSave&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;bridge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isAvailable&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;// false on some portals&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;lb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;bridge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;leaderboards&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// no-op if unsupported&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You write against the bridge once and the game works everywhere. Written by&lt;br&gt;
hand, that would have been twenty adapters to maintain.&lt;/p&gt;

&lt;p&gt;One caveat worth stating plainly: the bridge is loaded from a CDN, so a portal&lt;br&gt;
that blocks third-party scripts will break the build. We check for&lt;br&gt;
&lt;code&gt;window.bridge&lt;/code&gt; before initialising and fall back to a no-op mode, which is why&lt;br&gt;
the games still run when the bridge never arrives.&lt;/p&gt;
&lt;h2&gt;
  
  
  Distribution is a catalog problem, not a marketing problem
&lt;/h2&gt;

&lt;p&gt;Once a game passes moderation into the Playgama catalog it syndicates out to&lt;br&gt;
the partner portals on its own. The work is metadata — genre, supported&lt;br&gt;
languages, orientation, cover art — because the catalog filters by it, and a&lt;br&gt;
game that describes itself badly does not surface in the right slots.&lt;/p&gt;

&lt;p&gt;This is the part that is easy to underestimate. We had working builds with&lt;br&gt;
mediocre metadata, and the difference in impressions was not subtle.&lt;/p&gt;
&lt;h2&gt;
  
  
  Localisation is not optional
&lt;/h2&gt;

&lt;p&gt;Our games ship in 14 languages. The partner requirements make that concrete:&lt;br&gt;
VK and Playhop want Russian, most of the rest want English, and YouTube&lt;br&gt;
Playables wants a build that works in both orientations.&lt;/p&gt;

&lt;p&gt;The moment you add a second language you also have to handle text expansion.&lt;br&gt;
German is roughly 30% longer than English, and a button that fit in English&lt;br&gt;
will not fit in German. We do the layout work once and let the strings expand&lt;br&gt;
rather than trying to squeeze them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// layout maths that assumes the longest translation, not the average one&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"pause"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;           &lt;span class="c1"&gt;// "Pause" / "Pausieren" / "Пауза"&lt;/span&gt;
&lt;span class="n"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;minWidth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sb"&gt;`${label.length * 0.62}rem`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// ~0.62rem per glyph&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second thing that bites is that a canvas game has no text nodes at all —&lt;br&gt;
every label is drawn by us. We keep a string table per language and re-render&lt;br&gt;
on locale change, and we test the longest locale (German) rather than English.&lt;/p&gt;
&lt;h2&gt;
  
  
  Audio as files, not as a library
&lt;/h2&gt;

&lt;p&gt;Sound is generated at build time and shipped as files, decoded by the browser's&lt;br&gt;
own audio stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
game.js
sfx/
  hit.ogg
  hit.webm
  ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two reasons. It keeps the bundle small — no audio library, no synthesis code&lt;br&gt;
in the hot path. And it means the same audio behaves identically on every&lt;br&gt;
portal, which matters when you are comparing retention numbers between them.&lt;br&gt;
It also means there is no audio middleware to break on a portal that does not&lt;br&gt;
like your WebAudio usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest part: retention is the hard problem
&lt;/h2&gt;

&lt;p&gt;Portals filter on average playtime — MSN wants 300 seconds, YouTube Playables&lt;br&gt;
wants eight minutes — and our shorter games fall short of those thresholds even&lt;br&gt;
though the same games hold up fine in playtests.&lt;/p&gt;

&lt;p&gt;Building the game and getting it seen are two different problems, and only one&lt;br&gt;
of them is solved by making a better game. We spent a long time on the wrong&lt;br&gt;
one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we would do differently
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ask about the portal's thresholds before tuning the game.&lt;/strong&gt; We tuned for
"feels good" and then discovered that the retention gate is a specific
number of seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship the metadata with the build, not after it.&lt;/strong&gt; Cover art, genre and
language list are part of the upload, not an afterthought.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget for the long tail of orientations.&lt;/strong&gt; Half the ports want both
landscape and portrait; the ones that only want landscape are the ones that
let you skip the safe-area work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try them
&lt;/h2&gt;

&lt;p&gt;Two examples, both run in the browser with no download:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RIFT — a breakout roguelike where upgrades persist between runs:
&lt;a href="https://playgama.ai/play/j22cyzwj6qcatb" rel="noopener noreferrer"&gt;https://playgama.ai/play/j22cyzwj6qcatb&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Chameleon — a colour puzzle where you eat the flies that match your colour:
&lt;a href="https://playgama.ai/play/wds6cs2cg5xmao" rel="noopener noreferrer"&gt;https://playgama.ai/play/wds6cs2cg5xmao&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The thing I keep going back and forth on is the 14-language requirement. It is&lt;br&gt;
a lot of string work for games that are not primarily story-driven, and some of&lt;br&gt;
the ports only care about one language. Has anyone here shipped a small game in&lt;br&gt;
many languages, and was it worth it?&lt;/p&gt;

&lt;h2&gt;
  
  
  The games
&lt;/h2&gt;

&lt;p&gt;All of them run in the browser, have a Russian + English interface (14 languages&lt;br&gt;
in total) and work on a phone. Click a title to play — no download, no ads wall,&lt;br&gt;
just a playable build.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Game&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Play&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Accretion&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Accretion is how astrophysics names the growth of worlds: dust sticks into meteors, meteors into comets, comets into planets. Drop dust, meteors and…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/tinwmt5fxxrvhp" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AquaSort&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pour coloured liquids between tubes until every colour collects in a single vessel. The rules take ten seconds to learn, and the levels never end —…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/jpwgsvvfavu363" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BLADE 13: Crystal Quest&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;BLADE 13: Crystal Quest is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/geg5rrmmo6gbwx" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Chameleon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You are a chameleon on a tiled board. Step onto a colored tile and you take its color. A fly can only be eaten in exactly that color, and every step…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/wds6cs2cg5xmao" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Chromlins: Crystal Quest&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Chromlins: Crystal Quest is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/onmd44nkuvipcp" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CHRONO ECHO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An arena survivor built on a time loop, where every loop rewinds the arena and your path with it. The echo of where you just walked keeps hunting the…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/y26yjg3eitwbor" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Collect Rainbow: Star Rush&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Collect Rainbow: Star Rush is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/fkiyntvc7vmjuv" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cornelius Uni: Nova Rush&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cornelius Uni: Nova Rush is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/7ziz72pr55lypb" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Crystal Stream&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Steer a living stream of sand with your finger and grow crystals. Pour clean veins of a single colour onto the crystal floor — a vein freezes into a…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/jjqtohchyxm7dc" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DR1LL3R: Zero G&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DR1LL3R: Zero G is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts instantly in…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/wqplcb5fts4kug" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DYE HARD: Neon Run&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DYE HARD: Neon Run is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts instantly in…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/e6enbjparkihqj" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ECHO DRIFT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A neon arcade survival game where the opponent is your own trail. Every few seconds an echo of your recent flight cuts across the arena, and it…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/qffqibuwpp7fv6" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ECHO RIFT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A neon arena defence game where your own past shots come back to fight for you. The rift records where you aimed and turns that version of you into…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/63gksk526qiydo" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ECHO WARDEN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A time-loop arena where you defend a core while an echo of your own previous run fights beside you. The echo replays your steps and your shots…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/p26guez5tk5tkg" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Errands Iris: Nova Rush&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Errands Iris: Nova Rush is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/e4ckj3wgavcmyn" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gravity Forge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Star cores fall from the sky and you never touch them — you bend the space around them. Place gravity nodes that curve the fall and steer every core…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/rv7bqe5twawory" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gravity Goo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Fusion Lab: launch blobs of goo, steer them mid-flight with a gravity well, and fuse them together into new creatures. Sixteen levels of rising…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/osrtzo3zecncbn" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GRAVITY WELL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A three-dimensional arcade roguelite built around one mechanic: you devour waves of void creatures, and every devoured thing charges your singularity…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/yequwfbkzcadau" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HEAVO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A 3D arcade game built around one unusual mechanic: tap to float, hold to slam. Swap your mass mid-run and you can clear sixty handcrafted procedural…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/hgfb76rjr3e3i2" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jellytris&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tetris that melts. Pieces fall, touch the pile and melt into jelly beads: the beads flow into gaps, fill holes and spread down the slopes, so you…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/ida252hnuucq63" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LUMI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;LUMI is a cozy one-touch night arcade. Guide a tiny firefly through the twilight forest: tap to flip gravity, collect light dew, dodge thorns, saws…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/oepvn4m7nzsmsl" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MAGNETA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A three-dimensional arcade game about a magnetic field, where you are the magnet and you can pull or push. Flip your polarity, gather charged orbs…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/47auqdneopa2p6" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Matryoshka Merge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Drop matryoshka dolls into a wooden tray and merge the matching ones — two Buttons make a Little One, and two Empresses trigger a big salute. Chains…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/4iv4zgjdcuvgqw" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NEBOPAD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A launcher sits under the observatory and asteroids hang above it. Drag from the launcher and release: a fan of comets flies up, bounces off the…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/3t3x2fun72focs" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nechist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A warrior holds off waves of folkloric evil in a dark clearing: he fights on his own while you lead him with a finger or WASD, gather experience…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/t6rknvdpfj3bse" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NEON REAPER&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A neon roguelike survival. You are in the abyss and the Devourers keep coming, wave after wave, faster every time. Your ship flies along the vector…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/ikweu6crkttian" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ORBIT DRIFT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Your comet orbits a planet. One tap breaks it away along the tangent, and the next planet catches it with its gravity ring. Every ten hops a new…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/qqxftxqlzzjtoz" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Poopicorn: Pixel Rush&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Poopicorn: Pixel Rush is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts instantly…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/v6fxyp2ile6nhc" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PRISMHOOF: Star Rush&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PRISMHOOF: Star Rush is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts instantly…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/vrqyjp4dg3t7du" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PROBOY&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Aim, fire and keep the wall away. The cannon spits out a swarm of balls: you drag away from the cannon, an aim line appears, and on release the balls…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/vxrsvccra4qk5c" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PULSAR-9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An endless descent through a storm. The ship flies and shoots on its own — you only dodge rocks, drones, weavers, tanks, snipers and mines. Shards…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/fpcqztrwaaitor" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RIFT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Walls of neon bricks march down toward the pink rift line — knock them out with the ball and keep the siege off your paddle. Every cleared sector…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/j22cyzwj6qcatb" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ROTOR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One button is the whole skill. Throw shards into a spinning rotor: charge the ring without hitting the shards already in it. Cores give a bonus and…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/3jzt2da7p3bp7e" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rush to: Crystal Quest&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rush to: Crystal Quest is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/k4jwzvnczng6wq" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Spectral Horn: Hyper Dash&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Spectral Horn: Hyper Dash is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/na45jp3zlfahmo" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Spectrum Sprites: Zero G&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Spectrum Sprites: Zero G is a tiny arcade game from the js13kGames competition — the whole game fits in a few kilobytes of code, and it starts…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/cdzjejmbeayl32" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stellar Shepherd&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A flock of glowing comets is your score. Lead them with the cursor: the gravity well pulls the swarm into a tight cluster and the Gate opens wider…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/46acdftpoot57h" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TAIL BRAWL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Collect fallen spirits and they grow into a living whip-tail that becomes your weapon and your armour. The longer the tail, the wider the swing: a…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/o53vcpmnrkngbi" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TANGENT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The comet circles a planet. One tap and it breaks orbit, flying off along the tangent toward the next ring. Land in the ring for a point, skip the…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/ypzmshmzj57ezj" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tower to the Moon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One button, an endless tower. Place the blocks dead-centre: a perfect hit builds a combo and doubles your points, a miss cuts a corner off and the…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/nc465dthqgz4oa" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VERTIKA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One button, one tower. Place the slabs precisely: a miss makes the slab slide off and the tower lose its symmetry. Perfect drops widen the slab and…&lt;/td&gt;
&lt;td&gt;&lt;a href="https://playgama.ai/play/bttd7w5lthxmwh" rel="noopener noreferrer"&gt;play&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every build is also on itch.io with a &lt;em&gt;Play on Playgama&lt;/em&gt; link, and the whole&lt;br&gt;
catalog sits on Playgama itself.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>gamedev</category>
      <category>indiegamedev</category>
    </item>
  </channel>
</rss>
