---
title: 'Paper Sketch'
url: 'https://wiki.teletypegames.org/development/paper-sketch'
markdown: 'https://wiki.teletypegames.org/development/paper-sketch.md'
lang: en
date: '2026-06-05'
description: 'Guidelines for designing a game on paper, before any code. 🤔 What do you need to decide? 🎮 Genre Genre decides the camera, the controls and the level design. Genre What you do Key features Examples Platformer jump on platforms, dodge, reach the goal gravity, jump timing, precise movement…'
taxonomy:
  tag:
    - howto
---

# Paper Sketch

> Guidelines for designing a game on paper, before any code.

# 🤔 What do you need to decide?

## 🎮 Genre

Genre decides the camera, the controls and the level design.

| Genre | What you do | Key features | Examples |
|---|---|---|---|
| **Platformer** | jump on platforms, dodge, reach the goal | gravity, jump timing, precise movement | 🍄 Super Mario Bros · ❄️ Celeste · 🕷️ Hollow Knight |
| **Top-down** | mazes, shooting, collecting | 360° movement, room to room, field of view | 🗡️ Zelda: A Link to the Past · 🔫 Hotline Miami · 💀 Enter the Gungeon |
| **Puzzle** | switches, keys, logic | no time pressure, the solution is the reward | 🟠 Portal · 🐸 Baba Is You · 🏛️ The Witness |
| **Endless runner** | keep moving, survive | automatic progression, one button, rising speed | 🏃 Temple Run · 🚇 Subway Surfers · 🔷 Geometry Dash |
| **Tower defense** | place towers, stop enemies | placement, resources, enemy waves | 🌿 Plants vs. Zombies · 🎈 Bloons TD · ⚔️ Kingdom Rush |
| **Metroidvania** | explore, gain abilities, come back | connected map, ability gates, backtracking | 🤖 Metroid: Zero Mission · 🏰 Castlevania: SotN · 🌱 Ori and the Blind Forest |

## 🎯 Goal

One concrete, measurable goal: collect 5 keys · reach the exit · survive 60 seconds · beat the boss · score 1000 points.

A level can have **1 main goal + 1 optional goal**. Keep it visible and countable on screen ("3/5 keys").

## ❌ Losing condition

Pick one: health runs out · time expires · you fall off the level · an enemy catches you · resources run out.

No losing condition means no stakes. Tell the player clearly when it happens — animation, sound, text.

## 🔁 Core loop

The action sequence the player repeats. If it is boring, the game is boring.

| Genre | Loop |
|---|---|
| Platformer | move → jump → dodge → collect → progress |
| Shooter | move → aim → shoot → take cover |
| Puzzle | observe → think → try → solve → next level |
| Top-down RPG | explore → fight → loot → level up |

The best loops are simple but deep: easy to learn, hard to master.

---

# ✏️ What should you draw?

## 🗺 Level design

Use grid paper. Mark: start, goal, platforms and walls, hazards, enemies, collectibles, checkpoints.

Ask yourself:

- Is there a safe zone?
- Where does it get harder?
- Is there a way back?
- How do you guide the player to the goal?

Teach the mechanic at the start, without danger. Then raise the difficulty step by step.

## 🧍 Player character

Draw the look, the size relative to the level, and the hitbox as a rectangle. Write next to it: speed, jump height, health, special abilities.

## 👾 Enemies

Per type: how it moves, does it deal damage, how much health, can it be avoided or must it die, does it have a weak point.

Design 1–2 types, not 5. Give each one a movement pattern the player can learn.

| Type | Movement | Threat | Defeatable? |
|---|---|---|---|
| Patrol | back and forth | low | yes |
| Hunter | moves toward player | medium | yes |
| Turret | stationary, shoots | medium | optional |
| Boss | complex pattern | high | required |

## 🖥 UI

Sketch the screen. Top area: health, score, time, collectible counter. Separate screens: game over, win, pause menu.

Keep the HUD minimal — only what the player must see all the time.

---

# 📋 What should you write down?

## 📝 Mini design document (1 page)

**Title** — short and expressive. Reference the mechanic ("Jump King") or the mood ("Celeste"). Easy to remember and pronounce.

**Elevator pitch** — 1–2 sentences: *"A fast-paced platformer where you collect keys against the clock."*

Template: "This is a \[genre\] where the player \[main action\] in order to \[goal\], while facing \[challenge\]." It must answer who plays, what they do, and why it is exciting.

## 📜 Rules

**Movement** — 4 directions? jump? sprint? double jump? crouch or slide? wall jump? Every option is a new mechanic, so add them carefully.

**Combat**, if any — damage amount, cooldown, melee or ranged, blocking or parrying, knockback. A basic attack plus knockback is enough for a first game.

**Scoring** — e.g. coin = 10, enemy = 50, fast finish = bonus, no-damage clear = bonus. Ask what this motivates. Work out the maximum score per level; it helps with the difficulty curve.

**Difficulty** — more enemies, faster movement, less time, fewer lives, smaller platforms, harder patterns. Increase it gradually:

1. **Tutorial** — learn the mechanic without danger
2. **Easy** — use what you learned
3. **Medium** — combine mechanics
4. **Hard** — fast decisions, precision
5. **Boss** — everything at once

---

# 📚 Core concepts

## ⚙️ Under the hood

- **Game loop** — the repeating cycle: input → update → render, 30–60 times per second.
- **FPS** — how many times the loop runs per second. 30 is acceptable, 60 is smooth, 120+ is competitive.
- **Delta time (Δt)** — time between the last two frames. Without it the game runs faster on faster hardware.
- **Event system** — parts of the game talk without knowing each other: a "player died" event updates the UI and plays a sound.

## 🎨 Visuals

- **Sprite** — a 2D image of one object.
- **Spritesheet** — many animation frames in one image; the game cycles through them.
- **Tile / tileset** — square building blocks (wall, grass), and the collection of them.
- **Parallax scrolling** — background layers at different speeds. Near layers move faster, far ones slower. This gives depth.
- **Z-order** — layering: a higher Z covers a lower one.
- **Pixel art** — low-resolution graphics drawn pixel by pixel. A retro style a beginner can do.

## 💥 Physics and interaction

- **Hitbox** — invisible area for collision. Often smaller than the sprite, which feels fairer.
- **Hurtbox** — where the character can take damage. A sword swing's hitbox should not hurt its own owner.
- **Collision** — two hitboxes meet and the game notices.
- **Trigger** — a hitbox you walk through that fires an event: a door opens, a dialogue appears.
- **Raycasting** — an invisible beam, for a bullet path or a line of sight check.
- **Gravity** — the downward force that shapes a jump. Stronger gravity means a faster fall and a shorter jump.

## 🧠 Gameplay and logic

- **Mechanic** — one gameplay element: jumping, shooting, wall jumping.
- **State machine** — the character's current state. You can only jump from "grounded". States: idle → running → jumping → falling → hurt → dead.
- **Cooldown** — waiting time between two actions, e.g. one shot per 0.5 seconds.
- **Spawn** — an object appearing in the level.
- **UI vs. HUD** — UI is menus and screens; HUD is in-game data (health, ammo, score).

## 🎲 Design

- **Balancing** — not too hard, not too easy. The goal is a fair challenge.
- **Difficulty curve** — how fast difficulty rises. Ideal: gradual, with peaks that always return to a rest zone.
- **Meta-game** — systems beyond the gameplay: progression, collecting, leaderboards.
- **Juice / game feel** — small effects that make a mechanic satisfying: a jump squash, screen shake on hit, a sound.
- **Onboarding** — how the player learns the rules. Best when the game teaches them without text.

---

# ⏱️ Event schedule (3 hours)

| Time | Phase | Content |
|---|---|---|
| 15 min | Introduction | What is the game's goal? What is the core loop? One example on the board. |
| 20 min | Concept | Teams pick genre, objective, losing condition, 3 main mechanics. |
| 30–40 min | Level design | First draft: hard section, safe section, enemy placement. |
| 20–30 min | Rules | Scoring, health, damage, time. |
| 20 min | Paper playtest | One team "plays" another team's level: is it understandable, too hard, is there a strategy? |
| 5–10 min / team | Presentation | What makes it unique, who is it for, how would it work digitally? |

---

# 🚀 Advanced questions

- What is the game's fantasy? What does the player feel like — a hero, an explorer, a survivor? What do they experience that real life cannot give?
- Is there a progression system? Levels, skill tree, equipment?
- What is the reward feeling — when and why does the player think "yes, that was great"?
- What is the mood? Are color, music and pacing consistent?
- What is the unique hook against similar games?
- How does the game hold attention after 10 minutes?

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [Development](https://wiki.teletypegames.org/development.md)
- Previous: [LibreSprite](https://wiki.teletypegames.org/development/libresprite.md)
- Next: [Pixelorama](https://wiki.teletypegames.org/development/pixelorama.md)
