锈河镇 — Rust River(https://rusted-city.gamestrategists.com)
这是一款单机解谜游戏,不是一项需要您账号的服务。本站不要求注册,不索取姓名、邮箱、手机号或定位,也不把您的进度存在我们那儿。您走到第几幕、翻过哪几个镇上的「网站」、拿到哪些证据、在调查笔记里敲了什么,全都只留在您自己这台设备的浏览器里。
本站由 alphaBETA DEV(GameStrategists)运营。关于这一页的任何疑问,写信到 privacy@gamestrategists.com 就行——这个地址不会收到我们的群发:本站没有接入任何发件系统,页面上也没有可以提交的表单,回信是人写的。
进度写在 rusted-city-save 这一个键里。为了让您关掉标签再回来还能接着玩,游戏需要的是那九项:当前在哪个站点、哪一页、读过的邮件、拿到的证据、解开的谜题、第几幕、哪个结局、您调查笔记里那段话,以及界面语言。除此之外它不往里写别的。
证据与谜题是分开的两串。侧栏那个分母只数 24 条可收集证据,不把 18 道题并进去——一份走到终章的存档里同时有 24 条证据和 18 道已解的题,混在同一格就会印出「42/24」这种永远满不了的分母。
另外三个键各管一件独立的事:arg-audio-rusted-city 只存一个值,环境音是静音还是开着;arg-intro-rusted-city 只记您看过开场那一屏题材提示没有;gs_achievements 存您在结局画面上拿到的那枚徽章(作品、结局名与达成日期),好让下一次结算时把它画出来。
打开站点本身一个键都不写。2026-10-31 用真实浏览器把 /、/en/、/privacy、/about 各开七秒、连跑五轮,二十次 localStorage 读数全是空的。再往下走才落键:勾掉开场那一屏提示并点「进入游戏」,落下的是 arg-intro-rusted-city,值就是 1;在标题屏点一下开始一局,rusted-city-save 才出现,里面正好是那九个字段(act、clues、currentPageId、ending、lang、location、notes、readEmails、solvedPuzzles);arg-audio-rusted-city 要等您按过静音才写,值是 muted 或 on。
读回来这一步套了 try/catch:那串 JSON 解析不了,就当作没有存档,从标题屏重新开始;解析成功但某个字段缺了,各字段取自己那个默认值(镇招待所、rrhotel-main、空的证据与谜题列表、第 0 幕、还没有结局、空白的笔记)。
这一页故意不写「我们有校验机制保护您的数据」那种漂亮话:本作没有校验和,也没有服务器重试。坏档的处置是从头开始,而不是把您没写完的东西发到哪儿去再看一遍。
标题屏那个「重新开始」只在机器上已经有档时才出现在屏幕上(2026-11-02 用同一份状态做差分:有 rusted-city-save 时屏幕上那两颗按钮是「继续调查」与「重新开始」,只有其它三个键时只有「开始调查」、没有这颗)。它出现时会先问您一次;确认之后被重置的只有 rusted-city-save 这一个——键本身还在,里面换回一份新开局(镇招待所 rrhotel-main、第 0 幕、空的证据与谜题列表、空白的笔记,开场那 6 封邮件记为已读)。已经拿到的结局徽章、静音偏好、「开场提示看过没有」都留着——想补走另外几条结局的人,不必被迫从第一幕重玩一遍。按「取消」则四个键一个都不动。
要全部清掉有三条路:其一,上面那个「重新开始」(只清这一周目的进度);其二,在浏览器里清除本站点的站点数据,四个键一起带走;其三,用不保留本地数据的隐私模式游玩,关掉标签就没有了。
十八道题的答案就写在游戏自己的数据文件里。您在输入框里敲的那串字符,是在浏览器里去掉首尾空格、转成小写之后,跟那一题自己列出的接受值逐条比,比完就丢弃。这十八题里十五道是文本输入,另有听摩尔斯与从声波图里取形各一道,剩下的一道是选择——它排在最后一幕的井口,选哪个就通向哪个结局。没有一次请求是为了「验证答案」而发出的。
站内检索查的是一份随游戏一起打包的本地索引:130 条中文条目,另有 153 条英文别名指回同一批条目,比较在这台机器的内存里做完。没有搜索后端,没有查询日志。
那 47 个人的失踪名册也一样:8 页名单写在自己的数据文件里,随幕解封,不向任何地方取。
本作自己的代码里没有 fetch、没有 XMLHttpRequest、没有 sendBeacon、没有 WebSocket,页面上也没有能提交的表单——十八道题的答案校验、站内搜索、翻那 47 个人的名册,全在这台机器的内存里做完。这一条还有浏览器侧的强制——本站给每个页面都发了一条内容安全策略,其中 form-action 'self' 与 object-src 'none',也就是说这个页面结构上就没有一个能把您的数据发往别处的表单。要说全的话还差一句:2026-11-02 五轮实测里,页面上唯一一条往本站发出去的非 GET 请求来自平台注入的那条统计脚本(POST /cdn-cgi/rum,五轮各一条),它带的是性能与用量指标,不是您游戏里的内容。除此之外,您在浏览器自带的网络面板里能看到的出站请求,只有本站自己的文件与「第三方清单」那一节点名的两家。本站自己那部分服务则只做一件事:把请求原样交给静态文件。
本作没有一个音频文件需要下载,全部声音是用 Web Audio 在您机器上现场合成的:一段棕噪声循环过一道 300 Hz 的低通滤波器当镇子的底,两条持续音落在 48 Hz 与 72 Hz,一个 0.04 Hz 的低频振荡器把这道滤波器的截止频率来回推(约二十五秒一个来回),每 10–22 秒随机落一次金属、浪或纸页的声音。
那块音频引擎只在您有过一次真实手势之后才创建——点掉开场那一屏提示,或者任意一次按下鼠标、键盘。没有那一次手势,本站连一个音频节点都不会存在,也不会因此向您索要任何权限:本站的响应头里还有一条 Permissions-Policy,把定位、麦克风、摄像头、支付与 USB 全部置空。
站内所有图片都放在本站自己的 /images/ 目录下(当前产物里 14 个 .webp),全部从 rusted-city.gamestrategists.com 发出,不向第三方取图。CSS 里没有 @font-face:本站不下载任何字体文件,排版用的是您系统里已有的字体(样式里点名了 Inter、JetBrains Mono 这类,您机器上没有就走系统默认)。本站产物里没有 service worker,也就是说没有一份会在您机器上长期驻留的离线副本。
开场那张车间封面,游戏里就在图下写着「场景插画(AI 生成),不是实拍」。这一页也不假装它是照片。
本站加载 Google AdSense 的广告脚本。是否展示广告、展示什么广告,由 Google 按它自己的政策决定;本作的页面上没有往 data-ad-slot 里填占位值——版位要么真在投放,要么干脆不写。
标题屏下方原本留过一个手工版位,目前是关着的:账号仍在审核,试开的那阵子它只回一个空框,屏上多出一个没有内容的「广告」格子。我们宁可什么都不显示,也不给读者留一个假版位;等这个账号真能投放,再把它打开,届时这一页会跟着改准。
广告请求会访问 pagead2.googlesyndication.com 与 googleads.g.doubleclick.net,以及广告质量端点 ep1.adtrafficquality.google、ep2.adtrafficquality.google。Google 及其广告供应方可能使用 cookie 或类似标识符(例如 DSID)来投放与衡量广告,也可能依据您在浏览器中的浏览历史投放个性化广告。
您可以:在 Google 广告设置 关闭个性化广告;在 aboutads.info 查阅各供应商的 cookie 说明与退出方式;或者直接在浏览器里阻止、清除第三方 cookie。
只有游戏页会发广告请求。同一次实测里,/ 每轮向 3–6 个主机发出请求、/en/ 向 3–5 个,而这张页和 /about 五轮都只有 2 个(本站自己,加上下一节点名的那条统计 beacon),并且一个 cookie 都不落。
本站没有自己的应用服务器。部署里那一段服务端代码只做一件事:把请求原样交给静态文件——不读 Cookie,不写访问日志,没有键值存储、没有数据库、没有对象存储。打不开的路径由平台端出本站自己那张 404 页,并保留 404 状态码。
页面由 Cloudflare 分发并提供安全防护。Cloudflare 会按常规记录访问请求(路径、时间戳、User-Agent 摘要与由 IP 派生的粗略地理信息),用于保障服务可用与抵御攻击;这件事由 Cloudflare 按自己的政策处理,本站读不到那份记录,也没有一份副本存在我们这里。
本站没有账号、没有会员、没有供玩家互相留言的评论区、没有可以提交给服务器的表单、也没有站内搜索后端(检索在浏览器里跑,见上面那一节)。游戏里那 20 个「网站」、48 页内容——包括那座论坛与那套借阅、内部系统——属于作品本身:它们是一段写好的虚构文本,既不接收任何人的投稿,也不会把您读到的内容发出去。
2026-10-31 用真实浏览器打开 /、/en/、/privacy、/about,每页停留七秒,连续五轮,把全部出站请求与浏览器里的 cookie 逐条记下。二十次读数里没有一轮出现下面两项之外的第三方主机。广告那一路每轮走到的深度并不一样,所以我们按端点分开计数,不写「每次都会」。
pagead2.googlesyndication.com、googleads.g.doubleclick.net、ep1 / ep2.adtrafficquality.google):只在两个游戏页出现,两张说明页五轮都没有:pagead2 五轮都在,googleads.g.doubleclick.net 出现在 4 轮、ep1 3 轮、ep2 2 轮。浏览器里因此出现的 cookie 只有 test_cookie@.doubleclick.net 这一条(/ 五轮里三次、/en/ 两次),两张说明页五轮一个 cookie 都没有。政策见政策见 Google 隐私政策。static.cloudflareinsights.com 的 beacon,上报经本站地址上的 /cdn-cgi/rum):随每一份 HTML 由托管平台注入,五轮都在,包括这一张页。它只上报聚合的访问量与页面性能指标,本站拿不到逐访客的明细。政策见 Cloudflare 隐私政策。除这两项之外,本站没有 Google Analytics 一类的站方统计,不加载 Google Fonts,没有社交插件、没有像素、没有再营销脚本。若以后接入新的第三方服务,会先把这一页改准再上线。
本作的题材是工业恐怖推理:调查记者叶深带着一份水质超标的检测报告和父亲叶长林的旧工牌,进了一座被鑫源冶炼厂污染的小镇,查的是 2006 年那个凌晨他交班之后没有回家这件事。它不面向十三岁以下儿童,也不向任何年龄层的玩家索取身份信息或联系方式。
它包含跳切、突然音效与低频压迫感,所以进入游戏之前有一屏题材提示,要您自己勾上「我已阅读上述提示,自愿进入这段虚构体验」才进得去;这一屏在标题页随时可以重看(那个按钮写的是「游戏提示 / 免责声明」),封面上的标签依次是「虚构作品」「恐怖 / 惊悚」「建议佩戴耳机」。本站没有任何按年龄筛的功能,也没有可被筛掉的访客档案。
广告的投放与个性化由 Google 按其政策控制。
本站是独立开发者 alphaBETA DEV(GameStrategists)的个人项目:没有账号系统,没有可以被调取的个人档案,也没有能针对某一个人关掉的开关。
隐私相关的问题请写信到 privacy@gamestrategists.com;一般联系与技术故障走 联系我们 那一张页。本页正文改动时,上方「最后更新」的日期会一起改准——那个日期取自这一页正文在版本记录里最后一次真正被改动的日子,不是手写的。
Rust River (https://rusted-city.gamestrategists.com)
This is a single-player puzzle game, not a service that needs an account from you. We do not ask you to register and we do not ask for your name, e-mail address, phone number or location, and we do not keep your progress anywhere in our cloud. Which act you have reached, which of the town’s “websites” you have opened, which evidence you hold and what you typed into your investigation notes all stay in the browser on your own device.
This site is run by alphaBETA DEV (GameStrategists). Any question about this page can go to privacy@gamestrategists.com — no marketing will ever come back from that address: it is not wired to any sending service and there is no form on this site that submits anything, so replies are written by hand.
Your progress lives in one key, rusted-city-save. Everything the game needs so you can close the tab and come back is those nine fields: which site you are on, which page, the e-mails you have read, the evidence you have collected, the puzzles you have solved, the act you are in, the ending you reached, the text of your notes, and the interface language. Nothing else goes in there.
Evidence and puzzles are kept as two separate lists. The counter in the side panel counts the 24 collectible pieces of evidence only and never folds the 18 puzzles into it — a save that has run to the final act holds 24 pieces and 18 solved puzzles at once, and merging them would print an impossible “42/24”.
The other three keys each do something separate: arg-audio-rusted-city stores one value only — whether the ambience is muted or on; arg-intro-rusted-city records nothing but whether you have seen the content warning that opens the game; gs_achievements stores the badge you earn on the ending screen (the work, the ending’s name and the date it was reached) so it can be drawn again at the next settlement.
Loading the site writes nothing at all. On 2026-10-31 a real browser opened /, /en/, /privacy and /about for seven seconds each, five rounds running: all twenty localStorage readings came back empty. The keys only appear as you go further — ticking the opening warning and pressing “Enter the game” writes arg-intro-rusted-city with the value 1; clicking the title screen to start a game writes rusted-city-save, containing exactly those nine fields (act, clues, currentPageId, ending, lang, location, notes, readEmails, solvedPuzzles); arg-audio-rusted-city is written once you touch the mute control, with the value muted or on.
Reading the save back is wrapped in try/catch. If that JSON cannot be parsed, the site behaves as if there were no save and starts again from the title screen; if it parses but a field is missing, each field falls back to its own default (the guesthouse, rrhotel-main, empty evidence and puzzle lists, act 0, no ending, a blank notebook).
This page deliberately avoids the handsome sentence “we protect your data with checksums”. There is no checksum and no server-side retry here. A damaged save is handled by starting over — not by sending what you had not finished somewhere else to look at it again.
The “Start over” control only appears on the title screen once a save exists on this machine (differential test on 2026-11-02, same state twice: with rusted-city-save present the screen reads “Continue” plus “Restart”; with only the other three keys it reads “Start Investigation” and that control is absent). When it is there it asks you first. Confirming resets one key and one key only, rusted-city-save — the key itself remains, its contents replaced by a fresh opening (the town guesthouse, rrhotel-main, act 0, empty evidence and puzzle lists, empty notes, the six opening e-mails marked read). Badges you already earned, your mute preference and the record that you have read the opening warning stay where they are — nobody who wants to reach the other endings has to replay the whole game from act one. Dismissing the prompt leaves all four keys exactly as they were.
There are three ways to clear everything: that “Start over” control (this playthrough only); clearing site data for this site in your browser, which takes all four keys with it; or playing in a private mode that keeps no local data, where closing the tab is the wipe.
The answers to the eighteen puzzles are written in the game’s own data files. The string you type is compared on your machine — trimmed, lower-cased, matched one by one against the accepted values that puzzle lists for itself — and then thrown away. Fifteen of the eighteen are text inputs; one asks you to read Morse and one to take a shape out of a waveform; the last is a choice, set at the shaft mouth in the final act, and whichever you pick is the ending you get. Not one request is made “to verify an answer”.
The search reads an index packed with the game: 130 Chinese entries with 153 English aliases pointing back at the same entries, compared in this machine’s memory. There is no search backend and no query log.
The roster of 47 missing people works the same way: eight pages of names in the game’s own data files, unsealed act by act, fetched from nowhere.
This game’s own code contains no fetch, no XMLHttpRequest, no sendBeacon and no WebSocket, and there is no form on the page that could be submitted — checking an answer against those eighteen puzzles, searching the site and reading the roster of forty-seven all happen in memory on your machine. There is a browser-side enforcement of that too — every page of this site is served with a Content-Security-Policy containing form-action 'self' and object-src 'none', so this page structurally has no form that could send your data elsewhere. To tell the whole story, one more thing has to be said: in five rounds measured on 2026-11-02 the only non-GET request aimed at this site came from the statistics script the hosting platform injects (POST /cdn-cgi/rum, one per round), which carries performance and usage metrics and nothing from your game. Apart from that, open your browser’s own network panel and the outbound requests you will find are the site’s own files plus the two parties named in “The third-party list” below. Our server-side part does exactly one thing: it hands the request to the static files.
Not one audio file has to be downloaded: the whole soundscape is synthesised with Web Audio on your machine. A brown-noise loop runs through a 300 Hz low-pass filter as the town bed; two drones sit at 48 Hz and 72 Hz; a 0.04 Hz oscillator pushes that filter’s cutoff back and forth (roughly a twenty-five second round trip); and every 10–22 seconds a metal strike, a wave or a page lands at random.
That audio engine is only created after you have made one real gesture — dismissing the opening warning, or any mouse press or key press. Without that gesture not a single audio node exists, and the site never asks you for a permission to get one: the response headers also carry a Permissions-Policy that empties geolocation, microphone, camera, payment and USB.
Every image on the site lives under this site’s own /images/ directory (14 .webp files in the current build) and is served from rusted-city.gamestrategists.com itself; we take no images from third parties. There is no @font-face in the CSS: this site downloads no font files at all and typesets with fonts your system already has (the stylesheet names Inter and JetBrains Mono among others; if your machine has neither, it falls back to the system default). There is no service worker in this build, so there is no offline copy that would sit on your machine long-term.
The mill-hall cover art that opens the game is captioned, inside the game, “Scene illustration (AI-generated), not a photograph”. This page does not pretend it is a photo either.
This site loads the Google AdSense ad script. Whether ads appear, and which ones, is decided by Google under its own policy. Nothing on this site writes a placeholder into data-ad-slot: a slot either genuinely serves or is not written at all.
There was a hand-placed slot under the title screen; it is switched off right now. The account is still under review, and while it was switched on it only ever came back as an empty labelled frame — a box on the screen with nothing in it, calling itself an ad. We would rather show you nothing, and we will correct this page when it is switched back on.
Ad requests go to pagead2.googlesyndication.com and googleads.g.doubleclick.net, plus the ad-quality endpoints ep1.adtrafficquality.google and ep2.adtrafficquality.google. Google and its ad vendors may use cookies or similar identifiers (for example DSID) to serve and measure ads, and may serve personalised ads based on your browsing history in the browser.
You can: switch off personalised ads in Google ad settings; read the cookie explanations and opt-out routes at aboutads.info; or block and clear third-party cookies directly in your browser.
Only the game pages make ad requests. In the same run, / sent requests to between 3 and 6 hosts per round and /en/ to between 3 and 5, while this page and /about touched exactly 2 in all five rounds (the site itself plus the analytics beacon named in the next section) and set no cookie at all.
This site has no application server of its own. The small piece of server-side code in the deployment does one thing: it hands the request to the static files. It reads no cookie and writes no access log, and there is no key-value store, no database and no object storage attached. A path that does not exist is answered with this site’s own 404 page, with a 404 status kept.
The pages are distributed and protected by Cloudflare. Cloudflare logs requests as a matter of course (path, timestamp, a User-Agent summary and coarse geography derived from the IP address) in order to keep the service available and fend off attacks; that handling follows Cloudflare’s own policy. We cannot read that log, and we keep no copy of it.
This site has no accounts, no membership, no comment section where players could write to one another, no form that submits anything to a server and no search backend (the search runs in the browser — see the section above). The 20 “websites” and 48 pages inside the game — the forum, the library system, the intranet — belong to the work itself: they are written fiction that takes no submissions and sends out nothing you read.
On 2026-10-31 a real browser opened /, /en/, /privacy and /about, held each page for seven seconds, five rounds running, and every outbound request and every cookie in the browser was written down. Across those twenty readings, no round produced a third-party host beyond the two below. The ad side reaches a different depth each round, so we count it endpoint by endpoint rather than writing “every time”.
pagead2.googlesyndication.com, googleads.g.doubleclick.net, ep1 / ep2.adtrafficquality.google): appears on the two game pages only, in none of the five rounds on either explainer page: pagead2 was present in all five rounds, googleads.g.doubleclick.net in 4, ep1 in 3 and ep2 in 2. The only cookie the browser ends up holding because of it is test_cookie@.doubleclick.net (three of five rounds on /, two on /en/); the two explainer pages set no cookie in any round. Policy:Policy: Google privacy policy.static.cloudflareinsights.com, reporting through /cdn-cgi/rum on this site’s own address): injected with every HTML document by the hosting platform, present in all five rounds, this page included. It reports aggregate traffic and page-performance metrics only; we get no per-visitor detail from it. Policy: Cloudflare privacy policy.Those two aside, this site runs no first-party analytics such as Google Analytics, loads no Google Fonts, and carries no social plugins, no pixels and no remarketing scripts. If a new third-party service is ever added, this page gets corrected before it goes live.
The game is an industrial-horror investigation: the journalist Ye Shen carries a water-contamination report and her late father Ye Changlin’s old staff badge into a town poisoned by the Xinyuan smelter, to find out what happened on the dawn he clocked off in 2006 and never went home. It is not directed at children under 13, and it asks no player of any age for an identity or contact details.
It contains hard cuts, sudden sounds and low-frequency pressure, so before you can enter there is a content warning you have to tick yourself: “I have read the notice above and consent to enter this fictional experience.” That screen can be reopened from the title page at any time (the button is labelled “Game notice / disclaimer”), and its cover badges read Fiction, Horror / Thriller and Headphones recommended. We have no feature that could filter by age, and no visitor profile for such a filter to act on.
Ad serving and personalisation are controlled by Google under its own policy.
This site is the personal project of indie developer alphaBETA DEV (GameStrategists): no account system, no profile that could be pulled up about you, and no switch that could be turned off for one particular person.
Privacy questions go to privacy@gamestrategists.com; general contact and technical faults go through the Contact page. When the text of this page changes, the “Last updated” date above changes with it — that date is taken from the day this page’s text was last actually changed in the version record, not written by hand.