designing-mini-games

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Designing Mini-Games

小游戏设计

A library-agnostic guide for designing mini-games. The aim is an intuitive, visually self-explanatory game that rewards skilled play and contains at least one mechanic the player has never seen before. It covers every input scheme from a single binary button to multi-button layouts; rules that apply only to one-button games are marked as such.
这是一份与库无关的小游戏设计指南。目标是打造一款直观、视觉上自明的游戏,奖励熟练操作,且包含至少一种玩家从未见过的机制。指南涵盖从单二进制按键到多按键布局的所有input scheme;仅适用于单按键游戏的规则会特别标注。

When to Use

适用场景

  • Invent a new mini-game from a theme, prompt, or set of inspiration tags.
  • Audit an existing mini-game design for monotonous-input dominance, unfair death, or lack of novelty.
  • Decide between competing mechanic ideas before implementation.
This skill covers design only. Implementation details (rendering, collision, audio) belong to engine-specific skills such as
developing-with-crisp-game-lib
or the target engine's implementation skill.
Design deliverables should still name implementation-facing invariants when balance depends on them. An invariant is a testable rule the later implementation must preserve, such as "repeated taps within 12 frames cannot create another scoring pulse." Do not write engine code here; write the rule that implementation must uphold.
At design time, keep constants qualitative unless the balance claim depends on a threshold. It is acceptable to write "minimum-age bloom" or "short cooldown" here, then defer choosing frame counts to the implementation pass, derived from the intended action cycle. If a deterministic seed or generator does not exist yet, state the seed/precheck invariant now and mark the actual first-case check as an implementation-time validation item.
  • 根据主题、提示或灵感标签集发明新的小游戏。
  • 审核现有小游戏设计,检查是否存在单调操作主导、不公平死亡或缺乏创新性的问题。
  • 在实现前从相互竞争的机制方案中做出选择。
本技能仅覆盖设计环节。实现细节(渲染、碰撞、音频)属于引擎专属技能范畴,例如
developing-with-crisp-game-lib
或目标引擎的实现技能。
当平衡性依赖于面向实现的invariant时,设计交付物仍需明确这些invariant。invariant是一种可测试的规则,后续实现必须遵循,例如“12帧内重复点击无法生成另一个计分脉冲”。请勿在此编写引擎代码;只需写出实现必须遵守的规则即可。
设计阶段,除非平衡性声明依赖于阈值,否则请保持常量的定性描述。在此处写“最小成熟绽放”或“短冷却时间”是可行的,之后再根据预期操作周期在实现阶段确定具体帧数。如果确定性种子或生成器尚未存在,请现在声明种子/预检查invariant,并将实际的首次案例检查标记为实现阶段的验证项。

Companion skills

配套技能

  • implementing-gameplay-invariants
    — use after or alongside this skill when turning idle / hold-only / mashing weaknesses into code-level invariants and validation checks.
  • maximizing-game-feel
    — use after core rules and balance are stable, or when readability/polish could affect play.
  • implementing-gameplay-invariants
    — 当需要将idle/hold-only/mashing这类操作弱点转化为代码级invariant和验证检查时,可在本技能之后或同时使用该技能。
  • maximizing-game-feel
    — 在核心规则和平衡性稳定后使用,或在可读性/打磨优化可能影响游戏体验时使用。

Core Rules

核心规则

  • Keep the core experience expressible in one sentence.
  • Choose the input scheme first — button count and the role of each press / hold / release phase or button — and design controls before adding secondary systems. If the brief fixes a button count, design within it. Record the physical binding for each named action alongside its role, not only the role: the scheme layer decides how many actions exist, and something still has to decide which keys. If no layer owns that, each screen invents its own binding and they drift apart.
  • Game-over is single, visually obvious, and follows from a hazard or world-state collapse — never from a "did not press" punishment.
  • Every monotonous input policy available under the chosen scheme must be strictly worse than skilled play: idle and mashing always; hold-only for one-button games; single-button-spam and hold-everything for multi-button games.
  • Score must come from in-world causality (close calls, precise timing, chain reactions), not raw input facts (taps per second). Prefer causal scoring events such as stomp, graze, batch erase, precise catch, cluster clear, route selection, or pressure cash-out. Survival score is acceptable only when survival itself is the core mastery signal; if used, explicitly state what skilled survival pattern separates good play from the monotonous policies.
  • Add a state variable only when it creates a player decision that existing rules cannot express. Every important state variable must have a trigger, visible in-world feedback (behavior, terrain, shape, speed, sound, color, or animation — never a HUD number alone), and a decision purpose. Do not add bookkeeping state that does not change player decisions.
  • Designs with zero state variables are valid when complexity emerges purely from geometric or physical interaction. If no state variables are used, justify why the interaction space alone creates decisions.
  • If an input phase or button grants safety or power, pair it with a readable cost: lost scoring, resource drain, exposure, larger hitbox, speed, pressure, or recovery time.
  • State which quantities scale with difficulty and why. Use
    sqrt(difficulty)
    as the default for smooth motion/spawn pressure, and use steeper scaling only when the design intentionally needs escalating pressure.
  • For each monotonous-input weakness that balance depends on, state at least one implementation invariant. The invariant should be testable without naming a specific engine API.
One-button-specific rules:
  • One binary input only — tap (press), hold, or release. No second key, no chord, no swipe.
  • If an input phase (press / hold / release) is intentionally unused, say so explicitly and explain why the remaining phases still create skill. Do not invent a meaningless hold or release just to fill the table.
  • 核心体验需能用一句话概括。
  • 优先选择input scheme——确定按键数量以及每个press/hold/release阶段或按键的作用——并在添加次要系统之前设计操作方式。如果需求中已固定按键数量,请在该限制内进行设计。记录每个命名操作的物理绑定及其作用,而不仅是作用:scheme层决定存在多少种操作,还需要有环节决定哪些按键对应这些操作。如果没有专门的环节负责此事,每个界面都会自行定义绑定方式,最终导致绑定混乱。
  • 游戏结束的条件单一、视觉上清晰可见,且由危险元素或世界状态崩溃触发——绝不能是“未按键”的惩罚。
  • 所选scheme下的所有单调操作策略必须严格劣于熟练操作:始终禁止idle和mashing;单按键游戏禁止hold-only;多按键游戏禁止单按键狂按和按住所有按键。
  • 计分必须来自游戏内的因果关系(死里逃生、精准时机、连锁反应),而非原始输入数据(每秒点击次数)。优先选择因果性计分事件,例如踩踏、擦边、批量消除、精准抓取、集群清除、路线选择或压力兑现。只有当生存本身是核心 mastery 信号时,生存计分才是可行的;若使用生存计分,请明确说明何种熟练的生存模式能区分优秀操作与单调策略。
  • 仅当状态变量能创造现有规则无法表达的玩家决策时才添加它。每个重要的状态变量必须有触发条件、可见的游戏内反馈(行为、地形、形状、速度、声音、颜色或动画——绝不能仅依赖HUD数值),以及决策目的。请勿添加不会改变玩家决策的记账式状态变量。
  • 当复杂度纯粹来自几何或物理交互时,零状态变量的设计是有效的。如果未使用状态变量,请说明为何仅交互空间就能创造决策点。
  • 如果某个输入阶段或按键能提供安全保障或增益效果,需为其搭配清晰可见的代价:计分损失、资源消耗、暴露风险、更大的hitbox、速度变化、压力提升或恢复时间。
  • 说明哪些数值随难度变化及其原因。对于平滑移动/生成压力,默认使用
    sqrt(difficulty)
    作为缩放方式;仅当设计有意需要逐步提升压力时,才使用更陡峭的缩放比例。
  • 对于每个影响平衡性的单调操作弱点,至少声明一个实现层面的invariant。该invariant应无需指定具体引擎API即可测试。
单按键专属规则:
  • 仅支持一种二进制输入——tap(按下)、hold或release。无第二个按键、无组合按键、无滑动操作。
  • 如果某个输入阶段(press/hold/release)被有意弃用,请明确说明并解释为何剩余阶段仍能创造操作技巧。请勿为了凑数而添加无意义的hold或release操作。

Design Procedure

设计流程

Phase 1: Idea generation
  1. Free Association: verbalize the first images and sensations the input scheme or seeds evoke. If the seeds visibly contradict each other (e.g.
    on_pressed:jump
    +
    on_pressed:shoot
    ), read
    references/mini-game-design-guide.md
    §7 (Tag / Prompt Contradiction = Creative Tension) before continuing — do not pick one and discard the other.
  2. Deviation Exploration: verbalize the first mechanic that comes to mind, record it explicitly, then treat it as forbidden. Consider opposites, negations, and extremes; push toward unexpected directions. Do not proceed with the first association as the final design.
  3. Core Experience Decision: define the momentary sensation the player should feel, in a single phrase.
  4. Input Scheme and Mechanics Construction: fix the button count (or confirm the one given by the brief), then design the press / hold / release phases or per-button roles that realize that sensation.
Phase 2: Specification hardening
  1. State and Tradeoff Definition: name the state variables that create decisions, their triggers, their in-world feedback, and the safe/risky behavior pair.
  2. Monotonous-Input Rejection: write why each monotonous policy in the chosen scheme's policy set (idle and mashing always; hold-only for one-button; single-button-spam and hold-everything for multi-button) loses to skilled play. If an input phase or button is intentionally unused, say why the remaining inputs still create skill.
  3. Scoring and Difficulty Definition: define the causal scoring event and the quantities that scale with difficulty.
  4. Implementation-Invariant Sketch: for each risky weakness claim, add the implementation rule that must make it true. Expand this into a fuller invariant translation when the design has pulses, shields, charge, combos, or repeated scoring windows.
Phase 3: Verification
  1. Emergence Review: if implementation revealed a behavior not in the original spec, document it and decide whether to preserve it as a design revision. Unintentional but interesting mechanics should be formalized rather than fixed away.
  2. Consistency Verification: run the canonical checklist in
    references/mini-game-design-guide.md
    §9.
Treat seeds as stimulus for steps 1–2. From step 3 onward, do not be bound by them. A finished design that no longer references the original tags is fine.
For new-design tasks, completion additionally requires the deliverable to capture name and slug, seeds, core mechanics, state/tradeoff, object specifications, design-principle analysis, basis for novelty, and a similarity check. Use Appendix A of the reference guide as an example layout.
阶段1:创意生成
  1. 自由联想: 说出input scheme或灵感种子唤起的第一印象和感受。如果种子之间明显矛盾(例如
    on_pressed:jump
    +
    on_pressed:shoot
    ),请先阅读
    references/mini-game-design-guide.md
    第7节(标签/提示矛盾=创意张力)再继续——不要选择其一而丢弃另一个。
  2. 偏离探索: 说出脑海中浮现的第一个机制,明确记录下来,然后将其视为禁用方案。思考对立面、否定项和极端情况;向意想不到的方向推进。不要将第一个联想作为最终设计。
  3. 核心体验确定: 用一个短语定义玩家应感受到的瞬时体验。
  4. Input Scheme与机制构建: 确定按键数量(或确认需求中给定的数量),然后设计能实现该体验的press/hold/release阶段或每个按键的作用。
阶段2:规范强化
  1. 状态与权衡定义: 命名能创造决策的状态变量、它们的触发条件、游戏内反馈,以及安全/风险行为组合。
  2. 单调操作排除: 说明所选scheme策略集中的每个单调策略(始终禁止idle和mashing;单按键游戏禁止hold-only;多按键游戏禁止单按键狂按和按住所有按键)为何劣于熟练操作。如果某个输入阶段或按键被有意弃用,请说明为何剩余输入仍能创造操作技巧。
  3. 计分与难度定义: 定义因果性计分事件以及随难度变化的数值。
  4. 实现Invariant草图: 针对每个风险弱点声明,添加必须使其成立的实现规则。当设计包含脉冲、护盾、蓄力、连击或重复计分窗口时,将其扩展为更完整的invariant说明。
阶段3:验证
  1. 涌现性审查: 如果实现过程中发现了原始规范中未提及的行为,请记录并决定是否将其保留为设计修订内容。非预期但有趣的机制应被正式化,而非修复移除。
  2. 一致性验证: 执行
    references/mini-game-design-guide.md
    第9节中的标准检查清单。
将种子视为步骤1-2的刺激源。从步骤3开始,无需受其束缚。最终设计不再提及原始标签是完全可行的。
对于新设计任务,完成时还需在交付物中包含名称和slug、灵感种子、核心机制、状态/权衡、对象规格、设计原则分析、创新性依据以及相似性检查。请参考指南附录A的示例格式。

References

参考资料

  • references/mini-game-design-guide.md
    — self-contained design vocabulary for mini-games: four core principles, input-pattern tables for one-button and multi-button schemes, movement/environment tables, state/tradeoff and monotonous-input checks, abstract-question prompts, contradiction-as-tension table, difficulty-intent defaults, recommended output format, and SCAMPER appendix.
  • references/mini-game-design-guide.md
    — 独立的小游戏设计词汇表:包含四大核心原则、单按键和多按键scheme的输入模式表、移动/环境表、状态/权衡与单调操作检查表、抽象问题提示、矛盾即张力表、难度意图默认值、推荐输出格式以及SCAMPER附录。