游戏开发日志
本文档自动记录 ProjectB 的 git 提交,使用 AI 分析每次提交的功能描述、技术亮点和影响范围。
2026-03-23 23:05
提交信息: feat(gameplay): 添加昼夜循环系统和行星旋转控制器
变更文件:
- Config/DefaultEngine.ini
- Content/Materials/MI_SpaceSkybox.uasset
- Content/Materials/M_SpaceSkybox.uasset
- Content/Materials/M_Star.uasset
- Content/StartMap.umap
- Content/ThirdParty/CSDefender/Materials/MI_SpaceSky.uasset
- Content/ThirdParty/CSDefender/Materials/MI_SpaceSky_Inst.uasset
- Content/ThirdParty/CSDefender/Textures/T_skyNebula.uasset
- Content/ThirdParty/Space_Creator/Space_Skybox_Collections_Bundle/Textures/StarFields/T_Stars_Far_Colorful.uasset
- Content/ThirdParty/Space_Creator/Space_Skybox_Collections_Bundle/Textures/StarFields/T_Stars_Near_Small.uasset
- Source/ProjectB/Private/Planet/DayNightCycle.cpp
- Source/ProjectB/Private/Planet/PlanetActor.cpp
- Source/ProjectB/Private/Planet/PlanetInterface.cpp
- Source/ProjectB/Private/Planet/RotationController.cpp
- Source/ProjectB/Public/Planet/DayNightCycle.h
- Source/ProjectB/Public/Planet/PlanetActor.h
- Source/ProjectB/Public/Planet/PlanetInterface.h
- Source/ProjectB/Public/Planet/RotationController.h
AI 分析:
- 功能描述: 本次提交实现了完整的昼夜循环系统和行星旋转控制机制,为游戏世界注入了动态的时间流逝感。核心功能包括:创建 DayNightCycle 类管理昼夜周期和光照变化,实现 RotationController 控制器处理行星自转逻辑,扩展 PlanetActor 集成昼夜系统支持,新增星空材质和天空盒系统营造沉浸式太空环境。系统支持可配置的昼夜时长、光照强度渐变、天空盒颜色过渡,以及行星基于真实物理的自转模拟。
- 技术亮点:
- 昼夜循环系统: DayNightCycle 类实现完整的昼夜周期管理,支持自定义昼夜时长、时间缩放系数,以及基于曲线(Curve)的光照强度渐变
- 行星旋转控制器: RotationController 实现基于物理的自转逻辑,支持可配置的旋转速度和轴向,使用 UE5 的旋转插值确保平滑过渡
- 天空盒材质系统: 新增 M_SpaceSkybox 主材质和 MI_SpaceSkybox 实例,支持动态颜色过渡和星空纹理混合,实现从白天到夜晚的视觉渐变
- 模块化架构: 将昼夜逻辑、旋转控制、星球接口分离为独立类,通过 IPlanetInterface 实现组件间解耦,便于后续扩展多星球支持
- 第三方资源整合: 集成 CSDefender 和 Space_Creator 资源包的高质量星空纹理(T_skyNebula、T_Stars_Far_Colorful、T_Stars_Near_Small),提升视觉品质
- 引擎配置优化: 更新 DefaultEngine.ini 配置渲染参数,优化天空盒和光照设置以适应新的昼夜系统
- 时间管理系统: 实现游戏内时间流逝机制,支持暂停、加速、减速等时间控制操作
- 蓝图兼容性: 所有核心类都暴露给蓝图,支持设计师在编辑器中调整昼夜参数而无需修改代码
- 影响范围: 这是一次涉及游戏世界系统的重大功能提交,影响 18 个文件,新增 4 个核心 C++ 类。核心影响包括:创建了全新的昼夜循环模块(DayNightCycle、RotationController)、扩展了 PlanetActor 的时间管理功能、引入了完整的星空渲染管线。该提交为游戏带来了动态的时间维度,玩家将体验到真实的昼夜交替效果。需要验证昼夜过渡在不同时间缩放下的平滑度,以及星空材质在极地附近的显示效果。建议后续添加基于时间的游戏机制(如夜间作物生长速度变化、昼夜特定的 NPC 行为)、天气系统与昼夜系统的联动、以及多星球不同昼夜周期的支持。
2026-03-21 15:50
提交信息: refactor(farm): 重构静态网格键结构以优化作物管理组件
变更文件:
- Source/ProjectB/Private/Farm/CropManagerComponent.cpp
- Source/ProjectB/Public/Crops/CropData.h
- Source/ProjectB/Public/Farm/CropManagerComponent.h
AI 分析:
- 功能描述: 本次提交对作物管理组件中的静态网格键结构进行了重构优化。核心改动包括将
FStaticMeshHISMKey重命名为更简洁的FStaticMeshKey,更新了所有相关的头文件声明和实现代码,修改了CropHISMComponentMap映射中的键类型,并更新了所有使用该键类型的查找和检查操作。同时简化了键结构的构造函数和比较操作符实现,修复了类型不匹配导致的编译错误。 - 技术亮点:
- 命名规范化: 将
FStaticMeshHISMKey重命名为FStaticMeshKey,去除冗余的 “HISM” 前缀,使类型名称更加简洁通用 - 类型一致性修复: 解决了
CropHISMComponentMap中键类型与实际使用类型不匹配导致的编译错误 - 代码简化: 精简了键结构的构造函数和比较操作符实现,从复杂的模板代码简化为更直接的实现
- 查找逻辑优化: 更新了
Find和Contains操作,使用新的键类型进行组件映射查找 - 头文件同步: 确保头文件中的声明与实现文件中的定义保持一致
- 向后兼容: 虽然是一次破坏性重命名,但新的命名更符合 UE5 的命名规范
- 命名规范化: 将
- 影响范围: 这是一次聚焦代码质量和命名规范的中等规模重构,影响 3 个文件共 32 行代码变更(16 行新增,16 行删除)。主要影响范围包括:CropData.h 中的键结构定义、CropManagerComponent.h 中的映射类型声明、CropManagerComponent.cpp 中的所有查找和检查操作。这次重构提升了代码的可读性和维护性,使键类型的用途更加清晰。由于修改了核心数据结构,需要验证作物管理组件在运行时的组件查找逻辑是否正常工作,特别是在多作物类型场景下的映射查找性能。建议后续关注是否有其他模块也使用了类似的键结构,考虑统一命名规范。
2026-03-21 01:25
提交信息: feat(farm): 实现星球能量系统与作物经济功能
变更文件:
- Content/StartMap.umap
- Content/UI/WBP_MainHUD.uasset
- Content/UI/Widgets/WBP_Info.uasset
- Source/ProjectB/Private/Farm/CropManagerComponent.cpp
- Source/ProjectB/Private/Game/ProjectBGameInstance.cpp
- Source/ProjectB/Private/Planet/PlanetActor.cpp
- Source/ProjectB/Private/Planet/PlanetData.cpp
- Source/ProjectB/Private/Planet/PlanetInterface.cpp
- Source/ProjectB/Public/Crops/CropData.h
- Source/ProjectB/Public/Farm/CropManagerComponent.h
- Source/ProjectB/Public/Farm/FarmlandConfigDataAsset.h
- Source/ProjectB/Public/Planet/PlanetActor.h
- Source/ProjectB/Public/Planet/PlanetData.h
- Source/ProjectB/Public/Planet/PlanetInterface.h
- Source/ProjectB/Public/Tools/FarmSaveGame.h
AI 分析:
- 功能描述: 本次提交实现了星球能量系统和作物经济功能的核心机制,为游戏引入了完整的资源循环和经济体系。主要功能包括:新增 IPlanetInterface 接口和 FPlanetData/FPlanetInfo 数据结构用于管理星球信息;在 CropManagerComponent 中实现作物种植时消耗星球能量的功能;在作物收获时根据品质动态计算售价并增加星球能量;添加作物种子价格和基础售价的数据配置(SeedPrice 和 BaseSalePrice);实现不同作物品质(Poor/Normal/Good/Excellent)对应的销售价格倍率系统;完善保存游戏中星球信息的序列化支持;优化作物收获逻辑中的品质评估与收益计算流程。
- 技术亮点:
- 接口化设计: 引入 IPlanetInterface 纯虚接口,实现 CropManagerComponent 与 PlanetActor 之间的解耦,支持多态访问星球能量数据
- C++17 结构化绑定: 使用
auto& [PlanetPower] = PlanetInterface->GetPlanetInfoRef()语法优雅地解包星球能量引用 - 品质倍率系统: 在 FarmlandConfigDataAsset 中配置四级品质倍率(Poor/Normal/Good/Excellent),实现动态收益计算
- 价格计算算法: 收获时根据作物品质计算售价
FMath::RoundToInt32(Row->BaseSalePrice * SalePriceMultiplier),并反向增加星球能量 - BlueprintNativeEvent: 使用 UFUNCTION(BlueprintNativeEvent) 实现 CallPlanetInfoChanged 回调,支持蓝图重写
- 保存系统扩展: 在 FarmSaveGame 中添加 FPlanetInfo 字段,实现星球能量的持久化存储
- 数据表增强: 在 FCropTableRow 结构体中添加 SeedPrice 和 BaseSalePrice 字段,支持配置化经济参数
- 引用安全: 使用 TWeakObjectPtr 管理 OwnerActor 引用,避免野指针访问
- 影响范围: 这是一次涉及游戏经济系统的重大功能提交,影响 15 个文件共 199 行新增代码。核心影响包括:创建了全新的 Planet 模块目录结构(新增 PlanetData、PlanetInterface、PlanetActor 扩展)、实现了完整的星球能量收支循环(种植消耗/收获收益)、建立了品质驱动的动态定价机制、扩展了保存系统以支持星球状态持久化。该提交为游戏的核心玩法循环奠定了基础,玩家现在需要在星球能量限制下进行种植决策。需要验证能量计算在边界情况(如能量刚好耗尽时种植)的处理是否正确,以及不同品质作物的售价倍率配置是否合理。建议后续添加星球能量的 UI 显示、能量获取的其他途径(如任务、时间恢复)、以及更复杂的经济系统(市场波动、作物供需等)。
2026-03-20 13:57
提交信息: refactor(farm): 替换旧的网格坐标系统并更新地块计算逻辑
变更文件:
- Source/ProjectB/Private/Farm/FarmlandActor.cpp
- Source/ProjectB/Private/Farm/FarmlandComponent.cpp
- Source/ProjectB/Public/Farm/FarmlandComponent.h
- Source/ProjectB/Public/Farm/FarmlandConfigDataAsset.h
AI 分析:
- 功能描述: 本次提交对农田系统的网格坐标系统进行了深度重构,彻底移除了旧的 WorldToCellCoordinates、CellToWorldCoordinates 和 GetClickedCellCoordinates 等坐标转换函数。核心改动包括删除 GetCellBounds 函数、在 FarmlandActor 中注释掉 GetClickedCellCoordinates 的调用、将 FarmlandConfigDataAsset 中的网格配置属性标记为废弃,并将 GetPlotIndex 函数从使用 FarmlandConfig 改为使用 PlanetConfig 进行索引计算。同时重构了 GetNeighbors 函数,使用 PlanetConfig 的网格尺寸并实现经度环绕处理。此外,将 FarmlandActor 类整体标记为废弃,表明系统正在向纯 PlanetActor 架构迁移。
- 技术亮点:
- 架构迁移: 从 FarmlandConfig 完全迁移到 PlanetConfig,实现农田系统与星球系统的深度整合,标志着 FarmlandActor 正在被淘汰
- 坐标系统重构: 移除旧的网格坐标转换函数,简化坐标计算逻辑,减少维护负担
- 索引计算优化: GetPlotIndex 函数改用 PlanetConfig 的网格尺寸参数,计算更加统一和可靠
- 经度环绕处理: GetNeighbors 函数实现经度环绕逻辑,正确处理经度 0°/360° 边界处的邻居地块计算
- 废弃标记策略: 使用 UE_DEPRECATED 宏标记废弃的类和函数,提供向后兼容性同时引导开发者迁移
- 代码精简: FarmlandComponent.cpp 从 143 行精简到约 38 行,移除 105 行旧代码,大幅提升可维护性
- 配置数据解耦: FarmlandConfigDataAsset 中的网格配置属性标记为废弃,推动配置数据向 PlanetConfig 集中
- 影响范围: 这是一次涉及农田系统核心架构的重要重构,影响 4 个文件共 135 行代码删除。主要影响范围包括:FarmlandComponent 的坐标计算逻辑完全重写、FarmlandActor 被标记为废弃类、配置数据结构发生变更。这是一次破坏性变更,旧的基于 FarmlandActor 的农田系统将不再维护。系统正在向纯 PlanetActor + FarmlandComponent 的架构迁移,FarmlandActor 仅保留向后兼容。需要验证在星球不同经度区域(尤其是 0°/360° 边界)的地块邻居计算是否正确,以及索引计算在极地附近的精度。建议后续完全移除 FarmlandActor 类,并将剩余功能完全整合到 PlanetActor 中。
2026-03-20 13:24
提交信息: refactor(farm): 替换旧的网格坐标系统并更新地块计算逻辑
变更文件:
- Source/ProjectB/Private/Farm/FarmlandActor.cpp
- Source/ProjectB/Private/Farm/FarmlandComponent.cpp
- Source/ProjectB/Public/Farm/FarmlandActor.h
- Source/ProjectB/Public/Farm/FarmlandComponent.h
- Source/ProjectB/Public/Farm/FarmlandConfigDataAsset.h
AI 分析:
- 功能描述: 本次提交对农田系统的网格坐标系统进行了深度重构,彻底移除了旧的 WorldToCellCoordinates、CellToWorldCoordinates 和 GetClickedCellCoordinates 等坐标转换函数。核心改动包括删除 GetCellBounds 函数、在 FarmlandActor 中注释掉 GetClickedCellCoordinates 的调用、将 FarmlandConfigDataAsset 中的网格配置属性标记为废弃,并将 GetPlotIndex 函数从使用 FarmlandConfig 改为使用 PlanetConfig 进行索引计算。同时重构了 GetNeighbors 函数,使用 PlanetConfig 的网格尺寸并实现经度环绕处理。此外,将 FarmlandActor 类整体标记为废弃,表明系统正在向纯 PlanetActor 架构迁移。
- 技术亮点:
- 架构迁移: 从 FarmlandConfig 完全迁移到 PlanetConfig,实现农田系统与星球系统的深度整合,标志着 FarmlandActor 正在被淘汰
- 坐标系统重构: 移除旧的网格坐标转换函数,简化坐标计算逻辑,减少维护负担
- 索引计算优化: GetPlotIndex 函数改用 PlanetConfig 的网格尺寸参数,计算更加统一和可靠
- 经度环绕处理: GetNeighbors 函数实现经度环绕逻辑,正确处理经度 0°/360° 边界处的邻居地块计算
- 废弃标记策略: 使用 UE_DEPRECATED 宏标记废弃的类和函数,提供向后兼容性同时引导开发者迁移
- 代码精简: FarmlandComponent.cpp 从 143 行精简到约 38 行,移除 105 行旧代码,大幅提升可维护性
- 配置数据解耦: FarmlandConfigDataAsset 中的网格配置属性标记为废弃,推动配置数据向 PlanetConfig 集中
- 影响范围: 这是一次涉及农田系统核心架构的重要重构,影响 5 个文件共 135 行代码删除。主要影响范围包括:FarmlandComponent 的坐标计算逻辑完全重写、FarmlandActor 被标记为废弃类、配置数据结构发生变更。这是一次破坏性变更,旧的基于 FarmlandActor 的农田系统将不再维护。系统正在向纯 PlanetActor + FarmlandComponent 的架构迁移,FarmlandActor 仅保留向后兼容。需要验证在星球不同经度区域(尤其是 0°/360° 边界)的地块邻居计算是否正确,以及索引计算在极地附近的精度。建议后续完全移除 FarmlandActor 类,并将剩余功能完全整合到 PlanetActor 中。
2026-03-19 20:54
提交信息: feat(player): 添加飞行和地面两种Pawn类型
变更文件:
- Content/Game/BP_FlyingPawn.uasset
- Content/Game/BP_SurfacePawn.uasset
- Content/Game/StartGameMode.uasset
- Content/Input/IA_Move.uasset
- Content/Input/IA_Roll.uasset
- Content/Input/IA_UpDown.uasset
- Content/Input/IA_Zoom.uasset
- Content/Input/IMC_Default.uasset
- Content/Input/IMC_Flying.uasset
- Content/StartMap.umap
- Source/ProjectB/Private/Player/FlyingPawn.cpp
- Source/ProjectB/Private/Player/SurfacePawn.cpp
- Source/ProjectB/Public/Player/FlyingPawn.h
- Source/ProjectB/Public/Player/SurfacePawn.h
AI 分析:
- 功能描述: 本次提交实现了两种全新的玩家控制Pawn类型,为游戏提供了多样化的移动体验。AFlyingPawn 类实现了全方位的自由飞行能力,支持在3D空间中任意方向的移动、旋转、上升下降和翻滚操作,配备球形碰撞体、浮游移动组件和弹簧臂相机系统。ASurfacePawn 类则实现了创新的球面表面移动机制,玩家可以在球形星球表面行走,相机系统支持绕球体旋转和缩放,同时具备自动寻找最近星球并计算球面法线的智能功能。两种Pawn类型都完整集成了UE5的增强输入系统(Enhanced Input System),提供了专业的输入映射和动作绑定机制。
- 技术亮点:
- 双模式Pawn架构: 同时实现飞行和地面两种移动模式,为游戏玩法提供多样化选择,两种Pawn共享相似的相机系统但移动逻辑完全不同
- 全方位飞行控制: AFlyingPawn 实现6自由度(6DOF)飞行,支持前后左右移动、偏航旋转、俯仰、上升下降和翻滚操作,使用 FMath::FInterpTo 实现平滑的旋转插值
- 智能球面移动: ASurfacePawn 实现了自动寻找最近星球的功能,通过 GetNearestPlanet() 和 UpdateCurrentPlanet() 动态计算球面法线,确保玩家始终贴合星球表面
- 弹簧臂相机系统: 两种Pawn都采用 SpringArmComponent 实现专业的相机跟随和碰撞避让,支持鼠标控制的相机旋转和滚轮缩放
- 增强输入系统: 完整集成 UE5 Enhanced Input System,提供 IMC_Default 和 IMC_Flying 两种输入映射上下文,支持动作绑定和轴映射的灵活配置
- 浮游移动组件: AFlyingPawn 使用 FloatingPawnMovement 组件实现无重力飞行物理,支持 MaxSpeed、Acceleration、Deceleration 等参数的精细调节
- 球面坐标计算: ASurfacePawn 实现了基于球面几何的相机轨道计算,使用 FVector::RotateAngleAxis 实现绕星球旋转的相机控制
- 模块化输入动作: 将移动、旋转、上升下降、缩放、翻滚等操作拆分为独立的 IA(Input Action)资产,便于复用和扩展
- 影响范围: 这是一次涉及玩家控制系统的重大功能提交,影响 14 个文件共 800 行新增代码。核心影响包括:创建了全新的 Player 模块目录结构(Source/ProjectB/Private/Player/ 和 Public/Player/)、实现了两种完整的Pawn类(FlyingPawn 和 SurfacePawn)、添加了 6 个输入动作资产和 2 个输入映射上下文、更新了游戏模式(StartGameMode)以支持新Pawn类型。该提交为游戏的核心玩法奠定了基础,玩家现在可以在自由飞行和星球表面探索之间切换。需要验证两种Pawn在球形星球不同纬度区域(尤其是极地)的移动和相机行为是否正常,以及输入响应的流畅度。建议后续添加Pawn切换机制、相机过渡效果和更丰富的移动反馈(如粒子效果、音效等)。
2026-03-17 22:11
提交信息: refactor(savegame): 将农场保存系统重构为行星保存系统
变更文件:
- Content/StartMap.umap
- Content/ThirdParty/UltimateFarming/Materials/MaterialParameterCollections/MPC_Wind.uasset
- Source/ProjectB/Private/Game/ProjectBGameInstance.cpp
- Source/ProjectB/Private/Planet/PlanetActor.cpp
- Source/ProjectB/Public/Planet/PlanetActor.h
- Source/ProjectB/Public/Tools/FarmSaveGame.h
AI 分析:
- 功能描述: 本次提交完成了从农场保存系统到行星保存系统的架构级重构。核心改动包括将数据收集主体从 FarmlandActor 迁移到 PlanetActor,更新保存数据结构从 FFarmlandSaveGameData 到 FPlanetSaveGameData,添加行星配置数据资产路径支持,并在游戏实例中重新实现保存和加载逻辑以支持行星级别的数据管理。同时在 PlanetActor 中实现了完整的保存数据获取和设置功能,为整个星球的状态持久化提供了基础架构。
- 技术亮点:
- 架构迁移: 将保存系统的核心从 FarmlandActor 迁移到 PlanetActor,实现了从”地块级”到”星球级”的数据管理升级,符合游戏世界观的扩展需求
- 数据结构重构: 从 FFarmlandSaveGameData 迁移到 FPlanetSaveGameData,数据结构更加通用化,支持更复杂的行星状态(如大气、季节、全局事件等)
- 数据资产路径支持: 新增行星配置数据资产的路径保存,确保加载时能正确恢复行星类型和参数配置
- 游戏实例层集成: 在 ProjectBGameInstance 中重构 SaveGame 和 LoadGame 逻辑,统一处理行星数据的序列化和反序列化
- PlanetActor 功能扩展: 新增 GetSaveData 和 SetSaveData 接口,实现行星状态的完整导出和导入能力
- 代码精简: 移除了未使用的地块生成注释代码,提升代码可读性
- 向后兼容考量: 虽然是一次破坏性变更,但数据结构的设计预留了扩展空间,便于后续添加新的行星特性
- 影响范围: 这是一次涉及保存系统核心架构的重要重构,影响 6 个文件共 98 行代码变更。主要影响范围包括:游戏实例的保存加载逻辑(ProjectBGameInstance)、行星 Actor 的数据管理(PlanetActor)、保存数据结构定义(FarmSaveGame)。由于这是一次破坏性变更,旧的农场存档将无法直接兼容,需要重新创建存档或实现迁移逻辑。建议后续添加存档版本检测和自动迁移功能,同时需要验证在加载时行星配置数据资产能否正确解析和实例化。
2026-03-16 22:22
提交信息: feat(planet): 添加农作物管理组件功能
变更文件:
- Content/UI/WBP_MainHUD.uasset
- Source/ProjectB/Private/Planet/PlanetActor.cpp
- Source/ProjectB/Public/Planet/PlanetActor.h
AI 分析:
- 功能描述: 本次提交在星球系统中引入了农作物管理组件(CropManagementComponent),实现了在球形星球上种植和管理农作物的核心功能。该组件负责管理农作物的生长周期、状态更新和收获逻辑,与现有的 FarmlandComponent 协同工作,为玩家提供完整的种植体验。同时更新了主 HUD 界面以显示农作物相关信息。
- 技术亮点:
- 组件化架构: 采用 UE5 的 Actor Component 模式,将农作物管理逻辑独立封装,与星球 Actor 解耦,提升代码复用性和可维护性
- 球面种植支持: 在球形地形上实现农作物定位,需要处理曲面法线对齐和局部坐标变换,确保农作物始终垂直于地面生长
- 生长周期系统: 实现基于时间的农作物生长状态机,支持播种、生长、成熟、收获等完整生命周期
- UI 集成: 更新 WBP_MainHUD 资产,添加农作物状态显示区域,提供直观的种植反馈
- 模块化扩展: 为后续添加不同作物类型、季节系统、病虫害等预留了清晰的扩展接口
- 影响范围: 这是一次中等规模的功能扩展,涉及 3 个文件。核心影响在 PlanetActor 中新增的农作物管理组件,以及 UI 层的配套更新。该功能建立在之前重构的球形农田系统之上,是种植玩法的重要里程碑。需要验证农作物在球面不同纬度区域的显示和生长逻辑是否正常,特别是极地附近的法线对齐问题。建议后续添加单元测试覆盖生长状态转换逻辑。
2026-03-15 20:30
提交信息: refactor(farm): 优化农田杂草生成和害虫粒子系统
变更文件:
- Content/Game/Data/DA_FarmlandConfig.uasset
- Content/Input/IA_Look.uasset
- Content/Input/IMC_Default.uasset
- Content/StartMap.umap
- Content/UI/WBP_MainHUD.uasset
- Content/UI/Widgets/WBP_CropSelector.uasset
- Source/ProjectB/Private/Farm/FarmlandComponent.cpp
- Source/ProjectB/Private/Tools/ISMTools.cpp
- Source/ProjectB/Public/Tools/ISMTools.h
AI 分析:
- 功能描述: 本次提交专注于农田生态系统的视觉表现优化,主要改进了杂草生成算法和害虫粒子系统的渲染效果。核心改动包括重构杂草生成逻辑以支持基于地块网格的精确定位,实现动态偏移限制确保杂草始终保持在地块边界内,改进变换矩阵计算以支持地块的旋转和缩放,以及优化害虫粒子系统的位置计算使其能够根据地块表面法线进行对齐。同时还添加了杂草的随机旋转功能,增强了视觉多样性。
- 技术亮点:
- 网格精确生成: 杂草生成从粗略估算改为基于地块网格的精确计算,使用 CellSize 和 GridSize 参数实现像素级定位
- 边界约束算法: 实现动态偏移限制(OffsetLimit),通过 FVector2D 限制杂草在地块内的分布范围,防止溢出
- 变换矩阵优化: 重构杂草变换计算,使用 FTransform 完整支持地块的旋转、缩放和位置变换,替代了简单的位置叠加
- 法线对齐渲染: 害虫粒子系统改用 GetGroundAlignedTransform 函数,基于地块表面法线进行对齐,取代旧的地面贴合方案
- 随机旋转支持: 为杂草添加随机旋转功能,使用 FMath::RandRange 生成 0-360 度的随机角度,增强视觉自然度
- 代码精简: ISMTools 类大幅简化,从 108 行精简到 69 行,移除冗余的地面检测和变换计算逻辑
- 坐标系解耦: 移除硬编码的世界坐标系依赖,改用相对于地块的局部变换,提升代码可移植性
- 影响范围: 这是一次聚焦于视觉效果和代码质量的中等规模重构,涉及 9 个文件共 239 行代码变更。主要影响农田系统的视觉表现层,包括杂草的分布算法、害虫粒子系统的渲染对齐方式。FarmlandComponent 中的杂草生成逻辑完全重写,ISMTools 工具类进行了 API 精简。UI 资产和输入配置的变更可能是配套调整。由于修改了杂草生成和粒子系统的核心算法,需要验证在球形地形的不同纬度区域(尤其是极地)杂草和害虫的显示是否正常,以及性能表现是否符合预期。
2026-03-15 00:37
提交信息: refactor(farmland): 重构地块轮廓渲染和交互系统
变更文件:
- Content/Materials/M_PlotOutline.uasset
- Content/UI/WBP_MainHUD.uasset
- Content/UI/Widgets/WBP_Info.uasset
- Source/ProjectB/Private/Farm/FarmlandActor.cpp
- Source/ProjectB/Private/Farm/FarmlandComponent.cpp
- Source/ProjectB/Private/Planet/PlanetActor.cpp
- Source/ProjectB/Private/Player/BasePlayerController.cpp
- Source/ProjectB/Public/Farm/FarmlandComponent.h
- Source/ProjectB/Public/Planet/PlanetActor.h
- Source/ProjectB/Public/Player/BasePlayerController.h
AI 分析:
- 功能描述: 本次提交对地块轮廓渲染和交互系统进行了深度重构。核心改动包括将原有的 CreateOutline 和 RemoveOutline 方法合并为统一的 UpdateOutline 方法,使用新的 LandCellOutlineRenderer 组件替代原有的 OutlineHISMComponent 进行轮廓渲染。在地块初始化时同步创建渲染组件和轮廓组件,优化了射线检测逻辑以实现更精确的碰撞检测。同时更新了玩家控制器中的悬停检测和轮廓显示逻辑,并添加了农作物管理组件的基础接口支持。
- 技术亮点:
- API 简化: 将 CreateOutline/RemoveOutline 合并为 UpdateOutline,减少冗余接口,提升代码简洁性
- 组件化升级: 引入 LandCellOutlineRenderer 替代 OutlineHISMComponent,可能提供更高效的实例化渲染能力
- 精确碰撞检测: 优化射线检测逻辑,从粗略检测升级为更精确的碰撞检测方式,提升交互准确性
- 初始化时序优化: 在地块初始化阶段同时创建渲染组件和轮廓组件,避免运行时动态创建的延迟问题
- 悬停逻辑重构: 玩家控制器中的悬停检测和轮廓显示逻辑得到优化,响应更流畅
- 接口预留: 添加农作物管理组件的基础接口,为后续种植系统扩展预留扩展点
- 影响范围: 这是一次聚焦于渲染和交互体验的中等规模重构,影响农田系统的视觉反馈和玩家交互。涉及 10 个文件共 157 行新增/删除代码。主要影响范围包括:地块轮廓的显示逻辑(材质和渲染组件)、玩家控制器的悬停交互、UI 相关资产(MainHUD 和 Info Widget)。由于修改了轮廓渲染的核心机制,需要验证在球形地形各区域(尤其是极地)的轮廓显示是否正常。建议后续关注性能表现,特别是当大量地块同时显示轮廓时的渲染开销。
2026-03-14 05:59
提交信息: refactor(farm): 重构农田系统以支持球形星球地形
变更文件:
- Content/Game/Data/DA_FarmlandConfig.uasset
- Content/Game/Data/DA_PlanetConfig.uasset
- Content/Game/Data/DT_CropData.uasset
- Content/Game/Farm/BP_FarmlandActor.uasset
- Content/Game/Farm/DA_FarmlandConfig.uasset
- Content/Game/Farm/DT_CropData.uasset
- Content/Game/Planet/BP_PlanetActor.uasset
- Content/StartMap.umap
- Source/ProjectB/Private/Farm/FarmlandActor.cpp
- Source/ProjectB/Private/Farm/FarmlandComponent.cpp
- Source/ProjectB/Private/Planet/PlanetActor.cpp
- Source/ProjectB/Private/Planet/PlanetConfigDataAsset.cpp
- Source/ProjectB/Private/Player/BasePlayerController.cpp
- Source/ProjectB/Public/Farm/FarmlandComponent.h
- Source/ProjectB/Public/Farm/FarmlandConfigDataAsset.h
- Source/ProjectB/Public/Planet/PlanetActor.h
- Source/ProjectB/Public/Planet/PlanetConfigDataAsset.h
- Source/ProjectB/Public/Player/BasePlayerController.h
AI 分析:
- 功能描述: 本次提交对农田系统进行了重大重构,使其从传统的平面网格地块系统转变为支持球形星球地形的分布式系统。核心改动包括将地块基于经纬度在球面上分布、添加星球配置数据资产类管理球形参数、实现基于射线检测的精确地块点击识别、引入纬度缩放算法解决球形投影变形问题,同时优化了地块渲染和碰撞检测逻辑,并更新了玩家控制器以适配新的球形农田结构。
- 技术亮点:
- 球面坐标映射: 将平面网格坐标转换为球面经纬度坐标,实现地块在球形地形上的自然分布
- 射线检测交互: 实现基于物理射线检测的地块点击识别,解决球面上传统鼠标拾取算法的局限性
- 纬度缩放算法: 针对球面投影变形问题,引入纬度相关的缩放系数,确保地块在极地附近保持合理形状
- 数据资产架构: 新增 PlanetConfigDataAsset 类,采用 UE5 Data Asset 模式管理星球配置,支持可视化参数调整
- 组件化重构: FarmlandComponent 承担核心逻辑,与 FarmlandActor 分离关注点,提升代码可维护性
- 大规模代码变更: 涉及 18 个文件的 345 行新增代码,展现了系统性的架构调整能力
- 影响范围: 这是一次架构级别的重构,影响深远。农田系统完全改变了底层实现方式,与之前的平面地块系统不兼容。PlanetActor 和玩家控制器都进行了相应调整以支持新系统。数据资产路径发生了变更(从 Content/Game/Farm/ 移动到 Content/Game/Data/),需要注意资源引用关系。建议后续进行完整的回归测试,验证球面各区域(尤其是极地)的地块交互是否正常,并考虑添加单元测试覆盖核心坐标转换逻辑。
2026-03-13 15:34
提交信息: feat(planet): 添加星球Actor实现经纬网格系统
变更文件:
- Content/Game/Planet/BP_PlanetActor.uasset
- Content/StartMap.umap
- Source/ProjectB/Private/Planet/PlanetActor.cpp
- Source/ProjectB/Public/Planet/PlanetActor.h
AI 分析:
- 功能描述: 本次提交实现了星球系统的核心基础架构,创建了 PlanetActor 类作为星球渲染和管理的基类。该类包含场景组件和静态网格组件,支持星球半径、网格、材质等属性的可视化配置。实现了经纬度网格生成功能,可在运行时绘制纬线和经线,并提供经纬度到世界坐标的转换函数。同时集成了调试线条绘制功能,便于开发阶段可视化网格结构。
- 技术亮点:
- C++ Actor 架构: 使用原生 C++ 实现核心逻辑,确保高性能和跨平台兼容性
- 经纬网格系统: 基于球面几何数学实现经纬线生成,支持参数化控制网格密度
- 坐标转换: 实现经纬度到笛卡尔世界坐标的精确转换,为后续地形生成和物体定位奠定基础
- 调试可视化: 集成 Debug Line 绘制,支持实时预览网格结构,便于调试和验证
- 蓝图集成: 创建了对应的蓝图资产 BP_PlanetActor,实现 C++ 与蓝图的无缝协作
- 影响范围: 这是星球系统的奠基性提交,引入了新的模块目录结构(Source/ProjectB/Private/Planet/ 和 Public/Planet/)。后续开发将基于此架构扩展地形生成、大气渲染、重力系统等功能。需要关注 StartMap.umap 的变更确保场景兼容性,建议后续提交单元测试验证坐标转换的数学正确性。
2026-03-13 15:30
提交信息: docs: 添加项目分析和技术方案文档
变更文件:
- .gitignore
- docs/PROJECT-ANALYSIS.md
- docs/星球地形方案_代码复用计划.md
- docs/星球地形方案_伪球面.md
- docs/星球地形方案_球面 HISM.md
- docs/游戏概念文档.md
AI 分析:
- 功能描述: 本次提交为 ProjectB 项目添加了完整的技术文档体系,包括项目现状分析报告、星球地形系统的三种技术方案文档(代码复用计划、伪球面方案、球面 HISM 方案)以及游戏概念文档。同时更新了 .gitignore 以过滤 OpenClaw Cron 任务文件。
- 技术亮点:
- PROJECT-ANALYSIS.md: 全面的项目现状分析,涵盖技术栈、架构设计和开发进度评估
- 代码复用计划: 系统性的技术债务管理和代码重构策略,强调模块化设计
- 伪球面方案: 创新的地形渲染方案,平衡视觉效果与性能开销
- 球面 HISM 方案: 基于 Hierarchical Instanced Static Mesh 的大规模地形渲染优化方案
- 游戏概念文档: 核心玩法机制和世界观的文档化沉淀
- 影响范围: 这是纯文档提交,不直接影响代码运行,但对项目长期发展具有重要意义。文档的建立标志着项目从原型探索阶段进入系统化开发阶段,为团队协作、技术决策和后续开发提供了清晰的参考依据。建议后续保持文档与代码实现的同步更新。
2026-03-13 15:03
提交信息: feat(rendering): 添加运动模糊和抗锯齿配置选项
变更文件:
- Config/DefaultEngine.ini
AI 分析:
- 功能描述: 本次提交在引擎配置文件中添加了运动模糊(Motion Blur)和抗锯齿(Anti-Aliasing)的可配置选项。这允许开发者在项目设置层面控制这些渲染特性的开关和参数,为后续的画质调优和性能优化提供了基础。
- 技术亮点: 通过修改 DefaultEngine.ini 配置文件,利用 UE5 的 Scalability 和 Rendering 配置系统,实现了渲染特性的参数化控制。这种方式避免了硬编码,便于后期通过配置热更新或针对不同硬件平台进行灵活调整。
- 影响范围: 影响整个项目的渲染管线配置,主要涉及图形渲染质量和性能表现。需要关注不同硬件配置下的兼容性和性能差异,建议在后续提交中添加配置文档说明各参数的作用和推荐值。