diff --git a/README.md b/README.md index 3c94a61..7110509 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# 模拟宗门 — 项目目录结构 +# 模拟宗门 -## 结构总览 +基于 Godot 4.7(GDScript)的宗门经营模拟游戏。 + +## 项目结构 ``` 模拟宗门/ @@ -9,11 +11,12 @@ │ ├── 修仙宗门设计文档.md │ ├── 宗门行政体系.md │ ├── 宗门礼仪建筑.md -│ └── 游戏模块总览.md +│ ├── 游戏模块总览.md +│ └── 存档界面UI设计.md │ ├── addons/ # Godot 插件 │ -├── assets/ # 原始资源文件(导入前素材) +├── assets/ # 资源文件 │ ├── sprites/ # 精灵图 │ │ ├── buildings/ │ │ ├── characters/ @@ -22,141 +25,126 @@ │ ├── 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/ # 具体建筑(按分类子目录) -│ │ │ ├── admin/ # 行政类 -│ │ │ ├── education/ # 教育类 -│ │ │ ├── workshop/ # 工坊类 -│ │ │ ├── storage/ # 物资类 -│ │ │ ├── resource/ # 资源类 -│ │ │ ├── living/ # 生活类 -│ │ │ ├── ritual/ # 礼仪类 -│ │ │ └── utility/ # 功能类 +│ ├── Sect/ # 宗门管理(规划) +│ │ ├── buildings/ +│ │ │ └── buildings/ +│ │ │ ├── admin/ # 行政类 +│ │ │ ├── education/ # 教育类 +│ │ │ ├── workshop/ # 工坊类 +│ │ │ ├── storage/ # 物资类 +│ │ │ ├── resource/ # 资源类 +│ │ │ ├── living/ # 生活类 +│ │ │ ├── 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` | -| 资源文件 | snake_case | `iron_sword.tres` | -| 精灵图 | snake_case | `building_office.png` | -| 变量 | camelCase | `currentGold` | -| 私有变量 | _camelCase | `_discipleList` | - -> **注意**:C# 脚本的 `namespace` 使用 `项目名.模块名`,例如 `SectSim.Sect`、`SectSim.Character`。在 Godot 4 中,脚本路径决定了自动生成的默认命名空间,保持路径与命名空间一致可避免手动配置。 +| 类别 | 格式 | 示例 | +| -------- | ---------- | ------------------- | +| 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 | `bg1.png` |