Build an Arcade Game on Your Phone in 30 Minutes: A Prompt-by-Prompt Walkthrough
Five timed prompts to build Milk Run, an arcade game where a cow catches falling milk bottles, on your iPhone with FreeMilk, from first playable to polish.

In this walkthrough, you'll build Milk Run, an arcade game in which a cow catches milk bottles as they fall into a farmyard. You'll use five prompts in FreeMilk on your iPhone, each followed by a quick check before you move on. Thirty minutes is a target, not a promise: build times and the number of fixes you need will vary, and that's fine.
Before you start.
- FreeMilk on your iPhone. It's free: ads pay for a daily allowance of coding models.
- About half an hour.
- One habit: play after every prompt. If something's wrong, fix it before moving on.

The game.
Milk Run, in one sentence: tap to step a cow left and right across a farmyard, catching falling milk bottles before they hit the ground.
- Controls: tap the left or right half of the screen to step the cow one lane that way.
- Goal: catch as many bottles as you can. Each bottle is a point, and golden bottles are worth more.
- Failure: a milk bottle hitting the ground ends the run.

Minutes 0 to 5: the first playable version.
Start with the core loop and nothing else.
Minute 0: first playableMake a native iPhone game in Swift with SpriteKit called Milk Run. A cow stands at the bottom of a farmyard, in one of three lanes. Tapping the left half of the screen moves the cow one lane to the left, and tapping the right half moves it one lane to the right. Milk bottles fall from the top of the screen, each in one of the lanes. Catching a bottle scores a point. If a bottle hits the ground, the run ends. Show a start screen that says "Tap to start", the score while playing, and a game over screen with the score and a Play Again button. Portrait only. Simple shapes are fine: a round white cow with black patches, white bottles, green grass and a pale blue sky.
Check: tap to start, catch a few bottles, then miss one on purpose. Does the game over screen show the right score, and does Play Again start a fresh run?
Minutes 5 to 12: make it feel good.
Now make moving and catching satisfying. Gathering the numbers in one place means you can tune later by asking for a number to change.
Minute 5: game feelMove every gameplay number (fall speed, time between bottles, lane switch time and the size of the catch area) into one GameTuning struct. Then make moving feel better. Slide the cow to the next lane in about a tenth of a second instead of jumping there, and make each tap move it exactly one lane, even when I tap twice quickly. Tilt the cow toward the way it's moving. Add a quick squash and stretch on each catch, a short screen shake when a bottle hits the ground, and haptics: light on each catch and heavy when the run ends.
Check: play for twenty seconds. Does every tap move the cow exactly one lane? If the cow feels sluggish or twitchy, ask for a specific change, like "lane switch 10% faster". Haptics don't play in the simulator, so you'll only feel them once the game runs on a real iPhone.
Minutes 12 to 20: golden bottles and a fair difficulty curve.
Add a reward worth risking something for, and make the game get harder slowly.
Minute 12: golden bottles and difficultyAdd golden bottles: now and then, a golden bottle falls instead of a white one, a little faster than the others. Catching one adds 3 points, with a short sparkle, and missing one doesn't end the run. Make the game get harder slowly. Keep bottles slow and spaced out for the first 10 points, then make them fall a little faster and drop a little more often every 10 points, up to a limit. Never drop a bottle the cow can't reach in time after catching the one before it.
Check: play three runs. Is the start easy enough to learn? Is it noticeably harder by 30 points? If a bottle ever feels impossible to catch, describe where it fell and what you tried.
Minutes 20 to 26: a reason to play again.
Minute 20: best score and unlocksSave the best score on the device so it survives relaunching the app. Show it on the start and game over screens, and celebrate a new best with a short "New best!" banner. Add cow coats to unlock: brown at 25 points, black at 50 and golden at 100. Let me pick an unlocked coat on the start screen, and remember my choice.
Check: set a new best, close the app completely and open it again. Is your best score still there, and is your chosen coat remembered?
Minutes 26 to 30: polish and a final playtest.
Minute 26: polishPolish the game. Show "Milk Run" in large type on the start screen, over a golden-hour farm with a red barn and slowly drifting clouds. Add a pause button while playing, and pause automatically when the app goes to the background.
Check: play a few full runs, from the start screen to game over. Pause in the middle of one, then resume. Does the run pick up exactly where it stopped, and does the start screen look the way you pictured it?
When something breaks.
Bugs are normal, and good bug reports fix them fast. Use this shape, and say where on the screen the problem is if it's something you can see:
Bug reportWhen I [what you did], I expected [what should happen], but [what happened instead]. It happens [every time or sometimes], [after anything that seems to trigger it].
For example: "When I tap Play Again right after a run ends, I expected a fresh run, but the score still shows the last run's points. It happens every time."
What to try next.
- A second control: double-tap a side of the screen to dash all the way across.
- A power-up: a cowbell that slows every falling bottle for five seconds.
- A daily run: the same drop pattern for everyone, every day.
- Sound and music, with a mute switch.
- Friends as testers: share it through TestFlight, which needs the Apple Developer Program.
Frequently asked questions.
Can you really build a game on your phone in 30 minutes?
A small arcade game, often, yes. With one mechanic and a step-by-step plan like this one, you can reach a playable, polished first version in about half an hour. Build times and fixes vary, so treat 30 minutes as a target.
Do I need to know Swift?
No. You describe the game and test it, and FreeMilk writes the Swift. Reading the code is optional.
Is it free?
Yes. FreeMilk is free: ads pay for a daily allowance of coding models. Publishing on the App Store needs Apple's $99-a-year Developer Program membership.
Can I publish my game on the App Store?
Yes, with an Apple Developer Program membership. Apple rejects copycats of popular games and near-duplicates under its guidelines 4.1 and 4.3, so give your game its own twist, and make sure it's complete before you submit. Our App Store checklist covers every step.

