MDA framework
A framework that connects game rules and components to run-time behavior and player experience.
On this page
The MDA framework links mechanics, dynamics, and aesthetics as three views of a game1. Mechanics are game components and algorithms; dynamics are their run-time behavior; aesthetics are the emotional responses they evoke in players1.
The atlas records the mechanics layer in code: in Super Mario Bros., releasing jump switches gravity2. In Celeste, a held jump preserves take-off speed during a timer3 and halves gravity near the apex4.
The framework traces design from mechanics through dynamics to aesthetics, while a player’s experience can be analyzed in the reverse direction5.
The atlas mainly documents mechanics: rules and implementations that can be inspected in a game. Its current pages do not yet trace those mechanics through MDA’s dynamics and aesthetics layers.
References
- ^ abMDA names mechanics, dynamics, and aesthetics as three linked layers: game components and algorithms, their run-time behavior, and the emotional responses they evoke in players.PaperHunicke et al. 2004
How we know
Mechanics describes the particular components of the game, at the level of data representation and algorithms. Dynamics describes the run-time behavior of the mechanics acting on player inputs and each others’ outputs over time. Aesthetics describes the desirable emotional responses evoked in the player, when she interacts with the game system.
p. 2, “MDA in Detail” · archived copy ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Checked by a second AI model, 2026-10-27.
- ^
JumpSwimSubswaps in falling gravity, never back, once speed is zero or downward, or once the jump has risen at leastDiffToHaltJumpon a frame when A is not held, or was not held the frame before.CodeXkeeper0/smb1 · Jdaster64 n.d.revisedHow we know
4757 BPL DumpFall ; or moving downwards, branch to falling ⋮ 4760 AND PreviousA_B_Buttons ; and was pressed in previous frame 4761 BNE ProcSwim ; if so, branch elsewhere ⋮ 4765 CMP DiffToHaltJump ; compare to value set here to see if player is in mid-jump ⋮ 4768 LDA VerticalForceDown ; otherwise dump falling into main fractional 4769 STA VerticalForce
src/prg.asm lines 4756–4769 at 1cc3c92 · upstream ↗ so long as they are moving upward in a jump, holding “A” will make them rise more slowly
JUMPING/VERTICAL PHYSICS · archived copy ↗ Checked against the evidence by its author, an AI model, 2026-10-27.
Revised after a check by a second AI model, 2026-10-27: "Not held both this frame and last" read two ways; held gravity stays only while A is held on both frames.
- ^While
varJumpTimerruns, holding jump keeps Madeline rising no slower thanvarJumpSpeed, canceling gravity; releasing zeroes the timer and cuts no speed.CodeNoelFB/CelesteHow we know
2960 //Variable Jumping 2961 if (varJumpTimer > 0) ⋮ 2963 if (AutoJump || Input.Jump.Check) 2964 Speed.Y = Math.Min(Speed.Y, varJumpSpeed); 2965 else 2966 varJumpTimer = 0;
Source/Player/Player.cs lines 2960–2966 at 1b0ce45 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-20.
Checked by a second AI model, 2026-10-27.
- ^Gravity halves while |
Speed.Y| is underHalfGravThresholdand jump is held (or auto-jump is on), so a held jump hangs at the top.CodeNoelFB/CelesteHow we know
2952 float mult = (Math.Abs(Speed.Y) < HalfGravThreshold && (Input.Jump.Check || AutoJump)) ? .5f : 1f;Source/Player/Player.cs line 2952 at 1b0ce45 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-20.
Checked by a second AI model, 2026-10-27.
- ^MDA describes design analysis from mechanics toward dynamics and aesthetics, and player analysis from aesthetics through dynamics toward mechanics.PaperHunicke et al. 2004
How we know
From the designer’s perspective, the mechanics give rise to dynamic system behavior, which in turn leads to particular aesthetic experiences. From the player’s perspective, aesthetics set the tone, which is born out in observable dynamics and eventually, operable mechanics.
p. 2, “MDA in Detail” · archived copy ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Checked by a second AI model, 2026-10-27.
Sources
Code
- doppelganger and Xkeeper. 2022. “smb1: Super Mario Bros. disassembly for asm6f (Xkeeper0/smb1).” Commit 1cc3c92. Xkeeper0/smb1 @ 1cc3c92 · licence, all uses
- Thorson, Maddy and Noel Berry. 2021. “Celeste: released class files (NoelFB/Celeste).” Commit 1b0ce45. NoelFB/Celeste @ 1b0ce45 · licence, all uses
Primary
- Hunicke, Robin, Marc LeBlanc, and Robert Zubek. 2004. “MDA: A Formal Approach to Game Design and Game Research.” AAAI Workshop on Challenges in Game AI. original · archived · licence, all uses
Secondary
- Jdaster64. n.d. “A Complete Guide to SMB's Physics Engine.” original · archived · licence, all uses