# 月隐守夜者 **Repository Path**: mrjkchen/moonlit-warden ## Basic Information - **Project Name**: 月隐守夜者 - **Description**: 独立的月下神社战斗演示:手绘场景、银发守夜者、狐妖、三种月光法术。HTML Canvas,无第三方运行依赖。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 月隐 · 守夜者 一个独立的 60 秒神社守夜战斗样板。目标是验证角色美术、连续动作、体积感和技能表现。没有账号、内购、真实存档或联网战斗。 ## 运行 Windows 双击 `启动游戏.cmd`,会启动仅绑定 127.0.0.1 的本地服务器并打开浏览器。需要 Node.js 18 或更新版本;当前用户电脑已有 Node。无需 npm install,素材全部随项目提供,运行不访问外部字体或图片服务。 也可在本目录执行: ```sh node server.mjs ``` 打开 http://127.0.0.1:4178 。不要直接双击 index.html;浏览器 ES Modules 需要 HTTP。端口冲突时启动器会在 4178–4188 范围选择可用端口。手动运行可通过 PORT 环境变量改端口。 ## 游玩 - 点击“踏入月色”,进行三轮守夜,第三轮会出现狐之主。 - 点击“先看一场战斗”可观看实际引擎里的自动战斗演示;角色正常移动、施法并受伤,没有修改护体或敌人伤害。点击地面或方向键可接管移动。 - 方向键前后左右移动;A / D 也可左右移动。鼠标右键点击地面,角色会走过去。 - 默认自动发射月刃,可在右下角关闭;左键点击地面也可发射。 - Q 月华斩:前方范围剑气。W 莲华结界:恢复护体并冻结近身敌人。E 天月降临:全场月光攻击。 - 空格瞬步闪避,P / Esc 暂停。失去窗口焦点会自动暂停。 - 竖屏提供左右触摸按钮和技能按钮。竖屏镜头裁切、跟随角色,不拉伸角色。 - 右上“录制片段”保存 8 秒 Canvas 战斗动画。点击“保存片段”下载 WebM;只记录游戏场景,不使用摄像头、麦克风或桌面录屏权限,也不会上传。 - 右上“角色检视”打开独立灰地检视台:切换待机、步行、普攻、挥剑、护盾、大招、受击、闪避;可慢速播放、转身和对比旧版,也可录制 8 秒角色片段。 ## 文件与架构 | 文件 | 用途 | | --- | --- | | index.html / style.css | 场景容器、标题、HUD、技能、响应式布局 | | engine.mjs | 独立战斗状态、移动、碰撞、护盾、波次、胜负和冷却 | | game.js | Canvas 场景、关节动画整合、粒子、技能、输入、声音、录制 | | actor-rig.mjs | 固定分件、肩肘腕与髋膝关节、脚底解算、连续出刀与发束惯性 | | fox-rig.mjs | 同一狐妖图集、内容裁边、脚底锚点、位移驱动的跑步相位 | | character-lab.html / character-lab.js | 独立角色检视、慢速与旧版对照、本地动作录制 | | assets/ | 原创场景、新版角色分件图集、狐妖与旧版对照素材 | | server.mjs / launcher.mjs | 无依赖本地 HTTP 预览与启动 | | tests/*.test.mjs | 战斗规则、动作时序、朝向锁定、骨长、承重与步态边界验证 | 所有角色和背景均为本次使用内置图像生成工具制作的独立素材,没有复制参考游戏的角色、背景或客户端资源。新版主角只使用 `assets/warden-parts.png` 的同一套固定分件;头身尺寸不会随动作换图。图集中头和剑略跨均匀格线,因此 `actor-rig.mjs` 保存核实后的源矩形,不能机械等分裁切。`hero.png`、`walk.png`、`attack.png` 用于旧版对照,`poses.png` 与 `deform.mjs` 保留为早期研究,主战斗不再加载它们。 普攻总长 0.34 秒,在 0.12 秒释放弹道;月华斩总长 0.68 秒,在 0.18 秒生效;大招总长 0.82 秒,在 0.4 秒生效。动画关键姿态使用绝对时间,与引擎事件对应。自动攻击必须有活目标,手动点击空地仍可发射;移动不再逐帧覆盖出招朝向。待机、行走、攻击始终使用相同体块,不通过整体缩放伪造动作。 ## 验证 ```sh npm test node --check game.js node --check actor-rig.mjs node --check fox-rig.mjs node --check character-lab.js node --check server.mjs node --check launcher.mjs ``` 测试覆盖:暂停与重开、技能冷却、护盾、移动边界、攻击释放时刻、空目标处理、朝向锁定、碰撞和胜负、双骨长度、支撑脚不滑动、动作收招、不可达目标与重心变化。浏览器需要另行验证关节拼接、实际动作、帧率、键鼠/触摸、录制和小屏遮挡;规则测试不替代画面验收。新版验收先看灰地角色,再看实际战斗,不能只以背景好看或绘制 60 FPS 判断动画合格。 ## 当前限制 这是带体积明暗的二维分件角色与纵深排序构成的战斗样板。主角使用代码实现的关节层级和双骨脚底解算,素材明暗由美术绘制;尚没有三维网格、实时法线照明、多角度角色模型或 Spine 编辑源文件。转身仍使用镜像,纵向移动采用同一短腿步态。狐妖继续使用生成图集,已固定内容下沿、统一缩放并减少不一致帧,仍有身形漂移;攻击是短促重心表现与爪痕,没有完整独立敌人攻击图集。音效仍为简单合成音,没有专业配乐。 ## 协作与托管 源码仓库:https://gitee.com/mrjkchen/moonlit-warden 。后续修改遵循 AGENTS.md,完成验证后提交推送并核对本地与远程提交。源码同步不代表产品上线、抖音提审或发布。