Back to blockfall
SOURCE / PINNED RELEASE

Made of little things.

blockfall

Release
a6bb863994d9…
Author-recorded commit
e6ab5899ddac…
License
LICENSE
Author’s source reference
nostr://npub1dmmh0futyszl4445mv4xrygkgsgj8vpu79yx3qyy9qxmz4pemtzqlqmc87/wss%3A%2F%2Fgit.napplet.soy%2F/n-afafae55ef1

Archive hash verified: ba8de5cbee33e11e…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

index.html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="theme-color" content="#050d0c" />
    <meta
      name="description"
      content="Steer a thrusting rocket into stacked block towers and bring the skyline down."
    />
    <title>Blockfall</title>
  </head>
  <body>
    <!--
      A napplet is framed by its runtime, so this surface is the game itself:
      a status rail, the demolition range, and the console controls.
    -->
    <main id="app" class="app">
      <header class="hud" aria-label="Mission status">
        <div class="hud-cell">
          <span class="hud-key">Score</span>
          <span id="score" class="hud-value">000000</span>
        </div>
        <div class="hud-brand">
          <span class="brand-mark" aria-hidden="true"></span>
          <span>Blockfall</span>
          <em>demolition range</em>
        </div>
        <div class="hud-cell hud-right">
          <span class="hud-key">Sector</span>
          <span id="level" class="hud-value">01</span>
          <span class="best">best <b id="best">000000</b></span>
        </div>
      </header>

      <section id="stage" class="stage" aria-label="Demolition range">
        <canvas id="scene"></canvas>
        <div id="banner" class="banner" aria-live="polite" hidden>
          <p id="bannerTitle"></p>
          <p id="bannerSub"></p>
        </div>
        <button id="restartBtn" class="restart" type="button" hidden>Re-open range</button>
      </section>

      <footer class="console" aria-label="Launch console">
        <div class="readout">
          <div class="fuel">
            <span class="hud-key">Fuel</span>
            <div class="fuel-track"><span id="fuelFill"></span></div>
          </div>
          <div class="ammo">
            <span class="hud-key">Rockets</span>
            <div class="ammo-row">
              <div id="ammo" class="ammo-pips"></div>
              <span id="ammoCount" class="ammo-count">×8</span>
            </div>
          </div>
          <p id="hint" class="hint">Aim the rail · launch when locked</p>
        </div>
        <div class="controls" role="group" aria-label="Rocket controls">
          <button id="leftBtn" class="pad" type="button" aria-label="Rotate left">
            <span aria-hidden="true">◀</span>
          </button>
          <button id="thrustBtn" class="thrust" type="button">
            <span id="thrustLabel">Launch</span>
          </button>
          <button id="rightBtn" class="pad" type="button" aria-label="Rotate right">
            <span aria-hidden="true">▶</span>
          </button>
        </div>
      </footer>
    </main>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>