← 返回 深渊信使 — Abyss Messenger
最后更新:2026年11月1日

隐私政策

深渊信使 — Abyss Messenger(https://abyss-messenger.gamestrategists.com)

一句话

《深渊信使:最后五封信》是一款单机的 3D 解谜游戏,不是一项服务。本站没有账号系统,不要求注册,也不收集任何可识别您身份的信息(姓名、邮箱、手机号、定位都在其列),更不把您的进度存在我们那儿——您走到第几单、收了哪几段回声、每一单拿到什么评分,全都只留在您自己这台设备的浏览器里。

本站由 alphaBETA DEV(GameStrategists)运营。关于这一页的任何疑问,写信到 privacy@gamestrategists.com 就行。这个地址不会收到我们的群发:本站没有接入任何发件系统,这张页上也没有可以提交您身份的表单(游戏里那两个答案输入框不在此列,见第五节,它们一次网络请求都不发)。

本机只写三个键,各管一件事

进度写在 abyss-save.v1 这一个键里。它顶层正好六个字段:v(存档格式版本,现在是 2)、savedAt(写入那一刻您设备的毫秒时间)、statuses(五单各自的状态,形如 [["q0","completed"],…] 的配对列表)、grades(每一单送完之后记下的等级、用了多少秒、走了多远)、echoes(您已经听到的回声残片编号)、current(此刻手上那一单:哪一单、手里有没有货、已经拎了多久)。current 里那个「拎了多久」存的是相对毫秒数而不是绝对时钟——这样「被一通电话打断三天」回来时接着走的还是那一单的表,不会白送一个高分。

另外两个键各管一件独立的事,而且都要您真的按过才写:

打开站点本身一个键都不写。2026-11-01 用真实浏览器把 /、/privacy、/about、/terms 各打开七秒、连跑五轮,二十次 localStorage 读数全是空的。再往下走才落键:点标题屏那个「开始投递」,落下 abyss-save.v1(里面正好是那六个字段、五条状态);按过语言按钮多一个 abyss-lang;按过静音再多一个 abyss-sound。除这三键以外没有第四个:本站不写徽章、不写分析用的访客标识,也没有任何广告同意键——源码里以 gs_ 开头的存储键 0 处命中,实测落下的键集合也只有那三个。本站不写 Cookie、不用 sessionStorage、也不建 IndexedDB。

「重新投递」清掉什么、不清掉什么

五单都送完之后,标题屏会多出一个「看结局」按钮(2026-11-01 实测:灌一份五单都 completed 的档进去,那个按钮由隐藏变为可见,文案在英文界面下是 View ending)。它打开的结算那一屏有两个按钮:「回到标题」不动您的档;「重新投递」在动手之前先弹一次浏览器自己的确认框,实测那句文案是 Starting over leaves this parcel — and the 5 deliveries already graded — back at the lighthouse. Begin again?——里面那个数字就是您已经记下的评分条数,游戏先把代价念给您听一遍再问。

在确认框里按「取消」:三个键一个都不动(实测,逐键读回的原值与按之前逐字相同)。按「确定」:它删掉的就是 abyss-save.v1 这一个键,然后按「从零开始」的状态重新落一次档;abyss-lang 与 abyss-sound 不跟着清——您选的语言和静音偏好不算游戏进度。

要把这台设备上关于本站的东西全部清掉,有两条确定的路:在浏览器里清除本站的站点数据(三个键一起带走),或者用不保留本地数据的隐私模式游玩,关掉标签就没有了。

这一节要如实留一句限制:标题屏上原本还设计了第二个「从头开始」按钮,但 2026-11-01 实测它在页面上始终是隐藏的(模板里两个按钮共用同一个类名,渲染标题文案的那一段只取到了前一个),所以游戏内可达的清档入口目前只有结算那一屏那一个。这条已经记进维护台账,不是我们打算维持的设计。

读到坏档会怎样

读回来那一步整个套在 try/catch 里,规则很简单:那串 JSON 解析不了就当作没有档;解析出来但 statuses 不是数组,当作没有;v 不是当前版本号,也当作没有。唯一一种被接纳的旧档是 v:1——它没有「回声」那一格,读进来时当场补一个空列表再继续,其余字段原样带过去,这样老玩家的进度不会因为加了一种新收集物就消失。

2026-11-01 拿六份不同的存档内容各真跑了一次,逐条读回标题屏那个主按钮:

灌进去的档标题屏给的主按钮报错
合法 v2,一单已完成继续投递(进度行写着「五单都送到了 —— 投递评分 A」)0
老 v1 档(没有回声那一格)继续投递(进度行「已经出发过,还没送完」)0
整串不是 JSON开始投递(当作没有档)0
版本号不认识(v 写成 99)开始投递0
statuses 写成一句字符串开始投递0
五单全是未解锁的空档开始投递(这种档不算「有进度」)0

六份都没有报错,也没有一份被悄悄改写:读不出来的时候那串坏字符仍留在原处,直到您真的开一局才被新档覆盖。这一页故意不写「我们有校验机制保护您的数据」那种话——本作没有校验和,也没有服务器重试;坏档的处置就是当它不存在,而不是把您的东西发到哪儿去再看一遍。

提交答案、翻档案、听回声都不经过网络

屏上会出现两个输入框:投递验证那一层的答题框,和结算那一屏里那个要您填频率的框。它们各自包在一张表单里,但两条提交路径都是在浏览器里先拦下默认行为(preventDefault()),再在本地比字符串——没有任何一次提交是为了「验证答案」而发出请求的。

比对之前有一步归一化,为的是别把答对的人赶出去:先用 NFKC 把全角的数字、字母、句点、百分号和全角空格一次折成半角(中文输入法的全角态是常规写法),再去首尾空格、转小写、删掉全部空白,然后把 % 折成 %、, 折成 ,、。 与 、 直接去掉。四道题的接受值是 4(含「四」「四秒」「4秒」)、60(含「六十」「60单位」「60 单位」)、222(含「两百二十二」「222年」)、52.9(含 52.9hz、「52.9赫兹」、「52,9」);隐藏那条要填的是 34.2——游戏里那句「泵站 52.9,澜城地下 18.7,外面听见的是它们的差」说的就是这个减法。您敲的那串字符比完就丢,不会进存档:存档里那一格只留等级、秒数和距离。

五封信、五位收信人、十二段回声、五处地标明信片、四个结局的文字,全部写在这份游戏自己的数据文件里,随页面一起打包下发;本站没有搜索后端,也没有查询日志(屏上那个「区域档案」与「回声录」面板查的都是已经下载到本机的那一份)。游戏运行时不向本站发送任何东西:源码里 fetch、XMLHttpRequest、sendBeacon、WebSocket 各 0 处。

有一处要说全:本站这个域名没有内容安全策略响应头(2026-11-01 实测,这个域名的响应头里没有 content-security-policy;本项目 21 个被测域里 14 个带,本站是七个不带的游戏子域之一)。所以「数据不出去」这件事靠的是代码里根本没有那类调用,而不是靠一层策略拦着——我们宁愿把这个区别写出来,也不写一句策略替我们兜底的假话。本站随每份页面发出的响应头里,与隐私相关的是这些(实测逐字):X-Content-Type-Options: nosniff、X-Frame-Options: DENY、Referrer-Policy: strict-origin-when-cross-origin、Strict-Transport-Security: max-age=63072000; includeSubDomains; preload,以及把定位、麦克风、摄像头、支付与 USB 全部置空的 Permissions-Policy。

声音、画面与字体都在您这一边算

本作没有一个音频文件需要下载(产物里 .mp3/.wav/.ogg/.m4a 各 0 个)。全部声音是用 Web Audio 在您机器上现场合成的:三条持续音落在 52.9 Hz、18.7 Hz 与 34.2 Hz(就是上面那两个频率和它们的差),底噪过一道 160 Hz 的低通滤波器,水声是一段两秒的循环噪声过 420 Hz、Q 0.8 的带通、增益 0.014;一个 1/6 Hz 的极慢振荡器推着底噪起伏——剧本里那句「六秒一次」就是这么来的。和声层的根音是 211.6 Hz(把 52.9 抬四个八度进可听区),再加纯律的小三度 253.9 Hz 与纯五度 317.4 Hz,三条各自挂一条周期互质(11、13、17 秒)的 LFO,所以它会自己呼吸而不真的循环。低频正弦在笔记本喇叭上放不出来,因此每个低音按八度往上叠,直到落进 110 Hz 以上(最多六层,每叠一层增益乘 0.62)。总音量常数 0.22。

那台音频引擎只在一次真实点击里创建——具体就是您点下「开始投递」那一下;在那之前本站连一个 AudioContext 都不存在,也不会向您索要任何权限。角色、地形、灯塔全部是代码里现搭的几何体:产物里没有任何 3D 模型文件(/models/ 目录下只剩一份说明来源结论的文本),渲染库 three.js 打包进了本站那一份 JS 文件,不向任何 CDN 取。

画面是 WebGL 实时渲染的,所以用浏览器打开首页时屏上 <img> 是 0 张(2026-11-01 实测,五轮都是 0;那张画布不是图片)。产物里一共 20 个图片文件,全部在您地址栏看到的那个域名下:/images/echoes/ 里 12 张 .webp(回声残片的图)、/images/ 里 5 张地标明信片 .webp,另有社交卡图 og-image.webp/og-image.jpg 与 favicon.png。标签上写死了宽高、标了 loading="lazy",取不到图时那格自己降级成一个符号而不留一个破图框。没有任何来自第三方图床的请求。

字体:CSS 里没有 @font-face。界面字体栈的第一个名字是 Nunito,但本站不下载它——您机器上装了才用,没装就顺着栈往后退到系统自己的字体;实测五轮里字体请求 0 条。本站也没有 service worker:产物里没有 sw.js,也没有 webmanifest,所以不存在一个在您机器后台长期驻留、替您缓存或请求东西的脚本。

这一页与游戏页各自向谁发请求

2026-11-01 用真实浏览器把游戏首页与三张说明页各打开七秒、连跑五轮,把全部出站请求与浏览器里的 Cookie 逐条记下。两类页的出站面不是一张表:

页面出现的主机Cookie
/(游戏首页)本站、pagead2.googlesyndication.com(五轮各 5 条)、googleads.g.doubleclick.net(各 2 条)、ep1.adtrafficquality.google(各 2 条)、ep2.adtrafficquality.google(各 3 条)、www.google.com(各 1 条)、static.cloudflareinsights.com(各 1 条)只有 test_cookie@.doubleclick.net 一条
/privacy、/about、/terms(包括这一张)只有两个主机:本站与 static.cloudflareinsights.com。上面那几个广告端点在三张说明页里 0/5 轮出现——广告脚本那一段只写在游戏首页里一个都没有(五轮 × 三页 15 次读数全空)

Cloudflare 的网站分析 beacon 由托管平台随每一份 HTML 注入,同一张页面线上读本地产物恒定多 367 字节,那就是它。它只上报聚合的访问量与页面性能指标,本站拿不到逐访客的明细,也读不到它。政策见 Cloudflare 隐私政策。

除上面点名的 Google 广告与 Cloudflare 的网站分析之外,本站没有 Google Analytics 一类的站方统计,没有社交插件,没有像素,没有再营销脚本——这几类端点在五轮里一条请求都没出现过。本站自己一个 Cookie 都不下发:浏览器里出现的那一条是 Google 广告加载器自带的探针。若以后接入新的第三方服务,会先把这一页改准再上线。

广告

本站在游戏首页加载 Google AdSense 的广告脚本;是否展示广告、展示哪一条、要不要个性化,都由 Google 按它自己的政策决定。广告方可能写入自己的 Cookie 或类似标识符(实测到的就是 test_cookie@.doubleclick.net 那一条,另有 DSID 一类按 Google 政策使用)。您可以在这里管理:

本站没有自绘的「同意 / 不同意」弹条,也没有把这样一个选择存进本机(上面那三个键里没有它)。我们不想做一个按下去什么也不改变的按钮,所以这一页把话说明白:在浏览器层面管理广告个性化,用的是上面那两个入口;要更彻底,就用浏览器自己的「拦截第三方 Cookie」与跟踪防护设置,本站不会因此拦您。

游戏画面里那块版位目前是关着的:那个开关在源码里是 ADS_ENABLED = false,所以结算之外的标题屏不会出现一个空着的广告框。2026-11-01 用真实浏览器在标题屏与进游戏之后各取一次、共六次读数:屏上写着「广告」的框 0 个,包围盒面积大于 0 的广告容器 0 个;DOM 里始终有 1 个 ins.adsbygoogle,尺寸 0×0、display:none,另有 3 个 Google 自己插入的帧同样全是 0×0——那些是广告加载器的待机与度量容器,不是本站摆的版位。本站产物里 data-ad-slot 0 处:我们不填一个假的版位号。

儿童与题材

本作的题材是深海恐怖推理:三年前,您的哥哥林屿作为信使来到鲸背岛,留下五封没有寄出的信,走进 1978 年那台海底泵站后没有回来;您是林溪,替他把最后这一趟送完。它不面向十三岁以下儿童,也不向任何年龄层的玩家索取身份信息或联系方式——没有账号、没有聊天、没有可以上传内容的位置,玩家之间不产生任何联系。

广告投放与个性化由 Google 按其政策处理;家长可以用上一节那两个入口关闭个性化广告。

这一页改过一次,为什么这样记

2026-11-01 这一版把页面从一份通用条款改写成了讲这一作自己的实际做法。改写之前先把运行时读了一遍(上面每一条带日期的读数都来自那一次),因为一张法务页只要写「本机存了什么」「向谁发请求」,这两件事就只能由运行来说,不能由另一份文案来说。这一页的「最后更新」不按编辑日历手写,而是按这一份正文在版本库里的实测时间同步;改版会留一条公开记录在主站的更新日志里。

本作的文字与谜题由本站自己写。开发和初稿阶段用过 AI 辅助,故事、谜题、定稿与每一轮测试由作者自己完成——这是整个项目对 AI 的唯一一种说法,不是这一段专门放宽的口径。

这是谁的项目,怎么联系

一个人的项目:alphaBETA DEV/GameStrategists。主站 gamestrategists.com 讲整个项目(十九款自己做的游戏与它们的攻略)、编辑方针与更正政策都在那儿;本站首页底部有回到主站的链接。隐私相关写信到 privacy@gamestrategists.com,一般联系用 contact@gamestrategists.com。回信是人写的,一般 24–48 小时内会有一次答复。


Last updated: 1 November 2026

Privacy Policy

Abyss Messenger (https://abyss-messenger.gamestrategists.com)

In one sentence

Abyss Messenger: The Last Five Letters is a single-player 3D puzzle game, not a service. There is no account system here: we never ask you to register, and we do not collect any personal data that identifies you (no name, e-mail address, phone number or location), nor do we keep your progress on our side. Which letter you are carrying, which echoes you have collected and what grade each delivery earned stay inside the browser on your own device.

This site is run by alphaBETA DEV (GameStrategists). Any question about this page: write to privacy@gamestrategists.com. That address will never receive a mass mailing from us — there is no sending system attached to it and no form on this page that submits anything about you. (The two answer boxes inside the game are not that kind of form; see the fifth section — they never send a request.)

The device gets three keys, each with one job

Progress lives in one key, abyss-save.v1. Its top level has exactly six fields: v (the save format version, currently 2), savedAt (your device's millisecond clock at the moment of writing), statuses (the five deliveries, each as a pair such as [["q0","completed"],…]), grades (after each delivery: the grade, how many seconds it took and how far you walked), echoes (the fragments you have already heard) and current (the parcel in your hands right now: which one, whether you are carrying it, and how long you have been carrying it). That last figure is stored as elapsed milliseconds rather than an absolute timestamp, so a call that interrupts you for three days does not hand you a free top grade — the clock for that delivery simply picks up where it stopped.

Two more keys each do one separate thing, and neither appears until you actually press something:

  • abyss-lang — whether the language button last put you on zh or en. This site has no English path mirror (/en/ is a 404 here), so the button is the only way language changes and this key is simply the record of your choice;
  • abyss-sound — whether ambience is on or off; it appears only after you press the mute button.

Opening the site writes nothing. On 1 November 2026 a real browser was used to open /, /privacy, /about and /terms, seven seconds each, over five rounds: all twenty localStorage readings were empty. Keys appear only further along — pressing Begin delivery writes abyss-save.v1 (with exactly those six fields and five status pairs), the language button adds abyss-lang, the mute button adds abyss-sound. There is no fourth key: no achievement badge, no analytics visitor id, no ad-consent key — grepping the source for storage keys starting gs_ returns nothing, and the measured key set is exactly those three. The site sets no cookies, uses no sessionStorage and opens no IndexedDB.

What Start over clears, and what it leaves alone

Once all five deliveries are done, the title screen gains a View ending button (measured 1 November 2026: after loading a save with all five marked completed, that button switched from hidden to visible and read View ending in the English interface). The summary screen it opens has two buttons. Back to title leaves your save untouched. Start over asks first, with the browser's own confirmation dialog; the message measured on screen was Starting over leaves this parcel — and the 5 deliveries already graded — back at the lighthouse. Begin again? — that number in the sentence is the count of grades you already have, so the game reads the cost back to you before it asks.

Choosing cancel: nothing is cleared — all three keys read back byte-identical to before the press (measured). Choosing confirm: the single thing removed is abyss-save.v1, after which the game immediately writes a save that says nothing has been done; abyss-lang and abyss-sound are not cleared with it, because your language and mute preferences are not game progress.

To clear everything this device holds about this site there are two definite routes: delete site data for this origin in your browser (which takes all three keys), or play in a private mode that does not persist local data, in which case it is gone when you close the tab.

One limitation belongs in this section rather than hidden: the title screen template contains a second Start over button, but measured on 1 November 2026 it stays hidden in the page (two buttons share one class name and the title-copy code only picks up the first of them). So today the only reachable in-game way to clear a save is the summary screen described above. This is recorded as a defect to fix, not as a design we intend to keep.

What happens when the save is corrupt

The whole read is wrapped in try/catch and the rules are short: if the string does not parse, treat it as no save; if it parses but statuses is not an array, treat it as no save; if v is not the current version, likewise. The one older shape that is accepted is v:1, which predates the echo fragments — on read it gets an empty echo list added in memory and every other field is carried across, so an existing run is not lost just because a new kind of collectible was invented.

Six different save contents were each actually run through on 1 November 2026, reading back the title screen's primary button each time:

Save loaded inPrimary button shownErrors
Valid v2, one delivery completedContinue delivery (progress line reads “All five are delivered — delivery grade A”)0
Old v1 save (no echoes field)Continue delivery (“already started, not finished yet”)0
Not JSON at allBegin delivery (treated as no save)0
Unrecognised version (v = 99)Begin delivery0
statuses written as a stringBegin delivery0
Five deliveries, all lockedBegin delivery (an all-locked save does not count as progress)0

None of the six raised an error and none was silently rewritten: when a value cannot be read it stays where it is until you actually start a run, at which point a new save replaces it. This page deliberately avoids the phrase “we protect your data with validation mechanisms” — there is no checksum here and no server retry. A broken save is treated as absent, not shipped somewhere and re-fetched.

Answers, archives and echoes never touch the network

Two text inputs appear while you play: the delivery-check box, and the frequency box on the summary screen. Each sits inside a <form>, but both submit handlers call preventDefault() first and then compare strings locally — no submission exists in order to “verify an answer”.

Before comparing, the input is normalised so that people who answer correctly are not turned away: NFKC folds full-width digits, letters, full stops, percent signs and the ideographic space in one pass (the full-width state of a Chinese input method is ordinary typing), then trimming, lower-casing and removing all whitespace, with %→%, ,→, and 。/、 dropped. The four accepted answers are 4 (also 四 / 四秒 / 4秒), 60 (also 六十 / 60单位), 222 (also 两百二十二 / 222年) and 52.9 (also 52.9hz, 52.9赫兹, “52,9”). The hidden one expects 34.2 — the in-game line “the station is 52.9, under Lan City 18.7; what the outside hears is their difference” is that subtraction. What you typed is discarded after the comparison and never enters the save: that field keeps only the grade, the seconds and the distance.

The five letters, the five recipients, the twelve echoes, the five landmark postcards and the four endings are all written in the game's own data files and ship with the page; there is no search backend and no query log — the region atlas and the echo codex panels read the copy already downloaded to your machine. Nothing the game does at runtime reports to us: fetch, XMLHttpRequest, sendBeacon and WebSocket each occur 0 times in the source.

One thing must be stated precisely: this origin has no Content-Security-Policy response header (measured 1 November 2026: of the 21 domains in this project that were probed, 14 send one, and this is one of seven game subdomains that do not). So “your data does not leave” holds because the code contains no such call, not because a policy blocks it — we would rather write that distinction than leave you a sentence that credits a policy with work it is not doing. Among the headers this site sends with every page, the privacy-relevant ones are (verbatim, measured): X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin, Strict-Transport-Security: max-age=63072000; includeSubDomains; preload, and a Permissions-Policy that empties geolocation, microphone, camera, payment and USB.

Sound, pictures and fonts are computed on your side

No audio file needs downloading (the build contains 0 .mp3, .wav, .ogg and .m4a files). Every sound is synthesised with Web Audio on your machine: three sustained tones at 52.9 Hz, 18.7 Hz and 34.2 Hz (the two frequencies and their difference), a bed of noise through a 160 Hz low-pass, the water layer a two-second looping noise through a 420 Hz band-pass at Q 0.8 with gain 0.014, and a 1/6 Hz oscillator gently pushing that bed — that is the “once every six seconds” from the script. The harmony layer roots on 211.6 Hz (52.9 moved up four octaves into hearing range) with a just-tempered minor third at 253.9 Hz and a perfect fifth at 317.4 Hz, each carrying an LFO with mutually prime periods of 11, 13 and 17 seconds, so it breathes without actually looping. Bare low sine waves do not reproduce on laptop speakers, so each low tone is stacked in octaves until it lands above 110 Hz (at most six layers, each gain multiplied by 0.62). The master volume constant is 0.22.

That engine is only created inside a real click — specifically the moment you press Begin delivery. Before it, no AudioContext exists at all and nothing asks you for permission. The character, terrain and lighthouse are geometry assembled in code: the build contains no 3D model files (the /models/ directory holds nothing but a text file recording where an abandoned asset came from), and the renderer, three.js, is bundled into this site's own JS file rather than fetched from a CDN.

The view is rendered live with WebGL, so opening the homepage in a browser gives 0 <img> elements on screen (measured five rounds, five times 0 — the picture is a canvas, not an image). The build ships 20 image files in total, all served from the same origin shown in your address bar: 12 .webp fragments under /images/echoes/, 5 landmark postcards under /images/, plus og-image.webp, og-image.jpg and favicon.png. Each tag carries its width and height and loading="lazy", and if a file ever fails the frame collapses into a glyph instead of leaving a broken-image box. No image is fetched from any third party.

Fonts: the CSS declares no @font-face. The first name in the interface stack is Nunito, but this site never downloads it — if your machine has it, it is used; otherwise the stack falls through to your own system fonts (measured: 0 font requests across five rounds). There is no service worker either: no sw.js and no webmanifest in the build, so nothing is left on your machine caching or requesting on your behalf.

Who this page and the game pages each send requests to

On 1 November 2026 a real browser opened the game homepage and three explanation pages for seven seconds each over five rounds, logging every outbound request and every cookie. The two kinds of page are not one table:

PageHosts seenCookies
/ (the game)this site, pagead2.googlesyndication.com (5 requests per round), googleads.g.doubleclick.net (2), ep1.adtrafficquality.google (2), ep2.adtrafficquality.google (3), www.google.com (1), static.cloudflareinsights.com (1)only test_cookie@.doubleclick.net
/privacy, /about, /terms (this page included)two hosts only: this site and static.cloudflareinsights.com. Every ad endpoint above appears in 0 of 5 rounds — the ad loader is only in the game pagenone (15 readings across three pages, all empty)

Cloudflare's web-analytics beacon is injected by the hosting platform into every HTML document — the same page measured online is always 367 bytes larger than the local build, and that is the beacon. It reports aggregate traffic and page-performance metrics only; this site cannot see per-visitor detail and does not read it. Policy: Cloudflare Privacy Policy.

Beyond the Google ads and Cloudflare's analytics named above there is no Google Analytics or other first-party analytics, no social plug-in, no pixel and no remarketing script — those endpoint families produced not one request in five rounds. This site sets no cookie of its own; the one visible in the browser is the ad loader's own probe. If another service is ever introduced, this page is corrected before it goes live.

Advertising

The game homepage loads the Google AdSense script. Whether an ad shows, which one, and whether it is personalised is decided by Google under its own policies. Ad vendors may set their own cookies or similar identifiers — what we measured is the single test_cookie@.doubleclick.net, and Google's policy also covers identifiers such as DSID. You can manage this here:

This site has no custom “accept / reject” banner and does not store such a choice on your device (it is not among the three keys above). We did not want to build a pair of buttons that changes nothing, so this page says it plainly: ad personalisation is managed through those two entries, and more thoroughly through your browser's own third-party-cookie blocking and tracking protection — which this site will not fight.

The placement inside the game is currently switched off: that flag reads ADS_ENABLED = false in the source, so no empty ad frame appears on the title screen. Measured six times on 1 November 2026 — once on the title screen and once in-game, over three rounds: 0 elements on screen labelled “AD / 广告”, and 0 ad containers whose bounding box is larger than zero. The DOM does always hold one ins.adsbygoogle sized 0×0 with display:none, plus three frames inserted by Google itself, all of them 0×0 — those are the ad loader's idle and measurement containers, not slots we placed. data-ad-slot occurs 0 times anywhere in this build: we do not fill in a fake slot id.

Children and subject matter

The game is a deep-sea horror mystery: three years ago your brother Lin Yu came to Kestrel Island as a courier, left five letters unposted, walked into the 1978 pump station beneath the reef and never came back; you are Lin Xi, finishing his last round. It is not directed at children under 13 and asks no player, of any age, for identity details or contact information — no accounts, no chat, no place to upload anything, and no contact between players.

Ad serving and personalisation are handled by Google under its own policies; a parent can switch personalised advertising off through the two entries in the previous section.

This page was rewritten, and why it is marked that way

The version of 1 November 2026 replaces a generic legal template with what this particular game actually does. Before writing it we ran the measurements first (every dated figure above comes from that run), because a page that claims to describe local storage and outbound requests can only be checked against runtime, not against another piece of copy. The “last updated” line on this page is not an editor's date: it is synced from the version-control timestamp of this text, and changes are announced publicly in the main site's changelog.

The writing and the puzzles are ours. AI was used as an aid during development and in first drafts, while the story, the puzzles, the final text and every round of testing were done by the author — that is the one stance on AI used across the whole project, not a looser one invented for this paragraph.

Whose project this is, and how to reach it

A one-person project: alphaBETA DEV / GameStrategists. The main site, gamestrategists.com, describes the whole project (nineteen games of our own, with their guides) and publishes the editorial standards and the correction policy; the homepage of this site links back to it. For privacy, write to privacy@gamestrategists.com; for anything else, contact@gamestrategists.com. Replies are written by a person, usually within 24–48 hours.