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.
The two clips
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
- Who starts with what: the territory's
rowsare a text picture of the board, one letter a cell (Rred,Bblue,.nobody's). 2 to 8 teams. - The balls: each body's
at,velocity,speed(held, so balls never tire),teamandfillcolour. - The words: the
hudentries. A team's name in braces fills in its cells, and with%its share, on every frame: the battle shows{red%}and{blue%}, and the ring's counter is{hits}, the cells of the ball's team.fromanduntilshow a line for some frames only, such as the answer at the end. - Twists: power-ups that split, grow, speed up, warp or magnetise a ball, breakable bodies and spinning blades are in Pixelbolt's rigid bodies guide, with seven presets, among them ring escape, spinning hoop and territory.
- The answer: render, read how it ended in
frames/sequence.json(figures.territory.countshas every frame's cells per team;figures.escapedthe frame a ball left), then write the answer line and render again. - With an AI agent: Claude Code, Codex or Cursor can write and revise the recipe through Pixelbolt's
MCP server (
pixel_helptopicbodiesgives the format) or its command line. For matches like these (the battle took 102 s here) the agent runs thepixelbolt sequencecommand above, since one MCP call stops after 50 s by default (--time-limitchanges it). Setup is in the README.
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.
| Pixelbolt | physim | WaveSpeed maker | BallTok | Satisfying Labs | BounceMatch | ReelBall | BallSimulator | BallEngine | Korpi | |
|---|---|---|---|---|---|---|---|---|---|---|
| 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
- State-Royale (Apache-2.0, Java, last changed January 2022): a command line that makes map "battle royale" videos, where regions of a real map conquer each other until one is left. It ranked first for "territory battle simulation video maker". Its bundled maps come from GADM, whose licence allows non-commercial use only without permission.
- Ultimate Bouncing Ball APP (ranked in four of our five searches): €13.99 or more on itch.io for Windows, macOS and Linux (the download is a 9.4 kB zip), with your own song synced to the bounces, a circular escape hole and about 20 options. Its page doesn't say how videos are exported. Read at 15:33 GMT; not run.
- Algodoo: a free but proprietary 2D physics sandbox for Windows and macOS, with fluids. The pages we read don't mention video export.
- Loop-Physics: one channel's own pipeline that renders physics Shorts, ring escapes among them, and posts them from GitHub Actions. It has no licence file, and its terms say it is "not offered, sold or licensed to anyone else".
- Search results also showed FlexClip's bouncing-ball video templates, Bouncy Ball Shorts Creator on itch.io and small Python projects such as maxwick456/balls. We didn't read them for this page.
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).
| Ring break-out | Territory battle | |
|---|---|---|
| Canvas, enlarged to 1080×1920 | 108×192, ×10 | 135×240, ×8 |
| Match | 745 frames of 34 ms; 116 bricks, 53 knocked out in 51 hits; the ball leaves the board at frame 706 | 960 frames of 33 ms; 300 cells, red from 30 to 148; 278 cells changed hands |
| Video frames written | 760 PNGs (25.33 s at 30 fps) | 1,020 PNGs (34 s; the last frame held) |
| Time, one after the other | 34.6 s | 102.0 s |
| Time, both at once, first npx download included | 39.2 s | 111.2 s |
| All frames, one SHA-256 | 4e743b39…1d77 | eaa1e718…9863 |
| Same frames from | 0.13.0 (npm and the tag), 0.14.0 twice, 0.14.0 under Node.js 20.20.2 and 22.23.4 | 0.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 frames | 489,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
- You want music: each bounce playing the next note of a song. BallEngine (songs or MIDI), ReelBall and BallSimulator (your own MIDI files) do that; BallTok has a MIDI melody library and BounceMatch a MIDI melody mode; Satisfying Labs has a "Progressive Song" bounce-sound mode, and Pro users can add their own music; WaveSpeed and physim play a note per bounce. Pixelbolt makes no sound.
- You want the tool to find a well-paced run for you. BallTok's auto-search tests 1,000 runs; ReelBall and BallSimulator have auto-search, and Satisfying Labs a "Simulation Finder" on Pro. With Pixelbolt you, or an agent, try variations yourself.
- You want to tweak the run while you watch it, with no code. WaveSpeed (free, no sign-up), BallTok, Satisfying Labs, BounceMatch, ReelBall and BallEngine preview in the browser; Korpi has a preview step before it renders.
- You want smooth, glowing shapes rather than pixel art. physim (free, MIT) if you're happy in Python; WaveSpeed if you want it free in the browser; the paid tools otherwise.
- You want the videos posted for you. BallEngine posts to YouTube, TikTok, Facebook and Instagram from its Creator plan, with "Autopilot" on Pro; Korpi lists "Autopilot posting" too.
- You want named balls, logos or flags in a fight. BounceMatch (logo and flag uploads), Satisfying Labs (named balls), ReelBall and BallEngine have battle modes built for that.
- You want map battles between real countries or states. State-Royale, minding its map licence.
Where Pixelbolt fits
- You want grid territory battles, where cells change hands, which no other tool in the table lists, or a whole video drawn as pixel art.
- You want it free, with no account and no watermark, on your own computer, with the source under MIT (as physim is).
- You want the same video every time: a recipe is a 3–6 KB text file that rebuilds every frame exactly, so you can keep it in git, share it, or change one number and see what changes (physim's seeds and WaveSpeed's seed links replay runs too).
- You want an AI agent to make them, through Pixelbolt's MCP server or command line.
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
- The searches: on 9 November we ran five searches a creator would make ("ball escape ring simulation video generator", "bouncing ball video generator", "territory battle simulation video maker" and two more), plus one for open-source command-line tools, in Claude Code's web search, and GitHub repository searches. Our pages appeared in none. What ranked is in searches-2026-11-09.txt.
- The other tools: an AI research agent read each vendor's home and pricing pages, and the terms pages of all but Korpi and WaveSpeed (whose terms we didn't read), between 14:57 and 15:06 GMT, and kept copies; we re-checked the prices on this page against those copies, and a second agent checked every cell of the table against them before we published.
- Our runs: the commands and hashes above, from
npxin empty folders (the Node.js 20 and 22 runs used the same npm package, unpacked); the recipes' own SHA-256 sums are in COMMANDS.txt.
Sources
All read on 9 November 2026, 14:57–15:06 GMT, unless marked.
- Pixelbolt: npm 0.14.0, release v0.14.0, rigid bodies guide
- physim: GitHub (MIT, v0.1.5 of 4 August 2026), PyPI 0.1.5 (read and run about 15:00)
- WaveSpeed: bouncing ball video maker, bouncing ball simulator
- BallTok: home page, pricing and terms (one web app)
- Satisfying Labs: home page, pricing and terms, app
- BounceMatch: home, pricing, terms
- ReelBall: home, pricing, terms, app
- BallSimulator: home, pricing, terms
- BallEngine (also served at funcirclegames.pages.dev): home, plans, FAQ, modes, Rhythmic Mode, terms
- Korpi: ball escape ring, pricing
- State-Royale: GitHub; GADM: licence
- Ultimate Bouncing Ball APP: itch.io (read 15:33 GMT)
- Algodoo: home, download
- Loop-Physics: GitHub