农场模块是开心农场游戏的核心模块,整合了土地、房屋、种子和作物管理功能,为玩家提供完整的种植、收获和升级体验。它是游戏中最基础的玩法系统,也是与其他模块交互最频繁的模块之一。
本模块旨在实现以下目标:
土地是种植作物的基础,不同类型的土地有不同的产出效果。土地系统包括:
房屋是用户农场的核心建筑,影响整体产出和可用特殊土地数量:
种子是作物的来源,决定了作物的基本属性:
作物是玩家种植的核心对象,从种植到收获的全过程管理:
农场模块采用分层架构设计,遵循单一职责原则和依赖倒置原则,各层次职责明确,便于维护和扩展:
┌─────────────────────────────────────────────────────┐
│ 表现层 (Presentation) │
│ ┌─────────────────────────────────────────────┐ │
│ │ AdminControllers │ │
│ │ Land/ House/ Seed/ Crop/ Helper/ │ │
│ └─────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ 服务层 (Service) │
│ ┌─────────────────────────────────────────────┐ │
│ │ FarmService LandService HouseService │ │
│ │ SeedService CropService │ │
│ └─────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ 业务层 (Logic) │
│ ┌─────────────────────────────────────────────┐ │
│ │ Land/ House/ Seed/ Crop/ Disaster/ │ │
│ └─────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ 数据层 (Data) │
│ ┌─────────────────┐ ┌─────────────────────┐ │
│ │ Models │ │ Repositorys │ │
│ └─────────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────┘
表现层负责与用户交互,包括后台管理界面和API接口:
服务层是模块对外的接口,提供高级功能,封装业务逻辑:
FarmService:整合服务,提供跨领域功能
public function initUserFarm(int $userId): bool;
public function getFarmOverview(int $userId): array;
public function processScheduledTasks(): array;
LandService:土地相关服务
public function getUserLands(int $userId): array;
public function upgradeLand(int $landId, int $targetType): bool;
HouseService:房屋相关服务
public function getHouseInfo(int $userId): array;
public function upgradeHouse(int $userId): bool;
SeedService:种子相关服务
public function getSeedList(array $filters = []): array;
public function processMysterySeeds(int $mysterySeedId): int;
CropService:作物相关服务
public function plantCrop(int $landId, int $seedId): array;
public function harvestCrop(int $cropId): array;
业务层处理具体的业务逻辑,实现核心算法:
Land/LandLogic:土地业务逻辑
public function calculateOutputBonus(FarmLand $land): float;
public function canHaveMoreSpecialLand(int $userId, int $landType): bool;
House/HouseLogic:房屋业务逻辑
public function calculateOutputBonus(int $houseLevel): float;
public function shouldDowngrade(FarmUser $farmUser): bool;
Seed/SeedLogic:种子业务逻辑
public function getRandomSeedId(int $mysterySeedId): int;
public function getSeedGrowthTimes(FarmSeed $seed): array;
Crop/CropLogic:作物业务逻辑
public function calculateOutput(FarmCrop $crop, FarmLand $land, int $houseLevel): int;
public function updateGrowthStage(FarmCrop $crop): bool;
Disaster/DisasterLogic:灾害业务逻辑
public function generateDisaster(FarmCrop $crop, FarmLand $land): ?array;
public function calculateDisasterImpact(array $disasters): float;
数据层定义数据结构和关系,负责数据的存取:
Models:数据模型,定义表结构和关系
Repositorys:数据仓库,封装数据访问逻辑
模块内部依赖关系遵循依赖倒置原则:
外部模块依赖通过服务层接口实现:
农场模块使用事件系统实现模块间的松耦合通信:
发出的事件:
监听的事件:
农场模块作为核心玩法模块,需要与多个其他模块进行交互,形成完整的游戏生态系统。
农场模块与物品模块的交互是最频繁的,主要包括:
农场模块需要调用物品模块的以下接口:
// 检查用户是否拥有足够的物品
$hasItem = $this->itemService->checkUserItem($userId, $itemId, $amount);
// 消耗用户物品
$result = $this->itemService->consumeUserItem($userId, $itemId, $amount, $reason);
// 添加物品到用户背包
$result = $this->itemService->addUserItem($userId, $itemId, $amount, $reason);
// 获取物品信息
$itemInfo = $this->itemService->getItemInfo($itemId);
详细的实现示例请参考各功能模块文档中的物品交互部分。
宠物可以辅助农场种植,主要交互包括:
用户模块提供基础的用户信息和权限管理:
任务系统与农场活动紧密结合:
农场模块与团队模块的交互主要围绕收益分成和达人加成展开:
CropHarvestedEvent事件农场模块在计算作物最终产量时,会调用团队模块的接口获取达人加成:
// 计算最终产量
$finalOutput = $baseOutput * (1 + $landBonus) * (1 + $houseBonus) * (1 - $disasterImpact) * (1 + $talentBonus);
其中$talentBonus就是从团队模块获取的达人产出加成。
预留特殊土地类型的扩展空间,支持未来添加新的土地类型。
设计灵活的种子属性系统,支持添加新的种子类型和属性。
灾害系统设计为可扩展的,支持添加新的灾害类型和影响机制。
预留季节系统的接入点,为未来可能的季节特性做准备。
农场模块将按照以下规划分阶段实施,确保功能逐步完善,同时保持系统的稳定性。
核心功能实现:
技术基础:
功能扩展:
系统优化:
高级功能:
系统升级:
| 迭代 | 时间 | 主要目标 | 里程碑 |
|---|---|---|---|
| 1.0 | 第1-2周 | 数据库设计和基础架构 | 完成数据库表创建和模型定义 |
| 1.1 | 第3-4周 | 基础种植功能 | 实现种植和收获基本流程 |
| 1.2 | 第5-6周 | 土地和房屋系统 | 完成土地和房屋升级功能 |
| 1.3 | 第7-8周 | 物品模块集成 | 完成与物品模块的基础集成 |
| 2.0 | 第3个月 | 灾害系统和化肥系统 | 实现完整的灾害和化肥功能 |
| 2.1 | 第4个月 | 种子系统扩展 | 添加神秘种子和巨化种子 |
| 2.2 | 第5-6个月 | 宠物模块集成 | 实现宠物辅助农场功能 |
| 3.0 | 第7-8个月 | 季节系统 | 实现四季变化和季节特性 |
| 3.1 | 第9-10个月 | 社交功能 | 实现好友互访和社交功能 |
| 3.2 | 第11-12个月 | 农场装饰 | 实现农场装饰和视觉效果 |
农场模块作为开心农场游戏的核心玩法模块,通过土地、房屋、种子和作物系统的紧密结合,为玩家提供了丰富的种植体验。模块采用分层架构设计,各层职责明确,便于维护和扩展。通过与物品、宠物等模块的集成,形成了完整的游戏生态系统。
未来,农场模块将按照规划逐步完善功能,提升用户体验,同时保持系统的稳定性和可扩展性。通过持续的优化和创新,为玩家提供更加丰富和有趣的农场玩法。