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