Files
heros/build-templates/wechatgame/cloud_functions/cocos_cloud/README.md

271 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 微信云函数游戏数据管理系统
## 📁 文件结构
```
cocos_cloud/
├── index.js # 主云函数文件
├── user_init_data.js # 新用户初始化数据配置
└── README.md # 说明文档
```
## 🎮 功能特性
### 1. 数据结构管理
- **平级数据存储**: 所有游戏数据字段与用户基本信息平级存储
- **版本控制**: 支持数据结构版本管理和自动升级
- **数据验证**: 完整的数据结构和类型验证
- **默认值管理**: 集中管理新用户初始化数据
### 2. 支持的命令
| 命令 | 功能 | 说明 |
|------|------|------|
| `login` | 用户登录 | 返回完整的用户和游戏数据 |
| `load` | 加载游戏数据 | 获取用户的所有游戏数据 |
| `save` | 保存游戏数据 | 支持增量更新,自动合并数据 |
| `reset` | 重置游戏数据 | 恢复为默认初始值 |
| `backup` | 创建数据备份 | 在独立集合中创建备份记录 |
| `version` | 查看版本信息 | 检查数据版本兼容性 |
| `upgrade` | 强制升级数据 | 手动触发数据结构升级 |
## 📊 数据结构
### 用户数据库结构 (cocos_users 集合)
```javascript
{
_id: "用户ID",
_openid: "微信OpenID",
regist_time: "注册时间戳",
init_time: "初始化时间戳",
last_save_time: "最后保存时间",
data_version: "数据版本号",
// 游戏数据字段(与基本信息平级)
data: {
score: 0, // 游戏分数
mission: 1, // 当前关卡
gold: 100, // 金币
diamond: 100, // 钻石
meat: 0, // 肉类资源
exp: 0, // 升级经验
ghstone: 0, // 绿色英雄石
bhstone: 0, // 蓝色英雄石
phlestone: 0, // 紫色英雄石
rhstone: 0, // 红色英雄石
herocard: 0, // 英雄卡
ckey: 0, // 铜钥匙
skey: 0, // 银钥匙
gkey: 0 // 金钥匙
},
fight_heros: {
0: 5001, // 出战位置1
1: 5005, // 出战位置2
2: 0, // 出战位置3
3: 0, // 出战位置4
4: 0 // 出战位置5
},
heros: {
5001: { uuid: 5001, lv: 1, exp: 0, star: 1, power: 100 },
5005: { uuid: 5005, lv: 1, exp: 0, star: 1, power: 120 },
5007: { uuid: 5007, lv: 1, exp: 0, star: 1, power: 90 }
},
items: {
1001: 0, // 生命药水
1002: 0, // 魔法药水
1003: 0, // 力量药水
// ... 更多道具
},
tals: {
1001: 0, // 攻击强化
1002: 0, // 防御强化
1003: 0, // 生命强化
// ... 更多天赋
},
equips: {
1001: 0, // 武器
1002: 0, // 头盔
1003: 0, // 胸甲
// ... 更多装备
}
}
```
### 备份数据库结构 (game_backups 集合)
```javascript
{
user_id: "用户ID",
openid: "微信OpenID",
data: { /* 基础游戏数据 */ },
fight_heros: { /* 出战英雄配置 */ },
heros: { /* 英雄属性数据 */ },
items: { /* 道具数据 */ },
tals: { /* 天赋数据 */ },
equips: { /* 装备数据 */ },
backup_time: "备份时间戳",
original_save_time: "原始保存时间"
}
```
## 🚀 使用示例
### 客户端调用示例
#### 1. 用户登录
```javascript
wx.cloud.callFunction({
name: 'cocos_cloud',
data: { cmd: 'login' }
}).then(res => {
console.log('登录成功:', res.result);
// res.result.data 包含完整的用户和游戏数据
});
```
#### 2. 保存游戏数据
```javascript
wx.cloud.callFunction({
name: 'cocos_cloud',
data: {
cmd: 'save',
data: {
data: { gold: 1000, diamond: 50 },
fight_heros: { 0: 5001, 1: 5005 },
heros: { 5001: { lv: 10, exp: 100 } },
items: { 1001: 5 }
}
}
});
```
#### 3. 加载游戏数据
```javascript
wx.cloud.callFunction({
name: 'cocos_cloud',
data: { cmd: 'load' }
}).then(res => {
const gameData = res.result.data;
console.log('游戏数据:', gameData);
});
```
#### 4. 检查版本信息
```javascript
wx.cloud.callFunction({
name: 'cocos_cloud',
data: { cmd: 'version' }
}).then(res => {
console.log('版本信息:', res.result.data);
if (res.result.data.compatibility.needsUpgrade) {
console.log('需要升级数据');
}
});
```
#### 5. 创建数据备份
```javascript
wx.cloud.callFunction({
name: 'cocos_cloud',
data: { cmd: 'backup' }
}).then(res => {
console.log('备份成功:', res.result.data.backup_id);
});
```
## 🔧 配置管理
### 修改默认数据
编辑 `user_init_data.js` 文件中的常量:
```javascript
// 修改默认金币数量
const DEFAULT_GAME_DATA = {
// ...
gold: 200, // 从100改为200
// ...
};
// 添加新英雄
const DEFAULT_HEROS = {
// 现有英雄...
5008: { uuid: 5008, lv: 1, exp: 0, star: 1, power: 110 }
};
```
### 版本升级
当数据结构发生变化时,更新版本号:
```javascript
// 在 user_init_data.js 中
const DATA_VERSION = "1.1.0"; // 从1.0.0升级到1.1.0
```
## 📈 版本控制
### 版本号格式
- **MAJOR.MINOR.PATCH** (如: 1.2.3)
- **MAJOR**: 重大结构变更,不向后兼容
- **MINOR**: 新增字段,向后兼容
- **PATCH**: 数值调整,完全兼容
### 自动升级机制
- 用户登录时自动检查版本兼容性
- 如需升级,自动合并新的默认数据
- 保留用户的现有数据,只补充缺失字段
## 🛡️ 错误处理
### 错误码说明
- `200`: 成功
- `-1`: 操作失败
- `-2`: 未知命令
- `-3`: 数据结构无效
- `-4`: 用户创建/获取失败
- `-5`: 系统错误
### 日志记录
- 新用户创建日志
- 数据版本升级日志
- 错误操作日志
- 性能监控日志
## 🔍 调试和监控
### 查看用户数据版本
```javascript
wx.cloud.callFunction({
name: 'cocos_cloud',
data: { cmd: 'version' }
});
```
### 强制升级用户数据
```javascript
wx.cloud.callFunction({
name: 'cocos_cloud',
data: { cmd: 'upgrade' }
});
```
## 📝 注意事项
1. **数据备份**: 重要操作前建议创建备份
2. **版本兼容**: 升级数据结构时注意向后兼容性
3. **性能优化**: 大量数据操作时注意性能影响
4. **安全验证**: 所有输入数据都经过严格验证
5. **错误处理**: 完善的错误处理和日志记录
## 🚀 部署说明
1. 将整个 `cocos_cloud` 文件夹上传到微信云开发
2. 在微信开发者工具中部署云函数
3. 确保数据库权限配置正确
4. 测试各项功能是否正常工作
---
**版本**: 1.0.0
**更新时间**: 2024年
**维护者**: 游戏开发团队