<feed xmlns='http://www.w3.org/2005/Atom'>
<title>living-village.git/src/LivingVillage.Desktop/VillageArt.fs, branch p20-map-gen-foundation</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/living-village.git/atom?h=p20-map-gen-foundation</id>
<link rel='self' href='http://git.somhairle.bid/living-village.git/atom?h=p20-map-gen-foundation'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/'/>
<updated>2026-09-21T18:43:39+00:00</updated>
<entry>
<title>feat(mapgen): 河道连续性不变量 + 桥/石板路网/沿河民居（P20 第二步）</title>
<updated>2026-09-21T18:43:39+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:43:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=d3c0ef17cb1c4d30c1d586e2a5b616f58bd3d875'/>
<id>urn:sha1:d3c0ef17cb1c4d30c1d586e2a5b616f58bd3d875</id>
<content type='text'>
- 河道改为贯穿全图连续水带（每列一段、宽度 &gt;= RiverWidth），置于核心区上下
  两侧且不相交；新增不变量测试：逐列水段数恒定、每段宽度下限、任意水格
  &gt;=2 个水邻居（禁止断裂缺口与孤立水点）。
- Result 新增 Rivers/Bridges/Paths/Buildings/BridgeCrossingsOk；每河 2 座桥、
  横贯主路 + 垂直连接路 + 远岸路 + 白墙黑瓦民居（门朝路）。
- 公开 isWalkable/floodFill；ReachabilityOk 现覆盖 30 spawn + 所有门 + 所有桥面，
  BridgeCrossingsOk 保证每桥两岸同连通域。
- 回归：Desktop 115-&gt;119、Kernel 90 不变；final_digest 与基线一致。
</content>
</entry>
<entry>
<title>feat(mapgen): 参数化确定性生成器与视口裁剪（P20 第一步）</title>
<updated>2026-09-21T18:28:31+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:28:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=ef78374c316587fb585b72e6d427cd6e61203655'/>
<id>urn:sha1:ef78374c316587fb585b72e6d427cd6e61203655</id>
<content type='text'>
- 新增纯函数 MapGen：尺寸参数化（默认 64x48，可 256x192），splitmix64
  随机游走河道 + 2-3 octave value noise + 泊松式布点；核心区整平后以 BFS
  校验 5x6=30 个 spawn 全部可达，不可达确定性修整并复验。
- visibleTileRange/visibleTileCount 纯函数，drawWorld 改为调用之（行为不变）；
  drawMapFitted/drawMapViewport 仅证据用。
- 存档沿用 v2/v3 边界字段，补参数化边界 round-trip 测试，未改 Sim 语义。
- 回归：Desktop 109-&gt;115、Kernel 89-&gt;90；final_digest 与基线一致。
</content>
</entry>
<entry>
<title>feat(desktop): P17 村民走路节奏差异化（农夫/货郎/书生 纯 tick 节奏）</title>
<updated>2026-09-21T16:42:44+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:42:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=a5c3400412fbab11d4f4b83a5d0294292eee5f08'/>
<id>urn:sha1:a5c3400412fbab11d4f4b83a5d0294292eee5f08</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(desktop): P17 街边中式细节物（石灯笼/水缸/摊贩摊位）图集扩展 28 格</title>
<updated>2026-09-21T16:41:41+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:41:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=55575af708bc1602f820f7f705bfc01898347082'/>
<id>urn:sha1:55575af708bc1602f820f7f705bfc01898347082</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(desktop): 灯笼光晕按自身 alpha 预乘并改径向层叠，消除夜间纯白方块</title>
<updated>2026-09-21T13:53:53+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T13:53:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=b5ffb35fc0824a297ff88297390310acb6c45335'/>
<id>urn:sha1:b5ffb35fc0824a297ff88297390310acb6c45335</id>
<content type='text'>
- 新增 VillageArt.premultiply：MonoGame SpriteBatch 默认预乘混合，直传
  Color(r,g,b,a) 会直接加 rgb 导致多层暖色饱和成 75x75 纯白块
- lanternGlowLayers 用同心圆 pixel run 做径向衰减，逐层预乘，只在
  RiverLantern 实体处绘制
- 水面相位改 waterFrameTickAt=(tick/32+x+2y)%3，同一帧相邻砖相位不同
- 炊烟改为 drawWorld 末尾独立一遍，位置 offsetTile 0 -3，画在屋瓦/竹子之上
- 角色脚底对齐 characterFeetOffset=16 并加预乘椭圆接触阴影
- 补全 Interaction.itemName 的 ItemKind 匹配（否则非 Food 交易会崩溃且告警）
</content>
</entry>
<entry>
<title>feat(art): 角色六帧动画与水面/炊烟三相循环</title>
<updated>2026-09-21T12:22:25+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T12:22:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=63e9741816ce3717cfda4cc3354ff3a0860a3ddc'/>
<id>urn:sha1:63e9741816ce3717cfda4cc3354ff3a0860a3ddc</id>
<content type='text'>
- 角色图集每个 (变体,方向) 由 2 帧扩到 6 帧（4 走路 + 2 待机呼吸），
  cellIndex=(variant*4+direction)*6+frame，图集 3840x48
- 世界图集扩到 25 格 800x32：水面第 3 相 WaterSpriteC(slot 21)、
  炊烟三帧 SmokeSpriteA/B/C(slot 22-24)
- 帧选择为纯函数：walk=(tick/4)%4、idle=(tick/24)%2、
  water=(tick/32)%3、smoke=(tick/40)%3
- 重生成 jiangnan/cc0 图集（脚本可复现，逐字节一致）
</content>
</entry>
<entry>
<title>feat(desktop): 512x384 程序生成地图与巡游取证模式</title>
<updated>2026-09-21T07:06:03+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T07:06:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=87aa4594ffe395318364feae9fd157d52b60a082'/>
<id>urn:sha1:87aa4594ffe395318364feae9fd157d52b60a082</id>
<content type='text'>
ProceduralMap 纯函数生成器：splitmix64 随机游走河道（三条西→东，宽 3，穿核心禁入）、三倍频值噪声草地/泥炭变化、泊松式最小距离布点（800 次尝试），村核矩形（24..38 x 16..34）由生成器不变式保证可通行；VillageArt 于大世界模式下按 terrain code 逐格绘制（可视化范围裁剪，无每帧分配）；Game 新增 LV_MAP_SCALE（默认 1，表示规模倍数）与 LV_MAP_TOUR 巡游采样（八个地标位置含角/中心/河带）；快照回归断言：同 seed 逐字节一致、异 seed 必然差异、核心矩形无水面。
</content>
</entry>
<entry>
<title>feat(desktop): LV_ASSET_PACK=cc0 素材渲染路径</title>
<updated>2026-09-21T06:34:48+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T06:34:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=60fe11875a06d3d883ec82db08bd97b0e8999862'/>
<id>urn:sha1:60fe11875a06d3d883ec82db08bd97b0e8999862</id>
<content type='text'>
VillageArt 支持 CC0 素材包切换（环境变量 LV_ASSET_PACK=cc0）：Kenney 地块替代草地（棋盘双绿）/石径纹理，Puny 角色图集（与江南人物同 cell 几何）替换五变体角色；水面/屋檐/桥/灯笼/竹丛等江南图块保留并存于同一场景，江南图集仍作为水与建筑纹理源；未设环境变量时行为与既有路径一致（全部既有测试不变）。
</content>
</entry>
<entry>
<title>feat(desktop): 村民与主角四帧行走动画</title>
<updated>2026-09-21T05:15:39+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T05:15:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=0b9753543bd726818c61d76384d56a30b862e1ac'/>
<id>urn:sha1:0b9753543bd726818c61d76384d56a30b862e1ac</id>
<content type='text'>
人物图集 5 变体 x 4 向 x 4 帧（2560x48，全部经 make-jiangnan-art.py 原创，四种腿步：站立/左跨/站立微跳/右跨镜像）；animationFrame 按 tick/4 mod 4 确定性取帧（16 tick 一循环，禁实时时钟）；快照式回归断言四帧循环与逐帧图集列映射，主角同规则。
</content>
</entry>
<entry>
<title>feat(desktop): 江南氛围标题画面</title>
<updated>2026-09-21T03:41:17+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T03:41:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=89be1bce62a01c6994c0de4d5c9f05338f3b4d4f'/>
<id>urn:sha1:89be1bce62a01c6994c0de4d5c9f05338f3b4d4f</id>
<content type='text'>
新增 TitleScreen 纯布局模块（确定性、可测）：五段暮色渐变天幕、黛瓦屋脊/檐口轮廓带（复用图集 8/9 号地块）、水面倒影带（1 号地块）、岸边灯笼光晕、江南水乡四倍大字标题；主菜单改为纵向简洁排布浮于其上，子页面板按内容自适应高度，去除全屏暗色遮罩大黑块。Xvfb 截图像素自查通过。
</content>
</entry>
</feed>
