Multiplayer. No plugins. No server. All GUI. This is Xmulti — a raw, real-time, role-based Scratch engine running on cloud vars and hacker-style logic.
Make sure all of these variables are set to cloud:
I_am Player1_joined Player2_joined Player1_x Player1_y Player2_x Player2_y build x-des-varcnt x-design-utils
Use a costume/GUI button that checks if a role is taken:
if <(Player1_joined) = [0]> set [Player1_joined v] to [1] set [I_am v] to [Player1] broadcast [game start v]
Same for Player 2 using Player2_joined
.
Each player syncs their position through cloud vars:
if <(I_am) = [Player1]> set [Player1_x v] to (x position) set [Player1_y v] to (y position)
Also draw the other player using Player2_x
/Player2_y
.
Tap to leave the game and free your slot:
when this sprite clicked if <(I_am) = [Player1]> set [Player1_joined v] to 0 if <(I_am) = [Player2]> set [Player2_joined v] to 0 set [I_am v] to [none] broadcast [go to role select v]
The build
variable can be used to trigger mass actions like nuking both players back to the title screen or resetting all slots. Example:
when [build] = [RESET_ALL] set [Player1_joined v] to [0] set [Player2_joined v] to [0] broadcast [go to intro v]
Can also store version IDs if not being used as an override.
x-design-utils
is like your GUI command center. Use it to toggle modes, switch themes, or send soft logic triggers like:
x-design-utils = 1
: Show dev overlayx-design-utils = 2
: Enable movement debugx-design-utils = 3
: Lock GUIThis variable helps track how many utility elements are active or triggered. Perfect for menus, overlays, or cosmetic toggles.
when green flag clicked set [x-des-varcnt v] to [0] when I receive [add skin option v] change [x-des-varcnt v] by (1)
When a player hits LEAVE, reset local vars and optionally re-show selection screen or broadcast a reset:
when I receive [go to role select v] set [I_am v] to [none] switch costume to [Select Role]
Use this to let others claim freed spots in real time.
No server. No wait. No problem. You built a multiplayer core in Scratch — now push it further.