Ring escape and territory battle Shorts with a free, open-source simulator: Pixelbolt and 9 generators compared

Checked on 9 November 2026 by the makers of Pixelbolt, from each vendor's own pages: the browser tools that make ring-escape and bouncing-ball Shorts (BallTok, Satisfying Labs, BounceMatch, ReelBall, BallSimulator, BallEngine and Korpi) charge US$9.99–29 a month at regular price for their cheapest month-to-month paid plan, and WaveSpeed's browser maker is free. None of those eight, nor the free Python library physim, lists a grid territory battle, and Pixelbolt (free, MIT) wrote every frame of both clips below with one command each, the same bytes on every run, in 35 s and 102 s on one desktop PC. BallTok, Satisfying Labs and ReelBall also have watermarked free tiers; WaveSpeed needs no sign-up and adds no watermark. Pixelbolt writes no sound, has no live preview for matches this long and has no built-in search for a well-paced run: every other tool in the table makes sound, and most of the browser tools have a live preview. For battles between regions of a real map, see State-Royale under Also found. We ran Pixelbolt and physim on a Ryzen 9 7950X3D under Windows 11; the other eight we read without running them. Method, data and sources are below.

We make Pixelbolt. Read this as a vendor's page: our numbers come from runs you can repeat, and everything about the other tools links to the page we read it on. We are not affiliated with any of the other tools here. Both clips and both recipes were made by our AI agents with Pixelbolt, and the matches were picked from test runs (how). If we got something wrong, open an issue and we will correct it.

Last checked: 9 November 2026 (UK time) · Pixelbolt 0.14.0 (41c5788, released 8 November 2026) · Prices are in US dollars as each vendor's page showed them, read from the UK between 14:57 and 15:06 GMT on 9 November without signing in; they change often, and some differ by region · Next check by 9 December 2026, or sooner when one of these tools changes its plans.

The two clips

"How many hits to break out?" A ball chips its way out of a ring of 116 bricks. The on-screen HITS counter is Pixelbolt's count of bricks knocked out: 53, in 51 hits, since twice the ball took out two bricks at once. 25.3 s, 1080×1920, 30 fps, no sound. MP4 (280 KB) · recipe (3 KB)
"Red starts with 10%. Can it come back?" Three balls a side, no power-ups; each enemy cell a ball hits becomes its team's. Red goes from 30 of 300 cells to 148: "Not quite! Red ends on 49%." 34 s, 1080×1920, 30 fps, no sound. MP4 (489 KB) · recipe (6 KB)

Every pixel, word and number in both clips is drawn by Pixelbolt from the recipe. The counters and percentages fill in as the match runs; the question and the answer are lines of text in the recipe. The clips, the recipes and the data files linked on this page are MIT-licensed, like Pixelbolt.

How these matches were picked. Our agents tried variations with a small script and kept one of each. The ring: 24 start angles, of which 23 broke out within 40 s, after 12 to 73 bricks; this one (53) sits in the middle. The battle: 168 matches; at this length red came back to win 1 of 96 and drew 2, and this is the closest of the 93 it lost. The answer lines were written after those runs. Pixelbolt has no built-in search for a well-paced run; BallTok, ReelBall, BallSimulator and Satisfying Labs offer one.

Make the frames yourself: one command each

You need Node.js 20 or newer. In an empty folder holding the recipe, this writes every frame as a numbered PNG, plus a sequence.json with the match's numbers and a README.txt that says how to import the frames into a video editor:

npx -y pixelbolt@0.14.0 sequence ring-hits.bodies.json --out frames --fps 30 --size 1080x1920
npx -y pixelbolt@0.14.0 sequence comeback.bodies.json --out frames --fps 30 --size 1080x1920 --seconds 34 --background "#11131c"

Import the frames into your editor as an image sequence at 30 fps, at 100% scale, and add your music there. Or make an MP4 with ffmpeg (a separate program, one more line, run inside frames/); the line we used is in COMMANDS.txt. To check you got exactly our frames, save ring-frames-sha256.txt or territory-frames-sha256.txt next to the recipe and run cd frames && sha256sum -c ../ring-frames-sha256.txt. We got the same frames with Node.js 20, 22 and 24 on Windows; we haven't checked macOS or Linux, where the same pixels could be compressed into different PNG bytes, so if a hash differs there, compare the decoded pixels. The MP4's bytes depend on the ffmpeg build, so check the frames, not the MP4.

Change the match

A credit line, if you want one (MIT doesn't require it): Simulated with Pixelbolt, free and open source: https://github.com/skulitom/Pixelbolt

Side by side

Pixelbolt's and physim's columns are measured (see below) or taken from their own docs. The other columns come from each tool's own pages (and, for BallEngine, the code its pages load), read on 9 November 2026 and linked under Sources; we did not run them. "Not listed" means the pages we read don't mention it. The table scrolls sideways; the row names stay put.

Ten tools for ring-escape, bouncing-ball and battle Shorts, as of 9 November 2026
PixelboltphysimWaveSpeed makerBallTokSatisfying LabsBounceMatchReelBallBallSimulatorBallEngineKorpi
Price (US$) Free (MIT) Free (MIT) Free Creator Pro $15.95 a month; $71.70 for 6 months; $107.40 a year Creator Pro $15 a month ($8 a month for a new account's first 3 months); $72 for 6 months; $120 a year $15 a month for 30 videos ($9 the first month); $29 for 100; $69 for 300 Creator Pro $19 a month ($9.99 the first month); $69 for 6 months; $99 a year. Monthly tiers: Lite $9.99 (Classic mode only), Creator $29.99, Premium $59.99. Also a $29 one-off pack (12 months, personal use only, watermarked) Creator Pro $29 a month; $69 for 6 months; $99 a year Lite $19 a month ($192 a year); Creator $29; Pro $49; team plans to $199 Hobby $16.99 a month to Unlimited $149 (less billed yearly); the ball-escape template needs a paid plan
Free use Everything; no account Everything; no account No sign-up, no watermark, and "no limit on how many videos you export" (its simulator page's FAQ) Free account: one export a month, up to 30 s, with a balltok.app watermark Free account: 720p at 30 fps, 8 of 11 modes, with its watermark; the commercial-use grant in its terms comes with subscribing One free sample video: shorter, watermarked, lower resolution Versus and Classic modes: one export a day, watermarked, no account A "free demo (limited)" behind a sign-up; its limits aren't public Free Studio with live preview, but exporting needs a plan; one 30 s, 720p cloud render to try. Its Rhythmic Mode page: "Free plan users must credit BallEngine in their video descriptions." Example videos only
Where it runs Your computer: a Node.js 20+ command line (Windows, macOS, Linux), or an AI agent through its MCP server Your computer: a Python 3.10+ library and command line Your browser, rendered on your device Browser editor; the MP4 is rendered in its cloud; account needed to export Browser; records in the browser; account needed to record Browser dashboard; rendered on its servers Browser Web app behind a member login Browser Studio (exports encoded in your browser) or its cloud; also a Windows app Hosted template; rendered on its servers
Ring escape A ball knocking bricks out of a ring: territory cells that vanish when hit (the clip above), or sleeping blocks knocked loose (the ring escape preset); also balls in a spinning hoop with a gap (the spinning hoop preset) A ring with a turning gap (its escape_ring example); stacked rings (its ring_stack example) Yes (one of 12 scenes) Yes ("Classic": rotating rings) Yes ("Standard": gaps, spikes, up to five turning walls) Yes ("Ring Escape") Yes ("Classic") Yes ("Classic") Yes ("Escape") Yes (its only template on that page)
Battle modes A grid territory: 2–8 teams own square cells, and a ball takes each enemy cell it hits, with live counts, share bars and power-ups (no power-ups in the second clip) Not listed Not listed Not listed "Line War": balls cut each other's lines, last one standing "Versus Duel": head-to-head teams with a live scoreboard "Versus" (two balls with hit points) and "Battle Royale" (a closing zone) "Web Battle" and "King of the Hill" "Flag Battle" and "Weapon Ball Battle" Not listed
Grid territory (cells change hands) Yes Not listed by any of the nine. (State-Royale, below, conquers regions of a real map.)
Sound None: the frames are silent. sequence.json lists every frame's cells per team, so the frames where a cell changes hands can be found for sound effects in your editor Synthesised tones, samples, and the next note of a melody on every bounce (we ran its melody example: 12 s of AAC audio); MIDI with an extra A synthesised note per bounce, in a scale and instrument you choose; public-domain melodies A MIDI melody library synced to bounces; 9 synth instruments; your own sounds on Pro A sound library; your own effects or music on Pro A MIDI melody mode; synthesised effects A MIDI editor and import; 9 instruments; your own sounds A MIDI editor and import; 9 instruments Upload a song or MIDI file and each bounce plays the next note; a 1,000-track library Collision sound effects
Look Pixel art: a small canvas (here 108×192 and 135×240) enlarged by whole pixels, in palette colours only Trails, glow, motion blur, gradients (its README) No pixel-art style listed Its Studio's code includes an "8-Bit Sphere" ball skin tagged "pixel art", pixel-art backgrounds and a "pixelate" ball effect (we didn't see them in use) No pixel-art style listed
Export Numbered PNG frames up to 4096 px a side, with alpha, and sequence.json; up to 18,000 frames (10 minutes at 30 fps); the MP4 is one more ffmpeg line MP4 or MKV at any resolution and frame rate MP4 (H.264 and AAC) or WebM; 1080×1920, 1:1 or 16:9; 30 or 60 fps; 5–60 s MP4 (H.264 and AAC), 60 fps; the free export is capped at 30 s WebM or MP4, up to 1080×1920 at 60 fps on Pro (720p at 30 fps free) 1080×1920 at 60 fps on every plan; up to 61–120 s a video by plan 1080p vertical Not stated on its public pages MP4: 720p free, 1080p on Lite and Creator, up to 4K on Pro 1080×1920
Same result every run Yes, measured: identical PNG frames on every run Yes, measured: identical MP4 files on four runs (scenes take a seed, 42 by default) Its page says the same settings and seed always give exactly the same run (not run by us) Not stated
Editing and preview No editor for matches: you, or an agent, edit the JSON recipe and render. A match longer than 256 frames goes straight to video frames, so it doesn't open in Pixelbolt's browser playground. No search for a well-paced run Python code; a preview window (physim preview) Browser editor with live preview; links that hold every setting and the seed Browser editor with live preview; an auto-search that tests 1,000 runs and picks the best-paced Browser editor with live preview; "Simulation Finder" on Pro; names and images on balls Dashboard with live preview; logo, flag and face uploads Browser editor; auto-search; MIDI editor Behind the login (not seen); its pages list auto-search and a MIDI editor Studio with live preview and "Randomize"; posts to YouTube, TikTok, Facebook and Instagram (60 a month on Creator; "Autopilot" posting on Pro) Template editor with a preview step; its pricing page lists "Autopilot posting"
Licence MIT; the recipes and clips here are MIT too MIT Not open source; "The video is yours, free and without a watermark" (its FAQ) You own the videos (its terms); "Commercial license" listed on Creator Pro Commercial use granted with a subscription; raw exports may not be resold as an asset pack "Full commercial rights" on paid plans Commercial licence with a paid offer; the one-off pack is personal use only Commercial licence with a paid plan; its terms also count "developing, assisting, or promoting a directly competing software tool" while you use it as a breach Commercial licence on paid plans; free exports "intended for personal use and testing" "Full commercial rights on every video" (its page's structured data)

Also found, not in the table

What we measured

On one desktop PC (Windows 11 Pro, AMD Ryzen 9 7950X3D, Node.js 24.19.0), on 9 November 2026, with Pixelbolt 0.14.0 from npm; a slower computer will take longer. Our agents made the clips on 8 November with 0.13.0 (from npm and from a checkout of the release tag).

Pixelbolt renders of the two recipes
Ring break-outTerritory battle
Canvas, enlarged to 1080×1920108×192, ×10135×240, ×8
Match745 frames of 34 ms; 116 bricks, 53 knocked out in 51 hits; the ball leaves the board at frame 706960 frames of 33 ms; 300 cells, red from 30 to 148; 278 cells changed hands
Video frames written760 PNGs (25.33 s at 30 fps)1,020 PNGs (34 s; the last frame held)
Time, one after the other34.6 s102.0 s
Time, both at once, first npx download included39.2 s111.2 s
All frames, one SHA-2564e743b39…1d77eaa1e718…9863
Same frames from0.13.0 (npm and the tag), 0.14.0 twice, 0.14.0 under Node.js 20.20.2 and 22.23.40.13.0 (npm and the tag), 0.14.0 twice, 0.14.0 under Node.js 20.20.2 and 22.23.4
MP4 (the pinned ffmpeg line)279,724 bytes, the same file from the 0.13.0 and 0.14.0 frames489,379 bytes, the same file from the 0.13.0 and 0.14.0 frames

9 of the territory match's 960 frames fall between video frames at 30 fps and aren't shown; on two of them a cell changes hands, and the new score shows one video frame later. Full hashes are in COMMANDS.txt, the per-frame lists in ring-frames-sha256.txt and territory-frames-sha256.txt, and both sequence.json files are here: ring, territory.

physim 0.1.5 (from PyPI, CPU only: we didn't install its optional GPU extra), on the same PC with Python 3.13.9: its escape-ring example at 1080×1920 and 30 fps rendered 293 frames (9.8 s of video) in 17.5 to 20.7 s by its own progress bar, and all four MP4s were byte-identical; its melody example rendered 12 s of video with an AAC sound track in 25.9 s. With its output redirected to a file on Windows, a run stops with exit code 1 on a text-encoding error from its progress display, after writing the video but before any sound track is added; PYTHONIOENCODING=utf-8 avoids it. We didn't open its preview window, and its videos aren't shown here. Details: physim-run.txt.

The two tools' times aren't a race: the clips differ in length, look and content.

When to use something else

Where Pixelbolt fits

Limits: no sound; no live preview for long matches; no search for a well-paced run; pixel art only; the answer line is written into the recipe by hand after a run; the MP4's bytes depend on your ffmpeg build (the frames don't); and the runs on this page were on Windows only (Pixelbolt's tests run on Windows, macOS and Linux).

How we checked

Sources

All read on 9 November 2026, 14:57–15:06 GMT, unless marked.