supervisor-simulator/docs/校园行为系统文档.md
2026-01-18 20:05:23 +08:00

184 lines
7.4 KiB
Markdown
Raw Permalink 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.

# 校园行为系统文档
本文档描述校园行为系统相关代码与配置,
覆盖 `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`
- 定义行为系统枚举与配置结构。
- 提供 `CampusBehaviorConfig` JSON 加载。
- 提供 `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>` 基类。
- `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()`