零区冲突
打开链接就能打
最近把一款 3D 第一人称多人在线混战射击游戏部署上线了,取名 零区冲突(英文名仍保留 ZONE ZERO / NEON ARENA 的味道)。
不用注册,不用下载客户端,浏览器打开就能进同一房间开打:
多开几个标签页,或者喊朋友一起点同一个地址,就能体验联机混战。
这游戏玩起来什么样
开局只有拳头,随机地点出生。场地上有武器拾取点、投掷物、医疗包、各种增益道具,还有会被打爆的红色油桶——炸起来会连锁,别站太近。
整体是一张 96×96 的大地图,两处高地平台加外围掩体,可以卡点,也可以用手雷洗地。地图还有 10 分钟一昼夜 循环,深夜时霓虹灯柱会亮起来,左上角有时段指示。
武器与道具
| 类型 | 内容 |
|---|---|
| 近战 | 拳头 → 小刀 / 长刀 / 铁锤 |
| 枪械 | 手枪 / 机枪 / 狙击枪(右键开镜) |
| 投掷物 | 手雷 / 闪光弹 / 烟雾弹(三选一,有冷却) |
| 装备 | 医疗包、防弹衣、疾风靴(永久叠移速) |
| 状态 | 疾速、狂暴、暴击、隐身、丧尸模式、弹跳、护盾…… |
备弹是有限的:手枪 156 发、机枪 360 发、狙击 35 发。打空弹匣会自动换弹,备弹用光后枪还在手里,得自己去武器点补——这点和很多 FPS 不太一样,玩起来会更「抢资源」一点。
四种 BOSS
同场只会刷一只,击杀拿金币、满血和随机增益,助攻也有奖励:
- 🪨 熔岩魔像 — 近战重击 + 火球
- 🗡️ 暗影刺客 — 高速突进,会闪到你身后
- 🤖 钢铁暴君 — 1400 血重装,弹幕 + 三连火箭
- 💀 虚空巫妖 — 追踪法球 + 脚下延迟紫圈,看到圈赶紧跑
西北角还有 神秘商人,用击杀攒的金币买外观(帽子、披风、武器光效等),悬停就能 3D 试穿,按昵称永久保存。
操作说明
桌面端
| 按键 | 功能 |
|---|---|
| WASD / 空格 | 移动 / 跳跃 |
| 鼠标左键 | 攻击 / 射击 |
| 鼠标右键 | 狙击开镜 |
| 1 / 2 / 3 或滚轮 | 切换近战 / 枪械 / 投掷物 |
| V | 第一 / 第三人称 |
| R | 换弹 |
| E | 商店(靠近商人时) |
| ESC | 设置 |
| 回车 / Tab | 聊天 / 排行榜 |
阵亡后可以 观战(自由飞行或跟随其他玩家),随时回车重新加入战斗。
🖱️ 小提示:鼠标回报率过高(比如 1000Hz)可能导致视角突然飘逸,建议在驱动或鼠标设置里降到 125–500Hz。
手机端
同一个 URL,手机浏览器也能和 PC 玩家同场竞技:
- 左下虚拟摇杆移动,屏幕其余区域拖拽视角
- 右下角开火 / 跳跃 / 狙击镜(持狙击枪时出现)
- 武器栏点按切换,再点一次枪械格 = 换弹
触屏端有 7° 锥角内的柔性辅助瞄准(最多纠偏 35%),用来补偿手指精度,但服务器判定对两端完全一致,没有后门。视距和雾距离也不会因为手机而缩短——看得多远,两端必须一样。
技术实现(简要)
| 模块 | 方案 |
|---|---|
| 服务端 | Node.js + Express + WebSocket,单房间权威服务器 |
| 客户端 | Three.js,模型 / 贴图 / 音效全部程序化生成,零外部资源 |
| 持久化 | 排行榜与玩家档案(金币、外观)按昵称保存在服务端 |
| 反作弊 | 移动 / 射速 / 限速 / 瞄准统计,阶梯处置(纠正 → 警告 → 踢出 → 封禁) |
伤害、拾取、购买全部在服务端裁决,客户端只发「请求」。命中反馈做了整条链路:视角弹簧回弹、近战前顶、受击后仰、打墙火花、爆头准星动画等,都是客户端表现层,不影响服务端公平性。
本地跑也很简单:
npm installnpm start # 默认 http://localhost:3000写在最后
这是我在 game-collection 系列里做得最完整的一款联机对战:打开即玩、跨端同场、有 BOSS 有商店有排行榜。如果你有空,点链接进来打两局,欢迎反馈手感、平衡性或 bug。
下一篇可能会单独写写打击感怎么调、反作弊怎么接,以及移动端适配踩过哪些坑。