Hello, world!
Ball Platformer controls !!!
| A / D | move left / right |
| W | jump |
| F | fly mode (cheat) |
| E | edit mode + props |
| R | reset to spawn |
| Shift | go faster |
| Click | select stuff (edit mode) |
| M | main menu (multiplayer + levels) |
under construction
or press any key lol
REBIND KEYS
◀
▶
▲
MAIN MENU
you: Player
Levels
⚠ saved levels live only in this browser's storage — this game is early/unstable, so they can get wiped without warning. Don't rely on them long-term.
Room code
(not hosting)
Join someone:
WebRTC via PeerJS · works Chrome ↔ Firefox · needs internet for matchmaking
CONTROLS
HOST SETTINGS
UPDATES
Faster with lots of physics objects (ball pools!)
Physics props that are nowhere near the visible area no longer get drawn every frame -- handy once you pile up a big ball pool bigger than the screen. In multiplayer, objects that have settled and gone to sleep also stop getting re-broadcast every tick, cutting network/CPU load once a big pool of balls stops moving.
Rename saved levels, imports auto-save
Custom saved levels now have a "rename" button next to load/del. Importing a .txt level also saves it into your levels list automatically (as "Imported level", or "Imported level (2)" etc. if that name's taken) instead of only loading it into the current session.
Press R to reset to spawn
The speedrun build's "R to restart" now also works in the regular game -- press R any time you're not in edit mode to snap back to the spawn point, same as falling in lava. Rebindable from the controls popup like the other keys.
weightMult/frictionMult limits removed
Both fields used to be capped (weightMult 0.1-10, frictionMult 0-5). Now you can type any value you want, in either direction -- the only floor left is that weightMult can't go to zero or negative, since that's not a real mass.
Fixed: paste still drifted on repeated presses
Pressing Ctrl+V several times without moving the mouse was still nudging each copy further down-right. Pastes now always land exactly centered on the mouse, every time.
Size-based weight is now opt-in
Weight scaling with a prop's size is now an "autoWeight" checkbox, off by default -- every prop is mass 1 (like the player) unless you switch it on. "weightMult" and "frictionMult" number fields let you push an individual prop heavier/lighter or grippier/slicker either way.
Speedrun timer is now a plain stopwatch
Removed the finish-line detection that used to auto-stop the clock. It now just starts counting when you move and keeps running until you press R to restart.
Fixed: game-breaking physics crash, weight now scales with size
The last update's uncapped weight scaling could make a physics prop so heavy or so light that the physics engine crashed every single frame, freezing the whole game. Weight still scales with how big a prop is (a giant box now shoves a small one out of the way instead of pushing back like it's the same size), just within a range the engine can actually handle.
Fixed: holding paste made copies fly off-screen
Holding Ctrl+V down triggered a flood of repeat presses that kept pushing the paste spot further down-right forever. Held keys now only register once per press.
Speedrun validation build
New "Speedrun (validation build)" button opens a separate, frozen copy of the original V1.0 game with a timer, no sandbox/fly/gun tools, and press-R-to-restart, so runs there are fair to compare.
Physics toggle now looks the part
Flipping a prop's "physics" switch on now actually turns it orange (the same physics-object color as before), instead of leaving it looking unchanged. Lava gets an orange outline instead, so it stays recognizable as lava.
Copy/paste props
Select something in edit mode and press Ctrl+C / Ctrl+V to duplicate it. Pastes now drop centered on your mouse cursor; repeated pastes without moving the mouse fan out so copies don't stack exactly on top of each other.
Physics on/off, no separate object needed
Solid/box/lava/cat props now all have a "physics" checkbox in their properties, so any one of them can become a falling/pushable physics object (or stop being one) any time, instead of needing a separate palette entry for it.
Ropes drag their connected props along
Dragging a prop (by hand or with the gizmo's move arrows) now brings along anything roped to it instead of leaving the rope's other end behind.
Password moved to its own file
The host password now lives in a separate password.txt file next to the game instead of the game's code, so it can be changed on its own.
Multiplayer passwords
Creating a server now asks for a host password, and you can set an optional room password that joiners have to enter too. Casual gatekeeping only, not real security.
Settings available in singleplayer
The guns / fly-edit settings panel now shows up (and is editable) in singleplayer too, not just while hosting a room.
Export / import levels
Levels can now be exported to a downloadable .txt file and imported back in from one, so you can share or back them up outside the browser. Files from an older game version still load, with a warning that things may be broken.
Multiselect + delete key
In edit mode, press X to delete whatever's selected. Hold Shift or Ctrl and drag over empty space to draw a selection box and multiselect props, like on a Windows desktop.
Update log
Added this Updates panel so you can see a running history of everything that's changed.
Stretchy triangles
Triangles can now be resized by width and height independently, using the same drag handles as boxes.
Smoother player collisions
Fixed players getting launched into the air when landing on someone else. You can now jump off another player's head, too.
Compact host settings
The guns / fly-edit host settings now sit as a short list under Controls instead of stretching the menu taller.
Level bugfixes
Fixed the delete button for saved levels doing nothing, and made loading a level much more resilient to bad/old save data.
Rope tool, controls sidebar, built-in levels
Added a rope tool to the build menu (click two props to connect them), a live Controls list on the main menu, and two built-in levels: "Level 1" and an empty "Clean" level.
Fixed level saving/loading
Custom saved levels could silently lose their ropes/constraints on load. Fixed the underlying id mismatch, and added a warning that saved levels can be wiped since the game is still early/unstable.
Main menu + more controls
The multiplayer menu became the Main Menu with a Levels section. You can now also move with the arrow keys and jump with Space.
Cat fixes
Fixed not being able to jump on cat objects, and made the cat photo stretch to fill its box instead of leaving empty space when resized.
Real cat photo
Replaced the cat object's drawn face with an actual cat picture.
F3X-style build gizmo
Edit mode now has move arrows and resize handles like Roblox's F3X tool. Also fixed resized objects not showing up correctly for other players.
Visible room settings for everyone
Joined players can now see the room settings too (read-only) instead of only the host seeing them.
Host settings panel
The host can now toggle guns (room-wide) and other players' fly/edit mode on or off.
Multiplayer polish
Host can shut down the server with a message to everyone; guns are now visible to other players and shoot lethal lava pellets; anyone named "markeplier" gets a pink mustache.
Grabbed objects + gun cheat
Picking up an object in edit mode now removes its collision while held. Added the "ihaveagun" cheat code for an orbiting pistol that shoots on left click.
Rebindable controls
Added a rebind-keys button so you can remap your controls, saved between visits.
Keyboard-layout-proof controls
Controls now go by physical key position (like where WASD sits) instead of character, so they land correctly on any keyboard layout, and the controls popup shows the right keys automatically.
More reliable connections
Multiplayer now uses live TURN relay servers (fixes most connection failures) and auto-reconnects if the signaling connection drops.
Real hosting + multiplayer
Got the game properly hosted online with peer-to-peer multiplayer, instead of only working when opened as a local file.
⚠ WARNING ⚠
You are about to host a multiplayer room.
You will get a room code to share.
Friends paste it and click Join (Chrome/Firefox/etc OK).
Needs internet once for matchmaking (PeerJS). Continue?
??? is requestion to join
press Y to accept or N to deny
PROP BOX lol
drag onto the level
X: delete · Ctrl+C / Ctrl+V: copy / paste
selected props