Move big fish runtime to frontend
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-27 21:12:43 +08:00
parent dc619817a1
commit 2792df03a6
42 changed files with 1058 additions and 1895 deletions

View File

@@ -2,26 +2,34 @@
## 背景
当前大鱼运行时使用左下固定虚拟摇杆,玩家必须点到摇杆区域才能移动。移动端实际体验应改为屏幕任意位置触控:第一次触点只建立方向原点,不直接产生移动;后续触点相对原点形成方向向量,角色按恒定速度朝方向行动。
当前大鱼运行时使用左下固定虚拟摇杆,玩家必须点到摇杆区域才能移动。移动端实际体验应改为屏幕任意位置触控:按住屏幕时不再用“触点相对按下原点”的距离判断方向,而是按固定采样间隔比较“上一次触点位置”和“当前触点位置”的位移方向,角色按恒定速度朝采样方向行动。
## 交互规则
1. 玩家在玩法舞台内按下时,记录第一个触点坐标为本次操作原点。
1. 玩家在玩法舞台内按下时,记录当前触点坐标为采样起点。
2. 按下瞬间提交 `{ x: 0, y: 0 }`,保证一开始玩家不动。
3. 手指/鼠标移动后,用“当前触点 - 点”的向量计算方向。
4. 输入只表达方向,不表达速度;超过死区后归一化为单位方向向量。
5. 松开或取消触控后,清空操作原点并提交 `{ x: 0, y: 0 }`
6. 前端继续定时提交当前方向,即使没有玩家输入也提交零向量,让后端或本地直达局持续推进世界 tick
3. 按住期间每 `0.1` 秒采样一次当前触点坐标,并用“当前触点 - 上一次采样触点”的位移计算方向。
4. 输入只表达方向,不表达速度;超过采样死区后归一化为单位方向向量,未超过死区则沿用上一段有效方向
5. 每次采样完成后,把当前触点写为下一次采样的“上一次位置”
6. 松开或取消触控后,清空采样状态并提交 `{ x: 0, y: 0 }`
7. 前端继续定时提交当前方向,即使没有玩家输入也提交零向量,让后端或本地直达局持续推进世界 tick。
## 本地直达局边界
- `/big-fish` 的本地占位局必须在玩家未操作时继续移动野生对象
- 大鱼吃小鱼的最终游玩部分统一放在前端本地 runtime不再调用后端 start/input/get run 接口
- 后端只保留 Agent 创作、草稿编译、资产生成、发布和作品列表;不负责移动、碰撞、刷鱼、合成、屏外清理或胜负模拟。
- `/big-fish` 的本地直达局和平台内测试玩法必须共用前端本地 runtime并在玩家未操作时继续移动野生对象。
- 玩家速度保持恒定,只由方向决定移动方向。
- 野生对象使用确定性游动规则,避免直达入口看起来像静态截图。
## 验收口径
1. 在舞台任意位置按下时玩家不立即移动。
2. 按住并拖动后,玩家朝拖动方向恒速移动
2. 按住并拖动后,玩家方向来自最近 `0.1` 秒位移,而不是来自按下原点
3. 松开后玩家停止。
4. 不操作时野生对象仍会持续游动。
## 资产生成补充口径
- 大鱼实体主图、`idle_float``move_swim` 动作图都按 RPG 角色资产口径处理:单体完整入镜、中心构图、轮廓清晰、透明背景、无 UI/文字/水印。
- 场地背景只生成环境不生成规则说明、UI 或巨大主体遮挡;画面元素要少,中央活动区域要大,边缘只保留少量出生区提示。