From a38dd4de124dd0b1bb0046f0a25ded044468bd5c Mon Sep 17 00:00:00 2001 From: iHaydenzZ Date: Thu, 21 May 2026 00:14:27 +1000 Subject: [PATCH] docs: sync AGENTS.md with current repo state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reflect OshimaModes removal (commit 624bc5e) and the new setup.bat / start-web-api.bat workflow: drop FunGame.Desktop sibling row, redraw the architecture diagram from actual ProjectReference relations (also fixes a pre-existing Maps→Modules edge that never matched the csprojs), clarify that OshimaCore lacks BaseOutputPath but still lands in the aggregated bin/ via transitive references, and link to README for one-shot setup. Co-Authored-By: Claude Opus 4.7 (1M context) --- AGENTS.md | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 85145af..78384c6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -26,31 +26,40 @@ dotnet run --project OshimaWebAPI # 开发服务器: https://localh | ------------------------------------------------------ | --------------------------------- | | `../FunGame.Core/FunGame.Core.csproj` | 所有项目 | | `../FunGame.Extension/FunGame.SQLQueryExtension/...` | `OshimaWebAPI`、`OshimaServers` | -| `../FunGame.Desktop/FunGame.Desktop/...` | 仅出现在 `.sln` 中 | -构建前请将这些仓库克隆为 `OshimaGameModule/` 的**同级目录**,否则 restore 阶段会失败。 +构建前请将这些仓库克隆为 `OshimaGameModule/` 的**同级目录**,否则 restore 阶段会失败。如果只想跑起整套环境,仓库根目录的 `setup.bat` / `start-web-api.bat` 会自动完成克隆、编译、插件 DLL 分发与启动——详见 [README.md](./README.md)。 ### 输出目录布局 -各类库项目均设置 `..\bin\`,因此所有构建产物会汇集到解决方案根目录的 **`OshimaGameModule/bin/`**,而不是各项目自己的 `bin/` 文件夹。宿主 FunGame 运行时正是从此聚合目录中发现并加载插件。 +除 `OshimaCore` 外的 4 个项目(`OshimaMaps` / `OshimaModules` / `OshimaServers` / `OshimaWebAPI`)均设置 `..\bin\`,因此它们的构建产物会汇集到解决方案根目录的 **`OshimaGameModule/bin/`**,而不是各项目自己的 `bin/` 文件夹。`OshimaCore` 本身没设置此属性,但因被其它 4 个项目 `ProjectReference`,其 DLL 也会被复制进同一个聚合目录。宿主 FunGame 运行时正是从此聚合目录中发现并加载插件。 ### 平台说明 -- `OshimaModes` 是 WPF 项目(`UseWPF=True`、`net10.0-windows7.0`),**只能在 Windows 上构建**。在 macOS / Linux 上请单独构建非 WPF 项目,整体 `.sln` 构建会因 `OshimaModes` 失败。 -- `OshimaWebAPI` 是 ASP.NET Core 项目(`FrameworkReference Microsoft.AspNetCore.App`),跨平台运行。 +- 当前 `.sln` 中所有项目都以 `net10.0`(非 `-windows`)为目标,整套构建**跨平台**可执行。 +- `OshimaWebAPI` 是 ASP.NET Core 项目(`FrameworkReference Microsoft.AspNetCore.App`),无额外平台依赖。 仓库中**没有测试项目**。 ## 架构:各插件如何协作 ``` -OshimaCore ──┐ - ├── OshimaModules ──┐ -OshimaMaps ───┤ ├── OshimaServers ──┐ - │ │ ├── OshimaWebAPI - └────────── OshimaModes (WPF) ──────────┘ (同时依赖 Modules + Maps) +依赖图(箭头读作"被依赖"): + +OshimaCore ─┬─► OshimaMaps ─┐ + ├─► OshimaModules ─┼─► OshimaServers ─► OshimaWebAPI + └──────────────────┘ (WebAPI 同时直接 ProjectReference Core + Modules) ``` +实际 csproj `ProjectReference` 关系: + +| 项目 | 直接依赖的本仓库项目 | +| --- | --- | +| `OshimaCore` | — | +| `OshimaMaps` | `OshimaCore` | +| `OshimaModules` | `OshimaCore` | +| `OshimaServers` | `OshimaCore`、`OshimaMaps`、`OshimaModules` | +| `OshimaWebAPI` | `OshimaCore`、`OshimaModules`、`OshimaServers` | + 每个项目的 `RootNamespace` 都按 `Oshima.FunGame.$(MSBuildProjectName)` 的模板生成(`OshimaCore` 例外 → `Oshima.Core`)。 ### 各项目职责 @@ -62,7 +71,6 @@ OshimaMaps ───┤ ├── OshimaServers ──┐ | `OshimaMaps` | `GameMap` 实现 | `FastAutoMap`、`AnonymousMap` | | `OshimaServers` | 游戏服务器插件 + 业务服务层(`Service/FunGameService.cs`、`FunGameSimulation.cs`、`OnlineService.cs`、`SQLService.cs`、`CSBettingService.cs`) | `OshimaServer`(`ServerPlugin`)、`FastAutoServer` 与 `AnonymousServer`(`GameModuleServer`) | | `OshimaWebAPI` | ASP.NET Core 控制器 + 定时任务 + QQ / RainBOT 集成 | `OshimaWebAPI : WebAPIPlugin, IHotReloadAware, ILoginEvent` | -| `OshimaModes` | 游戏模式的 Windows 桌面 UI(WPF) | 仅承载模式,本身不是 FunGame 插件 | ### 插件标识符集中在常量表中