铁壁行动
AI开发的单页3D游戏,体积不到300k,画面丰富体验流畅。开源项目看游戏介绍。

铁壁行动(Operation Ironhold)
一款完整的第一人称射击游戏,直接在浏览器标签页中运行。单个 HTML 文件,无需构建步骤, 无需包管理器,磁盘上没有任何图片、音频或模型文件。十名敌人据守 7 号扇区的集装箱堆场。你有三分钟时间肃清他们。
整个游戏——渲染器搭建、世界生成、武器操作、敌人 AI、音频合成、后处理和 HUD—— 约 6500 行 JavaScript 和 CSS,全部内联在一个 290 KB 的 index.html 里。唯一的外部 资源是从 CDN 加载的 three.js r128,其余一切都在运行时生成。
运行方式
点击页面开始游戏。点击是授予鼠标指针锁定的方式,所以游戏必须经你同意才能捕获鼠标。 按 Esc 释放指针并暂停,再点击遮罩层继续。
需要支持 WebGL 和指针锁定(Pointer Lock)的桌面浏览器。没有触屏输入,手机上无法游玩。
操作说明
输入 | 动作 |
|---|---|
| 移动 |
鼠标 | 视角 |
左键 | 开火 |
右键 | 切换机瞄 |
| 装填 |
| 冲刺;开镜时屏住呼吸 |
| 下蹲 |
| 跳跃;空中再按一次二段跳;贴近岩架时按住可攀爬 |
| M4 卡宾枪 / KS-12 泵动霰弹枪 / P-9 手枪 / SR-7 长弓狙击枪 |
| 切换步枪的全自动 / 半自动 |
鼠标滚轮 | 循环切换武器 |
| 暂停 |
回合规则
在 3:00 内消灭全部十名敌人。初始生命 100、护甲 50,护甲会吸收一半受到的伤害, 耗尽后由生命承担。
敌人开局前 3 秒不会开火,让你有时间熟悉环境;战斗调度器把同一时刻向你射击的 敌人数量限制为两人,其余敌人继续机动。正是这一条约束让枪战保持清晰可读,而不是 陷入无法还手的交叉火力。
阵亡或时间耗尽即结束回合。结算界面显示消灭数、爆头数、命中率和存活时间。
武器
槽位 | 武器 | 弹匣 | 备弹 | 特性 |
|---|---|---|---|---|
1 | M4 卡宾枪 | 30 | 210 | 760 发/分钟全自动, |
2 | KS-12 泵动霰弹枪 | 8 | 48 | 每发弹 9 颗弹丸,射击间隔需上膛 |
3 | P-9 手枪 | 15 | 90 | 430 发/分钟半自动,拔枪最快 |
4 | SR-7 长弓狙击枪 | 5 | 25 | 栓动,一枪命中身体即可击毙 |
每把武器都有由几何体和戴手套的双手组成的枪械模型,会跟随鼠标移动产生晃动、随脚步 起伏、装填时垂下屏幕,并抛出会在地面弹跳的弹壳。枪口火焰是贴图配合真实点光源, 会被泛光通道捕捉。步枪的后坐力是固定弹道而非随机散布,所以压枪是可以练习的技巧。
瞄准
右键切换机瞄。每把武器切换进出都恰好 0.2 秒,切换期间散布收紧,持镜时移动速度 降低 40%。
武器 | 视场角 | 放大倍率 | 瞄具 |
|---|---|---|---|
M4 卡宾枪 | 75 → 38 | 2.2 倍 | 着色玻璃上的红点 |
KS-12 泵动霰弹枪 | 75 → 60 | 1.3 倍 | 隔热罩上方珠状准星 |
P-9 手枪 | 75 → 50 | 1.7 倍 | 三点式机械瞄具 |
SR-7 长弓狙击枪 | 75 → 15 | 5.8 倍 | 全屏狙击镜,密位分划板 |
狙击枪是改变画面观感的那一把。开镜时准星替换为全屏遮罩,武器隐藏在镜片之后, 合成着色器会像真实光学器件那样给镜片蒙上一层雾。视角随双正弦缓慢漂移;按住 Shift 可以稳定三秒钟,之后必须松开换一口气。鼠标灵敏度随放大倍率缩放,保证 屏幕上的手感一致。栓动上膛需要 1.5 秒,一发不中代价惨重。
移动
集装箱顶、木箱、油桶堆、报废平板卡车以及所有实体道具都可以站立。普通跳跃约 1.2 米, 二段跳再加 0.9 米。在空中贴近脚下方约 1.95 米以内的岩架边缘按住 空格 可以攀上去—— 这就是从平地直接上集装箱顶、不走坡道登上狙击台的技巧。
敌人
十名士兵沿路径点巡逻,用网格寻路器绕行掩体,寻路用的碰撞体和玩家完全一致。发现你 需要 300 到 800 毫秒的反应时间,发现后会通过无线电呼叫队友。
交战中他们会抢占掩体、侧移、包抄、装填,并且枪口被挡住时拒绝开火——即使能越过 掩体看到你。视线同时从玩家端和敌人端双向射线检测,保证两端判定一致:你打不到他们, 他们也打不到你。爆头造成双倍伤害,命中会让敌人畏缩,死亡时布娃娃倒地、武器脱手。
一切都在运行时生成
仓库里不存在任何图片、音频或模型文件。
混凝土、瓦楞钢、胶合板、铁锈、砖块和铁丝网都在加载时绘制到画布上,连集装箱侧面 的模板喷印货运标志也不例外。武器、双手和士兵由方块、圆柱和球体拼装。天空逐片段 求值,地平线上的工业天际线是实体几何。
所有音效都通过 Web Audio API 合成:每把武器由爆音、枪体声和胸腔低频叠加的枪声、 装填声、脚步声、区分墙面与血肉的命中声、低血量心跳,以及带远处金属吱呀声(随机 定时)的工业环境嗡鸣。还内置了一个由生成脉冲响应构建的卷积混响。
性能
动态分辨率缩放监控帧时间,自动调整渲染比例以维持目标帧率。重复道具按颜色分组用 InstancedMesh 绘制。静态景物合并为单个绘制调用。曳光弹、贴花、弹壳和粒子全部 对象池化。阴影投射按包围盒尺寸裁剪,砍掉了阴影通道中约三分之二的子像素垃圾。