mcpField
F
Feel Lab

Feel Lab

Local
github.com/hpdkhoaDeveloper Tools1Updated 2w ago

About Feel Lab

Feel Lab evaluates FPS game feel from probe-written timelines, helping game developers identify missing or mistimed feedback without running the game itself. It combines measured metrics with a checklist that also flags items for human review.

Key features

  1. 0182-item FPS feel checklist
  2. 02Timeline validation and metric scoring
  3. 03Latency, sync, kick and shake measurements
  4. 04Markdown reports and gate rows
  5. 05Standard probe scenes

Use cases

  1. 01Find missing effects or sounds after shots and impacts
  2. 02Check camera response and frame smoothness
  3. 03Review measured and human-only checklist items

MCP support

The MCP server exposes tools to list the checklist, scenes and metrics, validate timelines, judge timeline folders, and export gate rows.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"hpdkhoa-feellab": {
"command": "uvx",
"args": [
"feellab-mcp"
],
"env": {
"FEELLAB_OUT": "<FEELLAB_OUT>"
}
}
}
}
Run commanduvx feellab-mcp
Environment variables to set
FEELLAB_OUTThe only folder Feel Lab writes to (its reports); defaults to ~/.feellab

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypifeellab-mcp0.1.0

Tools

6

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
groupanyNoA to J, or leave out for all

Details

From the project 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

GroupItemsMeasured from a timeline
A. Shooting (your own gun)199
B. Hitting (your bullets land)156
C. Getting hit (damage taken)94
D. Movement and the body112
E. Interacting with the world70
F. Enemies (zombies)50
G. Explosions, fire and the world51
H. Sound mix40
I. Screen and comfort40
J. Smoothness (feel breaks when the frame does)31

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

MeasureExample
Latencythe shot's flash and sound on the shot's frame; the hit marker within 50 ms of the hit
Syncthe shot's sound within 45 ms of its flash (ITU-R BT.1359)
Kickthe camera turns at least 0.3 degrees on a burst and settles within 0.6 s
Shakea blast 5 m away shakes the view; one 50 m away at least 3 times less
Presenceevery impact has an effect, a sound and a mark; every round fired ejects a case
Rhythmfootsteps at walking cadence (about 100 steps a minute and up); the head bobs
Smoothnessno frame twice the median length round a shot or a blast

Every rule names its source. A range from game practice rather than evidence is marked as an estimate.

Try it

pip install feellab-mcp
feellab demo demo
feellab judge demo

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

  1. Have your probe play the scenes in src/feellab/data/scenes.json and 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).
  2. Record a camera frame before the scene's cause (a shot, a hit, a blast): kick and flinch are measured from it.
  3. Tag what you can ("tags": ["muzzle"]). Where your asset names do not say what a sound or effect is for, put a feel_rules.json beside the timelines: {"dry": "slidelock"} tells Feel Lab that a sound named after a slide lock is the click of an empty gun.
  4. feellab judge <folder>, or gate_rows for 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

ToolWhat it does
list_checklistThe checklist by group: what the player should get, measured or for a person.
list_scenesThe standard scenes a probe plays.
list_metricsEvery metric: scene, unit, rule and source.
check_timelineA timeline file against the contract.
judge_folderA folder of timelines judged: each item's values and verdict, and a Markdown report.
gate_rowsThe metrics as rows for a gate (Weapon Lab's row format).
{"mcpServers": {"feellab": {"command": "feellab-mcp"}}}

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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.