diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-20 16:33:08 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-20 16:33:08 +0800 |
| commit | 0b4306938f75430ed1f44c5eb3bf4585cdfa9a9b (patch) | |
| tree | 8c7c5f5fbabafb18b3f787847b659e54a799f14f /README.md | |
| parent | 3aa0049bb092694b5168d99bc6ac893b1db4740a (diff) | |
| download | living-village-0b4306938f75430ed1f44c5eb3bf4585cdfa9a9b.tar.gz | |
feat(m6c): add Linux release package and delivery docs
[Change Nature]
- This commit adds the M6c Linux delivery surface without changing simulation behavior.
[New Capability]
- Publish self-contained linux-x64 output with framework-dependent fallback and a package-relative launcher.
- Document the menu, controls, save paths, autoplay verification, milestones, and asset/license boundaries.
[Implementation]
- Add the M6c packaging and startup scripts.
- Add release notes and an asset/license inventory.
- Keep release artifacts and verification evidence under ignored artifacts/m6c-release/.
[Impact]
- Runtime code and M3 acceptance artifacts are unchanged.
- The package was exercised under Xvfb; prior provider metadata remains an unstaged worktree change.
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 82 |
1 files changed, 82 insertions, 0 deletions
@@ -6,3 +6,85 @@ NPC 社会涌现沙盘:扮演村庄 30 人中的一员过日子,底层是完 - 技术栈: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/<UTC timestamp>/`。包目录包含 `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 批量验收为准。 +- 包含完整源码构建入口,但本交付不承诺安装器、桌面文件或发行版仓库包。 |
