Make it fun
What makes a game fun here: the idea, the first minute, juice, screens, a look.
Players find games in a grid of thumbnails, often on a phone, and leave within seconds if they don't get it. Make games a teenager and an adult both want to play, that a younger player still understands. These are defaults from games that worked and games that didn't; the creator's idea always wins.
The idea
- Familiar beats clever. Tag, a race, an obstacle course, musical chairs, hide and seek, a color-matching floor: the name is the rules. Make it yours with a theme, a twist and polish, not new rules to learn.
- The name says what you do ("Pass the Bomb"), and the game fits one sentence a friend would repeat.
The first minute
- One tap to play. The title is the game's name, the game alive behind it (
title: { scene }), and one Play button. Players move within 10 seconds: no tutorial screens, no settings first. - Show the goal, don't explain it. An arrow, a glowing target, a flag. Two to five words at the moment they matter, then gone.
- The core action is fun in 30 seconds, on an empty map: action, instant feedback, a reward, the next decision, every few seconds.
While playing
- Always know the goal and the score from the screen: the goal, the time left, your place or score, in big shapes and numbers.
- Short rounds, fast restarts: 30 seconds to 3 minutes, a match of a few rounds with points, results, and the next match one tap
away (
flow.dismissResults()/ the UI's Play again). A player who is out keeps doing something (spectate the leader, a ghost). - Simple controls: move plus one or two buttons, the same everywhere. On phones the stick and at most three buttons.
- Ramp the challenge: easy at first, harder within each round; mistakes cost seconds; the one behind can catch up.
- Never alone:
roster: { fill, bot }seats bots so a lone player gets the full game. Bots play like people (defineBotSystem,botProfile(skill): a reaction time, aim error, mistakes, a personality), never perfectly. - Make winning a moment: the countdown, a podium with the winners' avatars, a badge for a milestone. The standard Flow screens do it; the kits keep them.
Juice: every action answers. Within a tenth of a second every action gets a sound and motion: feel.squash(entity) on jumps
and landings, feel.particles.burst('sparks', entity), feel.floatText('+3', entity) (2D and 3D; 3D also has trails, decals and
emitters on nodes: the effects-3d topic), eased tweens (never linear), feel.shake
and feel.hitStop(80) for knockouts (shake the camera, never the body), a synthesized sound for every action. Everything respects
the player's Reduce motion setting for you. Juice returns to rest and never blocks input.
Screens anyone can read at a glance. Buttons at least 56 px on phones, text at least 18 px, few words (labels and icons, no
paragraphs), saturated colors on a contrasting background with a symbol beside every color that matters, room to breathe, one
art direction and one font (the UI theme is one flat, bold style). Draw each player with their avatar and name (NameTag), mark
"You", give bots names and looks. The UI keeps clear of the platform's buttons and the thumbs by itself: don't fight it.
A look for everyone. Aim at the polish of games people already play: a confident style, modern type, real lighting in 3D
(Environment.preset('afternoon'), PostFx.polished()), the library's models rather than boxes. Babyish blobs make a game look like
it's for toddlers.