blob: 74173e300f959bcf87efb599b3bf1426674b7361 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# Living Village 《活着的村庄》
NPC 社会涌现沙盘:扮演村庄 30 人中的一员过日子,底层是完整模拟的 NPC 社会。
- 设计文档:`docs/design/living-village-design.md`
- 技术栈:F# + .NET 8 + MonoGame DesktopGL
- 开发协议:全部编码由 OpenCode 执行(go-a/glm-5.3-flash);Hermes 只做需求派发与验收
- 当前交付:M6c Linux x64 可运行包
## 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/`、`app/Assets/cjk-glyph-atlas.png`、`app/Assets/cjk-glyphs.txt`、`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)。仓库和包会分发由许可明确的 Noto Sans CJK 字体生成的 `Assets/cjk-glyph-atlas.png` 及其字符清单,但不分发原始字体文件、音频或 Kenney 素材;其他场景像素图由代码生成。
## 当前已知限制
- 这是 Linux x64 DesktopGL 交付包;self-contained 不会打包发行版的 X11、OpenGL、SDL2、OpenAL 等原生库。
- 当前场景美术是代码生成的像素占位图;中文 UI 使用仓库内的 Noto Sans CJK 派生字形图集,没有随包携带原始字体或音频。
- `LV_AUTOPLAY_FLOW` 是验收驱动,不是完整的键盘用户体验替代品。
- 默认世界使用固定种子 `42` 和 30 NPC;更长时间稳定性仍应以 headless 批量验收为准。
- 包含完整源码构建入口,但本交付不承诺安装器、桌面文件或发行版仓库包。
|