概述
Gravedigger.io – The Night Shift 是一款单文件、零依赖的第一人称僵尸波次防御游戏,完全在浏览器中运行。开发者 eons2eons 把整个游戏塞进一个基于 Three.js r128 的 index.html:程序化生成的墓地、六种武器、无限升级的波次、合成音频和 HUD,全都在里面。无需安装,无需构建,没有素材下载。唯一的外部资源是一条 Three.js CDN 脚本标签。
你是值夜班的掘墓人。死者不肯安息。僵尸从程序化生成的墓地里爬出来,你要做的就是在防线上坚持得越久越好。没有最终波次。尸潮永远翻倍,跑图在你倒下时结束。
| 项目 | 信息 |
|---|---|
| 类型 | 动作 / 第一人称射击 / 波次防御 / 生存恐怖 |
| 开发者 | eons2eons |
| 平台 | 浏览器(仅桌面端,需要 WebGL + Web Audio) |
| 价格 | 免费 |
| 玩家 | 单人 |
| 引擎 | Three.js r128 + Web Audio API |
| 单局时长 | 每局 5 到 30 分钟 |
| 难度 | 中高。前期轻松,第 7 波之后残酷 |
游玩地址: itch.io 页面自 2026 年 8 月起被作者设限,可靠链接是 GitHub Pages 构建版,两者是同一个游戏文件:
https://eonstoeons.github.io/Gravedigger.io-The-Night-Shift/
也可以克隆仓库后在本地直接打开 index.html。任何开启了硬件加速的现代桌面浏览器都能玩:Chrome、Firefox、Edge、Safari。源码采用 MIT 许可证,本指南里的每个数字都能对照脚本顶部的 CONFIG 代码块核实。我们正是这么做的。
它的亮点: 整个游戏由一条 AI 提示词生成,之后只做了轻微打磨。它既是一款手感扎实的街机波次射击游戏,也是"一条提示词能做到什么程度"的活案例。
操作
游戏只支持键盘。鼠标没有任何作用。没有指针锁定,不能用光标瞄准,也没有触屏支持。
| 按键 | 动作 |
|---|---|
W A S D | 移动 |
方向键 | 左右转身,上下看 |
空格 | 开火 / 挥铲 |
R | 装弹 |
T | 循环切换已拥有的武器 |
1 到 6 | 直接选择武器(铁铲、手枪、霰弹枪、冲锋枪、步枪、加特林) |
两个会直接影响打法的事实:
- 转身很慢。偏航转速是每秒 2.05 弧度,转满 360 度要约 3 秒。绝不能让僵尸绕到背后,因为转身回头的代价相当于两记铁铲挥击的时间。
- 拥有 4 把以上武器后,数字键比 T 键循环快。战斗中按
5直接掏步枪,比连按三次T利索得多。
起步:第一个夜班
启动清单
- 在桌面浏览器打开 GitHub Pages 链接(或本地
index.html)。 - 确认 WebGL 可用。黑屏的话,去浏览器设置里开启硬件加速。
- 点击 BEGIN THE SHIFT。
- 第 1 波开始前有 0.6 秒的宽限期。用它扫一眼发光的补给点。
首局目标
- 第 1 波是变相教学:5 只慢速僵尸,手里只有铁铲。
- 找到手枪补给。所有武器补给都生成在距地图中心 10 到 63 单位的圆环上,由高高的橙色光柱标记。
- 记住弹药箱位置。每局有 10 个弹药箱,由绿色垂直光柱标记。
- 活过第 1 波,然后用 4.2 秒间隔去拿霰弹枪或冲锋枪。
新手常见错误
| 错误 | 代价 |
|---|---|
| 前期无视武器补给 | 只用铁铲撑不过第 3 波 |
| 第一件拿加特林 | 2.6 秒换弹在站不住脚的时候等于死刑 |
| 站桩输出 | 僵尸会向你的位置聚拢;你的速度是它们的 2 到 4 倍 |
| 放尸群包抄到背后 | 转身要约 3 秒;背后的僵尸稳稳吃到你一击 |
| 攥着弹药不打 | 弹药箱会补满你携带的所有枪,放心开火 |
| 退进围栏夹角 | 90 度的覆盖听着安全,直到你发现毫无退路 |
| 以为升起中的僵尸打不着 | 打得着。出了地面的目标都能被射击或挥铲命中 |
核心机制
生命值与回复
- 生命上限: 100。每只僵尸一击 20 点,正好 5 次倒地。
- 回复触发: 4.2 秒内不受伤。
- 回复速率: 每秒 4 点。从 40 血回满约需 15 秒。
- 受击反馈: 红闪(0.35 秒)加镜头震动。
- 低血量警告: 30 血以下出现脉动红晕,伴随约每秒 1.6 拍的心跳声。
- HUD 会直接显示回复状态:延迟计时期间显示"伤口新鲜"字样,开始回血后切换为"恢复中"。
回复延迟是你最大的战术约束。挨了打就必须脱离接触至少 4.2 秒。把僵尸遛成一条线,躲到陵墓或树后断开视线,等回血启动再重新接战。
波次缩放
波次总数 = 5 × 2^(波次 − 1)
同时在场 = min(20, 5 + 波次 × 2)
生成间隔 = max(0.22, 0.95 − 波次 × 0.03) × 随机(0.7 到 1.3)
波间休息 = 4.2 秒,第 1 波前宽限 = 0.6 秒
| 波次 | 僵尸总数 | 在场上限 | 策略 |
|---|---|---|---|
| 1 | 5 | 7 | 只用铁铲。练习遛怪。 |
| 2 | 10 | 9 | 拿手枪,练习切枪。 |
| 3 | 20 | 11 | 轮到霰弹枪或冲锋枪。 |
| 4 | 40 | 13 | 防住陵墓南侧通道。 |
| 5 | 80 | 15 | 步枪成为主力。 |
| 6 | 160 | 17 | 循环切枪;控场优先。 |
| 7 | 320 | 19 | 全面生存模式。 |
| 8+ | 640+ | 20 | 约 0.5 秒生成一只。杀得比冒出来的快才能活。 |
在场人数上限意味着僵尸会排队而不是一拥而上。你不会同时面对第 8 波全部 640 只,但必须清掉每一只才能过关,而且队列补充得很快。第 10 波要求总计 2,560 次击杀,节奏约每秒 2 只。
僵尸行为
每只僵尸跑一个四状态循环:
- 升起: 1.65 秒破土而出,身体倾斜着从土里拱起来。升起期间无害,但并非无敌。
- 追击: 以 1.35 到 2.5 单位/秒的速度朝你移动,带分离 AI 和轻微的墓碑避让。
- 攻击: 在 1.55 单位内扑击,造成 20 点伤害,随后冷却 1.05 秒。
- 死亡: 0.9 秒沉入地面。
升起状态的更正: 升起中的僵尸可以被射击、也可以被铲。命中判定只忽略已经进入死亡状态的僵尸。僵尸半身出土时瞄准点要放低一点;它的判定球位于脚底上方约一单位处,刚冒头时子弹会从头顶飞过。等到它升出三分之二,就是活靶子了。铁铲挥击只检查平面距离和一个 109 度的正面扇区,所以只要够近,僵尸一开始冒头就能铲死它。
攻击冷却超过一秒,所以单只僵尸几乎无害;你可以直接从它的挥击里走过去。危险永远来自数量。僵尸之间距离小于 0.85 单位时会互相推开,所以它们会展开成月牙形而不是叠成一坨。要提防包抄。新生的僵尸还带着 0.3 到 0.8 秒的首次攻击延迟,这给了你一个小窗口,在它出手前先下手。
生成规则
僵尸不是在随机地面点刷出来的。它们在距你 14 单位以外的墓碑处生成。游戏会随机尝试 8 块墓碑找一块足够远的;都失败就用找到的最远那块。实际推论:
- 无论你站在哪,生成点都出现在离你远的墓碑上。持续移动的话,新的群落会不断在你刚离开的位置后面升起。
- 没有贴脸刷。你最近的威胁也至少从 14 单位外开始,需要 1.65 秒升起,再花 5 到 10 秒才能摸到你。
- 低吼就是雷达。僵尸每 4 到 10 秒低吼一次,背后的低吼等于一个你还没看见的新生成警报。
武器系统
| 武器 | 伤害 | 射速 | 弹匣 | 备弹 | 装弹 | 射程 | DPS | 定位 |
|---|---|---|---|---|---|---|---|---|
| 铁铲 | 99999(一击必杀) | 0.46s | ∞ | 无 | 无 | 2.55 | 无 | 常驻近战,109 度扇区 |
| 手枪 | 40 | 0.22s | 12 | 96 | 1.05s | 60 | 182 | 前期精准火力,3 枪一杀 |
| 霰弹枪 | 19 × 8 弹丸 | 0.86s | 6 | 48 | 1.75s | 24 | 177 | 单发最高 152;卡口之王 |
| 冲锋枪 | 18 | 0.085s | 30 | 240 | 1.05s | 45 | 212 | 清人海,6 枪一杀 |
| 突击步枪 | 28 | 0.11s | 30 | 240 | 1.35s | 72 | 255 | 综合最佳,4 枪一杀 |
| 加特林 | 22 | 0.05s | 100 | 400 | 2.6s | 55 | 440 | 应急爆发,装弹要命 |
关键数字:
- 铁铲: 同时命中 2.55 单位距离内、109 度正面扇区里的所有僵尸。一铲挥进压缩到一起的三只僵尸群就是三杀。零弹药消耗。永远有用。
- 突击步枪: 每杀 4 枪(28 × 4 = 112 伤害 vs 100 血)。30 发弹匣杀 7 只,72 单位内约 255 DPS。从第 5 波起的主力。
- 霰弹枪: 8 发弹丸全中打出 152,一枪一只。弹丸扩散大(0.11),超过 12 单位就开始脱靶。12 单位内它称王;过了 24 全打空。
- 手枪: 每杀 3 枪,全游戏最紧凑的扩散(0.012)。步枪装弹时它是被低估的中距离备胎。
- 加特林: 440 DPS,但 100 发只够 5 秒持续火力,随后是 2.6 秒的不能开火窗口。把它当救命按钮,别当主力。
瞄准点: 子弹命中判定检查一个约 0.62 单位宽、以僵尸胸口高度为中心的球体。瞄上半身。没有爆头机制,也没有距离衰减,最远距离的步枪子弹和贴脸一样疼。
装弹机制: 装弹按武器独立计时,即使你切走再切回来,计时器也在真实时间里继续走。开始步枪装弹,切铁铲收拾近身的,再切回来,步枪会按计划装好。切枪永远不会损失装弹进度。唯一的限制是装弹中的那把枪在计时结束前不能开火。
弹药经济
- 五件武器补给(手枪、霰弹枪、冲锋枪、步枪、加特林)每局只刷一次,距中心 10 到 63 单位,各由橙色光柱标记。每把枪到手即满弹并自动装备。错过一件,整局都拿不回来。
- 每局 10 个弹药箱,距中心 6 到 63 单位,由绿色光柱标记。拿一次即可补满所有已拥有武器,弹匣和备弹全满。
- 弹药箱被拿走 26 秒后重生,大多数玩家忽略的细节在这里:重生后的箱子会出现在新的随机位置,不在你上次拿到它的地方。别指望记住一个箱子点然后无限循环。在地图相对的两侧各记两三根绿色光柱,哪根亮着就往哪轮转。
墓地:地图知识
每局都会重新生成地图,但布局规则恒定:
- 边界: ±68 单位处的方形围栏。世界坐标把你的位置钳制在 ±66.8 以内。贴平墙站位只给僵尸一个接近方向;围栏没有任何缺口。
- 陵墓: 位于南缘约 (0, −42) 处,半径 4.4 的实心碰撞体,黑色大门朝向地图中心。门是装饰,进不去。用它断开视线、安全装弹、绕圈遛僵尸。
- 墓碑: 按 6.6 单位网格摆放,地图中心 9 单位内留空,另有 46% 的跳过概率,每局约 150 到 200 块。墓碑挡你的路,僵尸则以 1.4 倍的轻微推力绕开它们。每块墓碑都是潜在生成点。
- 树: 16 棵枯树环布在距中心 37 到 65 单位的外围。对你是完整障碍物。僵尸对树的避让不如墓碑严格,遛怪时别贴着树干。
- 灯笼: 5 根带橙色灯光的灯柱,无碰撞。纯粹是黑夜里的方位参照。
- 地形: 起伏约半单位的噪声丘陵。纯视觉;不影响移动。
指南针技巧: 陵墓锚定南墙,大门朝北。找到门就等于立刻知道中心在哪,进而知道每面围栏的方位。
分步攻略
序列 1:第 1 波拾荒
1. 点击 BEGIN THE SHIFT。用 0.6 秒宽限扫一眼光柱。
2. 用铁铲杀掉前两三只僵尸(每只一铲)。
3. 小跑向最近的橙色光柱。近的话拿手枪。
4. 用手枪或铁铲清完第 1 波。
5. 4.2 秒间隔内记住:两根弹药箱光柱的位置 + 陵墓方向。
6. 先别拿加特林。
序列 2:武装升级(第 2–3 波)
1. 第 2 波:拿手枪(12/96)。练习数字键切换:1、2、再切回 1。
2. 第 3 波:找霰弹枪和冲锋枪光柱。下一个目标是步枪。
3. 拾取优先级:步枪 > 冲锋枪 > 霰弹枪 > 手枪 > 加特林。
4. 在心里标记 3 根以上分布在不同象限的弹药箱光柱。
5. 绕中心大范围游走;永远别蹲在中央安全区。
序列 3:南陵墓据点(第 4–6 波)
1. 第 4 波开始前移动到南缘的陵墓。
2. 站在建筑北侧,让尸群沿墙汇聚到你面前。
3. 僵尸在卡口处挤成一团时用霰弹枪招呼。
4. 霰弹枪射程外的零散目标换步枪点名。
5. 挨打了?躲到建筑后面。它挡视线、触发回复,
僵尸还要绕路,给你 3 到 5 秒干净时间。
6. 南边压力减轻后,沿围栏转到东墙或西墙。
序列 4:弹药循环
1. 记住"现在亮着"的弹药箱光柱,而不是箱子曾经的位置。
2. 步枪备弹低于 120(一半)就动身去最近亮着的箱子。
3. 一次拾取补满所有枪。别为单把武器跑一趟。
4. 重生箱在 26 秒后出现在新位置。每圈重新扫一遍光柱。
5. 路线:亮着的箱子 → 顺路杀怪 → 下一根亮光柱 → 循环。
6. 霰弹枪备弹只剩 12 发或更少?切冲锋枪,等下一波补给。
序列 5:血量危机处理
1. 红闪 = 挨打。立刻脱离,没有例外。
2. 血量 80+:继续作战,多注意拐角。
3. 血量 40–60:退到陵墓后或平直的围栏墙边。
4. 用铁铲收拾追兵。免费一击必杀,不费弹药。
5. 保持 5 秒以上不被碰到,让回复启动(4.2 秒延迟)。
6. 每秒 4 点,40 血约 15 秒回满。
7. 重新接战先用步枪;霰弹枪殿后。
序列 6:加特林应急预案
1. 只在两种情况用:15 只以上僵尸近身围堵,或压制第 8 波以后的生成队列。
2. 以 1 到 2 秒的点射消耗。100 发 = 5 秒持续火力。
3. 开火 3 秒后就开始想撤离路线,别等弹匣打空。
4. 剩 10 发就撤。只在掩体后启动 2.6 秒装弹。
5. 装弹中僵尸进到 10 单位内?切铁铲(数字键),清完再切回来。
你挥铲的同时装弹计时照走。
6. 没有保证安全的装弹路线,每波只用一次。
序列 7:波间优化
1. 最后一只僵尸倒地,"CLEARED" 横幅出现:4.2 秒自由计时开始。
2. 不满血?先让回复跑一会,再动身。
3. 血量 80 以上?全速冲向最近亮着的箱子补满所有枪。
4. 换上适合下一波节奏的武器(默认步枪)。
5. 重新布位:第 4 到 6 波守南陵墓,第 7 波起绕围栏大范围巡逻。
6. 下一波开头用铁铲招待最先冒头的。白嫖经济。
进阶技巧
5 击法则
僵尸每击正好 20 点。用"还剩几击"而不是血点数来理解你的血条:
| 血量 | 剩余容错 | 打法 |
|---|---|---|
| 100 | 5 | 正常压制 |
| 80 | 4 | 开始敬畏拐角 |
| 60 | 3 | 距离危险区一步 |
| 40 | 2 | 立刻脱离 |
| 20 | 1 | 下一下就死。全线撤退 |
挨打是警报,不是路障。补完当前这一杀之前先想好往哪走。下一只僵尸已经在抡胳膊了。
遛怪几何
你的移速(5.4 单位/秒)是僵尸的 2.2 到 4 倍(1.35 到 2.5)。墓地就是你的竞技场:
- 用浅弧线跑位把僵尸聚成尾随的一团,然后回头打队伍最前排。
- 引着尸群绕陵墓或树丛转圈把它压缩,然后一铲挥过整条压缩线打出多重击杀。
- 遛怪路线穿过亮着的弹药箱光柱,边被追边补给。
- 让围栏始终在你一侧。背后的开阔地意味着第二群僵尸可能在那里升起。
- 永远不要直线倒退。转身很慢(360 度要 3 秒),用大弧线转向代替原地掉头。
围墙与夹角
贴平直的围栏墙给你 180 度正面,左右两个方向都能跑。夹角给你 90 度覆盖和零退路。夹角的感觉能安全两波,然后月牙形尸群沿两面墙合围,你弹匣全满地死掉。守平墙,别碰夹角。
铁铲多杀纪律
铁铲同时命中扇区内所有目标,每 0.46 秒一挥,永远不缺弹药。三个习惯让它成为你的经济引擎:
- 借障碍物压缩尸群,然后一铲挥过整条线。
- 任何枪装弹时,2.5 单位内的目标交给铁铲,不要慌。
- 每波开头用铁铲招待离你最近的冒头僵尸。弹匣留给大部队。
软上限利用
第 8 波起,同时最多 20 只在场,但生成队列每约 0.5 秒补一只。你需要每秒约 2 杀才能守住阵地。步枪 255 DPS 刚好覆盖每秒 2.5 杀,而且要求枪枪命中。这正是加特林的价值所在:440 DPS 一轮爆发清空队列,在场人数归零,趁生成的间隙退回步枪输出。爆发,重置,喘息,循环。
声音辨识
每把枪都有独立的合成音色。记住它们,你就能靠耳朵打游戏:
| 声音 | 含义 |
|---|---|
| 清脆的爆响 | 手枪。还好,没什么急事。 |
| 深沉的轰鸣 | 霰弹枪。你的控场弹药正在消耗。 |
| 急促的高频哒哒声 | 冲锋枪。 |
| 尖锐的枪响 | 步枪。你的主力弹药正在消耗。 |
| 低沉的嗡鸣 | 加特林。还剩 5 秒安全感,然后是 2.6 秒的空窗。 |
| 下滑的低吼 | 一只僵尸,可能是你没看见的那只。背后的每声低吼都按生成警报处理。 |
| 心跳声 | 血量低于 30。停止交战。跑位。 |
改配置(模组玩家)
index.html 顶部的 CONFIG 代码块完全可调:
| 配置 | 默认值 | 效果 |
|---|---|---|
PLAYER_MAX_HP | 100 | 生存能力 |
ZOMBIE_HIT_DMG | 20 | 难度旋钮 |
MOVE_SPEED | 5.4 | 遛怪能力 |
MAX_CONCURRENT_CAP | 20 | 混乱程度 |
REGEN_DELAY | 4.2 | 回复速度 |
REGEN_RATE | 4.0 | 每秒回复量 |
AMMO_RESPAWN_TIME | 26 | 弹药压力 |
WORLD_HALF | 68 | 场地大小 |
RISE_DURATION | 1.65 | 生成预警时间 |
代码框架采用 MIT 许可证。游戏设计和品牌没有开放,模组请留在个人项目范畴。
常见问题
问:启动黑屏。 答:游戏需要 WebGL 和硬件加速。去浏览器设置里开启后刷新。Three.js 从 cdnjs 加载,首次加载需要稳定的网络。
问:一共有多少波? 答:无限。公式是 5 × 2^(波次−1)。第 10 波总计 2,560 只僵尸,好在 20 只的在场上限让它依然可玩。
问:最好的武器是什么? 答:综合用突击步枪:28 伤害、0.11 秒射速、72 射程、扩散小。卡口用霰弹枪,单发最高 152。铁铲永久一击必杀,永远不会离开你的装备栏。
问:错过武器补给还能拿回来吗? 答:不能。武器每局只刷一次。第 3 波前扫完整个补给环。
问:弹药箱会在原位重生吗? 答:拾取后 26 秒重生,但出现在新的随机位置。盯绿色光柱,别记旧坐标。
问:僵尸冒头时是无敌的吗? 答:不是。判定球离开地面就能被打,铁铲甚至更早就能铲到,因为近战只查平面距离和朝向。
问:加特林装弹为什么这么慢? 答:平衡设计。2.6 秒就是 440 DPS 的价格。没有干净的撤退路线就别把子弹打空。
问:能手机玩或者用鼠标玩吗? 答:不能。游戏只支持键盘:WASD、方向键、空格、R、T 和数字 1 到 6。没有触屏控制,没有指针锁定,没有鼠标瞄准。
问:怎么回血? 答:只有自动回复。4.2 秒不受伤后每秒回 4 点。没有回血道具。
问:每局的墓地都一样吗? 答:不一样。地形、墓碑、树、灯笼和补给每局重新生成。恒定的只有布局规则:围栏在 ±68,陵墓在南缘,门朝中心,僵尸在距你 14 单位以上的墓碑处生成。
问:游戏感觉不平衡,我能改吗?
答:能。打开 index.html,找到 CONFIG 代码块,改上面的数值即可。
速查卡
生存循环: 遛怪 → 射击 → 回血 → 拾取 → 换位
第 1–3 波: 铁铲 + 手枪,收集武器,标记弹药箱光柱
第 4–6 波: 南陵墓据点,霰弹枪卡口,步枪点名
第 7 波起: 绕围栏巡逻,每秒 2 杀起步,加特林应急爆发
弹药: 10 个箱子,26 秒后在新位置重生,一次补满全部武器
血量: 5 次容错,干净 4.2 秒后每秒回 4 点
僵尸: 100 血,20 伤害,1.55 攻击距离,1.05 秒冷却
生成: 只在墓碑,距你 14 单位以上,1.65 秒升起(可射击)
陵墓: (0, −42),门朝中心,遮断视线 + 遛怪锚点
铁铲: 109 度扇区,2.55 距离,多重击杀,永远免费
指南 2026 年 9 月更新。全部机制均已对照游戏源码重新核实,包括对升起状态命中判定和弹药箱重生行为的更正。






