SKYSPRINT Docs

How the arcade works: the hold gate, the run economy, every game, and exactly what is live versus still a prototype.

Overview

Sky Sprint is a competitive Web3 arcade on Robinhood Chain. Instead of paying to play, you earn the right to play by holding — the longer your tokens stay in the wallet, the more runs you unlock. Skill decides the leaderboard; holding decides who gets to enter.

Read this first

Every game currently runs as a client-side simulation. Scores, run counts, and leaderboard entries live in your browser's localStorage — there is no contract deployed and no wallet transaction yet. Nothing here can move real funds. See Build Status for the per-feature breakdown.

ParameterValueSource
ChainRobinhood Chainworkspace README.md
Chain ID4663testnet 46630
L2 typeArbitrum Orbit L2workspace README.md
Gas tokenETHworkspace README.md
Block time~100 msworkspace README.md
TokenSky Sprint / SKYSPRINTgame config

Game Loop

Five steps, in order. Every game in the arcade uses the same loop — only the skill test changes.

  1. Connect a walletThe wallet is what the hold gate reads. A wallet with nothing in it earns zero runs, by design.
  2. Clear the hold gateYou need 3 hours of accumulated holding before your first run unlocks. See The Hold Gate.
  3. Spend a runEach round burns one run from your balance. Runs are earned over time, capped per day — they do not accumulate forever.
  4. PlayYour score is whatever the game awards. A bust score of zero is still a spent run.
  5. SettleYour score joins the room leaderboard. Top scores at the weekly cutoff take the prize pool.

The Hold Gate

The gate is the entire point of the arcade. Holding is not a fee — it is the entry requirement, and the only thing that generates runs.

ConstantValueMeaning
holdHours3Holding needed before run #1
blockHours3Hours per earning block
runsPerBlock2Runs granted per completed block
runCap6Maximum runs you can bank at once
dailyHours24Upper bound used for held-time

Worked example

A wallet held for 10 hours:

floor(10 / 3) = 3 completed blocks
3 × 2 runs per block = 6 runs
6 capped at runCap 6  ->  6 runs available

Held for 9 hours: floor(9/3)=3 → 3×2 = 6 runs. Held for 8 hours: floor(8/3)=2 → 2×2 = 4 runs. Holding 2 hours gives nothing — the gate is not met.

How held time is measured

Held hours are derived from the wallet's first balance receipt. Until a backend supplies that, the shipped build mirrors a localStorage placeholder so the game and dashboard agree with each other. This is the first thing that changes when the on-chain reader lands.

Game Catalogue

Three titles are playable now. All three share the same hold-to-play loop: clear the gate, spend a run, chase a score.

A second shelf of titles is announced but not built — see Announced Titles. Nothing in that shelf has rules, code or a page yet.

01

Sky Sprint

Flappy-style endurance run through tightening gates. Distance is the score; the walls never forgive.

Live now Open game →
02

Sky Invasion

Tower defence on a 5×7 grid. Energy regenerates on a timer; spend it on sentries, lances, barriers and frost before the swarm reaches your core.

Off Gate Not playable yet
03

Sky Guardian

Fly the ship and shoot the meteor field down. Both spawn rate and meteor speed climb until only reflexes keep the shield alive.

Off Gate Not playable yet
More games coming

Additional titles are under development. They are not released, so there is nothing to link to and nothing documented about their rules yet — this page updates as each one ships.

Where Everything Lives

The site is three pages. Knowing which one holds what matters, because the same game name can appear in two places with two very different meanings.

PageSectionWhat it holds
Landing
opening video, hero, marketing
Hero One call to action — Explore Arena. There is no Play button in the hero.
Play With Friends The six announced social titles, as placeholders with no links
Arena
the dashboard
Explore The three playable titles, plus the Contract Address field with copy-to-clipboard
Games Play With Friends again — the same six placeholders
Dashboard Wallet totals, My Runs (runs available, runs used, best score, held hours) and Run Economics
Docs
this page
— Rules and tuning for everything above
My Runs used to be its own screen

It is now a block inside the Dashboard rather than a separate view, because the numbers it showed (runs available, runs used, best score, held hours) are all things you want next to your balance — not behind another click.

Contract Address field

Explore carries a Contract Address row with a Copy button. Until the token is deployed it reads After launch, and copying it says so plainly rather than claiming success on an address that does not exist.

Once a real address is pasted in, the field is recognised as an address and the copy confirmation changes accordingly. The address is a plain text node, so replacing it needs no code change.

Announced Titles

Six further games are named on the site but none of them exist yet. No prototype, no rules written down, no playable build. They are placeholders so the lineup is visible while the work happens.

The intent is a shelf of simple, fast wallet-to-wallet games — the kind you pick up in a minute and learn by playing one hand — each match staked in SKYSPRINT between two connected wallets.

01

Domino

Lay tiles, block the board, play out the rest.

Announced
02

QQ

A hand-building duel, one wallet against another.

Announced
03

Chess

Square-by-square outthinking. Slow and deliberate.

Announced
04

Ludo

Race pieces around the board, roll out of the home square.

Announced
05

Blackjack

Beat the dealer. Quick rounds.

Announced
06

Dice

Pick a number, take the risk.

Announced
Do not expect these to resemble an existing app

They are meant to be our own simplified takes on classic social games, not reproductions of any product already on the store. Rules, stake sizes, match length and payout split are all undecided.

How they differ from the three live titles

Live arcade titlesAnnounced social titles
OpponentSolo score attackAnother wallet, or the house
RunsOne run per attemptStake is staked directly, not a run
ScoringFeeds the shared leaderboardHead-to-head result, not ranked
StatePlayablePlaceholder

Whether an announced title will need runs at all is an open question. If it turns out social games should be staked rather than run-gated, the run economy in Runs & Rewards would not apply to them.

Sky Sprint

The original title. Hold the line — one tap or keypress lifts the craft, gravity pulls it down, and you thread it through a column of gates. Each gate survived adds one to your score.

Difficulty ramp

Speed rises and the gap tightens as you go, but both are bounded — there is always a survivable frame if you are paying attention.

ConstantValueEffect
gravity0.10Constant downward pull
flap-3.8Upward impulse per input
fallMax9.0Fall-speed ceiling — long drops stay recoverable
pipeW56Gate width
spacing200Distance between gates
speedStart → speedMax1.55 → 3.30+0.055 per gate, ceiling at ~32 gates
gapStart → gapMin170 → 142−0.85 per gate, floor at ~33 gates
Why the physics are soft

Low gravity plus a fall-speed cap is deliberate. Stock Flappy drops you instantly, which is far too punishing for a holder group that is mostly not gamers. Every constant here is tuned so a missed input stays recoverable.

Controls

  • Tap the canvas, or press Space / Arrow Up, to flap.
  • Escape or the pause button pauses mid-run.
  • Touch and mouse both work — touch-action:none keeps the page from scrolling under you.

Outcomes

  • Run Over — you hit a gate or the floor. Score stands, run is spent.
  • Runs Used Up — you still have the game open but no runs left. Replays wait on the hold gate.
  • New best — beating your personal best is called out on the result overlay and stored.
Not playable yet

This title has no game.js yet — nothing reads the hold gate and nothing submits a score, so no run from it can be paid. The tables below describe the intended design so the constants are settled before it ships. Play and Docs both point here, but the game itself is not linked.

Sky Invasion

Tower defence on a 5 × 7 grid. Energy regenerates on its own timer — tapping never gives you energy, it only places a unit — and aliens walk the lanes toward your core. Lose all three core shield points and the run ends.

The four units

Cooldown and fire rate are in frames, so DPS is 60 / rate × damage.

UnitCostHPDamageRateCooldown
Sentry50120626240
Lance1251104496560
Barrier20220——760
Frost75140534420

Lance hits hardest but fires slowly and has the second-worst HP. Barrier does no damage at all — its 220 HP is the point. Sentry is the cheap backbone; Frost is the cheapest source of sustained damage per shot.

Energy

ConstantValueEffect
energyStart150Energy you begin a run with
energyMax300Hard ceiling
energyRate20Frames per +1 energy — about 3 energy/second
coreShield3Hits your core can take before the run ends

The four alien types

AlienHPSpeedDamageScore
Drone300.10551
Runner220.20041
Brute1900.058166
Boss3600.0423414

Runner is the fastest and the frailest — it exists to punish a lane you left empty. Boss arrives every 5th wave, moves slowest, and hits for 34, so a single unbraced lane loses the run on its own.

Wave ramp

ConstantValueEffect
firstWaveDelay300Frames before the first wave
waveGapStart210Opening breather between waves
waveGapMin40Floor the gap tightens toward
waveGapStep-34How much each wave shortens the gap
spdWaveStep / spdMax+0.048 / 2.60Speed multiplier per wave, capped
hpWaveStep / hpMax+0.085 / 12.00HP multiplier per wave, capped
bossEvery5A boss lands every 5th wave
extraFrom / extraEvery5 / 4After wave 5, +1 reinforcement body every 4 waves
maxAliens45Cap on simultaneous aliens

Outcomes

  • Core Breached — all 3 shield points gone. Score stands, run is spent.
  • Runs Used Up — you still have the board open but no runs left.
Not playable yet

As with Sky Invasion: no game.js, so nothing is gated and no score can be submitted. The constants below are the intended design, written down so they are settled before implementation.

Sky Guardian

You fly the ship. Meteors fall, you shoot them down, and the field only gets thicker. There is no finish line — the run ends when a rock reaches you and your shield is gone.

Ship

ConstantValueEffect
shipSpeed4.4Lateral drift speed
dragLerp0.34How quickly the ship settles into a new position
shipR15Collision radius
shieldMax3Hits you can take before the run ends
iframes70Invulnerability frames after a hit — stops instant double-hits

Shooting

ConstantValueEffect
fireCd8Frames between shots
bulletSpeed9.5Bullet travel speed
bulletR3Bullet collision radius
muzzle20Distance the shot spawns from the ship centre

The meteor field

Every rock's size is rolled at random, so no two waves read the same. Larger meteors take several hits.

ConstantValueEffect
metRMin / metRMax8 / 27Random size range per spawn
metHpBig5HP of the large variant
bigAt19Every 19th spawn is the large one
spawnStart → spawnMin80 → 26Frames between spawns, tightening by 4.10 each time
waveEvery8A named wave marker every 8 spawns
speedStart → speedMax0.90 → 2.90Fall speed, +0.150 per step
driftMax0.85Maximum sideways drift

Outcomes

  • Run Over — your shield hits 0. Score stands, run is spent.
  • Runs Used Up — no runs left for another attempt.

Roadmap

Sky Sprint was the first of three titles, and the run economy it defines is shared by all of them. Three things are planned on top of that foundation: staking, player-versus-player battles, and more games. None of them are built or deployed yet.

01

Staking

Lock SKYSPRINT to earn a share of the rewards pool. The hold gate already measures token age — staking formalises it into a real, claimable position.

Planned
02

Player Battles

Head-to-head play against another wallet. Two runs, same seed, higher score takes the pot — turning every title in the arcade from a solo test into a contest.

Planned
03

Social Titles

Six wallet-to-wallet games named on the site and nothing more — see Announced Titles. Building them is the first item of work on this roadmap.

In development
These are plans, not features

Nothing on this roadmap is live. There is no staking contract, no matchmaking, and no second game. Treat these sections as intent — the specifics will be written here once each system ships, and this page is updated as they land.

Token

The official SKYSPRINT token is planned to launch on Pons, a launchpad on Robinhood Chain. Its contract address does not exist yet — nothing below can be traded today.

ParameterValue
NameSky Sprint
SymbolSKYSPRINT
LaunchpadPons — Robinhood Chain
ChainRobinhood Chain (4663)
ContractNot deployed

3% transfer tax

Every transfer carries a 3% tax. It is split 1 / 2:

ShareRateDestination
Developer1%Core team — operations and development
Rewards pool2%Distributed to players
Total3%—

Rewards distribution

The 2% rewards share is paid out on two schedules:

  • Daily — a smaller, regular payout to qualifying players.
  • Weekly — the main distribution, following the settlement window described in Runs & Rewards.

Runs earned per transfer are the intended bridge between the token and the arcade: holding SKYSPRINT is what unlocks play, and the tax that comes with those transfers is what funds the payouts.

Owner slot — token figures to confirm before launch

The 3% split (1% dev / 2% rewards) and the daily + weekly schedules are the intended design. Still to be finalised and written into this page once live: the Pons launch transaction, the deployed contract address, whether the tax is adjustable, and the exact daily/weekly split thresholds. Do not publish this section as final until the contract is deployed.

Runs & Rewards

Runs are the currency of the arcade. You do not buy them — you earn them by holding, and you can only bank a limited number at a time.

ConstantValueMeaning
runsPerBlock2Runs per 3-hour block
runCap6Bank limit — hoarding is impossible
prizePool0.42Pool share per qualifying run
topN10Leaderboard entries that qualify
weeklyDays7Settlement window
weeklyPrize5.00Weekly prize pool

Runs earned by holding time

Hours heldBlocksRuns earnedAfter cap
0 – 200Gate not met
3122
6244
9366
12+4+8+6 (capped)

You reach the cap at 9 hours and it never goes higher. Everything past that only matters if you spend runs — which is the intended pressure: hold, then actually play.

Owner slot — economics not yet final

These numbers are the shipped tuning constants, editable from the admin panel. prizePool, weeklyPrize, and tokenPriceEth are placeholders until the token has a real price feed — confirm them before launch.

Scoring & Ranking

Each room shows the top 10 scores, your own row highlighted, and your live position against them.

Your position

The result overlay compares you against the 10th-place cutoff, not the leader. Beating the cutoff is what qualifies — chasing first place is not required.

  • Score above the cutoff → you are in for the weekly pool.
  • Score below it → you still keep the score on your personal best, you just miss the payout.
  • A bust result scores zero and still spends the run.

Medals

Positions 1, 2 and 3 are badged. Everything from 4th down is ranked purely on score.

Leaderboard data is placeholder

The shipped leaderboard is a fixed DUMMY list plus your own row, assembled in the browser. There is no server and no on-chain read yet. Your rank is real arithmetic over placeholder competitors — treat it as a UI preview, not a result.

Build Status

Honest per-feature state. Nothing below is inferred — this is what the shipped code actually does.

FeatureStateNotes
Sky SprintPlayableFull loop: hold gate → run → score submitted → server-side scoring
Sky InvasionOff GateNo game.js — not gated, not scored, cannot be paid. Marked, not linked.
Sky GuardianOff GateAs above. Both need their game.js written before they can ship.
Hold gateEnforcedTwo conditions: 3h since first inbound transfer AND holding now, read live from the chain
Run economyServer-authoritative2 per 3h block, capped 6/day. Computed on the server; the client cannot edit it.
LeaderboardLiveSQLite, scored on submit, resets when the round locks
Wallet connectionBuiltOne shared hub across every page; personal_sign + /api/auth/verify
Token contractDeployed0x060D35…E60975047 — testnet fixture matching the launcher's decimals and supply
Tax vaultDeployed0x8175ee55…D10a — 33.33% dev / 66.67% rewards, split fixed at deploy
Prize poolRead from chainSummed from TaxReceived events. An unreadable window shows —, never 0.
Round closeScheduled23:00 UTC locks the pool; 00:00 pays. Day 7 also fires the weekly draw.
Payout ledgerBuiltOne row per (round, rank), uniqueness enforced by the schema. Signature ≠ payment.
Payout transferNot yet executedEvery rejection case is proven; no winner has been paid end-to-end yet.
Admin panelWorkingServer-side session, one panel for all three games, validated against a schema
Emergency timelockUntested7-day path exists in the contract; never exercised. Largest remaining risk.
StakingNot builtNo contract. The card carries a disabled control that says so.

Admin access

The admin panel is gated by a SHA-256 password hash in server/.env, and the hash stays server-side: the browser only ever receives a session cookie. This is not the old client-side gate, where the comparison ran in the page and anyone who viewed source could read the hash and brute-force it offline. Still worth keeping anything sensitive out of it — it is one login, not multi-factor.

Deployed on Robinhood Chain Testnet

Token 0x060D35F577e3C849a12Ae4c7a8DA921E60975047 · vault 0x8175ee556615Eb0d0B8387eDD900E79ec623D10a · chain id 46630. The vault has an earlier deployment at 0xA7644e0C…55CE35 with a 0.05 ETH per-claim cap; it is retired and the server no longer points at it.

Configuration

Every tuning value lives in one object so the admin panel can rewrite it at runtime without a rebuild. Reads come from localStorage under the key skysprint_config, falling back to the shipped defaults.

Storage keys

KeyHolds
skysprint_configFull tuning config (physics + economy)
skysprint_runsRuns spent so far
skysprint_runbestBest score this session
skysprint_bestAll-time personal best
skysprint_held_hoursHeld-time placeholder until the on-chain reader lands

One config store per game

The three titles do not share a config key. Each folder keeps its own tuning object, so changing one game never silently retunes another.

GameFolderConfig key
Sky Sprintsky-sprintskysprint_config
Sky Invasionsky-invasionaliendef_config
Sky Guardiansky-guardianmeteordef_config
The two short keys are legacy names

Sky Invasion and Sky Guardian were renamed, but their localStorage keys were deliberately left as aliendef_ and meteordef_. Renaming them would have wiped every existing score and run count in players' browsers.

Best scores and run counts follow the same prefix per game — <prefix>_best, <prefix>_runs, <prefix>_runbest, <prefix>_scorever. All three also read the same shared hold-time value, so unlocking runs stays consistent across titles.

Live config sync

The storage event does not fire in the same tab and is unreliable on file://, so the game polls a cheap fingerprint of the config instead. When it changes, new values are pulled in. Physics constants need a page reload; run state does not.

Legacy config migration

Configs written before the Sky Sprint rename still carry the old token name and ticker. On load those keys are deleted so a stale ticker can never keep being served.

FAQ

Do I need to connect a wallet?

Not in the current build — nothing is connected and nothing can be spent. The wallet is already central to the design: it is what the hold gate reads. Wallet connection is on the roadmap but unbuilt.

Can I lose real money?

No. There is no contract, no transaction, and no wallet signature anywhere in the code. Every score is local. This changes when the token ships — treat the current build as a playable mock.

Why do I have zero runs?

Either you have not cleared the 3-hour hold gate, or you have spent everything you earned. The Runs cell shows what you earned, what you used, and what is left — if earned is zero, the gate is the reason.

Can I reset my state to test again?

Yes — clear this site's data in your browser, which removes the skysprint_* keys listed above. The admin panel has a round-reset that does the same thing.

Do the difficulty and odds change?

Yes. The admin panel rewrites skysprint_config live, and the running game picks up economy and scoring changes immediately. Physics changes take effect on reload.

My leaderboard rank looks odd.

Expected — the competitors are a hardcoded placeholder list. Your arithmetic against them is real; the field around you is not.

Can I compare scores between the three games?

They all feed one leaderboard, and that is deliberate — the top 10 wallets are picked from a single board. It only works because the score rate is tuned to roughly match: Sky Invasion pays 1 point per drone or runner, 6 per brute and 14 per boss precisely so a good tower defence run scores in the same band as a good Sky Sprint run. That is why one of the constants in that game is a score contract rather than a difficulty knob.

What does "announced" mean on the game cards?

It means the name and a one-line idea exist, and nothing else. No code, no rules, no prototype. If you are deciding whether to hold anything, the announced titles should carry zero weight — only the three playable ones do.

Which game is hardest?

Different failure modes rather than a clear order. Sky Sprint punishes a mistimed input instantly, Sky Guardian punishes slow reactions as the spawn rate tightens, and Sky Invasion punishes a lane you leave empty — a single unbraced boss costs 34 shield damage against a 3-point core.

How many games are there?

Three titles are playable today — Sky Sprint, Sky Invasion, and Sky Guardian. Six more are named but have nothing behind them yet; see Announced Titles. Staking and player-versus-player battles are on the roadmap. This page updates as each one ships.