Paint a loop with đŖī¸ Road ¡ Use đ Start on the start/finish line ¡ đ§ Wall = barrier ¡ ⥠Boost = speed pad ¡ đĸī¸ Oil = spin-out zone. Leave blank for the built-in oval track.
Paint tiles above solid (purple), hazard (red), or erase. Hit âļ Run to play your level.
Theme & Story đ¨
⥠New Here?
Pick a genre, tweak a few sliders, and hit RUN to play immediately!
đ Story âļ
Add story text shown on the intro screen, victory, and game-over screens.
đŽ Controller connected
Save & Share â Auto-saved
â More tools
(click to expand)
â¨ī¸ Keyboard Controls
Arrow Keys or WASD to move
Space to shoot/jump
R to run game
P to pause
How Blueprints Work
Each card shows the real code powering your game. Drag a slider the green numbers update live. No restart needed!
No blueprints found
đ
Move System
Rotate & thrust
LIVE
if (LEFT) player.rotate(-190)
if (RIGHT) player.rotate(+190)
if (UP) player.thrust(200)
Rotation Speed190
Thrust Power200
The ship rotates left/right using angular velocity, then thrusts forward. High thrust = fast but hard to control!
Real-time twin-stick action. WASD to move, arrow keys to shoot. Kill all enemies to open the door on the right. Walk through to the next room. Enemies shoot back on floor 2+!
đī¸
Car Physics
Rotate-thrust steering
LIVE
if (LEFT) car.steer(-155)
if (RIGHT) car.steer(+155)
if (UP) car.thrust(600)
if (SPACE) car.nitro() // âĄÃ3
Car Speed320
Rotation-based steering + manual thrust physics. Off-road slows you down. ⥠Boost pads give a 2s nitro surge. đĸī¸ Oil slicks cause a spin-out. đ Start/finish tile counts laps.
đēī¸
Track Painter
Draw your own circuit
LEVEL
đŖī¸ Road, asphalt surface
đ§ Wall, barrier (bounce)
đ Start, start/finish line
⥠Boost, speed pad +65%
đĸī¸ Oil, spin-out zone
Use the Tilemap editor in the Level tab to paint a circuit. Leave it blank for the built-in oval. The CPU follows the centre of your road tiles automatically.
đ¸
One-Way Bounce
Doodle Jump physics
PHYSICS
// Only bounce when falling DOWNif (player.body.velocity.y > 0)
player.setVelocityY(-BOUNCE);
// Camera only scrolls UP
camY = Math.min(camY, player.y - GH/2);
The core trick: collide handler fires both ways, but only launch the player when they're moving downward. Camera follows upward only so you can't go back.
đĒ
Platform Types
Normal ¡ Moving ¡ Spring ¡ Crumble
DESIGN
// Crumble: destroy on bounceif (plat.getData('crumble'))
plat.destroy();
// Spring: extra launch height
velY = -BOUNCE * 1.6;
Toggle Moving Platforms, Crumble Platforms, and Spring Platforms in the Custom tab. Platform density controls how far apart each platform spawns.
Punch enemies quickly to chain your combo. The multiplier grows with each hit but resets if you pause too long. Boss enemies appear every 3 waves and deal splash damage!
Grunts move fast and die in one hit. Heavies are slower but take multiple punches. Bosses appear at wave 3, 6, 9âĻ with a visible HP bar.
đĻ
Sokoban Push Logic
One crate, one space ahead
LOGIC
// Can only push if space beyond is clearif (tile[nx][ny] === 'crate') {
if (tile[nx+dx][ny+dy] !== 'wall')
pushCrate(nx,ny,dx,dy);
else return; // blocked
}
Classic Sokoban rules: you can push ONE crate at a time, only if the cell behind it is free. Crates on targets turn green. Push all crates onto targets to win!
đĩ
Note Timing Windows
PERFECT / GOOD / MISS
TIMING
// Distance from hit lineif (dist < 18) judge('PERFECT', 100);
else if (dist < 36) judge('GOOD', 50);
else judge('MISS', 0);
Hit notes as they reach the glowing target line. PERFECT (Âą18px) scores 100pts and builds your combo multiplier. Miss too many notes and it's game over, configure the limit in the Rhythm Options panel. Use the Music Sequencer to create your own patterns!
Press T to enter placement mode, then click any non-path cell to build a tower for 50 gold. Towers auto-shoot the closest enemy in range. Earn gold by clearing waves!
đš
Auto-Targeting
Nearest enemy in range
AI
// Fire every 900ms if enemy in range
enemies.forEach(e => {
const d = dist(tower, e);
if (d < range) target = e;
});
if (target) shoot(target);
Each tower scans all enemies every 900ms and fires a bullet at the nearest one within its 120px range ring. Bullets travel at 220px/s and deal 1 damage. Watch the path to position towers effectively!
Each flipper has a pivot and an angle that swings up when the key is held, then springs back. A manual line-segment collision check determines if the ball is touching the flipper, if active, a strong upward kick is applied based on where along the flipper the ball lands.
Bumpers use Phaser arcade physics collision. On contact, the ball's velocity is directed away from the bumper centre, and always boosted to at least 400px/s so it never gets stuck. Hit all three top targets in a single ball to earn a 2000pt bonus!
Arcade physics checks every frame if two objects overlap. When they do: destroy both, add to score, update display.
How It Works
Open the Workshop above â create your art â click đšī¸ Send to Game Maker â it auto-imports here! Or use the buttons below to pull from a tool you already used.
Player Sprite
No sprite
Using default ship
Import your pixel art or character to replace it.
No custom sprite loaded
đ Built-in Sprites click to use as player sprite
Text shown on the intro screen, victory screen, and game-over screen
đž Enemy Behaviour
Classic, enemies drop straight down at set speed.
đ Boss Fight
Summon a powerful boss enemy at a score threshold
500 pts
20 HP
đĒ Collectibles & Shop
Power-ups drop randomly from enemies (20% chance). Tap to collect.
⥠Speed = fast for 8s ¡ đĄ Shield = blocks 1 hit ¡ 𧲠Magnet = attracts coins ¡ ⨠2à Score = double points for 10s
⨠Particles & Effects
đ Particle Presets
Levels:
đ Achievements
Add up to 4 goals that pop up when players reach them.
Shooter Options
12
Enemy Zigzag
Enemies swerve side to side
Boss Waves
A boss spawns every 500 pts
Platformer Options
Double Jump
Press jump again mid-air
Wall Jump
Jump off walls when sliding against them
đĨ 2-Player Co-op
P1 arrows ¡ P2 WASD ¡ shared screen
Runner Options
Double Jump
Press jump again mid-air
Parallax Background
Layered scrolling sky & ground
Breaker Options
90px
Dodge Options
30%
Flappy Options
120px
450
600
Invaders Options
540
UFO Mystery Ship
Bonus UFO flies across occasionally
Pong Options
540
2-Player Mode
P1 ââ arrows ¡ P2 W/S keys ¡ CPU disabled
Snake Options
Wall Wrap
Exit one side, enter the other
â ī¸ Poison Food
Rare red food shrinks + stuns
â Golden Food
Rare gold food worth 3Ã points
Asteroids Options
6 rocks
đ¸ Saucer Enemy
A UFO hunts you between waves
Roguelike Options
6 rooms
3hp
Racing Options
đģ Ghost Car
Replay your best lap as a ghost
đ Skid Marks
Tyre marks when drifting hard
đ¨ Drift Smoke
Particle smoke when sliding
đĨ 2-Player Split Screen
P1 arrows ¡ P2 WASD ¡ screen splits vertically
Hopper Options
Moving Platforms
Blue platforms slide back and forth
đĻ Flying Enemies
Birds that cross the screen, dodge them!
đ¸ Crumble Platforms
Orange platforms crumble on landing
đĨ Street Fighter Options
2-Player Mode
P2: Arrow keys + 1/2/3 to attack ¡ 0 to block
Puzzle Options
Show Target Hints
Target squares glow to guide the player
Rhythm Options
Practice Mode
Notes auto-play, watch the pattern first
Pinball Options
Flipper Assist
Flippers slightly attract ball, easier for beginners
Tower Defence Options
đŧ Customise Towers
Edit each tower's cost, range, fire rate and damage. Changes apply when you hit âļ Run.
đ Clicker Options
10 pts
Score Milestones
Celebrate every 100 / 500 / 1000 pts with a burst
đ Memory Options
Timer Mode
Race against the clock (60 seconds)
đ Wave Survival Options
Wave Clear Bonus
Earn bonus points for clearing each wave without dying
Win Condition
500 pts
Game Speed
⨠Game Juice
Feel effects applied every time something important happens
đ Screen Shake
8px
⸠Hit-Stop Freeze
55ms
đĨ Particle Burst
10 pts
đ Screen Flash
đ Zoom Pulse on kill
⥠Big Combo Flash text
Power-Ups (Timed Drops)
Enable Timed Power-Ups
Collectibles spawn on a timer during gameplay
10s
đĄ Shield1Ã
đ Ã2 Score1Ã
⥠Speed1Ã
â¤ī¸ Life1Ã
đ Loot & Drops
Enemies drop collectibles when killed
Coins â boost score ¡ Gems đ big bonus ¡ Hearts â¤ī¸ restore a life ¡ Custom ⥠your own effects
Drop Chance40%
Item mix (fractions, auto-normalised):
â Coin55%
đ Gem25%
â¤ī¸ Heal12%
⥠PU8%
Coin pts25
Gem pts100
Player Settings
3
Tints the player sprite
Camera & Feel
Combat Settings
1.5s
Time window to build a combo streak
500
HUD & Display
đģ Custom Script
Write Phaser 3 JS that runs inside your game. Define onCreate(scene) and/or onUpdate(scene), all globals are available.
Quick Insert, click to add snippet to editor:
Available inside your functions:scene.actor, player sprite ¡ scene.score, current score scene.hazards, enemy group ¡ scene.scoreText, score label liveConfig.speed, player speed ¡ liveConfig.gravity, gravity gameState.lives, lives ¡ showToast('msg'), toast showVictory(score), trigger win ¡ showGameOver(score), end
Real Phaser 3 source powering your game, changes here have no effect (edit the textarea above instead).
// ââ SHOOTER, Core Loop (runs 60Ã per second) ââââââââââ
// Phaser 3 Arcade Physics Sceneclass ShooterScene extends Phaser.Scene {
create() {
// Spawn the player ship in the centrethis.player = this.physics.add.image(320, 200, 'player');
this.player.setDrag(180); // slows the ship downthis.player.setMaxVelocity(400); // speed cap// Group to hold all bullet objectsthis.bullets = this.physics.add.group();
// Enemy timer, fires every spawnDelay msthis.spawnTimer = this.time.addEvent({
delay: liveConfig.spawnDelay,
loop: true,
callback: this._spawnEnemy, callbackScope: this
});
}
update() {
// Rotate ship left / rightif (LEFT) this.player.setAngularVelocity(-liveConfig.rotateSpeed);
if (RIGHT) this.player.setAngularVelocity(+liveConfig.rotateSpeed);
elsethis.player.setAngularVelocity(0);
// Thrust forward in the direction the ship facesif (UP) {
this.physics.velocityFromRotation(
this.player.rotation,
liveConfig.speed,
this.player.body.acceleration
);
}
// Shoot a bullet on SPACE (with cooldown)if (SPACE && canFire) {
const bullet = this.bullets.create(x, y, 'laser');
this.physics.velocityFromRotation(
this.player.rotation,
liveConfig.bulletSpeed,
bullet.body.velocity
);
}
}
}
// ââ PLATFORMER, Core Loop ââââââââââââââââââââââââââââââcreate() {
// Enable gravity on the playerthis.player = this.physics.add.image(100, 300, 'player');
this.player.body.setGravityY(liveConfig.gravity);
// Static platforms group (they don't move)this.platforms = this.physics.add.staticGroup();
this.physics.add.collider(this.player, this.platforms);
}
update() {
// Horizontal movementif (LEFT) this.player.body.setVelocityX(-liveConfig.speed);
else if (RIGHT) this.player.body.setVelocityX(+liveConfig.speed);
elsethis.player.body.setVelocityX(0);
// Jump only if touching the ground (onFloor)if (UP && this.player.body.onFloor()) {
this.player.body.setVelocityY(-liveConfig.jumpForce);
}
// Double jump (if liveConfig.doubleJump is on)if (UP && liveConfig.doubleJump && !onFloor && !usedDouble) {
this.player.body.setVelocityY(-liveConfig.jumpForce * 0.85);
usedDouble = true;
}
}
// ââ DODGE, Core Loop âââââââââââââââââââââââââââââââââââcreate() {
this.player = this.physics.add.image(320, 340, 'player');
this.items = this.physics.add.group();
// Spawn hazards + stars on a repeating timerthis.time.addEvent({
delay: liveConfig.spawnDelay,
loop: true,
callback: () => {
const isStar = Math.random() < liveConfig.dodgeStarRatio / 100;
const item = this.items.create(randomX, -20, isStar ? 'star' : 'enemy');
item.isStar = isStar;
item.setVelocityY(liveConfig.enemySpeed);
}
});
}
update() {
// Player only moves left and rightif (LEFT) player.x -= liveConfig.speed * delta;
else if (RIGHT) player.x += liveConfig.speed * delta;
// Items speed up over time with difficultyScale
item.velocityY = liveConfig.enemySpeed
+ score * liveConfig.difficultyScale * 0.2;
}
// ââ BREAKER, Core Loop âââââââââââââââââââââââââââââââââcreate() {
// Paddle (player-controlled)this.paddle = this.physics.add.image(320, 370, 'block');
this.paddle.body.setImmovable(true); // won't be pushed by ball// Ball, starts stationary, launched on first inputthis.ball = this.physics.add.image(320, 350, 'laser');
this.ball.setBounce(1); // perfectly elasticthis.ball.setCollideWorldBounds(true);
// Brick grid, rows & columns of static imagesthis.bricks = this.physics.add.staticGroup();
for (let r=0; r<4; r++) for (let c=0; c<8; c++) {
this.bricks.create(70+c*75, 60+r*28, 'block');
}
// Ball bounces off bricks and destroys themthis.physics.add.collider(this.ball, this.bricks,
(ball, brick) => {
brick.destroy();
score += liveConfig.pointsPerKill;
}
);
}
// ââ RUNNER, Core Loop ââââââââââââââââââââââââââââââââââcreate() {
// Player is fixed on X; world scrolls pastthis.player = this.physics.add.image(80, 300, 'player');
this.player.body.setGravityY(liveConfig.gravity);
// Obstacles scroll in from the rightthis.obstacles = this.physics.add.group();
this.time.addEvent({
delay: liveConfig.spawnDelay, loop: true,
callback: () => {
const obs = this.obstacles.create(680, 320, 'block');
obs.setVelocityX(-liveConfig.obstacleSpeed);
}
});
}
update() {
// Only one input: jump!if (SPACE && this.player.body.onFloor()) {
this.player.body.setVelocityY(-liveConfig.jumpForce);
}
// Score goes up every second you survive
score += delta * 0.01;
}
// ââ RHYTHM, 4-Lane Note Highway ââââââââââââââââââââââââââ// Notes fall at 260px/s; hit window = Âą36px_judge(lane) {
const note = closestNote(lane);
const dist = Math.abs(note.y - HIT_Y);
if (dist < 18) { combo++; score += 100 * combo; }
else if (dist < 36) { combo++; score += 50; }
else { combo = 0; misses++; }
}
// Load from Music Sequencer pattern:if (liveConfig.seqPattern)
useSequencerPattern(liveConfig.seqPattern);
// ââ TOWER DEFENSE, Grid + Wave System ââââââââââââââââââââ// T key = placement mode; click = build tower_placeTower(col, row) {
if (gold < 50 || onPath(col,row)) return;
gold -= 50;
towers.push({col, row, range: 120, rate: 900});
}
// Enemy follows waypoints along pre-set path_moveEnemy(e, dt) {
const next = path[e.pathIdx + 1];
e.moveToward(next, e.speed * dt);
if (e.reached(next)) e.pathIdx++;
if (e.pathIdx >= path.length) { lives--; e.destroy(); }
}
// Waves: each one adds 2 enemies + 8 speed
gold += 30 + wave * 10; score += 100 * wave;
// ââ PINBALL, Flippers ¡ Bumpers ¡ Targets âââââââââââââââââ// Z / â = left flipper ¡ X / â = right flipper// Flipper angle animates up when held, springs back on releaseif (leftDown) lfAngle = Math.max(lfAngle - 450*dt, -28);
else lfAngle = Math.min(lfAngle + 450*dt, 28);
// Bumper hit: bounce ball away + add scoreconst spd = Math.max(spd + 200, 400);
ball.setVelocity((dx/dist)*spd, (dy/dist)*spd);
score += bumper.pts;
// Drain: ball falls below table â lose lifeif (ball.y > GH + 20) { lives--; resetBall(); }
if (lives <= 0) showGameOver(score);
đĄ Full Source
All this code is inside arcade-game-maker.html, open it in a text editor to read the full source. Every scene is a Phaser 3 class that extends a shared base. Remix it freely!
⥠Event Rules
Event Nodes make things happen during your game, no coding needed!
Tap đĸ WHEN to set trigger. Tap đ´ THEN to set action.
âĄNo rules yet! Add one below, try "When score reaches 500 â Show message"
Run the game to see rules fire
đ Creative WorkshopDesign your sprite, build your level, craft your sounds, click đšī¸ Send to Game Maker inside any tool and it auto-imports!
Click cells to toggle notes. Columns = beat steps (8 per bar). Hit đš Use in Game to send to game. Rhythm mode: rows 1-4 = lanes A S D F, rows 5-8 = audio pitches only.
đ
Custom Achievements
Add New Achievement
Custom achievements fire automatically during gameplay. They appear in the Achievements showcase alongside built-in ones.
đąLandscape gives more room, or just keep playing!
âą 0:00.000
đŦ
Cutscene Editor
Story beats shown before / after gameplay
đ
Boss Designer
Define phases, HP thresholds & attack patterns
Phases (HP thresholds)
đšī¸
My Arcade Game
Tap or press Space to start!
âĄ
Custom Power-up Designer
Design up to 6 custom power-ups. They drop randomly when enemies die (if ⥠PU drop rate > 0 and Loot is enabled). Each PU has a name, icon, effect type, duration, and strength.
Create your first playable game in 30 seconds. Here's how:
1ī¸âŖ
Pick a Genre
Choose from 21+ game types (Shooter, Platformer, Flappy, etc.)
2ī¸âŖ
Tweak Settings
Adjust speed, physics, colors in the BUILD tab. Watch updates live!
3ī¸âŖ
Hit Run
Click the green RUN button to play your game instantly
đ Tap đšī¸ Build to customize your game â
đ SHOOTER
Controls: LEFT/RIGHT rotate ¡ UP thrust ¡ SPACE shoot
Shortcuts: R Run S Save F Fullscreen 1-5 Tabs
đ¯
Mission: Hit Run then open the Blueprints tab, tweak the green numbers and watch the game update live!
đšī¸
Welcome to the Arcade Game Maker!
Build your own arcade game in minutes, no coding needed. Let's do a quick tour!
Choose a Trigger
Tap an option to select it
đšī¸
Family Creator's Handbook
Your secret map to building awesome arcade games together!
đ4-Step Quick Start: Build Your First Game!âŧ
You don't need to be a wizard to make a game. Just follow these four simple steps together!
1
đŽ Pick Your Adventure (The Genre)
Look at the Build tab together. Choose a game style like a Platformer (jumping adventures), Space Invaders (cosmic battles), or an Endless Runner (fast-paced racing).
2
⥠Tune the Rules (Speed & Physics)
Use the sliders in the Build tab to change how fast your character moves, how high they jump, and how heavy the world feels. Try đĸ Easy preset first!
3
đŧī¸ Bring in Your Characters (The Art)
Open the Art tab and click Import Sprite Asset. Bring in your custom pixel art your Purple Fox, Pink Tiger, or Axolotl! You can also pick a colour theme in Build â Theme & Story.
4
âļ Hit the Big Green Button (Play!)
Click the big green âļ Run Game button to instantly jump inside your game. Want to change something? Just tweak a slider or pick a new preset and hit Run again changes happen instantly!
đ ī¸What Do The Sliders Do?âŧ
Think of the settings panel like the dashboard of a spaceship. Each slider completely changes how the world feels!
đ
Player Speed
How fast does your character run? Turn it down for a careful, sneaky crawl or crank it up for super-sonic speed! đĸ â đ
đ
Gravity
Controls how heavy the world feels. Low gravity = floaty space-boots for giant high-flying leaps. High gravity = super heavy for quick snappy jumps.
đ
Friction
Controls how slippery the floor is. Low friction = icy platforms where characters slide around. High friction = super-sticky sneakers!
đĸ
Bounciness
Perfect for pinball or bouncy ball games. The higher this goes, the crazier objects bounce off walls and floors. Great for Breaker and Pinball modes!
đž
Enemy Speed & Spawn Rate
Controls how fast enemies move and how often new ones appear. Try đĸ Easy preset to start you can always make it harder once you're winning!
đ§ The If/Then Magic Wand (Event Editor)âŧ
You don't need to type messy code to make things happen! The ⥠Events tab uses simple WHEN ⥠THEN magic rules. Think of it like setting up a fun chain reaction!
WHENPlayer touches Star
THENDestroy Star AND Give +10 Score
đĄ Creates a Treasure Hunt, stars disappear when collected and your high score goes up!
WHENPlayer touches Goal Flag
THENPlay Victory Sound AND Show "You Win!"
đ Creates the Grand Finale, sets up the winning finish line for your level!
WHENSpacebar is pressed
THENShoot Laser Projectile
⥠Creates Super Powers lets your character blast away obstacles!
WHENPlayer touches a Spike
THENPlay Boom Sound AND Restart Level
đ´ Creates a Dangerous Trap adds exciting challenges so the player has to try again!
đ
Parent & Kid Design Challenge! Watch out for funny logic loops! If you make a rule that says "When Player touches a Spike â Restart Level", make sure your starting spawn point isn't sitting right on top of a spike or your character will get stuck popping like a balloon the second the game starts!
đąTake Your Arcade Anywhere (Offline Play)âŧ
1
Install the App
Look for the "Install App" banner at the bottom of the screen, or the little install icon in your browser's address bar. Tap it!
2
Find Your Game Icon
A cool game icon will appear on your home screen or desktop just like a real app!
3
Play Anywhere Even Without Wi-Fi!
Design levels, draw characters, and test your games in the car, on a flight, or anywhere else even with Wi-Fi completely turned off!
đŦQuick Fixes for Young Creatorsâŧ
My character fell through the floor or is moving too fast to see!
Don't panic! Your character might just be moving faster than the physics engine can keep track of. Open the settings panel, lower the Player Speed or Gravity values a little, and test it again. The đĸ Easy preset is a great starting point!
My imported pixel art looks a bit blurry on the screen.
Make sure your custom art is drawn on a clean grid and that your scaling is set to a crisp, even number (like 2Ã or 4Ã). The engine loves retro-style, pixel-perfect graphics!
How do we save our game so we don't lose it?
The app auto-saves your creation into your browser's memory. But to be extra safe, click the đž Save button to download a backup file. If you ever change browsers, just click đ Load to bring your world right back!
Can we change the colours and style of the game?
Yes! Scroll down in the Build tab to Theme & Story đ¨. You can pick a colour palette, change the background, and even add a story intro that appears before the game starts!
What does the Events tab do?
The ⥠Events tab appears once you've played your first game. It lets you create WHEN â THEN rules without any coding like "When player touches a star, give +10 score". Check the If/Then Magic Wand section above for examples!