# Conflicts:
#	.obsidian/workspace.json
#	4Archives/宠物宇宙/用户卡及游戏信息处理过程设计文档.md
This commit is contained in:
zzzisfunnyboy
2025-06-12 00:22:51 +08:00
297 changed files with 934 additions and 93 deletions

3
.obsidian/app.json vendored
View File

@@ -1,4 +1,5 @@
{ {
"promptDelete": false, "promptDelete": false,
"attachmentFolderPath": "渲染/软渲染/图片" "attachmentFolderPath": "渲染/软渲染/图片",
"alwaysUpdateLinks": true
} }

View File

@@ -11,10 +11,14 @@
"id": "efa82152d99167ff", "id": "efa82152d99167ff",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "empty", "type": "markdown",
"state": {}, "state": {
"file": "1Project/宠物宇宙/地图编辑器/需要支持的小功能.md",
"mode": "source",
"source": false
},
"icon": "lucide-file", "icon": "lucide-file",
"title": "新标签页" "title": "需要支持的小功能"
} }
} }
] ]
@@ -225,10 +229,14 @@
"id": "fd65654aeee0713f", "id": "fd65654aeee0713f",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "empty", "type": "markdown",
"state": {}, "state": {
"file": "1Project/宠物宇宙/皮肤导入.md",
"mode": "source",
"source": false
},
"icon": "lucide-file", "icon": "lucide-file",
"title": "新标签页" "title": "皮肤导入"
} }
} }
] ]
@@ -237,60 +245,55 @@
"direction": "vertical", "direction": "vertical",
"x": 2595, "x": 2595,
"y": 19, "y": 19,
"width": 1024, "width": 1134,
"height": 800, "height": 1125,
"maximize": false, "maximize": false,
"zoom": 0 "zoom": 0
} }
] ]
}, },
"active": "4c191f6555b427bd", "active": "efa82152d99167ff",
"lastOpenFiles": [ "lastOpenFiles": [
"面经/腾讯 网易 完美 字节 游戏客户端 游戏引擎2020暑期实习岗 综合笔 面经.md", "1Project/宠物宇宙/地图编辑器/需要做的优化.md",
"面经", "1Project/宠物宇宙/皮肤导入.md",
"资源/打包/导航.md", "InBox/动作游戏拆解/动作游戏拆解.md",
"资源/打包", "1Project/宠物宇宙/地图编辑器/需要支持的小功能.md",
"资源/资源导入.md", "InBox/动作游戏拆解",
"资源", "1Project/宠物宇宙/地图编辑器/编辑器需要整理大纲.md",
"网络同步.md", "1Project/宠物宇宙/bug.md",
"编辑器/时间轴编辑器/Timeline TODO.canvas", "1Project/开发文章/将开发文章阅读并分类.md",
"编辑器/图片/Pasted image 20221025121100.png", "4Archives/宠物宇宙/用户卡及游戏信息处理过程设计文档.md",
"编辑器/时间轴编辑器", "InBox/obsidian右键扩展.md",
"编辑器/图片", "4Archives/All in hole/玩法.md",
"编辑器/SerializedObject.md", "InBox/习惯养成/专注",
"编辑器/SearchFilter UnityEditor筛选器.md", "InBox/习惯养成",
"编辑器", "1Project/自动化生成文档/uml.md",
"算法/TopK 问题.md", "1Project/自动化生成文档/docfx.md",
"算法", "1Project/自动化生成文档",
"渲染/软渲染/图片/毛泽东选集第一卷_共产党员网.html", "InBox/接口与抽象类区别.md",
"渲染/软渲染/图片/毛泽东选集第一卷_共产党员网 1.html", "1Project/未命名.md",
"渲染/软渲染/图片/Pasted image 20230613102109.png", "1Project/宠物宇宙/地图编辑器",
"渲染/软渲染/图片/FAQ.md", "4Archives/All in hole/查看UIGame代码.md",
"渲染/软渲染/透视矫正.md", "4Archives/All in hole/还原材质球.md",
"渲染/软渲染/还未实现.md", "4Archives/All in hole/编辑器.md",
"渲染/软渲染/课程.md",
"渲染/软渲染/视锥剔除.md",
"渲染/软渲染/视口剔除.md",
"渲染/软渲染/图片",
"渲染/软渲染/冯 高光.md",
"渲染/GPU/Pasted image 20230413163234.png",
"渲染/一些渲染效果/Unity可交互雪地渲染Part5-雪地闪光及SSS.md",
"渲染/一些渲染效果/Unity 技术美术Trick —— dither妙用.md",
"渲染/GPU/GPU渲染流程.md",
"操作系统/多级缓存队列.md",
"战斗/写代码的诗人/战斗系统框架设计—战斗视角的GameObject.md",
"战斗/输入框架/游戏输入框架的设计(基于Unity).md",
"战斗/写代码的诗人/战斗系统:状态配置管理(技能配置管理).md",
"战斗/写代码的诗人/战斗系统:技能实现架构.md",
"战斗/写代码的诗人/战斗系统:什么是数据驱动?.md",
"战斗/写代码的诗人/战斗系统:属性管理.md",
"战斗/独立游戏-万字解析游戏战斗系统开发.md",
"战斗/游戏知识学习——【战斗系统】.md",
"Mesh/图片/Pasted image 20221021171104.png",
"渲染/软渲染/图片/Pasted image 20250609171235.png",
"InBox/TODO.canvas", "InBox/TODO.canvas",
"1Project/空调毯子/空调毯子.md",
"渲染/软渲染/图片/Pasted image 20250609171235.png",
"渲染/软渲染/图片",
"渲染/软渲染",
"渲染",
"4Archives/All in hole",
"1Project/宠物宇宙",
"checkbox.md",
"InBox/编辑器/时间轴编辑器/Timeline TODO.canvas", "InBox/编辑器/时间轴编辑器/Timeline TODO.canvas",
"InBox/网络同步.md",
"InBox/战斗/动作时间轴 随想.canvas", "InBox/战斗/动作时间轴 随想.canvas",
"战斗/未命名看板.md",
"战斗/动作.md",
"InBox/渲染/软渲染/图片/FAQ.md",
"UniTask与State对比/Update.md",
"UniTask与State对比/移动问题.md",
"UniTask与State对比/记录.md",
"InBox/编辑器/图片/Pasted image 20221025121100.png", "InBox/编辑器/图片/Pasted image 20221025121100.png",
"InBox/渲染/GPU/Pasted image 20230413163234.png", "InBox/渲染/GPU/Pasted image 20230413163234.png",
"InBox/Mesh/图片/Pasted image 20221021171104.png", "InBox/Mesh/图片/Pasted image 20221021171104.png",

View File

@@ -0,0 +1,3 @@
- [ ] 后台面板无法关闭

View File

@@ -0,0 +1,37 @@
##### 流程组件
- [ ] **构建流程组件**
找出运行时和编辑器共有的模块
把这些模块做成组件
运行时和编辑器分别实例不同的组件
##### 数据结构更换
- [ ] 更换为新的数据结构
- 路线数据变更
- 旧版本: 由文件夹下Roomline记录
- 新版本: 用链表实现,在 **关卡表-房间表** 中指定首个房间,随后用房间指向下个房间组成链表实现路线
- [ ] 接入Luban的表格
- 旧的数据结构包括
- 文件夹下
- SO文件
- 地板图片
- 预览图
- 地板数据,长宽高,
- 地板承载的摆件怪物标志信息
- Json文件
- 一份额外信息key为mapIndexvalue为对应的额外信息
- StreamingAssetPath中
- RoomData.json 记录房间的怪物波次
- MonsterWaveData.csv 怪物波次信息
- 新的数据结构
- 文件夹下
-
##### 重新梳理关系和职责
###### SpreadMap和SpreadMapLevel
需要清晰的关系以及生命周期
###### MapBlock和RoomBase
二者相互引用且耦合

View File

@@ -0,0 +1,40 @@
> [!important] 优先级 **1**
- [x] 添加RoomComponents
- [ ] IExtension
- [ ] 生成怪物测试
- [ ] id不再自增长
- [x] 碰撞盒和标志需要添加自定义功能
- [ ] 地图地板图片导入 自动修改图片大小
- [ ] 添加白膜地图
- 创建100*100的地图宽高跟随Rect大小变化
- [ ] 将RoomConfig改到==关卡表==里
RoomConfig的内容为SpecialRoom
- [ ] 碰撞盒需要添加旋转
> [!note] 优先级 **2**
- [ ] 枚举改为英文名
- [ ] 瓦片地图
- [ ] 优化重构
[[需要做的优化]]
> [!note] 优先级 **3**
- [ ] 提取单个地块编辑
> [!note] 优先级 **4**
- [ ] 过关门动画优化
- [ ] 地图大背景优化移动方案

View File

@@ -0,0 +1,13 @@
- [ ] 皮肤导入
- [x] 上海限定 C:\Users\1\Desktop\cache\57015
- 游戏中
- [x] C:\Users\1\Desktop\cache\红/蓝/绿皮肤7.0
- [ ] 胳膊导入
- 结算
- [x] C:\Users\1\Desktop\cache\角色胜利结算
- 卡面
- [x] C:\Users\1\Desktop\cache\第三弹裁切输出
- UI名字
- [ ] C:\Users\1\Desktop\cache\皮肤

View File

@@ -0,0 +1,5 @@
- [ ] [焦虑、内耗、爱破防,真的是你的锅吗?硬核心理学让你从此掌控自我!-我要等到什么时候-稍后再看-哔哩哔哩视频](https://www.bilibili.com/list/watchlater?oid=114079968532107&bvid=BV1YM9gYdECb&spm_id_from=333.1007.top_right_bar_window_view_later.content.click)
- [ ] [动作游戏框架05.扩展Timeline使用组合而非继承来扩展Timeline的基础功能-我要等到什么时候-稍后再看-哔哩哔哩视频](https://www.bilibili.com/list/watchlater?oid=114522652147889&bvid=BV1HKJAzyEZ5&spm_id_from=333.1007.top_right_bar_window_view_later.content.click)
- [ ] https://zhuanlan.zhihu.com/p/28352150798# Unity-SM节点式动画技能编辑器

View File

@@ -0,0 +1 @@
[(2 封私信 / 4 条消息) UML类图太难画试试这5款AI工具一键搞定 - 知乎](https://zhuanlan.zhihu.com/p/1905656789493580115)

View File

@@ -0,0 +1,3 @@
![[Pasted image 20250609171235.png]]

View File

@@ -0,0 +1,16 @@
---------
玩法直接由逆向代码之后,再后续开发
[[查看UIGame代码]]
---------
> [!note] - 黑洞表现
深度测试
自由掉落
数量检测回调触发UI关卡结束

View File

@@ -0,0 +1,405 @@
# 用户卡信息处理系统设计文档
## 1. 系统概述
该系统主要由控制器插件、业务插件和游戏端三部分组成通过TCP通信实现用户卡信息处理和游戏数据收集。
## 2. 系统架构
### 字符流程图
```
+----------------+ +----------------+ +----------------+
| 控制器插件 | | 业务插件 | | 游戏端 |
| | | | | |
| - 扫描用户卡 | | - 处理用户信息 | | - 接收用户信息 |
| - 读取卡信息 |--->| - 存储本地数据 |<-->| - 发送游戏信息 |
| - 通知业务插件 | | - 网络请求处理 | | - 本地备份处理 |
+----------------+ +----------------+ +----------------+
| ^
v |
+-----------------+
| 服务器 |
| - 用户资料数据库 |
| - 游戏数据处理 |
+-----------------+
```
### mermaid流程图
```mermaid
flowchart LR
A[控制器插件\n- 扫描用户卡\n- 读取卡信息\n- 通知业务插件] --> B[业务插件\n- 处理用户信息\n- 存储本地数据\n- 网络请求处理]
B <--> C[游戏端\n- 接收用户信息\n- 发送游戏信息\n- 本地备份处理]
B <--> D[服务器\n- 用户资料数据库\n- 游戏数据处理]
```
## 3. 系统详细流程
### 3.1 用户卡信息处理流程
#### 流程说明
用户卡信息处理流程描述了从控制器插件扫描用户卡到业务插件向游戏端发送用户信息的完整过程。当控制器插件检测到用户卡扫描信息后会通知业务插件。业务插件根据网络状态决定从服务器请求用户资料或从本地数据库读取用户信息。如果网络可用业务插件会请求最新的用户信息并存储到本地如果网络不可用或请求失败则从本地SQLite数据库读取历史记录若本地无记录则构造默认用户信息。最终业务插件将完整的用户信息通过TCP12101端口发送给游戏端。
#### 字符流程图
```
+----------------+ +----------------+ +----------------+ +----------------+
| 控制器插件 | | 业务插件 | | 网络/本地数据库 | | 游戏端 |
+-------+--------+ +-------+--------+ +-------+--------+ +-------+--------+
| | | |
| 扫描到用户卡 | | |
+--------------------->+ | |
| | | |
| | 检查网络状态 | |
| +--------------------->+ |
| | | |
| | 有网络: 请求用户信息 | |
| +--------------------->+ |
| | | |
| | 返回用户信息 | |
| +<---------------------+ |
| | | |
| | 无网络/请求失败: | |
| | 读取本地数据 | |
| +--------------------->+ |
| | | |
| | 返回本地数据 | |
| +<---------------------+ |
| | | |
| | 构造用户信息 | |
| +-------------------------------------------------+
| | | | |
| | TCP(12101)发送用户信息| | |
| +--------------------->+--------------------->+ |
| | | | |
| | | | |
| | 本地存储用户信息 <---+
| | | |
+-------+--------+ +-------+--------+ +-------+--------+ +-------+--------+
```
#### mermaid流程图
```mermaid
sequenceDiagram
participant 控制器插件
participant 业务插件
participant 网络/本地数据库
participant 游戏端
控制器插件->>业务插件: 扫描到用户卡
业务插件->>网络/本地数据库: 检查网络状态
alt 有网络
业务插件->>网络/本地数据库: 请求用户信息
网络/本地数据库-->>业务插件: 返回用户信息
else 无网络/请求失败
业务插件->>网络/本地数据库: 读取本地数据
网络/本地数据库-->>业务插件: 返回本地数据
end
业务插件->>业务插件: 构造用户信息
业务插件->>游戏端: TCP(12101)发送用户信息
游戏端->>游戏端: 本地存储用户信息
```
### 3.2 游戏信息收集流程
#### 流程说明
游戏信息收集流程描述了业务插件如何通过TCP监听接收游戏端发送的消息并进行处理的过程。业务插件监听TCP12103端口以接收来自游戏端的信息。根据接收到的消息类型由标识头区分业务插件会进行不同的处理如果是游戏结束消息标识头为"game-over"业务插件会更新对应Player的状态之后接收到该Player的游戏信息将不再与用户卡关联如果是游戏业务信息业务插件会尝试通过网络将数据发送到服务器若网络不可用或发送失败则将数据存储到本地SQLite数据库中以便稍后同步。
#### 字符流程图
```
+----------------+ +----------------+ +----------------+
| 游戏端 | | 业务插件 | | 服务器/本地存储 |
+-------+--------+ +-------+--------+ +-------+--------+
| | |
| TCP(12103)发送游戏信息| |
+--------------------->+ |
| | |
| | 检查消息类型 |
| +-----------------+ |
| | | |
| | 游戏结束消息 | |
| |-----------------+ |
| | 更新Player状态 | |
| +-----------------+ |
| | | |
| | 游戏业务信息 | |
| |-----------------+ |
| | 检查网络状态 | |
| +--------------------->+
| | |
| | 有网络: 发送到服务器 |
| +--------------------->+
| | |
| | 响应结果 |
| +<---------------------+
| | |
| | 无网络/发送失败: |
| | 存储到本地SQLite |
| +--------------------->+
| | |
+-------+--------+ +-------+--------+ +-------+--------+
```
#### mermaid流程图
```mermaid
sequenceDiagram
participant 游戏端
participant 业务插件
participant 服务器/本地存储
游戏端->>业务插件: TCP(12103)发送游戏信息
alt 游戏结束消息
业务插件->>业务插件: 更新Player状态
else 游戏业务信息
业务插件->>业务插件: 检查网络状态
alt 有网络
业务插件->>服务器/本地存储: 发送到服务器
服务器/本地存储-->>业务插件: 响应结果
else 无网络/发送失败
业务插件->>服务器/本地存储: 存储到本地SQLite
end
end
```
### 3.3 游戏信息发送失败处理流程
#### 流程说明
游戏信息发送失败处理流程描述了当游戏端无法直接将游戏信息发送给业务插件时的备份处理机制。当游戏端向业务插件发送信息超时或无响应时,游戏端会将这些数据存储到特定目录中的文件系统,采用一条数据一个文件的方式。业务插件会定期检查该目录,读取这些文件中的数据,处理(如重新发送到服务器或记录到本地数据库)后再删除这些文件。这种机制确保了即使在业务插件暂时不可用的情况下,游戏数据也不会丢失,提高了系统的可靠性和容错性。
#### 字符流程图
```
+----------------+ +----------------+ +----------------+
| 游戏端 | | 文件系统 | | 业务插件 |
+-------+--------+ +-------+--------+ +-------+--------+
| | |
| 信息发送超时/无响应 | |
+-----------------+ | |
| | | |
| 创建数据文件 | | |
|----------------+ | |
| 将数据写入文件 | | |
+--------------------->+ |
| | |
| | 业务插件定期检查目录 |
| +<---------------------+
| | |
| | 读取数据文件 |
| +--------------------->+
| | |
| | 处理数据(重发/记录) |
| +<---------------------+
| | |
| | 处理完成后删除文件 |
| +<---------------------+
| | |
+-------+--------+ +-------+--------+ +-------+--------+
```
#### mermaid流程图
```mermaid
sequenceDiagram
participant 游戏端
participant 文件系统
participant 业务插件
游戏端->>游戏端: 信息发送超时/无响应
游戏端->>游戏端: 创建数据文件
游戏端->>文件系统: 将数据写入文件
业务插件->>文件系统: 定期检查目录
文件系统->>业务插件: 读取数据文件
业务插件->>业务插件: 处理数据(重发/记录)
业务插件->>文件系统: 处理完成后删除文件
```
## 4. 信息结构
### 4.1 发送给游戏的用户信息JSON结构
```json
{
"result": true, // 操作结果
"errMsg": "", // 错误信息
"statusCode": 0, // 状态码0=成功1=未绑定2=无网)
"tag": "user-info", // 标识标签,区分不同类型的信息
"data": {
"playerIndex": 1, // player索引
"cardId": "123456", // 卡ID
"cardSn": "789012", // 卡序列号
"userName": "张三", // 用户名称
"userAvatar": "http://example.com/avatar.jpg" // 用户头像
}
}
```
#### 4.1.1 请求服务器查询玩家资料
请求写入排行榜
```json
{
"tag": "update-user-info", // 标识标签,区分不同类型的信息
"data": {
"cardId": "123456", // 卡ID
"score": 10000 //积分
}
}
```
回复
```json
{
"result": true, // 操作结果
"errMsg": "", // 错误信息
"statusCode": 0, // 状态码0=成功1=未绑定2=无网)
"tag": "", // 标识标签,区分不同类型的信息
"data":{}
}
```
请求查询玩家信息
```json
{
"tag": "select-user-info", // 标识标签,区分不同类型的信息
"data": {
"cardId": "123456", // 卡ID
}
}
```
回复
```json
{
"result": true, // 操作结果
"errMsg": "", // 错误信息
"statusCode": 0, // 状态码0=成功1=未绑定2=无网)
"tag": "user-info", // 标识标签,区分不同类型的信息
"data": {
"playerIndex": 1, // player索引
"cardId": "123456", // 卡ID
"cardSn": "789012", // 卡序列号
"userName": "张三", // 用户名称
"userAvatar": "http://example.com/avatar.jpg" // 用户头像
...
}
}
```
### 4.2 游戏结束消息JSON结构
```json
{
"result": true, // 操作结果
"errMsg": "", // 错误信息
"statusCode": 0, // 状态码0=成功非0=失败)
"tag": "game-over", // 标识标签
"data": {
"playerIndex": 1, // player索引
"cardId": "123456", // 卡ID
"timestamp": 1634567890 // 时间戳
}
}
```
### 4.3 游戏业务信息JSON结构
```json
{
"result": true, // 操作结果
"errMsg": "", // 错误信息
"statusCode": 0, // 状态码0=成功非0=失败)
"tag": "game-data", // 标识标签
"data": {
"playerIndex": 1, // player索引
"cardId": "123456", // 卡ID
"gameData": { // 游戏数据(根据具体业务定义)
// 具体业务数据
},
"timestamp": 1634567890 // 时间戳
}
}
```
## 5. 通信端口说明
- **12101端口**:游戏端监听,业务端发送消息
- **12103端口**:业务端监听,游戏端发送消息
## 6. 数据持久化
### 6.1 SQLite数据结构
#### 用户信息表
```sql
CREATE TABLE user_info (
id INTEGER PRIMARY KEY AUTOINCREMENT,
card_id TEXT NOT NULL,
card_sn TEXT NOT NULL,
user_name TEXT,
user_avatar TEXT,
last_updated INTEGER,
UNIQUE(card_id, card_sn)
);
```
#### 游戏数据表
```sql
CREATE TABLE game_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
card_id TEXT NOT NULL,
player_index INTEGER NOT NULL,
data_type TEXT NOT NULL,
data_content TEXT NOT NULL,
timestamp INTEGER NOT NULL,
is_synced INTEGER DEFAULT 0
);
```
### 6.2 文件存储结构
游戏数据文件命名格式:`game_data_{timestamp}_{playerIndex}_{cardId}.json`
## 7. 注意事项
### 7.1 数据安全与隐私
- 用户卡信息应进行加密存储
- 本地数据应设置访问权限限制
- 网络传输过程采用HTTPS或加密通道
### 7.2 数据同步机制
- 本地数据与服务器数据定期同步机制
- 冲突解决策略(以服务器数据为准或采用时间戳)
- 同步频率设置(定时/事件触发)
### 7.3 错误处理与恢复
- 网络恢复后的数据自动上传机制
- 重试策略(指数退避算法)
- 错误日志记录与报警机制
- 异常情况下的回滚机制
### 7.4 性能优化
- SQLite查询优化
- 批量数据处理
- 队列机制避免并发问题
- 异步处理大量数据
### 7.5 本地存储管理
- 定期清理过期数据
- 存储空间监控
- 数据备份机制
- 存储空间不足时的处理策略
### 7.6 监控与日志
- 关键操作日志记录
- 系统状态监控
- 异常情况报警机制
## 8. 系统扩展性考虑
- 支持多种类型用户卡的可扩展接口
- 业务消息类型的可扩展设计
- 版本兼容性处理机制
- 插件化架构设计
- 配置化管理

View File

@@ -1,5 +1,5 @@
>[!注意] >[!注意]
>这份卡片的原始内容来自于[[考研政治笔记]] >这份卡片的原始内容来自于[[InBox/AI for Obsidian/20250315 - 测试 Obsidian+ AI 的能力边界/第五个用法|成为插件助手/Spaced Repetition 插件/考研政治笔记]]
#flashcards/政治/近代史 #flashcards/政治/近代史

Some files were not shown because too many files have changed in this diff Show More