# Instant games and regular games on PlayDrop

What makes a PlayDrop game Instant: portrait play, guest access, at most 10 MiB of startup files and a two-second start, and how it differs from regular games.

Source: https://www.playdrop.ai/create/learn/instant-games

Instant games are the short, portrait games of the Instant feed in the PlayDrop phone apps: players swipe and the next game is already playing. Every other game is a regular game, opened from its page, search or a link. Both are published the same way; Instant is a property of a version.

## Instant or regular

| | Instant | Regular |
|---|---|---|
| Where it plays | Instant feed, plus everywhere regular games play | Home, search, game page, links |
| Orientation | Portrait first | Any declared surface |
| Sign-in | Guests can play | Any `authMode` |
| Start | Playable within 2 seconds | No limit, but faster is better |
| Startup files | At most 10 MiB | No startup limit |
| Badge | Lightning badge | None |

A game that misses the Instant bar is still published as a regular game.

## Requirements

```json
{
  "primarySurface": "MOBILE_PORTRAIT",
  "surfaceTargets": { "desktop": true, "mobileLandscape": false, "mobilePortrait": true },
  "authMode": "OPTIONAL",
  "instant": true,
  "prefetch": { "required": ["game.js", "atlas.png"], "optional": ["music.mp3", "levels/world-2.json"] }
}
```

- `primarySurface` is `MOBILE_PORTRAIT` and the game supports portrait phones.
- `authMode` is `OPTIONAL` or `NONE`, so guests can play.
- The startup files are at most 10 MiB: the entry page plus `prefetch.required`, or every uploaded file when nothing is listed.
- `instant: true` claims it.

The upload checks the size and the receipt's `instant` and `instantReason` report the result. After release, PlayDrop measures real starts in the apps: once a version has 20 starts from downloaded files and more than a quarter take 2 seconds or longer, it loses the badge. A new version can qualify again.

## Start fast

- Put later levels, music and extras in `prefetch.optional` and load them after `ready()`.
- Compile shaders and warm up before calling `ready()`, so the first frames do not stutter.
- Show gameplay immediately: no title screen, no menu, no sign-in wall before the first move.
- Make the first seconds explain themselves without text.
- Record a portrait gameplay video for the listing; the feed uses it.

See [loading, pause and audio](https://www.playdrop.ai/create/learn/lifecycle) for preloading and [full screen and safe areas](https://www.playdrop.ai/create/learn/viewport) for portrait layout.

## Related guides

- [Loading, pause and audio](https://www.playdrop.ai/create/learn/lifecycle): Initialize the PlayDrop SDK, signal ready at the first playable frame, pause and resume cleanly, follow the audio policy, and preload files for offline play.
- [Full screen and safe areas](https://www.playdrop.ai/create/learn/viewport): Make a PlayDrop game fill the screen, keep its HUD inside CSS safe areas and clear of the host's controls using the SDK's measured reservedCorners.
- [Listing art and video](https://www.playdrop.ai/create/learn/listing-assets): The listing images and videos a PlayDrop game can have, their paths, formats and orientations, and how to make art that works in feeds, search and previews.
- [catalogue.json](https://www.playdrop.ai/create/learn/catalogue-json): The catalogue.json fields PlayDrop games use: identity, listing, play modes, surfaces, sign-in, Instant, preloading, media, translations, scores and servers.
