Greyport · 5v5 战术对战射击
灰港 GREYPORT
黄昏的集装箱码头,午夜的铁路调车场。进攻方「黑潮」要把炸弹安放到 A 点或 B 点,防守方「港卫」要守住或拆掉它。你带一队机器人队友,对面也是五个机器人。
需要电脑键盘和鼠标(浏览器会锁定鼠标指针)。游戏主包约 24MB,首次打开要等它下载完。手机和平板可以看下方录像,游戏暂不支持触屏。
50 秒实机录像
依次是步枪三连爆头、狙击两杀、调车场夜战冲锋枪三杀、爆破模式下包到回合胜利、两套乱斗阵容的近距离交火,最后是三套阵容的两队合影。第一人称镜头里由机器人代打。录像不是实时录屏:页面时钟被换成假的,逐帧推进截图(1920×1080、60 帧),音效记下时间点后离线重新合成。
两张图
灰港是黄昏的集装箱码头,有北巷、仓库中路、南码头三条路线,A 点在东北堆场,B 点在东南岸边。调车场是午夜的铁路货场,五股道上的棚车、平板车、油罐车排成巷道,中间是机修库;A 点在站台尽头,B 点在油库旁。两张图都由轴对齐方块搭成,渲染和碰撞共用同一份地图数据。
两种模式
- 团队竞技:阵亡 3.5 秒后复活,先到 50 个击杀,或 8 分钟后领先的一方获胜。
- 爆破模式:回合制、不复活,先胜 5 回合。进攻方按住
E3.2 秒下包,38 秒后引爆;防守方拆除要 5 秒。全歼、引爆、拆除、超时四种结局,阵亡后观战队友。
护甲只护躯干。步枪和手枪爆头一枪致命,狙击枪打躯干一枪致命,匕首重击一刀致命。连发越久枪口越往上飘、散布越大;移动和跳跃时更不准,蹲下更准。
换一套阵容
默认阵容里,黑潮是戴安全帽、穿橙色反光背心的码头工人,港卫是藏青色特警。菜单「角色」里还有三套:趣味混搭(老工头、冲浪哥、宇航员、老国王……)、怪物乱斗(忍者、兽人、仙人掌、小恐龙对兔子、青蛙、蘑菇王……)和奇幻乱斗(骷髅兵团对骑士、野蛮人、法师)。三套阵容各打成一个单独的包,选到时才加载。
操作
| 按键 | 作用 |
|---|---|
| W A S D | 移动 |
| 鼠标 | 瞄准;左键开火;右键狙击枪开镜 / 匕首重击 |
| 空格 / C / Shift | 跳 / 蹲 / 静步 |
| R | 换弹 |
| 1 2 3 4、滚轮、Q | 主武器 / 手枪 / 匕首 / 手雷,Q 切回上一把 |
| G | 手雷 |
| E(按住) | 下包 / 拆包 |
| Tab | 计分板 |
| Esc | 暂停(灵敏度、音量、视野、画质、主武器) |
网址参数可以直接跳到想要的配置,例如 ?map=switchyard&mode=bomb&play 直接进调车场爆破,?cast=monster 换成怪物乱斗,?difficulty=easy|normal|hard 调机器人难度。
怎么做的
游戏用 three.js 渲染,esbuild 打成单个脚本。对局核心(命中判定、武器后坐与散布、机器人的感知、瞄准误差和走位、0.5 米栅格上的 A* 寻路、两套模式规则)不依赖画面,可以在 Node 里无画面跑完整局。角色是带骨骼动画的模型,上下半身分层混合,双手用反向运动学握枪,蹲下时自动屈膝。音效由 Web Audio 实时合成。
地图、阵营、武器和场景都是原创。贴图和天空来自 Poly Haven,角色模型来自 Quaternius 和 KayKit(Kay Lousberg),均为 CC0 授权。
已在桌面 Chrome 上跑过 32 项规则检查和 42 项浏览器端到端测试,两张图在多种分辨率下都是 60 帧。还没有真人长时间试玩过,手感、难度和鼠标灵敏度是否合适不清楚;Safari、Firefox 没测过。