世界事实与窗口分离
地形、世界对象、活动进度和奖励保存在世界状态中。桌宠、家园与面板读取这些状态;关闭一个面板,不应清空世界,也不应重复发放一次奖励。
PERSISTENT WORLD · SYSTEM DESIGN
正在制作中 · macOS 本地技术研究
围绕世界状态、角色生命周期与本地恢复,探索一个桌面世界怎样持续运行、更新和接续。
WORLD STATE
Wisteria 是一个以 Godot 为宿主的本地桌面世界。技术上的核心问题,是让世界进度、活动和角色表现分别拥有清楚的生命周期。
地形、世界对象、活动进度和奖励保存在世界状态中。桌宠、家园与面板读取这些状态;关闭一个面板,不应清空世界,也不应重复发放一次奖励。
钓鱼、远行、手动旅程与桌面防线汇入统一活动摘要。导航只负责进入对应活动,状态推进和结算仍由各自的运行时负责。
桌面防线使用同一份运行状态、时钟和随机序列。隐藏表现后仍可推进,显式暂停则停止;离线补算有八小时上限,避免无界追赶。
程序地形、世界对象和变更记录共同描述一个世界。调整显示尺度或重建可见区域时,既有世界身份与进度继续保留。
ANIMATION RUNTIME
独立骨骼动画运行时把数据解析、时间轴求值、骨骼与约束计算、网格绘制分开,让播放行为可以独立检查,也能复用于不同表现入口。
解析骨骼、皮肤、附件和动画数据,确认所选素材具备需要的播放能力。
按时间轴计算变换与形变,处理骨骼继承、IK、Transform 与 Path 等已支持约束。
将姿态交给渲染层,保持裁剪、网格和透明窗口中的绘制边界。
结束播放时清理旧实例和回调,让新的角色或皮肤取得表现资源。
兼容范围围绕已接入素材持续验证;暂未提供面向任意骨骼素材的通用插件下载。
CHARACTER LIFECYCLE
角色与皮肤切换先校验素材并保存选择,再依次处理旧角色离场、实例替换和新角色入场。每一侧只播放素材实际提供的动画。
切换期间再次选择时,保留最后一次成功保存的目标。素材加载或偏好保存失败,仍保留当前有效角色。
变身与特效可以超出角色常态轮廓,但不会因此扩大桌面点击区域。角色锚点、大小与交互命中分别处理。
隐藏、进入家园或退出时收束过渡并清理回调。完成后恢复待机或睡眠状态,避免动画结束后遗留输入锁定。
SAVE AND RECOVERY
存档需要同时保存世界身份、角色偏好与活动进度。恢复关注的不只是文件能否读回,还包括旧运行是否沿原有规则继续、同一结果是否只结算一次。
旧版本正在运行的战斗保留原有刷怪、掉落与随机顺序,在明确的结算边界进入新内容。世界升级时保留可恢复的原始状态。
开发与候选版本使用独立档案;检查迁移和恢复时使用存档副本,让试验不会推进日常世界的时间或奖励。
与 SakuraGameFramework 的本地对照围绕共享输入、状态摘要和确定性结果展开。当前用于比较行为契约,尚未替换正式世界的运行时。