活世界 LivingWorld 0.1（绿色免安装版）
==========================================

自带 Java 运行时（jre 目录），不需要预先装 JDK/JRE，解压就能用。

【怎么启动】
1. 把整个压缩包解压到一个不含中文和空格的路径（例如 D:\LivingWorld）。
   注意：一定要完整解压，不要在压缩包里直接双击，否则找不到 jre。
2. 双击 start.cmd（或 start.bat，两个一样）。
   它会自己等世界起来，然后弹出一个「活世界 LivingWorld」窗口——那就是世界本身，
   不用手敲网址，也不用手动点模型树。
3. 第一次打开时会盖一层引导遮罩，让你填自己的 API Key（见下一节）。
4. **关掉「活世界」窗口就是关闭世界**：进程会一起退出，不会在任务管理器里残留 java.exe。
   （聊天窗口是独立的，关掉它不影响世界；关掉世界窗口才会全退。）

   如果自动开窗失败（很少见），控制台会打印地址，手动打开即可：
   http://127.0.0.1:9001/do?sc=_local.world.WorldView
   （9001 被占用时它会往后找 9002、9003…，以控制台日志为准）

【第一次运行：填你自己的 API Key】
发布包里不含任何人的 key（所有配置文件的 key 字段都已清空），
所以第一次打开页面会盖一层遮罩，让你填 API Key / 模型 / 接口地址（默认 DeepSeek）。
填完立刻生效，不用重启。

  key 只保存在本机：
  xworker\projects\_local\things\_local\xworker\config\DefaultChatService.dml
  不联网、不上传。

也可以直接调接口设置：
  http://127.0.0.1:9001/do?sc=_local.world.WorldApi&cmd=saveApiKey&key=sk-你的key&model=deepseek-flash
查看当前状态：
  http://127.0.0.1:9001/do?sc=_local.world.WorldApi&cmd=setupStatus

【角色为什么会自己动】
世界支持骨骼动画：加载 glb/glTF 模型时会把模型自带的动画片段一起带进来，
每个角色实例有自己的 AnimationMixer，按名字挑动作并用位置变化判断状态——
站着播 idle，移动时切 walk/run，两段之间做 0.25 秒淡入淡出。
自带资产（全部为允许再分发的开放许可，逐个核对过，详见 THIRD-PARTY-NOTICES.txt）：
  RobotExpressive.glb  14 段（Dance/Death/Idle/Jump/No/Punch…）   CC0
  Fox.glb              带动画（Survey/Walk/Run）                 CC BY 4.0（需署名）
  BoomBox.glb          静态物件                                   CC0
  TrafficCone.glb      静态物件                                   CC BY 4.0（需署名）
模型没带动画的就保持静止，不会报错。
页面的自检回传里能看到实际生效情况：anims=实例数、anim_t=mixer 时间、anim_clips=片段名。

【目录结构】
jre\                     精简 Java 运行时（jlink 自本机 JDK，当前是 17；约 43MB，目标机不用装 Java）
lib\                     运行时依赖（第三方库 + xworker 模块 + 世界启动器，已裁掉无关的桌面功能）
xworker\config\          应用配置
xworker\os\              SWT 原生库（Windows 版）
xworker\webroot\         前端资源（three.js + GLTF/DRACO + 14 个 3D 资产）
xworker\databases\       模型索引库（见下）
xworker\projects\_local\things\_local\world\   世界本体（首次启动从种子生成，可改可存）
    说明：世界并不随包携带。它作为“种子”住在 lib 里的
    xworker_thingeditor_common.jar（模型路径 xworker.things.livingworld.world.*，
    只读、可 diff），第一次启动时由 xworker.things.livingworld.Setup 生成成
    _local.world.*（可写）。为什么要拆：jar 里的模型不能 save，而世界要能改。
    DemoWorld.dml        舞台：场景、帧率、初始化
    WorldView.dml        前端页面（Three.js + 世界动作 + 骨骼动画）
    WorldApi.dml         HTTP 接口（state/talk/各种编辑命令）
    WorldToolSet.dml     给智能体用的世界工具（34 个）
    people\*.dml         7 个人（每人一个会话模型：人格、工具清单）
    assets\*.dml         3D 资产库
    scenes\ objects\     场景模板、会自己干活的物件类型
    Population.dml       人口登记簿（绝大多数人只是数据，不是对象）
    GlobalBoard.dml      全局看板

【databases\xworker.db 是什么】
它是 XWorker 的“模型索引库”（sqlite），存的是模型之间的关联索引
（tblThingRegists：谁注册在谁下面、在哪个模型管理器里），
不含任何世界内容、不含对话、不含 key。
包里预置了一个 4KB 的空库（表 + 3 个索引都建好了），所以首次启动不会刷
"no such table" 告警；用起来之后它会自己长大（开发机上一个月约 60MB）。
删掉它也无害：下次启动会重建一个空库，只是日志里会多几行告警。

【操作（3D 编辑器习惯）】
左键拖 = 转视角；Ctrl+左键拖 = 拖物体 / 空地平移；右键或 Alt = 转视角；
滚轮 = 远近；WASD 平移；Q/E 升降；F 聚焦；R 复位。
侧栏 5 块和小地图都能折叠（状态记在浏览器 localStorage 里）。

【窗口是怎么开的】
start.bat 启动的是 xworker.ide.LivingWorldLauncher，它只开世界窗口：
引擎初始化（复用 XWorkerExplorer.initEngine）→ 起 Web 服务器 →
轮询 GlobalConfig 里记的端口确认世界就绪 → 开一个最大化窗口加载世界页面（WebView2 内核）。

模型管理器不会被启动——这个世界现在只剩一个窗口，就是世界本身。
需要改模型时要模型管理器？用命令行加参数启动：
    jre\bin\java.exe -cp "lib\*" xworker.ide.LivingWorldLauncher -ide
（或者直接改 start.bat 在最后加 -ide；那样就是原来的 IDE 入口。）

【已知限制】
1. 世界模型里有约 350 处写死的 _local.world. 绝对引用，
   所以世界必须待在 xworker\projects\_local\things\_local\world，
   不要改这个目录名，也不要试图“复制一份变成第二个世界”——那需要先做引用重写。
2. 跨场景靠“门”这种物件，没有真正的空间连通；挂接只传平移，不传旋转/缩放。
3. 看板没有删除/过期；物件 Actor 目前只有咖啡机一个例子。
4. 骨骼动画按“位置有没有变化”判断走/站，瞬移（goto）会被当成走一步再停下；
   想更细（挥手、坐下、死亡）需要给模型加动作语义，现在还没做。
5. 日志里可能出现 "open editor error: Widget is disposed"（IDE 启动时打开默认编辑器的
   既有噪声，开发机日志里一样有），不影响世界运行。

【自己改世界】
这个世界的所有东西都是模型，改模型就是改世界，运行中生效不用重启：
- 页面里直接拖物件、放卡、点人对话
- 智能体手里有 34 个世界工具（造人、造场景、改人格、改节奏、多地图、授权、形象、物件…）
  你可以直接跟它说“在这放一台咖啡机”或“把客厅改成晚上”。

【版权与许可】
Copyright (c) 2007-2026 xworker.org
本程序以 Apache License 2.0 发布，全文见同目录 LICENSE 文件。
    http://www.apache.org/licenses/LICENSE-2.0

本程序包含第三方组件（Java 运行时、three.js、3D 模型、若干 Java 库），
各自的版权与许可条件见同目录 THIRD-PARTY-NOTICES.txt。

包内的 3D 模型均为允许再分发的开放许可（CC0 或 CC BY 4.0），
已逐个核对原始仓库的许可声明；其中 CC BY 的需要保留署名。
曾用过的模型有 11 个因许可无法确认或含 NC 条款而移除，
清单与理由见同目录 THIRD-PARTY-NOTICES.txt 第三节。

【这份README说明的是哪个版本】
活世界 0.1 · 基于 XWorker 2.0.5-SNAPSHOT 构建（SNAPSHOT 表示仍在演进，
不保证接口稳定）。具体构建时间见 zip 文件名或发布页。