|
| 1 | +# Archipelago Art Direction |
| 2 | + |
| 3 | +更新时间:2026-08-08 |
| 4 | + |
| 5 | +这份文档记录 Archipelago World 的视觉语言和 UI 资产处理经验。它约束的是 |
| 6 | +海岛世界自己的表现层,不约束 Cosmic World 或其他未来 World。 |
| 7 | + |
| 8 | +## 核心方向 |
| 9 | + |
| 10 | +Archipelago UI 应该来自航海图、岛屿志、手绘边注、罗盘、船舵、帆布、 |
| 11 | +羊皮纸、低多边形海岸线和温暖墨迹,而不是后台仪表盘、现代游戏手柄、 |
| 12 | +霓虹科幻面板或 Cosmic World 的深色空间站语言。 |
| 13 | + |
| 14 | +推荐气质: |
| 15 | + |
| 16 | +- 温暖、可触摸、有航海道具感。 |
| 17 | +- 奶油纸色、暖金、木色、旧铜色、柔和海蓝作为辅助。 |
| 18 | +- 控件像世界内的物件,而不是覆盖在画面上的网页组件。 |
| 19 | +- 文字少,优先用道具形状表达功能。 |
| 20 | + |
| 21 | +避免: |
| 22 | + |
| 23 | +- 大面积高饱和蓝色圆盘。 |
| 24 | +- 纯 CSS 画出的现代圆形按钮。 |
| 25 | +- 闪电、火箭、霓虹加速等脱离小船航行语义的符号。 |
| 26 | +- 方形 AI 生成图直接贴进 UI,保留背景、光晕或画布边缘。 |
| 27 | + |
| 28 | +## 移动端航行控件 |
| 29 | + |
| 30 | +移动端使用两类控件: |
| 31 | + |
| 32 | +- 航向:四枚独立的按住方向键,使用透明航迹光环和轻玻璃质感。 |
| 33 | +- 加速:顺风帆或鼓风帆徽章,表达“借风加速”,不要使用文字按钮。 |
| 34 | + |
| 35 | +交互逻辑仍属于 `vendor/island-sea/src/three/world-controls.ts`;Vue 组件只把 |
| 36 | +触摸输入映射成 `throttle`、`steer` 和 `sprint`。移动端 UI 资产不应该直接 |
| 37 | +修改小船、相机或导航状态。 |
| 38 | + |
| 39 | +方向控件需要满足: |
| 40 | + |
| 41 | +- 不使用摇杆、拖拽球或需要精细手势定位的交互。 |
| 42 | +- 四个方向键保持独立,允许同时按住两个方向形成斜向输入。 |
| 43 | +- 海面应该透过控件可见,避免厚重的深色实心底盘。 |
| 44 | +- 靠岸但未打开档案时继续显示,只有进入 `landed` 档案状态才隐藏。 |
| 45 | + |
| 46 | +## AI 图片资产处理经验 |
| 47 | + |
| 48 | +AI 生成的控件图可以提高质感,但必须经过项目化处理后再接入: |
| 49 | + |
| 50 | +1. 生成时要求透明 PNG。如果拿到的是带背景的方形图,不要直接使用。 |
| 51 | +2. 如果图片有渐变背景或光晕,自动抠图可能会把光晕识别成主体。 |
| 52 | +3. 对规则道具优先使用可控遮罩:例如船舵罗盘可以用主圆盘加握柄的几何遮罩。 |
| 53 | +4. 输出成带透明通道的稳定正方形资产,例如 `512x512`。 |
| 54 | +5. 保存到 World 自己的资产目录,例如 `vendor/island-sea/src/assets/`。 |
| 55 | +6. 让 Vite 通过 CSS 或模块引用打包资产,不要引用仓库根目录里的临时图片。 |
| 56 | + |
| 57 | +本次罗盘实验的结论: |
| 58 | + |
| 59 | +- 罗盘图片可以作为视觉参考,但不适合继续承担摇杆底盘。 |
| 60 | +- 用户不喜欢摇杆本身时,替换摇杆皮肤不能解决交互问题,应更换交互模型。 |
| 61 | +- 已撤回生成的罗盘运行时资产,仓库不提交未被代码引用的根目录源图。 |
| 62 | +- 当前方向控件使用 CSS 轻玻璃按钮;加速图标使用可销毁的 Three.js 风帆模型。 |
| 63 | + |
| 64 | +踩坑记录: |
| 65 | + |
| 66 | +- 直接用 GrabCut 自动抠图时,暖色背景光晕被误判为主体,边缘会像一块不规则底板。 |
| 67 | +- Windows + PowerShell + Python/OpenCV 读取中文文件名时,`cv2.imread()` 可能失败。 |
| 68 | + 更稳的方式是用 `Path.glob()` 找文件,并通过 `np.fromfile()` + `cv2.imdecode()` 读取。 |
| 69 | + |
| 70 | +## 验收标准 |
| 71 | + |
| 72 | +新增或替换 Archipelago UI 资产时,至少确认: |
| 73 | + |
| 74 | +- 资产边缘没有方形底、背景晕或明显抠图毛边。 |
| 75 | +- 在移动端海面背景上仍然清晰,但不会抢过岛屿、小船和小地图。 |
| 76 | +- 触控区域足够大,视觉资产可以小一些,但按钮命中区域不能太小。 |
| 77 | +- 靠岸状态仍可操作,按下方向键后能够重新驶离岛屿。 |
| 78 | +- 销毁、登岛、暂停或 Portal 转场时,移动输入会清零。 |
| 79 | +- `npm run build:archipelago` 能通过,并且构建产物包含所需模型与样式。 |
0 commit comments