Today's spark:
๐ค Describe Your Game AI fills settings
Shooter
Platformer
Dodge
Breaker
Runner
Flappy
Invaders
Pong
Snake
Asteroids
Roguelike
Racing
Hopper
1v1 Fighter
Puzzle
Rhythm
Defense
Pinball
Clicker
Memory
Wave Survival
Paper Toss
โจ Start from an example (one per genre)
Daily state: off
200
๐ฐ
Paint tiles above solid (purple), hazard (red), or erase. Hit โถ Run to play your level.
โก New Here?
Pick a genre, tweak a few sliders, and hit RUN to play immediately!
โ 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!
Move System
Rotate & thrust
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!
Shoot System
Fire bullets forward
if (SPACE pressed) { bullet = spawn(player.x, player.y) bullet.speed = 540 cooldown = 180ms }
Bullet Speed540
Fire Cooldown (ms)180
Every SPACE press (after cooldown) spawns a bullet pointed in the ship's direction and launches it. Lower cooldown = rapid fire!
Run System
Left & right movement
if (LEFT) velocityX = -200 else if (RIGHT) velocityX = +200 else velocityX = 0
Run Speed200
Velocity is set directly each frame. Release both keys โ instantly stop. Try a very high speed for ice-skate physics!
Jump & Gravity
Physics-based jumping
gravity = 600 if (UP pressed AND on ground) { player.velocityY = -450 } // gravity does the rest
Gravity600
Jump Force450
Low gravity = floaty moon jump. High gravity = heavy thud. Try gravity 200 + jump 300 for super bouncy!
Dodge & Collect
Left/right only
if (LEFT) player.x -= 250 else if (RIGHT) player.x += 250 // 70% hazards, 30% โญ stars every(800ms) โ spawn item
Dodge Speed250
Spawn Delay (ms)800
Player only moves left and right. Stars give points. Enemies end the run. Speed of falling items increases as your score grows!
Paddle & Ball
Breakout physics
// Move paddle if (LEFT/RIGHT) paddle.x ยฑ 300 // Ball bounces automatically if (ball hits brick) { brick.destroy() score += 5 }
Paddle Speed300
Points Per Brick5
The ball bounces off walls and ceiling. Hit the paddle to keep it alive. Clear all bricks to advance ball speeds up each wave!
Auto Runner
Endless obstacle leap
// Player auto-runs right if (SPACE/UP AND on ground) { player.velocityY = -450 } // Obstacles scroll left obstacle.velocityX = -220
Jump Force450
Obstacle Speed220
The runner auto-moves. Press SPACE or UP to leap over incoming obstacles. Score goes up the longer you survive!
Flap & Gravity
Tap to fight gravity
if (TAP pressed) { bird.velocityY = -450 } // gravity = 600 pulls it down
Flap Force450
Gravity600
Each tap gives an upward kick. Gravity constantly pulls the bird down. Too much gravity = very hard! Too little = floaty.
Invader Formation
Move, descend, shoot
every(700ms) formation moves if (edge hit) descend 18px random enemy fires every 1100ms
Enemy Speed150
Fire Interval (ms)1100
The formation sweeps side to side, stepping down when it hits the wall. Fewer enemies = they speed up automatically!
Pong Physics
Ball & CPU paddle
// Player: UP / SPACE moves paddle paddle.speed = 300 // CPU tracks ball Y ai.speed = 150 // Ball bounces off paddles & walls
Paddle Speed300
CPU Speed150
First to 5 points wins a round! Use the Tune tab โ CPU Difficulty to switch between Easy / Normal / Hard / Unbeatable.
Snake Grid
Grow, don't bite yourself
every(160ms) snake moves 1 cell if (eat food) { length++ // don't pop tail speed += 4ms faster } if (wall or self) game over
Start Speed200
The snake moves one grid cell at a time on a fixed timer. Higher speed setting = shorter delay between moves = trickier!
Asteroid Split
Rotate, thrust, shoot
if (SPACE) โ bullet at 540 speed // 3 sizes: largeโmediumโsmall large=10pts medium=20pts small=30pts
Bullet Speed540
Thrust Power200
Asteroids wrap around the screen. Each one you shoot splits into two smaller ones, small ones are worth the most but hardest to hit!
Enemy Spawner
Timer-based spawning
every(1100ms, do:) enemy = spawn(randomX, top) enemy.fallSpeed = 150
Spawn Delay (ms)1100
Fall Speed150
A game timer fires every N ms and drops an enemy at a random X position. Drag the slider, the timer updates instantly while the game runs!
Twin-Stick Rooms
Real-time BoI style
// WASD = move, Arrow keys = shoot if (enemies == 0) { doorGrp.clear() // open door! } if (player.x > doorX) { _nextRoom() // fade & load }
Starting HP3
Enemy Density3
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
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
๐ฃ๏ธ 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
// Only bounce when falling DOWN if (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
// Crumble: destroy on bounce if (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.
Combo System
Chain hits for multipliers
// Combo resets after 2.2s idle if (hit) { combo++; score += 100 * combo; comboTimer = 2200; }
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!
Wave Spawner
Escalating enemy waves
// Each wave: count += 2, speed += 15 const wave = { count: 4 + waveNum * 2, speed: 60 + waveNum * 15, hp: 1 + waveNum }; // Heavy: slower, 3ร HP, 1.5ร bounty
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
// Can only push if space beyond is clear if (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
// Distance from hit line if (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!
Tower Placement
Grid snapping ยท path check
// Press T, click grid to build if (onPath) { reject(); return; } gold -= 50; towers.push({col, row, range:120});
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
// 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!
Flipper Physics
Angle ยท kick ยท spring-back
// Z/โ = left ยท X/โ = right if (leftDown) lfAngle = Math.max(lfAngle-450*dt, -28); else lfAngle = Math.min(lfAngle+450*dt, 28); // Active flip โ strong upward kick ball.setVelocity(kickX, kickY);
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.
Bumper Burst
Score ยท flash ยท velocity boost
// Ball hits bumper โ burst away const spd = Math.max( curSpd + 200, 400); ball.setVelocity( (dx/dist)*spd, (dy/dist)*spd); score += bumper.pts; // 100-200
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!
Score System
Points on events
onCollide(bullet, enemy) { enemy.destroy() score += 10 }
Points Per Kill10
Arcade physics checks every frame if two objects overlap. When they do: destroy both, add to score, update display.
How It Works
Create art in Pixel Studio (Simple / Character / Draw), send it to Game Maker, then import it into the right slot below.
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
๐จ Quick Sprite Editor 8 ร 8 pixels ยท supports animation frames
FRAMES:
TOOL:
Paint each frame. Multi-frame = animated walk cycle in-game. Right-click to erase.
Enemy Sprite
Default
Using default UFO
Replace enemies with your own pixel art or character.
No custom enemy loaded
Bullet / Projectile
Default
Using default ball
Replaces all bullets, balls & projectiles.
No custom bullet loaded
Tile / Block (platforms, pipes, obstacles, bricks)
Default
Using default block
Used for platforms, pipes, obstacles & bricks.
No custom tile loaded
Background Image
Default
Using style setting
Stretches to fill the game canvas behind all other elements.
No custom background loaded
Level Map (Platformer only)
No level imported
Design in Level Designer, send it to Game Maker, then import the latest level here.
Using built-in default level
Game Audio
Make a sound in Audio Studio, send it to Game Maker, then use the Studio button on a sound slot to assign it.
Sound Effects
Shoot, jump, hit, score
Pitch Randomisation
Varies each SFX pitch slightly feels more organic
Background Music
Chiptune loop
50%
100%
60%
Shoot
Jump
Hit/Die
Score
Level Up
Death
Power-up
Victory
Tap a card to expand its options. Only options that affect your current game type are shown.
Colour Theme
๐ค Game Font
๐จ Emoji Theme
๐ Parallax Backgrounds
๐ฆ๏ธ Weather
Changes the colour palette and emoji sprites across the entire game
Parallax Layers
3 scrolling depth layers (Platformer, Runner, Flappy, Racing)
Player
Difficulty
100%
Normal
World
Screen Shake on Hit
Camera rumble when damaged
CRT Scanline Effect
Retro TV scanlines + vignette overlay
๐ Story & Messages
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
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
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 scorescene.hazards, enemy group ยท scene.scoreText, score labelliveConfig.speed, player speed ยท liveConfig.gravity, gravitygameState.lives, lives ยท showToast('msg'), toastshowVictory(score), trigger win ยท showGameOver(score), end
โก Event Rules
Event Nodes make things happen during your game, no coding needed!
Tap ๐ข WHEN to set trigger. Tap ๐ด THEN to set action.
Tap ๐ข WHEN to set trigger. Tap ๐ด THEN to set action.
No rules yet!
Add one below, try "When score reaches 500 โ Show message"
Add one below, try "When score reaches 500 โ Show message"
Run the game to see rules fire