# Living Village 《活着的村庄》 NPC 社会涌现沙盘:扮演村庄 30 人中的一员过日子,底层是完整模拟的 NPC 社会。 - 设计文档:`docs/design/living-village-design.md` - 技术栈:F# + MonoGame + Mibo(MVU) - 开发协议:全部编码由 OpenCode 执行(ark-plan/glm-5.3-flash);Hermes 只做需求派发与验收 - 里程碑 M0-M6 见设计文档第六节 ## Linux 交付 ### 从源码构建 环境要求:Linux x64、.NET 8 SDK,以及 MonoGame DesktopGL 所需的系统图形/音频库。发布脚本优先生成 self-contained 包:.NET 运行时会随包提供,但 SDL/OpenGL/X11/OpenAL 等 Linux 原生库仍由系统提供。 ```bash ./scripts/m6c-package.sh ``` 产物输出到 `artifacts/m6c-release//`。包目录包含 `app/`、`run-living-village.sh`、运行模式元数据和交付文档。`artifacts/` 已被 `.gitignore` 忽略,不应提交大包或运行日志。 如果 self-contained publish 受环境或依赖限制失败,脚本会回退到 framework-dependent publish,并在 `PACKAGE-INFO.txt` 中写明失败状态和所需的系统 .NET 8 runtime。 ### 启动交付包 从包根目录运行: ```bash ./run-living-village.sh ``` 启动器以自身目录为基准解析 `app/` 和相对存档路径。未设置 `LV_SAVE_PATH` 时,默认存档为包目录下的 `living-village.save`;设置相对路径时也会落在包目录下,绝对路径保持不变。 ### 主菜单 首次启动进入主菜单: - `新游戏`:使用固定种子 `42` 创建 30 NPC 世界并进入游戏。 - `继续`:在已有世界时返回当前世界。 - `读档`:从 `LV_SAVE_PATH` 读取存档;失败会停在可返回的读档错误页。 - `设置`:选择 `1X`、`2X`、`5X` 或暂停模拟。 - `控制`:查看键位说明。 - `退出`:结束程序。 主菜单使用 `Up/Down` 或 `W/S` 选择,`Enter` 确认,`Esc` 返回或退出。游戏内 `Esc` 依次关闭面板、关闭关系视图,最后返回主菜单。 ### 游戏控制 - `WASD`:移动 - `E`:互动 - `1-6`:选择对话意图 - `Q`:观察附近 NPC - `Tab`:需求面板 - `C`:编年史 - `L`:关系网络视图 - `P`:暂停/继续 - `F1/F2/F3`:1X/2X/5X 速度 - `F6`:保存 - `F7`:读取 - `Esc`:关闭当前面板、关闭关系视图或返回主菜单 ### Autoplay 验证 `LV_AUTOPLAY=1` 会自动开始新游戏并持续推进 tick;普通运行不会自行退出,适合用 `timeout` 做 bounded 检查: ```bash LV_AUTOPLAY=1 timeout 8s xvfb-run -a ./run-living-village.sh ``` `LV_AUTOPLAY_FLOW=1` 会执行一次可审计流程:新游戏、返回菜单、打开设置并应用速度、打开/返回控制页、保存、读档、返回菜单并退出: ```bash LV_AUTOPLAY_FLOW=1 xvfb-run -a ./run-living-village.sh ``` `LV_SAVE_PATH` 可用于把验收存档指向临时目录。包验收的 stdout、exit code、文件清单、大小、SHA-256 和启动截图保存在对应包的 `verification/` 目录,不进入 Git。 ## Release Notes M0-M6 的落地摘要和实际验收口径见 [`docs/release-notes-m6c.md`](docs/release-notes-m6c.md)。 资产与许可证边界见 [`docs/assets-and-licenses.md`](docs/assets-and-licenses.md)。仓库没有随包分发的 PNG、字体、音频或 Kenney 素材;当前像素占位图由代码生成,不能把设计文档中的候选资产描述成已包含资产。 ## 当前已知限制 - 这是 Linux x64 DesktopGL 交付包;self-contained 不会打包发行版的 X11、OpenGL、SDL2、OpenAL 等原生库。 - 当前美术是代码生成的像素占位图,没有外部美术资产或音频。 - `LV_AUTOPLAY_FLOW` 是验收驱动,不是完整的键盘用户体验替代品。 - 默认世界使用固定种子 `42` 和 30 NPC;更长时间稳定性仍应以 headless 批量验收为准。 - 包含完整源码构建入口,但本交付不承诺安装器、桌面文件或发行版仓库包。