docs: 重构 README 为实际工程结构并新增开发计划

This commit is contained in:
2026-08-02 23:26:18 +08:00
parent d98cbb8266
commit a265e3a5cf
+96 -108
View File
@@ -1,6 +1,8 @@
# 模拟宗门 — 项目目录结构
# 模拟宗门
## 结构总览
基于 Godot 4.7GDScript)的宗门经营模拟游戏。
## 项目结构
```
模拟宗门/
@@ -9,11 +11,12 @@
│ ├── 修仙宗门设计文档.md
│ ├── 宗门行政体系.md
│ ├── 宗门礼仪建筑.md
── 游戏模块总览.md
── 游戏模块总览.md
│ └── 存档界面UI设计.md
├── addons/ # Godot 插件
├── assets/ # 原始资源文件(导入前素材)
├── assets/ # 资源文件
│ ├── sprites/ # 精灵图
│ │ ├── buildings/
│ │ ├── characters/
@@ -22,46 +25,30 @@
│ ├── audio/ # 音频
│ │ ├── bgm/
│ │ └── sfx/
│ └── fonts/ # 字体
│ └── fonts/ # 字体(中文字体已导入)
├── resources/ # Godot 资源文件 (.tres / .res)
│ ├── settings/ # 全局配置
│ ├── buildings/ # 建筑配置表
│ ├── characters/ # 角色模板
│ ├── skills/ # 功法/技能数据
│ ├── items/ # 物品/装备数据
│ └── events/ # 事件配置
├── resources/ # 配置数据 (.tres / .res)
│ ├── settings/
│ ├── buildings/
│ ├── characters/
│ ├── skills/
│ ├── items/
│ └── events/
├── src/ # 源码 + 场景(按功能模块组织
│ │ # .tscn 和 .cs 放在一起)
├── src/ # 源码 + 场景(.gd 与 .tscn 同目录
│ │
│ ├── Core/ # 核心框架
│ │ ├── GameManager.cs # 游戏主循环
│ │ ├── GameManager.tscn
│ │ ── TimeSystem.cs # 时间系统
│ │ ├── EventBus.cs # 事件总线
│ │ ├── SaveSystem.cs # 存档/读档
│ │ └── ConfigLoader.cs # 配置加载
│ │ ├── MainGame.gd # [已实现] 主游戏入口,按 GameState 参数区分新游戏/读档
│ │ ├── MainGame.tscn
│ │ ── GameState.gd # [已实现] Autoload 单例,场景间参数传递
│ │
│ ├── Data/ # 数据层
│ │ ├── Models/ # 数据模型(DTO)
│ │ └── SO/ # ScriptableObject 定义
│ │ ├── BuildingSO.cs
│ │ ├── SkillSO.cs
│ │ ├── DiscipleSO.cs
│ │ └── EventSO.cs
│ │ ├── Models/
│ │ └── SO/
│ │
│ ├── Sect/ # 宗门管理
│ │ ├── SectManager.cs # 宗门主管理器
│ │ ├── PowerSystem.cs # 权力结构
│ │ ├── FinanceManager.cs # 财政经济
│ │ ├── DiplomacySystem.cs # 外交
│ │ ├── ContributionSystem.cs # 贡献系统
│ │ ├── buildings/ # 建筑系统
│ │ │ ├── BuildingSystem.cs
│ │ │ ├── BuildingBase.cs
│ │ │ ├── BuildingBase.tscn
│ │ │ └── buildings/ # 具体建筑(按分类子目录)
│ ├── Sect/ # 宗门管理(规划)
│ │ ├── buildings/
│ │ │ └── buildings/
│ │ │ ├── admin/ # 行政类
│ │ │ ├── education/ # 教育类
│ │ │ ├── workshop/ # 工坊类
@@ -71,92 +58,93 @@
│ │ │ ├── ritual/ # 礼仪类
│ │ │ └── utility/ # 功能类
│ │ ├── halls/ # 各堂管理
│ │ │ ├── MissionHall.cs # 功德堂/任务堂
│ │ │ ├── TeachHall.cs # 传功堂
│ │ │ ├── LawHall.cs # 执法堂
│ │ │ └── ForeignHall.cs # 外事堂
│ │ └── panels/ # 宗门管理面板场景
│ │ └── panels/
│ │
│ ├── Character/ # 角色系统
│ │ ── Disciple.cs # 弟子类
│ │ ├── Disciple.tscn # 弟子预制场景
│ │ ├── DiscipleGenerator.cs # 弟子生成器
│ │ ├── DisciplePool.cs # 弟子对象池
│ │ ├── Stats.cs # 属性系统
│ │ ├── CultivationSystem.cs # 境界/突破
│ │ ├── SkillSystem.cs # 功法/技能
│ │ ├── EquipmentSystem.cs # 装备系统
│ │ ├── RelationshipSystem.cs # 社交关系
│ │ └── AI/ # 弟子AI
│ │ ├── DiscipleAI.cs
│ │ └── BehaviorNodes.cs
│ ├── Character/ # 角色系统(规划)
│ │ ── AI/
│ │
│ ├── Production/ # 生产制造
│ │ ├── AlchemySystem.cs # 炼丹
│ │ ├── ForgeSystem.cs # 炼器
│ │ ├── TalismanSystem.cs # 符箓
│ │ ├── ArraySystem.cs # 阵法
│ │ ├── PuppetSystem.cs # 傀儡
│ │ ├── FarmingSystem.cs # 种植
│ │ └── BeastSystem.cs # 养殖
│ ├── Production/ # 生产制造(规划)
│ │
│ ├── Combat/ # 战斗系统
│ │ ── BattleManager.cs # 战斗管理器
│ │ ├── BattleField.cs # 战场
│ │ ├── BattleField.tscn
│ │ ├── TurnController.cs # 回合控制
│ │ ├── DamageCalculator.cs # 伤害计算
│ │ ├── SkillEffect.cs # 技能效果
│ │ ├── TeamFormation.cs # 阵型
│ │ └── enemies/ # 敌方配置
│ ├── Combat/ # 战斗系统(规划)
│ │ ── enemies/
│ │
│ ├── World/ # 世界/地图
│ │ ├── MapManager.cs # 地图管理器
│ │ ├── WorldMap.cs # 大地图
│ │ ├── WorldMap.tscn
│ │ ├── SectSite.cs # 宗门驻地
│ │ ├── SectSite.tscn
│ │ ├── ExplorationSystem.cs # 探索系统
│ │ ├── SecretRealm.cs # 秘境
│ │ └── MarketSystem.cs # 市场/交易
│ ├── World/ # 世界/地图(规划)
│ │
│ ├── Events/ # 事件/叙事
│ │ ├── EventManager.cs # 事件管理器
│ │ ├── RandomEvent.cs # 随机事件
│ │ ├── StorySystem.cs # 主线/支线
│ │ ├── TribulationSystem.cs # 天劫系统
│ │ └── SeasonEvent.cs # 赛季活动
│ ├── Events/ # 事件/叙事(规划)
│ │
│ ├── UI/ # 用户界面
│ │ ├── HUD/ # 主界面 HUD
│ │ ├── Panels/ # 功能面板
│ │ │ ── SectPanel.cs # 宗门总览
│ │ │ ├── DisciplePanel.cs # 弟子列表/详情
│ │ ├── BuildingPanel.cs # 建筑详情
│ │ ├── FinancePanel.cs # 财政面板
│ │ ── EventDialog.cs # 事件弹窗
│ │ ├── Controls/ # 自定义控件
│ │ └── Common/ # 通用UI组件
│ │ ├── HUD/ # [已实现] 顶部信息栏(灵石/时间/返回主菜单)
│ │ │ ├── TopBarHUD.tscn
│ │ │ ── top_bar_hud.gd
│ │ └── Panels/ # 功能面板
│ │ ├── MainMenu/ # [已实现] 主菜单(新游戏/读取存档/设置/退出)
│ │ ├── SavePanel.gd # [已实现] 存档选择面板(动态生成槽位)
│ │ ── SavePanel.tscn
│ │ ├── SaveSlot.gd # [已实现] 存档槽位(载入/删除/新建)
│ │ └── SaveSlot.tscn
│ │
│ └── Utils/ # 工具类
│ ├── MathUtils.cs
│ ├── RandomUtils.cs
│ ├── StringUtils.cs
│ └── Extensions.cs
├── icon.svg
└── project.godot
```
> `[已实现]` = 当前已有代码/场景;未标注目录为规划结构,随开发逐步填充。
## 当前功能进度
| 功能 | 状态 | 说明 |
| ---- | ---- | ---- |
| 主菜单 | 已完成 | 新游戏/读取存档/设置/退出,中文字体 |
| 场景切换 | 已完成 | MainMenu ↔ MainGame,经 GameState 传参 |
| 存档界面 | 已完成 | 动态槽位 + 空槽新建,信号驱动 |
| 顶部 HUD | 已完成 | 灵石/时间显示,返回主菜单 |
| 画面质量 | 已完成 | 1920x1080 视口,MSAA 2D/3D + TAA,文字抗锯齿 |
| 宗门经营 | 规划中 | 见 Doc/修仙宗门设计文档.md |
## 开发计划
### 下一步:核心循环闭环(P1
目标:跑通"时间推进 → 资源产出 → 弟子修炼"最小循环,让游戏可玩。
| # | 任务 | 说明 | 依赖 |
| - | ---- | ---- | ---- |
| 1 | TimeSystem | 天/月/年推进,挂载 GameState,UI 显示当前日期 | — |
| 2 | 宗门数据模型 | SectManager 单例:灵石/灵气浓度/声望/建筑列表 | — |
| 3 | 建筑系统基础 | 建筑放置、建造/升级耗时、基础产出(灵石/药材) | 1,2 |
| 4 | 弟子系统基础 | 弟子生成(资质/灵根)、入宗分流(亲传/内门/外门/杂役) | 2 |
| 5 | 修炼循环 | 弟子按资质/灵气浓度自动修炼涨修为,境界突破 | 3,4 |
| 6 | 存档接入 | SaveSystem 序列化宗门/弟子/时间数据,替换 SavePanel 测试数据 | 全部 |
### 之后(P2
| 任务 | 说明 |
| ---- | ---- |
| 财政经济 | 收支明细、俸禄发放、市场价格 |
| 任务系统 | 宗门任务发布、贡献值、兑换 |
| 生产制造 | 炼丹/炼器/符箓工坊 |
| 战斗系统 | 弟子组队、外敌入侵事件 |
### 里程碑
- **M1(P1 完成)**:新游戏 → 招弟子 → 挂机产出 → 存档读档,完整闭环
- **M2(P2 完成)**:可体验宗门经营的丰富玩法
- **M3**:战斗/秘境/外交,正式版本
## 运行方式
1. 用 Godot 4.7 打开 `project.godot`
2. F5 运行,主场景为 `MainMenu.tscn`
3. "新游戏"直接进入;"读取存档"在存档面板中选择
## 命名规范
| 类别 | 格式 | 示例 |
| -------- | ------------------ | ----------------------- |
| C# 类 | PascalCase | `SectManager.cs` |
| 场景文件 | PascalCase | `BuildingBase.tscn` |
| -------- | ---------- | ------------------- |
| GDScript | snake_case | `top_bar_hud.gd` |
| 场景文件 | PascalCase | `MainGame.tscn` |
| 信号 | snake_case | `back_pressed` |
| 回调方法 | `_on_` 前缀 | `_on_button_pressed` |
| 资源文件 | snake_case | `iron_sword.tres` |
| 精灵图 | snake_case | `building_office.png` |
| 变量 | camelCase | `currentGold` |
| 私有变量 | _camelCase | `_discipleList` |
> **注意**C# 脚本的 `namespace` 使用 `项目名.模块名`,例如 `SectSim.Sect`、`SectSim.Character`。在 Godot 4 中,脚本路径决定了自动生成的默认命名空间,保持路径与命名空间一致可避免手动配置。
| 精灵图 | snake_case | `bg1.png` |