LAUNCH YOUR OWN ONLINE .io GAME — NOT A MONTH OF NETCODE PLUMBING.
If you have ever tried to wire Netcode for GameObjects to UGS Relay matchmaking from scratch, you know that is where the weeks go. Tomato Climb is a COMPLETE, ready-to-ship online multiplayer .io game template where that plumbing is already solved — and shaped the way a production project would shape it.
Players race UP a tall, procedurally generated tower and throw items to knock rivals back down. First/highest to the top wins. Fast, chaotic, casual-competitive PvP — the kind of loop that fills .io portals.
This is a CODE / SYSTEMS template for developers, not an art pack. You get a working, end-to-end online game you can launch, re-skin, or learn from — with no paid third-party packages to buy and import.
== The networking (why you are really here) ==
- Netcode for GameObjects (NGO) 2.12, client-authoritative movement.
- Online play over Unity Gaming Services: Relay + Multiplayer Sessions. SERVERLESS — no dedicated server to rent, no backend code to deploy or maintain. Relay handles NAT traversal; Sessions handles discovery.
- One-button QUICK-MATCH matchmaking: a single call joins an open public session or hosts a new one if none exists (QuickJoin with a CreateSession fallback). WithRelayNetwork auto-starts NGO once matched, so the round loop just runs — no bespoke connection flow to babysit.
- In-game text chat, built on NGO RPCs (server re-broadcasts; the UI subscribes to a static event so it does not care when the chat object spawns).
- Reconnect / leave lifecycle handled: an intentional leave returns to the lobby; an unexpected host drop auto re-matchmakes the survivors. Stale session memberships are cleared on join.
The architecture is documented and readable. The matchmaking service owns the full UGS auth/session lifecycle; the UI only calls QuickMatch/Cancel and reads State/Status. This is the part that is genuinely hard to get right — and it is done.
== Web & CrazyGames (monetization-ready) ==
- WebGL-ready out of the box — Relay runs over WebSocket/WSS, so it works in the browser.
- CrazyGames SDK integrated: midgame ads, audio mute handling, gameplay start/stop events (the QA signals the platform requires), plus a build pipeline. Ship straight to CrazyGames-style .io portals.
== Zero paid dependencies (the differentiator) ==
This project originally leaned on Feel, DOTween, Juicer, Febucci, and Cartoon FX Remaster (CFXR). Every one of them has been REPLACED with a lightweight in-house implementation. You import NOTHING beyond free Unity packages — no surprise asset purchases, no licensing headaches, no version conflicts. The custom game-feel systems include:
- Camera shake
- Sprite afterimage trails
- Parallax background depth
- Hit-stop + slow-motion on big hits
- Hit flash
- Particle-system impact VFX
- Floating damage numbers
- Expressive googly-eye characters
== The game on top of it ==
PROCEDURAL LEVELS — seed-based generation:
- Platforms, including ice (slippery) and crumbling variants
- Ropes, hazards, and decorative set-pieces
ITEMS & COMBAT — 7 throwables and gadgets:
- Charge-to-throw tomato (hold to power up)
- Big tomato (heavy hit)
- Homing tomato (tracks rivals)
- Spring (self-boost upward)
- Oil slick (floor trap)
- Shield (block a hit)
- Quake (area stagger)
BOTS — AI players for solo testing and to fill matches.
== One-click deterministic setup ==
A single editor menu — "Tomato Climb > Setup Phase 1 Scene" — regenerates the ENTIRE scene, all prefabs, the player, camera rig, UI, and audio library, deterministically. It is re-runnable (it clears its own previously created objects first). To re-skin or customize, you edit a readable C# generator, not fragile hand-tweaked YAML — then re-run and everything rebuilds clean.
== Testing ==
Works with Unity Multiplayer Play Mode (MPPM) virtual players for fast local multiplayer testing. The template even gives each editor process a distinct anonymous identity, so MPPM clones do not sign in as the same player.
== Audio & licensing ==
All bundled SFX and music are CC0 (public domain): Dustyroom Casual Game Sounds, Kenney Impact Sounds, and OpenGameArt tracks. A credits file is included. Fully redistributable — ship it commercially, no strings attached.
== Localization ==
Lightweight custom i18n system. English and Korean are fully translated; 8 more languages are stubbed with English fallback.
== Who it is for ==
Indie devs who want a working online multiplayer .io game to launch — or a clean, readable reference for wiring up NGO + UGS Relay matchmaking — without building all of that from scratch.
== Honest limits (please read) ==
- This is a CODE / SYSTEMS template, not an art pack. Visuals are intentionally simple placeholder 2D art (rectangles, shapes, googly eyes). Bring your own art to re-skin it.
- No dedicated-server option — networking is Relay-based and client-authoritative by design.
- You must link your own free UGS project and enable Authentication (anonymous), Relay, and Lobby in the Unity Cloud dashboard (free tier). The template ships with the UGS project link cleared; this is documented step-by-step in the README.
If you would rather not rebuild NGO + UGS Relay matchmaking from scratch, this is built for you.