Guide

Make a game in 2 minutes

This is the smallest thing that is still a game: a ball falls, you tap to bat it back up, and the floor ends your run. Three objects, eight blocks, no art to download and no code. You can finish it in the time it takes to make tea, in Max2D on the phone you're holding. It's also the best possible first build, because those eight blocks cover gravity, touch input, collision and variables — the four ideas every other 2D game is made of.

The whole game, in one table
ObjectComponentsScript
ballSprite, Rigidbody (dynamic), Circle Collider6 blocks
floorSprite, Rigidbody (static), Box Collidernone
scoreText2 blocks
Want the finished project? Download it free and import it — reading a working game is sometimes faster than building one, and you can pull it apart block by block.

Download KeepItUp.zip (2 KB)

To open it: Max2D → ProjectsImport Project → pick the file. The project takes its name from the zip, so leave the filename alone.

First: the project and the variable

Open Max2D, Create tab, new project. Leave the first scene called scene1.

Now, before anything else, open the scene's variables panel and add a global number variable called score, starting at 0. Turn on show debug while you build so you can watch the value change on screen as you play.

Creating it now, rather than when you need it, saves the most common beginner headache in the whole app: the Set Variable block picks its target from a dropdown, so a variable that doesn't exist yet simply can't be chosen. Build the script first and you'll wire up a perfect chain that scores nothing at all.

Draw two shapes

  1. A ballOpen the sprite editor and draw a filled circle on a 64 × 64 canvas. Any bright colour. Save it as ball.
  2. A floorDraw a wide, short bar — a long rectangle in a different colour. Save it as floor.

That's the entire art budget. Shapes are not a compromise here: starting with them is the fastest way to find out whether an idea is fun, which is the only question worth answering this early.

Prefer real art? Open the Asset Store inside Max2D for ready-made sprites, or import any image from your gallery. Nothing in the steps below changes, and you can swap the art in later without rebuilding a single block.

The ball

Tap + and choose Sprite from the Add Object sheet. Name it exactly ball and place it in the upper half of the view. Then add its components:

ComponentSettingsWhy
Rigidbodydynamic, gravity scale 60, fixed rotation onIt falls, and it doesn't spin while falling
Circle Colliderradius 32Half the ball's width — what the floor collides with

Gravity scale is the one number that decides how this game feels. At 60 the ball is catchable with a relaxed tap; push it to 100 and you get something closer to Flappy Bird's urgency. Change it later, after you've played a round — that's a much better way to pick it than reasoning about it now.

The tap

Open the ball's script and build this chain:

  1. When Screen TouchedEvent Touch Down, location Whole — anywhere on screen counts.
  2. Move (Velocity)Set linear y to 260 and leave everything else as NaN. Positive y is upward, and NaN means "leave this property alone", so the tap only ever changes vertical speed.
  3. Set VariableSet scope to global first, then variablescore, then open the num value dropdown, choose Expression solver and enter score + 1.

Note that the tap sets vertical speed rather than adding to it. That's why a falling ball snaps upward the instant you tap instead of sluggishly slowing down first — a small choice that's most of what makes the game feel responsive.

Two things that catch everybody Expression solver is how a formula goes into a number field. Tap the field's dropdown, pick it, and the field shows {expression} instead of a number. Type score + 1 as a plain number and it simply won't take.

Scope before variable. Changing the scope clears whatever variable you'd picked, because the list is filtered by scope. Set it first and you'll never see the dropdown mysteriously empty itself.

The floor

Tap +Sprite again, name it exactly floor, and place it along the bottom of the view. Give it a Rigidbody set to static and a Box Collider matching the bar.

Static means it never moves and never reacts — the cheapest kind of body, and the right one for anything that just sits there. It needs no script at all.

The fail state

Back on the ball's script, add a second chain, not connected to the first:

  1. On PlayRuns every frame.
  2. Is Colliding WithSet object to floor. The name must match exactly.
  3. Load Scene, on the blue true portSet it to scene1 — the scene you're already in. Reloading the current scene is the cheapest restart there is, and it resets everything at once.

Two chains on one object is worth pausing on, because it's the pattern you'll use forever: green event blocks each start their own independent chain, and one object can have as many as it needs. Here, one chain listens for taps and the other watches for the floor.

The score

Tap +Text, place it near the top, and give it a two-block script: On PlaySet Text. In the Set Text block, open the text field's dropdown, choose Expression solver and enter score.

Plain text there is the single most common reason a score label sits there displaying the word "score" forever.

Play it

Press play. The ball falls, tapping lifts it, the number climbs, and letting it reach the floor starts you over. That's a complete game loop: a goal, a skill, and a consequence.

SymptomCause
Ball doesn't fallRigidbody isn't dynamic, or gravity scale is 0
Ball falls through the floorThe floor has no collider, or no static Rigidbody
Tapping does nothingMove block set linear x instead of linear y, or the touch event isn't Touch Down
Ball shoots off the topLinear y is too high — try 200 instead of 260
Ball drops too fast to saveGravity scale too high — try 40
Score stays at 0Set Text has plain text instead of an Expression solver value
Variable dropdown is emptyThe score variable doesn't exist yet, or scope was changed after picking it
Nothing ends the runObject name typo — Is Colliding With needs exactly floor
Ball spins oddlyFixed rotation is off

Make it yours in another two minutes

Every one of these is a single change to what you just built:

  • A ceiling. Tapping repeatedly sends the ball off the top. Add another floor-style bar up there and it bounces back into play instead.
  • Rising difficulty. Turn the tap's linear y into an expression like 260 - score * 2, so each point makes your taps a little weaker.
  • Bounce. Raise the ball's Rigidbody bounciness and give the floor a gap — now it's a very different game with the same three objects.
  • Sound. One Play Sound block on the tap chain does more for the feel than any visual change of the same size.
  • A real end screen. Swap the Load Scene target for a second scene with a Play button, the way the Flappy Bird guide does it.

When you're ready for more moving parts, the five-minute dodge game adds duplication and recycling, and Flappy Bird adds animation, a saved high score and a second screen. If you'd rather describe a game and have it built for you, try making a game with AI.

Frequently asked questions

What is the easiest game to make first?

One object you control, one thing that ends the run, one number that goes up. That's this game — three objects and eight blocks — and it covers gravity, touch input, collision and variables in one sitting.

Do I need to download art?

No. The sprite editor is built in, so a circle and a bar take about twenty seconds. Shapes first is also the quickest way to learn whether an idea is fun before investing in art.

Why does my ball fall through the floor?

The floor is missing a collider or a rigidbody. A sprite alone is just a picture — physics needs a static Rigidbody plus a Box Collider. Both objects need a collider, since a collision has two sides.

Why does my score stay at zero?

Set Text was given plain text instead of an Expression solver value. Failing that, the score variable was created after the Set Variable block, so the block was never pointed at it.

What should I build after this?

Add a ceiling, or make it harder as the score climbs by turning a fixed number into an expression. Then move up to the five-minute dodge game, which introduces duplication and recycling.

Two minutes from now, you'll have made a game

No PC, no art, no code. Free on Google Play.

Free onGoogle Play