7.4 KiB
7.4 KiB
校园行为系统文档
本文档描述校园行为系统相关代码与配置,
覆盖 scripts/Campus、scripts/Core、scripts/Models
以及 resources/definitions 下的所有相关文件。
1. 系统概览
- 行为系统基于“优先级决策 + 有限状态机”。
- 决策优先级:Critical(危机) -> AssignedTask(指令任务) -> Needs(需求) -> Trait(特质偏好) -> Idle(闲置)。
- 行为数值由
campus_behavior.json驱动, 动作效果按“每秒”变化。 - 每轮开始会预生成整轮行动计划, 计划包含多条动作与浮动时长。
- 所有行为通过
GD.Print输出到控制台。
2. 代码文件说明
2.1 scripts/Campus
scripts/Campus/CampusBehaviorConfig.cs- 定义行为系统枚举与配置结构。
- 提供
CampusBehaviorConfigJSON 加载。 - 提供
CampusLocationRegistry与CampusBehaviorWorld。 - 定义
CampusTask与CampusAgentNeeds。
scripts/Campus/CampusBehaviorAgent.cs- 定义
CampusAgentRuntime、CampusBehaviorIntent、CampusBehaviorContext。 - 实现 Planner 与多级 Provider。
- 实现状态机:Decision/Move/Action。
CampusBehaviorAgent负责每帧驱动与打断。CampusTraitIds提供行为特质 Id 常量。
- 定义
2.2 scripts/Core
scripts/Core/ContentCollectionResource.cs- 资源集合容器,可把多个定义资源打包到
.tres。
- 资源集合容器,可把多个定义资源打包到
scripts/Core/ContentRegistry.cs- 内容加载与合并入口,支持 Resource/JSON 源。
scripts/Core/ContentResources.cs- 内容资源接口:
IContentResource/IContentResourceCollection。
- 内容资源接口:
scripts/Core/DisciplineDefinitionResource.cs- 学科定义
.tres到DisciplineDefinition的映射。
- 学科定义
scripts/Core/DomainEvents.cs- 领域事件:任务完成/失败、回合结束。
scripts/Core/EventBus.cs- 轻量事件总线
DomainEventBus。
- 轻量事件总线
scripts/Core/GameController.cs- 回合阶段切换控制器。
scripts/Core/GameSession.cs- 会话入口,聚合 State/Content/Systems/Events/Localization。
CreateDefault()负责加载.tres与 JSON。
scripts/Core/GameSystems.cs- 系统集合:Turn/Task/Economy/Synergy/Assignment。
scripts/Core/LocalizationService.cs- 多语言接口与 Godot 实现。
scripts/Core/ModManifest.cs- Mod 清单与包信息结构。
scripts/Core/Mvc.cs- MVC 接口与
ModelView<TModel>基类。
- MVC 接口与
scripts/Core/StatResolver.cs- 数值解析器(羁绊/学科/特质/装备叠加)。
2.3 scripts/Models
scripts/Models/CoreIds.cs- 核心内容 Id 常量(学科/羁绊/角色等)。
scripts/Models/DefinitionSupport.cs- 通用定义结构:
LocalizedText与DefinitionHeader。
- 通用定义结构:
scripts/Models/DisciplineDefinitions.cs- 学科定义
DisciplineDefinition与DisciplineBuff。
- 学科定义
scripts/Models/DomainEnums.cs- 统一枚举:
AttributeType、ResourceType、StatusType。
- 统一枚举:
scripts/Models/GameContentDatabase.cs- 定义数据汇总库(学科/羁绊/任务/装备等)。
scripts/Models/GameState.cs- 全局运行时状态:回合/经济/人员/任务/库存/羁绊/肉鸽。
scripts/Models/ItemDefinitions.cs- 装备/设施/消耗品定义与分类枚举。
scripts/Models/MentorModel.cs- 导师模型与资源组件(能量)。
scripts/Models/Modifiers.cs- 通用数值修饰结构(属性/状态/资源 + RuleIds)。
scripts/Models/PaperDefinitions.cs- 论文卡牌定义(等级与元数据)。
scripts/Models/PropertyValue.cs- 通用数值类型,带范围与运算符重载。
scripts/Models/RogueliteDefinitions.cs- 肉鸽继承定义(校友录/传承/职称保留)。
scripts/Models/StaffModel.cs- 雇员/合作者模型(博后/小老师)与动机组件。
scripts/Models/StatusValue.cs- 带阈值的状态值(压力/理智/忠诚等)。
scripts/Models/StudentModel.cs- 学生模型(类型、进度、贡献记录)。
scripts/Models/SynergyDefinitions.cs- 羁绊/职业/特质定义与叠层结构
SynergyTier。
- 羁绊/职业/特质定义与叠层结构
scripts/Models/Task.cs- 运行时任务模型
TaskModel与进度数据结构。
- 运行时任务模型
scripts/Models/TaskDefinitions.cs- 任务定义与枚举(类型/难度/奖励/需求)。
scripts/Models/UnitComponents.cs- Unit 组件结构(身份/属性/状态/标签/分配/位置/装备)。
scripts/Models/UnitModel.cs- Unit 组合容器,聚合上述组件。
3. 配置文件说明(resources/definitions)
3.1 resources/definitions/campus_behavior.json
行为系统核心数值配置,动作数值按秒生效。
全局阈值与衰减:
CriticalSanityThreshold:理智过低触发人工湖。CriticalStaminaThreshold:体力过低触发强制休息。CriticalStressThreshold:压力过高触发人工湖。HungerThreshold:饥饿过低触发食堂。EnergyThreshold:精力过低触发睡觉/咖啡。SocialThreshold:社交过低触发社交行为。LowMoodThreshold:心情过低触发宿舍休息。HungerDecayPerSecond:基础饥饿衰减。EnergyDecayPerSecond:基础精力衰减。StaminaDecayPerSecond:基础体力衰减。StressGrowthPerSecond:基础压力增长。SocialDecayPerSecond:基础社交衰减。DecisionIntervalSeconds:打断/重评估间隔。ActionDurationVariance:动作时长浮动比例(±百分比)。MinPlannedActionSeconds:单次规划动作的最短时长。
ActionConfigs:
ActionId:动作枚举名。LocationId:地点枚举名。DurationSeconds:动作持续时间。HungerDelta/EnergyDelta/StaminaDelta。StressDelta/MoodDelta/SocialDelta。SanityDelta/HealthDelta。
3.2 resources/definitions/archetypes.json
- 数组形式的
ArchetypeDefinition。 Header:Id、Name、Description、Tags。Tiers:叠层配置列表。RequiredCount:触发层数。Modifiers:数值修饰与RuleIds。
3.3 resources/definitions/roles.json
- 数组形式的
RoleDefinition。 Header、Tiers与 archetypes 一致。AllowedDisciplineIds:学科限制列表。
3.4 resources/definitions/traits.json
- 数组形式的
TraitDefinition。 Header:Id 与名称说明。Modifiers:数值修饰与RuleIds。
3.5 resources/definitions/disciplines.json
- 数组形式的
DisciplineDefinition。 Header:学科 Id、名称、描述、Tags。Buff:学科被动(Name/Description/Modifiers)。RolePoolIds:角色池 Id 列表。ItemPoolIds:装备池 Id 列表。TaskKeywordIds:任务关键词 Id 列表。
3.6 resources/definitions/discipline_biology.tres
- Godot 资源版学科定义(
DisciplineDefinitionResource)。 - 主要字段:
Id/NameKey/NameFallback/DescriptionKey/DescriptionFallback。IconPath/Tags。BuffNameKey/BuffNameFallback。BuffDescriptionKey/BuffDescriptionFallback/BuffRuleIds。RolePoolIds/ItemPoolIds/TaskKeywordIds。
4. 规则扩展建议
- 新增地点:扩展
CampusLocationId,并添加Locations标记。 - 新增动作:扩展
CampusActionId,并添加 ActionConfig。 - 新增 AI 规则:新增 Provider 并加入
BuildProviders()。