|
|
@@ -13,7 +13,7 @@
|
|
|
|
|
|
### 1.2 品阶系统
|
|
|
```php
|
|
|
-enum PET_GRADE: string {
|
|
|
+enum PetGrade: string {
|
|
|
case FIRST = 'FIRST'; // 一品
|
|
|
case SECOND = 'SECOND'; // 二品
|
|
|
case THIRD = 'THIRD'; // 三品
|
|
|
@@ -23,7 +23,7 @@ enum PET_GRADE: string {
|
|
|
|
|
|
### 1.3 宠物状态系统
|
|
|
```php
|
|
|
-enum PET_STATUS: int {
|
|
|
+enum PetStatus: int {
|
|
|
case NONE = 0; // 未知
|
|
|
case NORMAL = 1; // 正常
|
|
|
case FIGHTING = 2; // 战斗中
|
|
|
@@ -47,12 +47,17 @@ enum PET_STATUS: int {
|
|
|
| pet_skills | 技能配置 | id, skill_name, stamina_cost, cool_down |
|
|
|
| pet_skill_logs | 技能使用记录 | id, pet_id, skill_id, used_at |
|
|
|
| pet_remould_logs | 洗髓记录 | id, pet_id, old_grade, new_grade |
|
|
|
-| pet_configs | 宠物系统配置 | id, pet_type, grade_probability, power_bonus |
|
|
|
-| pet_level_configs | 等级配置 | id, level, exp_required, power_bonus |
|
|
|
+| pet_configs | 宠物系统配置 | id, pet_type, grade_probability, power_bonus, display_attributes, numeric_attributes |
|
|
|
+| pet_level_configs | 等级配置 | id, level, exp_required, stamina_max, display_attributes, numeric_attributes |
|
|
|
| pet_battle_logs | 战斗记录 | id, pet_id, battle_type, result |
|
|
|
+| pet_battle_seasons | 争霸赛赛季 | id, name, start_time, end_time, boss_power |
|
|
|
+| pet_battle_teams | 争霸赛队伍 | id, season_id, name, leader_id, total_power |
|
|
|
+| pet_battle_team_members | 争霸赛队伍成员 | id, team_id, user_id, pet_id, power |
|
|
|
|
|
|
### 2.2 数据表结构
|
|
|
|
|
|
+#### 2.2.1 基础表
|
|
|
+
|
|
|
```sql
|
|
|
-- 用户宠物表
|
|
|
CREATE TABLE `pet_users` (
|
|
|
@@ -83,6 +88,43 @@ CREATE TABLE `pet_skills` (
|
|
|
PRIMARY KEY (id)
|
|
|
) ENGINE=InnoDB;
|
|
|
|
|
|
+-- 宠物配置表
|
|
|
+CREATE TABLE `pet_configs` (
|
|
|
+ `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `pet_type` VARCHAR(50) NOT NULL COMMENT '宠物类型',
|
|
|
+ `grade_probability` JSON NOT NULL COMMENT '品阶概率配置',
|
|
|
+ `power_bonus` JSON NOT NULL COMMENT '战力加成配置',
|
|
|
+ `feed_effect` JSON NOT NULL COMMENT '喂养效果配置',
|
|
|
+ `max_level` TINYINT UNSIGNED NOT NULL COMMENT '最大等级',
|
|
|
+ `stamina_recovery` SMALLINT UNSIGNED NOT NULL COMMENT '体力恢复值/分钟',
|
|
|
+ `display_attributes` JSON DEFAULT NULL COMMENT '显示属性配置',
|
|
|
+ `numeric_attributes` JSON DEFAULT NULL COMMENT '数值属性配置',
|
|
|
+ `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ UNIQUE KEY idx_pet_type (pet_type)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+
|
|
|
+-- 宠物等级配置表
|
|
|
+CREATE TABLE `pet_level_configs` (
|
|
|
+ `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `level` TINYINT UNSIGNED NOT NULL COMMENT '等级',
|
|
|
+ `exp_required` INT UNSIGNED NOT NULL COMMENT '升级所需经验值',
|
|
|
+ `stamina_max` SMALLINT UNSIGNED NOT NULL DEFAULT 100 COMMENT '最大体力值',
|
|
|
+ `stamina_recovery_rate` TINYINT UNSIGNED NOT NULL DEFAULT 5 COMMENT '每分钟恢复体力值',
|
|
|
+ `unlock_skills` JSON DEFAULT NULL COMMENT '解锁的技能ID列表',
|
|
|
+ `display_attributes` JSON DEFAULT NULL COMMENT '等级显示属性配置',
|
|
|
+ `numeric_attributes` JSON DEFAULT NULL COMMENT '等级数值属性配置',
|
|
|
+ `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ UNIQUE KEY idx_level (level)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+```
|
|
|
+
|
|
|
+#### 2.2.2 日志表
|
|
|
+
|
|
|
+```sql
|
|
|
-- 技能使用日志表
|
|
|
CREATE TABLE `pet_skill_logs` (
|
|
|
`id` BIGINT UNSIGNED AUTO_INCREMENT,
|
|
|
@@ -110,21 +152,6 @@ CREATE TABLE `pet_remould_logs` (
|
|
|
INDEX idx_pet (pet_id)
|
|
|
) ENGINE=InnoDB;
|
|
|
|
|
|
--- 宠物配置表
|
|
|
-CREATE TABLE `pet_configs` (
|
|
|
- `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
- `pet_type` VARCHAR(50) NOT NULL COMMENT '宠物类型',
|
|
|
- `grade_probability` JSON NOT NULL COMMENT '品阶概率配置',
|
|
|
- `power_bonus` JSON NOT NULL COMMENT '战力加成配置',
|
|
|
- `feed_effect` JSON NOT NULL COMMENT '喂养效果配置',
|
|
|
- `max_level` TINYINT UNSIGNED NOT NULL COMMENT '最大等级',
|
|
|
- `stamina_recovery` SMALLINT UNSIGNED NOT NULL COMMENT '体力恢复值/分钟',
|
|
|
- `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
- `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- PRIMARY KEY (id),
|
|
|
- UNIQUE KEY idx_pet_type (pet_type)
|
|
|
-) ENGINE=InnoDB;
|
|
|
-
|
|
|
-- 战斗记录表
|
|
|
CREATE TABLE `pet_battle_logs` (
|
|
|
`id` BIGINT UNSIGNED AUTO_INCREMENT,
|
|
|
@@ -142,6 +169,57 @@ CREATE TABLE `pet_battle_logs` (
|
|
|
) ENGINE=InnoDB;
|
|
|
```
|
|
|
|
|
|
+#### 2.2.3 争霸赛相关表
|
|
|
+
|
|
|
+```sql
|
|
|
+-- 争霸赛赛季表
|
|
|
+CREATE TABLE `pet_battle_seasons` (
|
|
|
+ `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `name` VARCHAR(50) NOT NULL COMMENT '赛季名称',
|
|
|
+ `start_time` TIMESTAMP NOT NULL COMMENT '开始时间',
|
|
|
+ `end_time` TIMESTAMP NOT NULL COMMENT '结束时间',
|
|
|
+ `boss_power` INT UNSIGNED NOT NULL COMMENT 'Boss战力',
|
|
|
+ `reward_pool` JSON NOT NULL COMMENT '奖池配置',
|
|
|
+ `status` TINYINT UNSIGNED DEFAULT 0 COMMENT '状态:0未开始,1进行中,2已结束',
|
|
|
+ `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ INDEX idx_status (status),
|
|
|
+ INDEX idx_time (start_time, end_time)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+
|
|
|
+-- 争霸赛队伍表
|
|
|
+CREATE TABLE `pet_battle_teams` (
|
|
|
+ `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `season_id` INT UNSIGNED NOT NULL COMMENT '赛季ID',
|
|
|
+ `name` VARCHAR(50) NOT NULL COMMENT '队伍名称',
|
|
|
+ `leader_id` BIGINT UNSIGNED NOT NULL COMMENT '队长用户ID',
|
|
|
+ `total_power` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '队伍总战力',
|
|
|
+ `member_count` TINYINT UNSIGNED DEFAULT 0 COMMENT '成员数量',
|
|
|
+ `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ FOREIGN KEY (season_id) REFERENCES pet_battle_seasons(id),
|
|
|
+ INDEX idx_season (season_id),
|
|
|
+ INDEX idx_leader (leader_id)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+
|
|
|
+-- 争霸赛队伍成员表
|
|
|
+CREATE TABLE `pet_battle_team_members` (
|
|
|
+ `id` BIGINT UNSIGNED AUTO_INCREMENT,
|
|
|
+ `team_id` INT UNSIGNED NOT NULL COMMENT '队伍ID',
|
|
|
+ `user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
|
+ `pet_id` BIGINT UNSIGNED NOT NULL COMMENT '宠物ID',
|
|
|
+ `power` INT UNSIGNED NOT NULL COMMENT '战力贡献',
|
|
|
+ `join_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ PRIMARY KEY (id),
|
|
|
+ FOREIGN KEY (team_id) REFERENCES pet_battle_teams(id),
|
|
|
+ FOREIGN KEY (pet_id) REFERENCES pet_users(id),
|
|
|
+ UNIQUE KEY idx_team_user (team_id, user_id),
|
|
|
+ INDEX idx_pet (pet_id)
|
|
|
+) ENGINE=InnoDB;
|
|
|
+```
|
|
|
+
|
|
|
### 2.3 索引设计
|
|
|
|
|
|
| 表名 | 索引字段 | 索引类型 | 说明 |
|
|
|
@@ -156,6 +234,12 @@ CREATE TABLE `pet_battle_logs` (
|
|
|
| pet_level_configs | level | 唯一索引 | 确保等级唯一性,加速等级查询 |
|
|
|
| pet_battle_logs | pet_id | 普通索引 | 加速查询宠物战斗记录 |
|
|
|
| pet_battle_logs | battle_time | 普通索引 | 加速按时间查询战斗记录 |
|
|
|
+| pet_battle_seasons | status | 普通索引 | 加速按状态查询赛季 |
|
|
|
+| pet_battle_seasons | start_time, end_time | 复合索引 | 加速按时间范围查询赛季 |
|
|
|
+| pet_battle_teams | season_id | 普通索引 | 加速查询赛季队伍 |
|
|
|
+| pet_battle_teams | leader_id | 普通索引 | 加速查询队长创建的队伍 |
|
|
|
+| pet_battle_team_members | team_id, user_id | 唯一索引 | 确保用户在一个队伍中只有一个宠物 |
|
|
|
+| pet_battle_team_members | pet_id | 普通索引 | 加速查询宠物参与的队伍 |
|
|
|
|
|
|
### 2.4 数据模型关联关系
|
|
|
|
|
|
@@ -173,37 +257,51 @@ CREATE TABLE `pet_battle_logs` (
|
|
|
- 宠物可以参与多种战斗,通过 pet_battle_logs 表记录
|
|
|
- 战斗类型包括偷菜、守护和争霸赛
|
|
|
|
|
|
-### 2.5 宠物等级配置表
|
|
|
+4. **争霸赛关系链**
|
|
|
+ - 赛季(pet_battle_seasons) → 队伍(pet_battle_teams) → 队员(pet_battle_team_members)
|
|
|
+ - 每个赛季可以有多个队伍,每个队伍可以有多个队员
|
|
|
|
|
|
-```sql
|
|
|
--- 宠物等级配置表
|
|
|
-CREATE TABLE `pet_level_configs` (
|
|
|
- `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
- `level` TINYINT UNSIGNED NOT NULL COMMENT '等级',
|
|
|
- `exp_required` INT UNSIGNED NOT NULL COMMENT '升级所需经验值',
|
|
|
- `power_bonus` FLOAT NOT NULL DEFAULT 0 COMMENT '战力加成系数',
|
|
|
- `stamina_max` SMALLINT UNSIGNED NOT NULL DEFAULT 100 COMMENT '最大体力值',
|
|
|
- `stamina_recovery_rate` TINYINT UNSIGNED NOT NULL DEFAULT 5 COMMENT '每分钟恢复体力值',
|
|
|
- `unlock_skills` JSON DEFAULT NULL COMMENT '解锁的技能ID列表',
|
|
|
- `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
- `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- PRIMARY KEY (id),
|
|
|
- UNIQUE KEY idx_level (level)
|
|
|
-) ENGINE=InnoDB;
|
|
|
-```
|
|
|
+### 2.5 宠物等级系统
|
|
|
|
|
|
-宠物等级配置表用于定义每个等级的详细信息,包括:
|
|
|
+宠物等级配置表(pet_level_configs)用于定义每个等级的详细信息,包括:
|
|
|
|
|
|
- **升级所需经验**:达到下一级所需的经验值
|
|
|
-- **战力加成系数**:影响宠物战斗力的计算
|
|
|
- **最大体力值**:该等级的体力上限
|
|
|
- **体力恢复速率**:每分钟恢复的体力点数
|
|
|
- **解锁技能**:达到该等级时解锁的技能列表
|
|
|
+- **显示属性**:等级相关的UI显示属性,如等级图标、特效等
|
|
|
+- **数值属性**:等级相关的游戏数值属性,如攻击力、防御力等
|
|
|
+
|
|
|
+#### 2.5.1 显示属性
|
|
|
+
|
|
|
+宠物配置表(pet_configs)中的显示属性用于定义宠物类型的UI展示相关配置,如:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "icon": "pet_icon_001.png",
|
|
|
+ "avatar": "pet_avatar_001.png",
|
|
|
+ "animation": "pet_anim_001",
|
|
|
+ "ui_color": "#FF5500",
|
|
|
+ "description": "一只勤劳的宠物,擅长收集资源"
|
|
|
+}
|
|
|
+```
|
|
|
|
|
|
-通过这个配置表,可以灵活调整宠物成长曲线,平衡游戏难度。
|
|
|
+#### 2.5.2 数值属性
|
|
|
+
|
|
|
+宠物配置表和等级配置表中的数值属性用于定义宠物的游戏数值相关配置,如:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "base_attack": 10,
|
|
|
+ "base_defense": 5,
|
|
|
+ "base_speed": 8,
|
|
|
+ "harvest_efficiency": 1.2,
|
|
|
+ "planting_speed": 1.0,
|
|
|
+ "disaster_resistance": 0.8
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+通过这些配置表,可以灵活调整宠物成长曲线,平衡游戏难度,并提供丰富的视觉体验和游戏玩法。
|
|
|
|
|
|
## 3. 配置参数
|
|
|
-<!-- 核心接口设计部分已移除,因为不需要具体实现细节,只需要配置和数据结构定义 -->
|
|
|
```php
|
|
|
// config/pet.php
|
|
|
return [
|
|
|
@@ -262,60 +360,18 @@ return [
|
|
|
### 4.2 战力系统
|
|
|
- 影响偷菜、守护、争霸赛等玩法结果
|
|
|
- 提升方式:
|
|
|
- - 提升宠物等级
|
|
|
+ - 提升宠物等级(通过数值属性提升战力)
|
|
|
- 提升品阶(一品阶+10%、二品阶+25%、三品阶+50%、四品阶+100%)
|
|
|
- 使用特定道具
|
|
|
|
|
|
-### 4.3 争霸赛数据表
|
|
|
+### 4.3 争霸赛数据结构
|
|
|
|
|
|
-```sql
|
|
|
--- 争霸赛赛季表
|
|
|
-CREATE TABLE `pet_battle_seasons` (
|
|
|
- `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
- `name` VARCHAR(50) NOT NULL COMMENT '赛季名称',
|
|
|
- `start_time` TIMESTAMP NOT NULL COMMENT '开始时间',
|
|
|
- `end_time` TIMESTAMP NOT NULL COMMENT '结束时间',
|
|
|
- `boss_power` INT UNSIGNED NOT NULL COMMENT 'Boss战力',
|
|
|
- `reward_pool` JSON NOT NULL COMMENT '奖池配置',
|
|
|
- `status` TINYINT UNSIGNED DEFAULT 0 COMMENT '状态:0未开始,1进行中,2已结束',
|
|
|
- `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
- `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- PRIMARY KEY (id),
|
|
|
- INDEX idx_status (status),
|
|
|
- INDEX idx_time (start_time, end_time)
|
|
|
-) ENGINE=InnoDB;
|
|
|
+争霸赛相关的数据表已在数据库设计章节中详细描述,包括:
|
|
|
+- pet_battle_seasons(争霸赛赛季表)
|
|
|
+- pet_battle_teams(争霸赛队伍表)
|
|
|
+- pet_battle_team_members(争霸赛队伍成员表)
|
|
|
|
|
|
--- 争霸赛队伍表
|
|
|
-CREATE TABLE `pet_battle_teams` (
|
|
|
- `id` INT UNSIGNED AUTO_INCREMENT,
|
|
|
- `season_id` INT UNSIGNED NOT NULL COMMENT '赛季ID',
|
|
|
- `name` VARCHAR(50) NOT NULL COMMENT '队伍名称',
|
|
|
- `leader_id` BIGINT UNSIGNED NOT NULL COMMENT '队长用户ID',
|
|
|
- `total_power` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '队伍总战力',
|
|
|
- `member_count` TINYINT UNSIGNED DEFAULT 0 COMMENT '成员数量',
|
|
|
- `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
- `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- PRIMARY KEY (id),
|
|
|
- FOREIGN KEY (season_id) REFERENCES pet_battle_seasons(id),
|
|
|
- INDEX idx_season (season_id),
|
|
|
- INDEX idx_leader (leader_id)
|
|
|
-) ENGINE=InnoDB;
|
|
|
-
|
|
|
--- 争霸赛队伍成员表
|
|
|
-CREATE TABLE `pet_battle_team_members` (
|
|
|
- `id` BIGINT UNSIGNED AUTO_INCREMENT,
|
|
|
- `team_id` INT UNSIGNED NOT NULL COMMENT '队伍ID',
|
|
|
- `user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
|
- `pet_id` BIGINT UNSIGNED NOT NULL COMMENT '宠物ID',
|
|
|
- `power` INT UNSIGNED NOT NULL COMMENT '战力贡献',
|
|
|
- `join_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
- PRIMARY KEY (id),
|
|
|
- FOREIGN KEY (team_id) REFERENCES pet_battle_teams(id),
|
|
|
- FOREIGN KEY (pet_id) REFERENCES pet_users(id),
|
|
|
- UNIQUE KEY idx_team_user (team_id, user_id),
|
|
|
- INDEX idx_pet (pet_id)
|
|
|
-) ENGINE=InnoDB;
|
|
|
-```
|
|
|
+这些表共同构成了争霸赛系统的数据基础,支持赛季管理、队伍组建和成员管理等功能。
|
|
|
|
|
|
## 5. 关键改进
|
|
|
1. **数据完整性**:完善外键约束和索引配置
|
|
|
@@ -338,9 +394,17 @@ CREATE TABLE `pet_battle_team_members` (
|
|
|
宠物模块是游戏中重要的伙伴系统,为玩家提供了丰富的互动体验和游戏玩法。本文档详细描述了宠物系统的各个方面,包括:
|
|
|
|
|
|
1. **基础功能**:宠物属性系统、品阶系统、状态系统和技能系统
|
|
|
-2. **数据结构**:所有表名统一使用 pet_ 前缀,包括 pet_users、pet_skills、pet_level_configs 等
|
|
|
+2. **数据库设计**:
|
|
|
+ - 所有表名统一使用 pet_ 前缀
|
|
|
+ - 数据表分为基础表、日志表和争霸赛相关表
|
|
|
+ - 完善的索引设计和外键约束
|
|
|
3. **等级系统**:通过 pet_level_configs 表定义宠物成长曲线和等级特性
|
|
|
4. **配置参数**:详细的系统配置参数,支持灵活调整游戏平衡性
|
|
|
5. **争霸赛系统**:团队竞技玩法,增强社交互动和游戏竞争性
|
|
|
|
|
|
+宠物系统的数据表结构清晰:
|
|
|
+- **基础表**:pet_users、pet_skills、pet_configs、pet_level_configs
|
|
|
+- **日志表**:pet_skill_logs、pet_remould_logs、pet_battle_logs
|
|
|
+- **争霸赛相关表**:pet_battle_seasons、pet_battle_teams、pet_battle_team_members
|
|
|
+
|
|
|
通过宠物系统,玩家可以培养自己的宠物伙伴,参与各种游戏活动,增强游戏的趣味性和粘性。系统设计注重数据完整性、性能优化和扩展性,为后续功能迭代提供了良好的基础。
|