If you've ever wondered what a rhythm game looks like under the hood, Friday Night Funkin' is the perfect specimen: it's open source, its chart format is plain JSON, and thousands of mods mean thousands of real-world examples to study.
The anatomy of a chart
At its core, an FNF chart is a timeline of notes. Each note is essentially a tuple: when it should be hit (in song milliseconds or beats), which direction it is (left/down/up/right), and how long it sustains. The engine converts beats to timestamps using the song's BPM, which is why BPM changes mid-song are the classic way modders create "gotcha" moments.
A simplified note looks conceptually like this:
{ "time": 12450, "direction": 2, "sustain": 320, "type": "normal" }
Direction is an index, time is milliseconds since song start, sustain is hold length. That's 90% of the format. Everything else — camera moves, character animations, dialogue events — rides on a parallel event track keyed to the same clock.
Why this simplicity matters
Because the format is this legible, the barrier to creating content is near zero. You don't need a proprietary editor or a compiled toolchain; a text editor and a metronome get you a playable song. That's the technical reason FNF has more community songs than any commercial rhythm game: the data format respects the creator's time.
It also makes charts analyzable. Want to rank songs by difficulty? Parse the JSON and compute notes-per-second, jump density (two directions at once), and sustain ratio. The community has effectively built an open dataset of what "hard" means in rhythm games.
A case study: Tricky
The Tricky mod is famous for charts that feel unfair until you understand them. Look at the data and the design intent becomes clear: bursts of high note density separated by breathing room, with the camera zooms synced to phrase boundaries. The Tricky FNF mod is playable in the browser if you want to feel the difference between "random hard" and "designed hard" — the chart data tells you which is which.
Takeaways for game devs
- Human-readable formats compound. JSON charts turned players into tool-builders (auto-charters, difficulty analyzers, practice-mode hacks).
- Separate timing from presentation. FNF's event track means modders reskin visuals without touching gameplay logic.
- Determinism is a feature. Same input seed, same chart, same result — which makes replays, leaderboards, and TAS-style analysis possible.
FNF didn't succeed despite being technically simple. It succeeded because its simplicity invited ten thousand collaborators.
Top comments (0)