
The robots have taken over. Grab your friends, choose a fighter and take back the streets in this cooperative arcade brawler for one to six players.

Keep the main screen open while you play. Your phone is the controller; the action happens on the shared screen. Each phone takes one of the six player places.
While you gather the crew, watch robots march left from the far end of the district for 20 seconds. After a black fade, the fighters march right from the start for 10 seconds. Another fade reveals their arrival at the district midpoint. They stand for five seconds, form up against the robots, then fight a 20-second scripted battle with weapon pickups, swaps, jump kicks and explosions. After the victory, meet Kira, Jax, Nova, Ronin, Echo and Sable in six illustrated profiles showing their stories, fighting skills and Overdrives. Each profile stays for ten seconds while the street intro keeps playing behind the cards. You can join and start at any point.
Each district now has a longer route through six distinct street sections before its boss. Explore neon markets, transit stations, waterfronts and industrial strongholds, with drifting smoke, steam and fires. Lamps and signs pass in front of the street as distant skylines move behind it.

Joining friends who have already started? Scan their invitation or open BeatEmUp Control in the same room. You will take an available fighter and go straight to the controls. If all six places are full, the controller waits for a place to open. The person-plus icon on the main screen brings the invitation back.
Characters already taken by another player are marked Taken and cannot be selected.
Open the game in the room you want to use, then install it for a home-screen or desktop shortcut that opens in its own app window.
The installed game opens in the room you installed from and works in portrait or landscape. Keyboard, gamepad, touch and phone controllers work as usual. It needs a connection to the RCWeb server to play; installation does not download every district for offline use.
Installation requires a secure HTTPS address on phones and other devices. If the install option is missing, open your secure RCWeb address in a browser that supports installation. You can continue playing in the browser too.
Connect a standard Xbox or PlayStation controller to the device showing the game. Press and release a button to let the browser detect it. Use the left stick or D-pad to choose your fighter, then press A / Cross or Start / Options to join. The gamepad controls the same local fighter as the viewer's keyboard and touch controls; friends can still join on their phones.
Disconnecting stops gamepad input. Reconnect, release the controls, then continue with the same fighter. You can also carry on with the keyboard or touch controls. If the browser cannot access the controller or recognise its layout, the opening screen explains this. If a gamepad is not detected over a network address, open the viewer through HTTPS in a browser with gamepad support.

Use your left thumb to drag the joystick. Release it to stop. Move up or down to line up with an enemy, then use your right thumb to attack.

Walk close to a shock baton, plasma blade or steel pipe and press Pick up. Your fighter holds it and uses it when you Punch. Weapons have limited uses; the controller shows how many hits remain.
Watch your health bar and collect health pickups when you need them. Energy pickups help charge overdrive.
If you fall, a nearby friend can press Pick up to get you back up. Otherwise, you return after seven seconds if the team has a reserve revive left.
Where are the extra lives? Look at TEAM REVIVES in the bottom-right corner of the shared screen, below the character cards. This is a shared pool of automatic respawns. The team starts with three reserve revives per starting player. It is separate from each fighter's health bar.
Fight through six encounters in each district. Smaller robots arrive first, followed by tougher enemies and a giant boss.
Move right when the street is clear. If you see Blocked! Destroy the robots first, finish the remaining enemies before advancing. Stay close to your crew so everyone can keep up.

Watch for drones! They are fragile: one successful hit destroys them. Jump attacks reach higher, while ground attacks connect when a drone drops low. Move away from dive warnings and dropped bombs.
After each boss, the game celebrates the district's liberation. Continue when the crew is ready. Clear all three districts to see Game Complete! AI defeated!
Sound starts automatically when your browser allows it. If playback is blocked after opening or refreshing the viewer, your first click or tap anywhere unlocks sound, even on the loading screen. Playback begins once the game is ready. You can also press a key or tap the speaker icon. Tap the speaker again to mute. Your saved mute setting is respected. The intro song accompanies the attract loop and opening comic. The level theme plays in every district, switching to the boss theme for boss fights. The current track keeps playing through congratulations and game over.
Use the four-corner icon beside the speaker to enter or leave fullscreen. The icons have tooltips and accessible labels; the fullscreen button is disabled when your browser does not support it.
The first connected player is the crew captain. They can pause or resume from their controller's Menu. Any joined player can start a fresh game after a defeat or victory.
A quick controller refresh reconnects you to your fighter. Keep the controller visible while playing: closing it, switching away or losing the connection can release your place after a short grace period. Back to apps leaves immediately.
Refreshing the only viewer resets the game. Connected controllers return to the setup screen so the crew can start again. If another viewer is already hosting the game, an additional display follows that ongoing game.
This section is for maintainers, testers and coding agents.
webmanifest.json template. Its link is set after connection with the resolved room; the stable /beatemup/ app ID avoids a separate installation for every room. Standalone display allows both orientations, with existing regular, maskable and Apple icons.Only the current district's game artwork loads. Shared fighter, weapon and effect images are reused; previous district images are released. Music loads when its cue is needed and sound is enabled. Story and victory art load when shown.
The attract loop is a presentation-only timeline in the graphics renderer. Its actors never occupy player slots or change the simulation. It reuses the current district's loaded sprites; a test-level override previews that selected district. Scene changes occur during opaque black holds, and starting play resets the demo clock.
The sprites, scenery and comic artwork were created with built-in ImageGen and optimized for delivery. The level and boss music uses supplied tracks optimized as stereo MP3s; the intro also uses supplied music. Combat effects use sourced CC0 audio. Robot names and designs are fictional arcade interpretations, with invented abilities and no manufacturer affiliation.
The lean display mode reduces effects and frame rate for weaker devices. Add lean=1 to the viewer's query parameters to select it manually.
Set level on the viewer URL, then join and start normally:
Use a question mark before the first query parameter, or an ampersand after an existing room parameter. These starts skip the comic and replay from the same selection. Remove level for the normal opening. Controllers need only the matching room.
Read the repository instructions and RCWeb app guide before editing. Keep player instructions above this section, use headings and lists instead of tables, and keep screenshots local and compressed.