Files
tianshu-engine/FUTURE.md

8.1 KiB
Raw Permalink Blame History

远期功能扩展笔记

以下功能在讨论中出现但暂不纳入实施计划,后续需要扩展时参考。

云存档(移自 P16

  • 存档上传/下载 API 接口设计REST: PUT /saves/:slot, GET /saves
  • engine/systems/SaveSystem.ts 升级 — save/load 支持 remote: boolean 参数
  • 登录态管理(不强制登录,本地存档为主,云存档为可选)
  • 存档同步冲突解决策略(最后写入胜出 / 时间戳比对)

自适应码率(移自 P16

  • engine/core/VideoManager.ts — 支持 HLS.m3u8)和 DASH.mpd)流媒体源
  • SceneNode.videoUrl 支持多码率:{ auto: '/videos/hls/scene.m3u8', hd: '/videos/scene_1080p.mp4' }
  • 网络质量检测(navigator.connection API自动降级

代码清理

  • 移除 flag 机制StateManager.flags / hasFlag / setFlag / clearFlag 全部移除; Condition.op: 'hasFlag'Effect.type: 'toggleFlag' 删除; 统一用 variable == 1 / set: variable, value: 1 替代; SaveSystem 存档移除 flags 字段P8 不再需要 defaultFlags 变量机制完全能覆盖 flag 功能flag 是早期过度设计

P7 全屏模式 - 扩展

  • 自动进入全屏 — 点击"开始游戏"时同步 requestFullscreen(),利用用户手势
  • UI 自动隐藏 — 播放中 3 秒无鼠标移动自动隐藏菜单按钮和光标(pointer-events: none),鼠标移动恢复
  • Pointer LockrequestPointerLock() 锁定鼠标,防移出窗口,配合热区点击和 QTE
  • 移动端适配 — iOS Safari webkitEnterFullscreenAndroid Chrome 视口适配

P8 章节选择 - 扩展

  • 章节缩略图懒加载
  • 章节解锁动画
  • 按进度百分比展示章节完成度

P9 跳过/倍速 - 扩展

  • 智能跳过(仅跳过"对话"部分,保留"动作"部分)
  • 快捷键自定义
  • 2x/4x/8x 多档位

P10b 手柄导航 — 远期Gamepad API

以下功能在 P10a 键盘导航完成后,作为手柄支持的第二期实现:

手柄映射

操作 手柄按键
选项导航 左摇杆 / 方向键(↑↓←→)
确认 A 键Xbox/ ×PS
取消/菜单 B 键Xbox/ ○ 键PS
QTE 按键 A/B/X/Y 自动映射到 QTE 定义的 keys 顺序
跳过 Start 键
倍速 LB / RB 循环

QTE 设备感知

  • 键盘连接时 QTE 提示显示键盘按键名称空格、WASD
  • 手柄连接时 QTE 提示自动切换为手柄按钮图标A/B/X/Y + 方向图标)
  • QTESystem 升级:输入源切换 + 按键提示动态渲染

视觉反馈

  • QTE Overlay 的中央圆圈根据设备动态渲染(键盘=方块内字母,手柄=圆形内图标)
  • 手柄连接后自动隐藏鼠标光标,inputMode = 'gamepad'
  • 手柄断连后自动恢复键盘模式,不再依赖手柄

实现要点

  • engine/systems/InputSystem.ts 升级 — gamepadconnected/gamepaddisconnected 事件监听
  • Gamepad API 轮询rAF 中 navigator.getGamepads() 读取摇杆/按键状态)
  • QTE 手柄映射逻辑:方向键/摇杆 → keys[] 中的方向匹配,按钮 → A/B/X/Y
  • src/components/QTEOverlay.vue 升级 — 根据 inputMode 渲染不同图标
  • 键位映射配置持久化IndexedDB
  • 手柄震动反馈(GamepadHapticActuator.pulse()
  • 手柄热插拔检测 + 自动切换 inputMode

P11 多语言字幕 - 扩展

  • 字幕字体/大小/颜色/背景自定义
  • 语音语言独立轨道(语音和字幕可不同语言)
  • 自动检测浏览器语言

P12 场景过渡特效 - 扩展

  • 可自定义转场JSON 中定义颜色/时长/曲线)
  • 转场预览(编辑器中实时预览)
  • 条件转场(根据 variables 选择不同转场类型)

P13 重玩驱动 - 扩展

  • Steam Achievement API 集成
  • 排行榜(最快通关、最少死亡等)
  • 分享结局截图到社交媒体

P14 沉浸感 - 扩展

  • SFX 空间化3D AudioWeb Audio PannerNode
  • 对话轮动画曲线自定义
  • 画面震动强度/频率可配置
  • 动态字幕说话人识别AI 自动标注)

P15 章节回顾 — 关键节点时间线图Life is Strange 方案)

背景

当前 P15 的章节回顾是列表模式BFS 遍历可达场景 + visited/unvisited 列表 + 完成度百分比 + 条件提示),已满足核心目标——知道哪些场景到过、漏了什么、怎么解锁。

原计划使用 Vue Flow 完整分支图,但经评估后确认:分支数多时(多父同子、回边循环),自动布局的流程图会变成"意大利面",玩家理解成本反高于简单列表。

业界对比

方案 做法 清晰度 成本
Detroit 手绘图 美术逐章手工设计 InfoGraphic 极高 极高
Life is Strange 时间线 只画 keyMoment 标记的关键节点Dagre 自动排成水平时间线,跳过琐碎小场景
Telltale 纯统计 片尾弹出 "52% 玩家选了救 Doug",不画任何图 N/A 极低
当前列表版 BFS 遍历全场景 + visited/unvisited 标记 已实现

实施路线

当需要可视化展示时,采用 Life is Strange 时间线方案

数据层:

// engine/types.ts
interface SceneNode {
  // ...existing fields
  keyMoment?: boolean  // 标记为"关键节点",只有这些节点出现在时间线图中
}

布局引擎:

  • 复用编辑器已有的 Dagre 布局(editor/composables/useLayout.ts
  • rankdir: 'LR' 从左到右水平排列
  • 只遍历 keyMoment === true 的场景,普通场景跳过不渲染
  • 仅展示关键节点之间的 choices / nextScene / QTE 跳转关系

视觉设计:

  • visited 节点:绿色实心
  • unvisited 节点:灰色虚线边框
  • 回边(循环引用):虚线 + 半透明
  • 条件提示:小锁图标 + 文本(如 🔒 trust >= 80
  • 普通小场景完全不出现,避免线路交织

组件:

  • src/components/ChapterTimeline.vue — 新建,只读 Vue Flow + Dagre 时间线
  • ChapterRecap.vue 并列,不同入口或同一个面板的切换 Tab

优先级

低。列表版已满足 P15 核心目标,时间线图是锦上添花的视觉增强。

P15+ 平台分发 - 扩展

  • PWA 支持(离线播放、安装到桌面)
  • Web Monetization API 付费解锁章节
  • 开发者 API第三方创作工具接入

通用扩展

  • 性能监控面板FPS、内存、网络
  • 自动化测试框架(剧情路径遍历、回归测试)
  • 热更新支持(不刷新页面替换 JSON 和视频)
  • WebSocket 多人同步(观察者模式、投票选分支)

AI化

在引擎的基础上深入融合AI由AI去自动化完成引擎的使用。

AI的定位一个对使用引擎降本增效的工具。懂业务的人还是主题AI是辅助人的。

一个新技术的出现会帮助人类实现两种效果:突破式效果,帮助人类突破了一种以前从没有的能力,比如飞机帮助人类飞行,飞机之前人类无论如何都不能起飞的;降本增效式效果,改善了人类已有能力的效果,比如汽车帮助人类跑的更快了。

AI目前来看还是降本增效式效果没有AI的帮助人类也能做到现在AI能做的效果只是成本高点、速度慢点。

无论一个工具如何强大,只要在懂业务的人的手里才能发挥效果。比如缝纫机的出现,并没有取代真正的衣服制作者,并不会让不懂衣服制作的所有人都能制作衣服,善于使用缝纫机的人还是本身就懂衣服制作的人,即使没有缝纫机,他也知道如何制作衣服,只是缝纫机更快更高质量的帮助他完成了衣服的制作。

AI工具也一样一个不懂电影游戏制作的人只靠AI是做不出高质量的东西的只有本身就懂电影游戏制作的人无论使用啥工具都能做出合格的产品。

本引擎就是帮助懂电影游戏制作的人更快更高质量的完成产品AI是帮助引擎更容易使用达到降本增效的效果。

引擎帮助人降本增效AI帮助引擎更容易被使用和提升产出效率。