Make a Fighting Game with Flutter & Flame
What Defines a Fighting Game
A fighting game pits two combatants in a close-range duel. The core appeal is the depth of the combat system — frame data, combo timing, and spacing create a high skill ceiling.
Mechanics & Key Concepts
| Mechanic | Description |
|---|---|
| Health & Stagger System | Each fighter has HP; taking damage builds stagger, slowing recovery |
| Combo Input Buffer | Queue button presses within a timing window to chain into a combo |
| Hitbox & Hurtbox Collision | Attack hitboxes vs body hurtboxes; frame-data-driven priority system |
| Round State Machine | FIGHT → ROUND_ACTIVE → KO → VICTORY screen → next round |
How to Make a Fighting Game with Flame
1. Health & Stagger System
Each fighter has HP; taking damage builds stagger, slowing recovery
class GameManager extends FlameGame {
@override
Future onLoad() async {
// Initialise your components here
}
@override
void update(double dt) {
// Core game loop — runs every frame
}
}
2. Combo Input Buffer
Queue button presses within a timing window to chain into a combo
class GameManager extends FlameGame {
@override
Future onLoad() async {
// Initialise your components here
}
@override
void update(double dt) {
// Core game loop — runs every frame
}
}
3. Hitbox & Hurtbox Collision
Attack hitboxes vs body hurtboxes; frame-data-driven priority system
class GameManager extends FlameGame {
@override
Future onLoad() async {
// Initialise your components here
}
@override
void update(double dt) {
// Core game loop — runs every frame
}
}
4. Round State Machine
FIGHT → ROUND_ACTIVE → KO → VICTORY screen → next round
class GameManager extends FlameGame {
@override
Future onLoad() async {
// Initialise your components here
}
@override
void update(double dt) {
// Core game loop — runs every frame
}
}