Skip to content
adrianmgPublic

About

TINYNOID is a tiny Godot Arkanoid tribute with procedural graphics and music.

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Repository files navigation

TINYNOID

🎮 A tiny tribute to the classic NES Arkanoid, built in Godot with a twist: procedurally generated graphics and music.

Play on any platform

▶ Play TINYNOID in your browser

🧱 Build a Community Lab level

Platform Download
Web tinynoid-web.zip
Windows x86_64 tinynoid-windows-x86_64.zip
Linux x86_64 tinynoid-linux-x86_64.tar.gz
macOS universal tinynoid-macos-universal.zip
Checksums SHA256SUMS

Screenshots

Main menu Stage 1 — Rainbow Gate Stage 17 — Waveform II
TINYNOID main menu TINYNOID Stage 1 TINYNOID Stage 17

Play

Open godot/project.godot in Godot 4.7.2 and run the main scene.

Controls

  • Move: Arrow keys, A/D, mouse, touch drag, or controller stick
  • Launch / Select: Spacebar, Enter, click, tap, or controller face button
  • Menus / High Scores: Arrow keys, click, tap, or controller
  • Restart stage: R
  • Return to menu: Escape
  • Window size (desktop): F2 for 2×, F3 for 3×
  • Fullscreen: F11 or Alt+Enter

Highlights

  • 33 original stages
  • Eight capsules: Expand, Slow, Disruption, Catch, Laser, Break, Player, and Thru
  • Compatible capsule effects stack together until life loss or stage clear
  • Protected random drops reward the opening and prevent long dry streaks
  • Global Top 100 scores with offline local history
  • UTC Daily Cartridge with one shared community level and daily world ranking
  • Post-game X/Twitter handles and deterministic pixel avatars
  • Unranked Community Lab levels with creator attribution and moderation status
  • Mobile-friendly fixed-grid community level editor
  • Personalized share links with level-specific pixel-art previews
  • Shareable Game Over and Campaign Clear score cards
  • Standard, multi-hit Silver, and indestructible Gold bricks
  • Pixel-perfect 256×240 rendering with integer scaling
  • Distinct procedurally generated music for the menu and every stage
  • Generated sound effects, visuals, animations, and level layouts

Development

Run the headless test suite:

godot --headless --path godot res://tests/test_runner.tscn
node --test web/tests/*.test.mjs
deno test supabase/functions/_shared/*_test.ts
npm run build --prefix tinynoid-share

Serve the static level editor locally:

python3 -m http.server 4173 --directory web

Then open http://127.0.0.1:4173/editor/. Community levels and their secure Supabase deployment contract are documented in docs/community-levels.md.

Deployment

Vercel hosts the complete production app at tinynoid.vercel.app. The connected Vercel project uses tinynoid-share/ as its root and deploys main automatically. Its build exports Godot Web and places the editor, schema, social cards, and friendly community-level pages under the same domain. The Vercel project setting Include files outside the Root Directory in the Build Step must remain enabled because the build reads godot/, web/, schema/, and .github/scripts/.

Supabase remains the leaderboard, community catalog, moderation, and dynamic level-preview backend. Friendly level slugs are resolved by a database RPC so published links remain stable as the catalog grows.

Wavedash

The same Godot Web export can be published on Wavedash. godot/web_shell.html reports load progress and calls Wavedash.init() only when Wavedash injects its SDK, so other hosts are unaffected. Keep wavedash.toml engine-less: a [godot] section makes Wavedash boot its default loader instead of this shell. On Wavedash, Stage 1 campaign scores are also posted to the portal leaderboard keyed leaderboard (higher is better); the in-game Top 100 still comes from Supabase.

  1. wavedash.toml targets the adrianmg/tinynoid game in the Developer Portal. Don't run wavedash init at the repository root, because it detects the legacy Unity project.

  2. Export only the game to godot/build/wavedash/:

    GODOT_BIN=/path/to/godot .github/scripts/build-wavedash.sh
  3. Test it in the sandbox, upload it, then publish the printed build ID:

    wavedash dev
    wavedash build push -m "TINYNOID $(git rev-parse --short HEAD)"
    wavedash publish <BUILD_ID>

Wavedash runs every player and build on its own *.builds.wavedashcdn.com origin. The Supabase game functions accept those origins once deployed; see supabase/README.md. Browser storage is scoped to that origin, so the saved X handle and local score history start fresh with each new Wavedash build; global scores are unaffected.

Store cover art, a 16:9 thumbnail video, and gameplay screenshots live in docs/wavedash/. The title-only covers are drawn by web/social/cover.html: serve web/social/ and open cover.html?format=wide (1920×1080) or ?format=square (1080×1080). The canvas is the final image. The thumbnail video is real gameplay rendered by godot/tools/wavedash_thumbnail.tscn with an automatic paddle; its script header has the Movie Maker and ffmpeg commands.

The legacy Unity project remains in the repository as migration history. The Godot game uses original layouts and generated presentation assets.

About

TINYNOID is a tiny Godot Arkanoid tribute with procedural graphics and music.

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages