英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
墨浪
一款原汁原味的 Splatoon 风格 4v4 turf-war 射击游戏,可在浏览器中运行。
在地面上涂色,通过你的墨水游泳,超越对手队伍的领地。
▶ 立即播放 · 控制 · 在线 · 本地运行 · 工作原理 · 贡献
功能
- 游戏模式,4 对 4。 区域战争(涂满大部分地面获胜)和区域控制(保持活区倒计时从 100 开始 — 侧区轮换,惩罚,加时)。可以与三种难度等级的机器人对战。
- 与朋友在线。 创建私人房间,分享五字符代码,最多八名玩家在大厅中排队,带着他们的装备和外观。空缺位置由机器人填补;如果有人掉线,机器人将在比赛中接手他们的乌贼小子。
- 乌贼形态。 按住潜入墨水中:快速游动,补充墨水,爬上涂墨墙壁,跳跃水面间隙。
- 十二种武器,各有不同手感:喷射器、双火手枪、伞形防护盾(霰弹发动盾)、爆裂发射器、旋风旋转器、闪光充能枪、潮汐弓(三箭,两圈充能)、涌浪滚筒、刷子挥动、盐水短剑(充能一击刀)、海绵拳套(墨水拳,充能跳跃,墙壁附着)和污水桶。主武器可与 15 种副武器和 19 种特殊武器混搭。
- 七个场景,白天或黄昏。 潮水广场、路线终点站、帆船码头、盐盘盆地、十字路口市场、锁门运河和露台高地,每个都是现实中的地点,各自有独特布局。部分场景在区域控制模式下会更改少量元素。
- 像液体一样的墨水。 墨水扩散并沉积,新墨水光滑且会干,水珠顺墙流下,游泳会在水面留下水纹。
- 可以真正阅读的地图。 按住 Tab,摄像机抬高进入倾斜移轴的现场舞台模型,显示你队伍的标记并可一键超级跳跃。
- 储物柜。 选择你的乌贼小子:触手样式、头饰、面部、服装。
- 一切都是程序生成的。 角色、动画、武器、纹理、道具、音效和音乐全部通过代码生成。除两个字体外,没有任何下载资产。
控制
| 动作 | 键盘 / 鼠标 | 游戏手柄 |
|---|---|---|
| 移动 | W A S D | 左摇杆 |
| 瞄准 | 鼠标 | 右摇杆 |
| 射击 | 鼠标左键 | RT |
| 乌贼形态 | Shift | LT |
| 跳跃 / 闪避翻滚 | Space | A |
| 副武器(炸弹) | 鼠标右键 / E | RB |
| 必杀技 | F | Y |
| 地图 超级跳跃 | 按住 Tab 或 M,然后按 1–4 或点击一个标记 | 查看 |
| 暂停 | Esc | Start |
游戏手柄可在托管的(https)版本上使用。在普通 http:// 局域网地址上,浏览器会阻止使用 Gamepad API。
在线游戏
从主菜单选择 在线,然后选择 创建房间 并将代码发送给你的朋友(或者选择 加入房间 并输入他们的代码)。房主选择舞台、时间、比赛长度以及是否用机器人填充空位;其他人选择队伍、武器和外观并准备就绪。阵容、表情和准备状态对房间中的每个人都是实时可见的。
房间运行在一个微小的中继上(一个 Cloudflare Worker,每个房间一个 Durable Object,位于 server/)。它只转发消息:每个玩家模拟自己的鱿鱼小子并进行流式传输,其他人则通过相同的动画系统在大约延迟十分之一秒的平滑时间线上绘制它。工作原理以及测量它所用的工具,可以在 docs/NET.md 中找到。
要在自己的网络上在线游戏,请在游戏旁运行中继:
npm install # once: the relay runs on wrangler
npm run relay # ws://<this machine>:8787
从 localhost 或局域网地址打开的页面会自动使用该中继;?relay=wss://… 可以将其指向其他任何地方。
本地运行
没有构建步骤。任何静态文件服务器都可以;附带的服务器也可以为你的局域网提供服务,并发送无缓存头,因此模块更新永远不会过时。
git clone https://github.com/jaydendavisnc/inkwave.git
cd inkwave
npm install # Electron + the headless tools
npm start # the desktop app (Electron)
npm run serve # or the web version: http://localhost:8490
npm run package # build the macOS app into dist/ (arm64 + x64)
可选:将你自己的音乐放入 songs/ 文件夹(参见 songs/README.md);否则将播放程序生成的原声音乐。
有用的 URL 参数:?map=halyard&time=dusk 选择一个关卡,&autostart=180 跳过菜单进入 180 秒比赛,&autopilot 让机器人为你操作。
npm install # once, for the headless tools
npm run check # syntax-check every module
npm run smoke # boot + 8 s of autopilot in headless Chrome, fails on console errors
npm run build # assemble dist/ (game + only the three.js addons it imports)
npm run check-maps # sanity-check every stage layout (and its Zone Control variant)
Bot 匹配以无头和静音模式运行以进行调试:MAP=halyard MODE=turf SECS=180 npm run botlab(参见 tools/botlab/README.md)。在中继运行时,npm run net-test 会在无头客户端之间进行真实比赛,并报告每个屏幕显示的内容(参见 docs/NET.md)。
工作原理
- 墨水在纹理空间中绘制。 每个可绘制的面都有一个4K纹理图集的区域;斑点在GPU上绘制,同时粗略的CPU网格保持草地分数和游戏查询同步。关卡着色器将墨水叠加在表面上,带有其自身的高度、光泽和湿度。详见
src/world/paint.js和src/world/inkShading.js。 - 关卡是数据。 布局是一半竞技场的盒子和斜坡列表;另一半是180°旋转,因此两队总是获得相同的场地。环境遮蔽离线烘焙(
tools/bake-ao.mjs)。详见src/world/maps.js。 - 角色完全程序化。 几何体、材质、60骨骼绑定以及所有动画(移动、乌贼形态、武器姿势、次级动作)都是代码,通过基于弹簧的姿势系统驱动。详见
docs/RIG.md。 - 系统通过事件交流。 武器、角色和比赛会发出类型化事件;效果、HUD 和音频订阅这些事件。契约记录在
docs/EVENTS.md和docs/CONTRACTS.md。 - 确定性工具。 游戏提供冻结/步进调试接口,因此影像帧、操控测量和机器人模拟可逐帧重复 (
tools/film.py,tools/measure-handling.mjs)。
渲染使用 three.js r186(内置模块,纯ES模块通过导入映射)并配有 GTAO、泛光和自定义色彩处理。
浏览器支持
目标浏览器是 Chrome 和 Edge;Firefox 可以运行。Safari 可以运行,但速度较慢。对于高预设,建议使用独立或较新的集成 GPU;设置菜单中有中等和低级选项。
贡献
欢迎提出问题和拉取请求。请阅读 CONTRIBUTING.md 以了解项目布局和首先要运行的检查。
许可
MIT © 2026 Jayden Davis。INKWAVE是一个独立项目,与任天堂无关;《Splatoon》是任天堂的商标。
- 本文标题:inkwave - 基于 three.js 的浏览器版 Splatoon
- 本文链接:https://www.cn121.com/h5game/jaydendavisnc-inkwave.html
- 原项目:jaydendavisnc/inkwave 版权归原作者 jaydendavisnc 及贡献者所有
- 收录信息:本站于 2026-10-04 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 jaydendavisnc/inkwave。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。