Player vs Game

PvG

Player vs Game

A new game,
made every hour.

At the top of every hour PvG makes a game on the spot and puts it live. Each one is named after a stock. Finish a run while it's live, enter your Solana wallet, and if you're in the hour's top 10 you get an airdrop: the top 10 split a share of the token's creator fees, paid in SOL. Older games stay open for practice.

On the air

Live now

The clock splits time into 12-hour blocks and gives every stock one hour per block. This is the block we're in.

LIVE ENDS IN --:--

 // 

 

Bot playing this hour's build
Prize
Build
Until
Mods
Play →

Up next

    How a game is made

    1. 01 · One file

      Every game is one file.

      Every game PvG makes is a single TypeScript file. It exports a pitch, its controls, a create() that builds the whole game from a seed, and a bot that can play it.

      
                      
    2. 02 · Ten checks

      Then a checker tries to break it.

      Each game is bundled on its own and run headless, with Math.random, Math.sin and friends and the clock rigged to throw.

      • lintno banned code
      • typesstrict TypeScript
      • metapitch and controls fit
      • mods2–4 per hour, varied
      • varietyno two hours alike
      • replaysame inputs, same run
      • idlewalk away and you lose
      • monkeymashing can't break it
      • botthe bot can play it
      • perfevery step stays cheap
    3. 03 · The clock

      The clock picks the stock.

      Every 12 hours the twelve stocks are shuffled into a new order, and each hour the next one gets its game. Your browser works this out from the time alone, with no server to ask.

      
                      
    4. 04 · The seed

      The hour becomes a seed.

      The game's id and the hour hash into one 32-bit number. That seed is this hour's build: the same for every player, different every hour.

      
                      
    5. 05 · The mods

      The seed deals the mods.

      Each build draws 2–4 modifiers, so this hour never plays like the last. Some pairs can't meet, like calm air and gusty winds.

      this hour:

    6. 06 · 60 steps a second

      Same inputs, same game.

      The game moves in fixed 1/60 s steps. Its randomness comes only from the seed, its trig from its own math, and it never reads the clock. Two copies fed the same inputs stay identical, frame for frame.

      Two copies, one input stream.

    7. 07 · The tape

      Your run is a tape.

      Your input is sampled once per step and written down. Repeats collapse into one entry, and pointer positions are rounded to a quarter unit so they replay exactly.

      Recording the bot's run of this hour's build…

    8. 08 · Replay

      Replay the tape, get the score.

      Play the tape into a fresh copy and it lands on exactly the same score, so a run can be checked instead of trusted. Practice runs don't count: the top 10 live scores this hour split the fees.

      Score
      …
      Replayed
      …
      Result
      …
      Play the live game →

    The games

    Made on the spot, every hour

    At the top of every hour PvG makes a new game, and it goes live the moment it's done. Everything it has made is here, newest first. Until its hour, nobody knows anything about a game, not even which stock it's for.

      By the numbers

      A small machine with exact rules

      • 12stocks on the board, one hour each per block
      • 60simulation steps every second
      • 480×640playfield, the same for every game
      • 24fresh builds of every game, every day
      • 2–4mods dealt to each build
      • 10automated checks per game
      • 4,294,967,296possible seeds (232)
      • 35sound effects, all synthesized, zero audio files
      • 0servers needed to know what's live

      PvG-OS

      Operator's manual

      Controls

      Move←↑↓→ or WASD
      A buttonSpace Z J
      B buttonX K Shift
      StartEnter Space or tap
      PauseP Esc, then Q to quit
      RetryR Space Enter
      BackEsc Backspace
      MuteM

      Every game also plays with touch or a mouse. Its title card lists its own controls.

      Live or practice

      A run you start on the live game is a live run. When it ends you enter your Solana wallet, the run is replayed on the server, and the verified score ranks for the hour. The hour's top 10 wallets split a share of the creator fees, airdropped in SOL after the hour closes. Any other game is practice, and practice runs don't count.

      Your bests

      Your best scores are kept in this browser for 48 hours.

      Where to play

      Open the arcade, or go straight to a game with /game.html?g=tsla, using its ticker in lowercase.

      Your move

      Player vs Game.

      The live game is live for another --:--.

      Booting...

      Starting...