Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Calibrate the play-time model with local playtests

Open
#35 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
24/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript

Research direction

Start with packages/engine/src/playtime.ts, apps/web/src/screens/settings.ts, and apps/web/src/logic/catalog.ts; read section 17 of docs/spec/content-pack.md and the offline-first ADR to understand existing estimates and privacy constraints. The issue also requires collecting at least 15 complete playthroughs and choosing how library cards display duration. Done means documenting the report format and before/after median error, updating defaults, spec and prompt kit or recording why they stay, and implementing the recorded card decision.

Written by the indexing model from the issue text.

Description

area: engine area: web help wanted priority: medium type: research

Context

The play-time defaults come from reading research and from two small packs (the demo pack and a German test fixture). The noir pack is the first full-length game to compare against; its estimate is about 47 minutes against a target of 40 (19 percent over, inside the tolerance). The project has no telemetry and the player makes no network requests, so measurements must stay on the device unless a tester chooses to share them.

Scope

  • An opt-in playtest mode in settings, off by default. Per game it records on the device: active play time (excluding time in the background and idle periods), accepted and rejected commands, dialogue choices, words shown, hints revealed and undos.
  • "Export playtest report" downloads a JSON file with pack id, version and hash, the counters and the relevant settings (text size, UI language). No personal data.
  • An issue form "Playtest report" to submit the file voluntarily.
  • A calibration script that compares reports with estimatePlaytime and fits reading speed, seconds per command and choice, coverage and failed attempts.
  • Goal: at least ten complete playthroughs of the noir pack and five of the demo pack, including the v0.1 release playthrough.
  • Update PLAYTIME_DEFAULTS and BUDGET_DEFAULTS and the spec with the measured values and the sample size.
  • Decide what library cards show. Today they show the declared playtime ("ca. 40 Min." for the noir pack) and fall back to the estimate only when a pack declares none. Options: the declared value, the estimate, or both.

Acceptance criteria

  • Playtest mode is off by default; nothing leaves the device without an explicit export.
  • The report format is documented.
  • The estimate error (median, before and after calibration) is documented.
  • Defaults, spec and prompt kit are updated from the results, or the reasons for keeping them are recorded here.
  • The decision on the length shown on library cards is recorded here and implemented.

References

  • packages/engine/src/playtime.ts
  • docs/spec/content-pack.md (section 17)
  • apps/web/src/screens/settings.ts
  • apps/web/src/logic/catalog.ts
  • SECURITY.md
  • docs/adr/0006-offline-first-pwa-on-github-pages.md
Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
28m
Merged PRs (30d)
2

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from nullthrone/lexvm

All issues in nullthrone/lexvm

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.