
Feel Lab
io.github.hpdkhoaPublished by GitHub account hpdkhoav0.1.0Updated Oct 24, 2026
An FPS feel checklist, measured from a timeline any game's probe can write
Overview
Judges FPS game feel from probe-written timelines, scoring an 82-item checklist of latency, kick, shake and sync.
- What you can do
- List the 82-item feel checklist by group, marking which items are measured and which are left for a person
- List the standard scenes a game probe should play and the metrics with their units, rules and sources
- Validate a timeline file against the expected contract
- Judge a folder of timelines, returning each item's values and verdict plus a Markdown report
- Export the metrics as rows for a gate in Weapon Lab's row format
- When to use it
- For teams building a first-person shooter who want objective, repeatable checks on how shooting, hits, damage, explosions and movement feel, instead of relying on subjective playtest impressions. Useful when a game already has a probe that can record camera frames and sound, effect and damage events.
- Requirements
- Runs locally as a Python package (pip install feellab-mcp) over stdio. It does not run the game itself; you need a probe that plays the standard scenes and writes timeline files, optionally with tags and a feel_rules.json. Writes reports only to the folder named by FEELLAB_OUT, defaulting to ~/.feellab.
Installation
In SourceWeft
- Open Feel Lab in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Feel Lab
An FPS feel checklist, measured: every interaction a player has, checked from what the game really did.
[license: MIT] [Python 3.10+] [PyPI: feellab-mcp] [MCP Registry: feellab-mcp] [checklist: 82 interactions] [tools: 6] [timeline contract: v1]
Game feel is what a player feels between pressing a key and seeing the world answer. A shot should flash, sound and kick on the same frame; a round striking a wall should throw dust, make a sound and leave a hole; a hit taken should jerk the view and show where it came from; a blast nearby should shake the screen more than one far away. When one answer is missing or late, the game feels floaty or cheap, and nobody can say why.
Feel Lab turns that into checks. Your game's probe plays standard scenes and writes a timeline: the camera every frame, and every sound, effect, mark and damage event with its time. Feel Lab measures latency, kick, shake, presence, match and smoothness from it, and judges each item of an 82-item checklist. It never runs your game: any engine can write the timeline (docs/TIMELINE.md).
The checklist
Items no timeline can show (a colour-blind option, a reload cancel's timing) are left for a person, with what to
look for. feellab checklist prints them all.
What it measures
Every rule names its source. A range from game practice rather than evidence is marked as an estimate.
Try it
The demo writes timelines for two made-up games: "Juicy" passes every measured item; "Bare" (a debug dot where a round lands, no shake, silent steps) fails 17.
Use it in your game
- Have your probe play the scenes in
src/feellab/data/scenes.jsonand write one timeline each (docs/TIMELINE.md). Wrap the calls that start sounds and effects so each is recorded with its time; note the moments with no sound or effect of their own (a shot, an impact, a hit marker, damage, a flinch). - Record a camera frame before the scene's cause (a shot, a hit, a blast): kick and flinch are measured from it.
- Tag what you can (
"tags": ["muzzle"]). Where your asset names do not say what a sound or effect is for, put afeel_rules.jsonbeside the timelines:{"dry": "slidelock"}tells Feel Lab that a sound named after a slide lock is the click of an empty gun. feellab judge <folder>, orgate_rowsfor a gate.
The first game to use it (ToangTown) found 52 failing cases on four guns: a debug dot where a round lands, no shake anywhere, no blood, no footsteps, a climb that never comes back, a stall on the first shot.
Tools
FEELLAB_OUT is the only folder Feel Lab writes to (its reports); ~/.feellab by default.
Where it came from
Feel Lab was built for ToangTown, an Unreal 5.8 co-op zombie FPS, next to Weapon Lab (weaponlab-mcp), whose Gate can judge Feel Lab's rows as cases.
License
MIT
Source: README.md at commit 437580a
Tools
0Version history
1- v0.1.0LatestOct 15, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts