chore: move default character package
@@ -32,6 +32,8 @@ qt_add_executable(QtDesktopPet
|
||||
src/character/CharacterPackage.cpp
|
||||
src/character/CharacterPackageLoader.h
|
||||
src/character/CharacterPackageLoader.cpp
|
||||
src/character/CharacterPackageRepository.h
|
||||
src/character/CharacterPackageRepository.cpp
|
||||
src/character/FrameAnimator.h
|
||||
src/character/FrameAnimator.cpp
|
||||
src/config/AIConfig.h
|
||||
|
||||
@@ -10,7 +10,7 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物原型
|
||||
- 鼠标拖动
|
||||
- 右键菜单退出和状态测试
|
||||
- 置顶切换
|
||||
- `shiroko` 角色包读取
|
||||
- `resources/characters/shiroko` 默认角色包读取
|
||||
- PNG 序列帧动画播放
|
||||
- `idle` / `talk` / `think` / `sleep` / `happy` / `drag` / `error` 状态
|
||||
- 托盘显示、隐藏、退出
|
||||
@@ -74,13 +74,13 @@ cmake --build build/mingw-debug
|
||||
当前默认角色包位于:
|
||||
|
||||
```text
|
||||
shiroko/
|
||||
resources/characters/shiroko/
|
||||
```
|
||||
|
||||
基本结构:
|
||||
角色包按 `resources/characters/<characterId>/` 组织,后续新增角色包时放在同级子目录。基本结构:
|
||||
|
||||
```text
|
||||
shiroko/
|
||||
resources/characters/shiroko/
|
||||
character.json
|
||||
preview.png
|
||||
idle/
|
||||
@@ -94,12 +94,6 @@ shiroko/
|
||||
|
||||
当前素材版本为 `2.1.0-stable`,所有帧使用 512x512 透明画布。当前实现会加载当前角色包的各状态帧并按 `character.json` 中的 FPS 播放。
|
||||
|
||||
后续计划将默认角色包位置整理为:
|
||||
|
||||
```text
|
||||
resources/characters/shiroko/
|
||||
```
|
||||
|
||||
## 配置和日志
|
||||
|
||||
应用配置保存到 Qt 标准配置目录:
|
||||
|
||||
@@ -203,7 +203,7 @@ DesktopPet/
|
||||
├── resources/
|
||||
│ ├── icons/
|
||||
│ └── characters/
|
||||
│ └── default_pet/
|
||||
│ └── <character_id>/
|
||||
│ ├── character.json
|
||||
│ ├── preview.png
|
||||
│ ├── idle/
|
||||
@@ -566,8 +566,8 @@ PNG 图片序列 + character.json
|
||||
示例:
|
||||
|
||||
```text
|
||||
characters/
|
||||
└── default_pet/
|
||||
resources/characters/
|
||||
└── <character_id>/
|
||||
├── character.json
|
||||
├── preview.png
|
||||
├── idle/
|
||||
@@ -600,7 +600,7 @@ characters/
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "default_pet",
|
||||
"id": "shiroko",
|
||||
"displayName": "默认桌宠",
|
||||
"author": "DesktopPet",
|
||||
"version": "1.0.0",
|
||||
@@ -1207,7 +1207,7 @@ conversation_history.json
|
||||
"locked": false
|
||||
},
|
||||
"character": {
|
||||
"current": "default_pet"
|
||||
"current": "shiroko"
|
||||
},
|
||||
"performance": {
|
||||
"mode": "standard",
|
||||
@@ -1471,7 +1471,7 @@ void Example::run()
|
||||
```text
|
||||
1. 创建 CharacterPackage
|
||||
2. 创建 CharacterPackageLoader
|
||||
3. 读取 resources/characters/default_pet/character.json
|
||||
3. 读取 resources/characters/shiroko/character.json
|
||||
4. 解析 states
|
||||
5. 加载 idle 状态帧
|
||||
6. 校验资源包
|
||||
@@ -1684,7 +1684,6 @@ MIT License 开源
|
||||
```text
|
||||
1. 设置页内 AI 连通性测试
|
||||
2. 对话历史内存上限和可选持久化
|
||||
3. character.json 中 base、anchor、bubble offset 的解析与应用
|
||||
4. 角色包位置整理和角色切换
|
||||
5. 发布前素材授权确认与打包验证
|
||||
3. 角色包导入和角色切换
|
||||
4. 发布前素材授权确认与打包验证
|
||||
```
|
||||
|
||||
@@ -84,12 +84,12 @@ cmake -S . -B build/mingw-debug -G Ninja `
|
||||
|
||||
## 3. 角色包约定
|
||||
|
||||
`shiroko` 目录作为当前默认角色包。
|
||||
`resources/characters/shiroko` 目录作为当前默认角色包。角色包按 `resources/characters/<characterId>/` 组织,后续新增角色包时放在同级子目录。
|
||||
|
||||
已检查到的结构:
|
||||
|
||||
```text
|
||||
shiroko/
|
||||
resources/characters/shiroko/
|
||||
├── character.json
|
||||
├── preview.png
|
||||
├── README.md
|
||||
@@ -150,7 +150,7 @@ error :20 帧
|
||||
2. 创建 CMakeLists.txt
|
||||
3. 创建 main.cpp
|
||||
4. 创建 src/、resources/ 等基础目录
|
||||
5. 决定 shiroko 是否移动到 resources/characters/shiroko
|
||||
5. 建立 resources/characters/<characterId> 角色包目录约定
|
||||
6. 创建最小 README.md
|
||||
7. 确认 LICENSE 是否采用 MIT
|
||||
```
|
||||
@@ -169,7 +169,7 @@ error :20 帧
|
||||
```text
|
||||
1. 是否创建 .gitignore
|
||||
2. 是否创建 MIT LICENSE
|
||||
3. 是否将 shiroko 移动到 resources/characters/shiroko
|
||||
3. 是否将默认角色包作为文件型内置资源保留在 resources/characters/shiroko
|
||||
4. 是否立即创建最小 Qt 工程
|
||||
```
|
||||
|
||||
@@ -236,7 +236,7 @@ error :20 帧
|
||||
```text
|
||||
1. CharacterPackage
|
||||
2. CharacterPackageLoader
|
||||
3. 读取 shiroko/character.json
|
||||
3. 读取 resources/characters/shiroko/character.json
|
||||
4. 校验 schemaVersion
|
||||
5. 校验 defaultState
|
||||
6. 校验 states
|
||||
@@ -261,7 +261,7 @@ error :20 帧
|
||||
验收标准:
|
||||
|
||||
```text
|
||||
1. 能读取 shiroko/character.json
|
||||
1. 能读取 resources/characters/shiroko/character.json
|
||||
2. 能获取 idle 状态帧路径列表
|
||||
3. 能显示 idle 第一帧
|
||||
4. 不在 paintEvent 中加载图片
|
||||
@@ -531,7 +531,7 @@ error :20 帧
|
||||
|
||||
3. 阶段 2A 角色包最小读取:
|
||||
已有 CharacterPackage / CharacterPackageLoader
|
||||
能读取 shiroko/character.json 并收集状态帧路径
|
||||
能读取 resources/characters/shiroko/character.json 并收集状态帧路径
|
||||
|
||||
4. 阶段 2B idle 帧动画:
|
||||
已新增 AnimationClip / FrameAnimator
|
||||
@@ -574,11 +574,9 @@ error :20 帧
|
||||
当前实现与计划仍存在差异:
|
||||
|
||||
```text
|
||||
1. shiroko 角色包仍位于项目根目录 shiroko/,尚未移动到 resources/characters/shiroko
|
||||
2. SettingsDialog 仍是最小设置界面,尚未包含 AI 测试按钮、角色选择和更完整的分区布局
|
||||
3. CharacterPackage 尚未解析并应用 character.json 中的 base、anchor、bubble offset
|
||||
4. ConversationManager 请求上下文会截取最近 12 条历史,但内存中的 m_history 尚未做最大长度裁剪
|
||||
5. README 和开发文档已开始同步当前进度,但仍需随功能继续维护
|
||||
1. SettingsDialog 仍是最小设置界面,尚未包含完整角色切换流程和更完整的分区布局
|
||||
2. ConversationManager 请求上下文会截取最近 12 条历史,但内存中的 m_history 尚未做最大长度裁剪
|
||||
3. README 和开发文档已开始同步当前进度,但仍需随功能继续维护
|
||||
```
|
||||
|
||||
---
|
||||
@@ -612,10 +610,8 @@ error :20 帧
|
||||
```text
|
||||
1. 完善设置界面:
|
||||
- AI 配置和测试
|
||||
- 角色包路径和角色切换
|
||||
2. 解析并应用角色包 base / anchor / bubble 配置
|
||||
3. 评估是否移动 shiroko 到 resources/characters/shiroko
|
||||
4. 补一轮可重复的稳定性与性能测试记录
|
||||
- 角色包导入和角色切换
|
||||
2. 补一轮可重复的稳定性与性能测试记录
|
||||
```
|
||||
|
||||
---
|
||||
@@ -625,8 +621,7 @@ error :20 帧
|
||||
后续开始写代码前,需要逐项确认:
|
||||
|
||||
```text
|
||||
1. 是否把 shiroko 移动到 resources/characters/shiroko
|
||||
2. shiroko 素材是否允许作为正式开源发布素材继续保留在仓库中
|
||||
3. 设置页下一步先做 AI 测试入口,还是先做角色包配置
|
||||
4. 是否需要把对话历史持久化保存,还是第一版只保留内存会话
|
||||
1. shiroko 素材是否允许作为正式开源发布素材继续保留在仓库中
|
||||
2. 设置页下一步先做 AI 测试入口,还是先做角色包配置
|
||||
3. 是否需要把对话历史持久化保存,还是第一版只保留内存会话
|
||||
```
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
按动画素材规范重新整理:所有帧均为 512x512 透明画布,未裁切角色本体;帧编号连续。
|
||||
|
||||
帧数:idle 30,talk 30,think 30,sleep 30,drag 30,happy 20,error 20。
|
||||
帧数:idle 30,talk 20,think 30,sleep 30,drag 30,happy 20,error 20。
|
||||
|
||||
说明:本版采用稳定坐标系与关键帧扩展方式生成,用于动画调试和桌宠加载器测试。
|
||||
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |