Masked Identity is a bilingual historical browser narrative set beneath a Soviet military psychiatric hospital in November 1989. Over six days, you examine the file of a discharged pilot whose name exists on paper but no longer counts. What you preserve, redact, destroy, or return to him determines not only what can be known, but whose version becomes official.
Play it here: https://kydchen.itch.io/masked-identity
Full web version (with the on-chain archive): https://masked-identity.vercel.app/
You play the physician assigned to Case █-17. Every case note changes which records return from storage, and every document shown to the patient creates another reader of the file. The story is historical fiction; its characters and institutions are fictional.
- Chinese and English text, with English as the default language.
- 16 interviews, 2 security encounters, 39 documents, 11 hidden archive threads, 9 endings, and 4 early dead ends.
- A no-build, vanilla HTML/CSS/JS implementation.
- Local save, ending index, and first-run guidance through
localStorage. - Desktop and mobile layouts.
- An optional on-chain epilogue revealed after an ending: the player may deposit a minimal sealed-case receipt in the Common Knowledge Base — a permanent, unspendable cell on the CKB mainnet, written through CCC. Every deposited copy appears on the public archive wall. The receipt contains the ending, three assessment values, language, date, and an optional player codename — never the case text. No wallet is required to play; the game is complete without it.
Serve the folder over HTTP. Opening index.html through file:// will not load the JSON
case files.
python3 -m http.server 8000Then open:
http://localhost:8000
index.html Page shell
style.css Visual design and responsive layout
game.js Game state, interactions, save data, endings
cases.json Chinese narrative data
cases.en.json English narrative data
archive.html Public archive wall (reads records from CKB, no wallet needed)
story-smoke.mjs Bilingual narrative structure and reveal-timing smoke check
web3/archive-chain.js On-chain archive protocol module (lazy-loaded on the ending page)
web3/ccc.js Committed esbuild bundle of @ckb-ccc/connector
web3/e2e-testnet.mjs Dev-only testnet end-to-end check
assets/ Runtime visual/audio assets
assets/itch/ Storefront images for itch.io
This project has no build step. Any static host can serve the repository root.
The itch.io upload package is generated as:
zip -r -FS dist/masked-identity-itch.zip \
index.html style.css game.js cases.json cases.en.json \
assets/Soviet_Red_Army_Hammer_and_Sickle.png assets/zhuravli.m4aSome media assets may have separate rights. Do not reuse the included images or audio outside this project without confirming permission.