summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/VillageArt.fs
Commit message (Collapse)AuthorAgeFilesLines
* feat(mapgen): 河道连续性不变量 + 桥/石板路网/沿河民居(P20 ↵p20-map-gen-foundationSomhairle H. Marisol13 days1-6/+34
| | | | | | | | | | | | | 第二步) - 河道改为贯穿全图连续水带(每列一段、宽度 >= RiverWidth),置于核心区上下 两侧且不相交;新增不变量测试:逐列水段数恒定、每段宽度下限、任意水格 >=2 个水邻居(禁止断裂缺口与孤立水点)。 - Result 新增 Rivers/Bridges/Paths/Buildings/BridgeCrossingsOk;每河 2 座桥、 横贯主路 + 垂直连接路 + 远岸路 + 白墙黑瓦民居(门朝路)。 - 公开 isWalkable/floodFill;ReachabilityOk 现覆盖 30 spawn + 所有门 + 所有桥面, BridgeCrossingsOk 保证每桥两岸同连通域。 - 回归:Desktop 115->119、Kernel 90 不变;final_digest 与基线一致。
* feat(mapgen): 参数化确定性生成器与视口裁剪(P20 第一步)Somhairle H. Marisol13 days1-4/+63
| | | | | | | | | | - 新增纯函数 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->115、Kernel 89->90;final_digest 与基线一致。
* feat(desktop): P17 村民走路节奏差异化(农夫/货郎/书生 纯 ↵Somhairle H. Marisol13 days1-8/+46
| | | | tick 节奏)
* feat(desktop): P17 ↵Somhairle H. Marisol13 days1-3/+22
| | | | 街边中式细节物(石灯笼/水缸/摊贩摊位)图集扩展 28 格
* fix(desktop): 灯笼光晕按自身 alpha ↵Somhairle H. Marisol13 days1-18/+97
| | | | | | | | | | | | | 预乘并改径向层叠,消除夜间纯白方块 - 新增 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 交易会崩溃且告警)
* feat(art): 角色六帧动画与水面/炊烟三相循环Somhairle H. Marisol13 days1-21/+68
| | | | | | | | | | - 角色图集每个 (变体,方向) 由 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 图集(脚本可复现,逐字节一致)
* feat(desktop): 512x384 程序生成地图与巡游取证模式Somhairle H. Marisol13 days1-0/+18
| | | | ProceduralMap 纯函数生成器:splitmix64 随机游走河道(三条西→东,宽 3,穿核心禁入)、三倍频值噪声草地/泥炭变化、泊松式最小距离布点(800 次尝试),村核矩形(24..38 x 16..34)由生成器不变式保证可通行;VillageArt 于大世界模式下按 terrain code 逐格绘制(可视化范围裁剪,无每帧分配);Game 新增 LV_MAP_SCALE(默认 1,表示规模倍数)与 LV_MAP_TOUR 巡游采样(八个地标位置含角/中心/河带);快照回归断言:同 seed 逐字节一致、异 seed 必然差异、核心矩形无水面。
* feat(desktop): LV_ASSET_PACK=cc0 素材渲染路径Somhairle H. Marisol13 days1-9/+41
| | | | VillageArt 支持 CC0 素材包切换(环境变量 LV_ASSET_PACK=cc0):Kenney 地块替代草地(棋盘双绿)/石径纹理,Puny 角色图集(与江南人物同 cell 几何)替换五变体角色;水面/屋檐/桥/灯笼/竹丛等江南图块保留并存于同一场景,江南图集仍作为水与建筑纹理源;未设环境变量时行为与既有路径一致(全部既有测试不变)。
* feat(desktop): 村民与主角四帧行走动画Somhairle H. Marisol14 days1-3/+12
| | | | 人物图集 5 变体 x 4 向 x 4 帧(2560x48,全部经 make-jiangnan-art.py 原创,四种腿步:站立/左跨/站立微跳/右跨镜像);animationFrame 按 tick/4 mod 4 确定性取帧(16 tick 一循环,禁实时时钟);快照式回归断言四帧循环与逐帧图集列映射,主角同规则。
* feat(desktop): 江南氛围标题画面Somhairle H. Marisol14 days1-0/+3
| | | | 新增 TitleScreen 纯布局模块(确定性、可测):五段暮色渐变天幕、黛瓦屋脊/檐口轮廓带(复用图集 8/9 号地块)、水面倒影带(1 号地块)、岸边灯笼光晕、江南水乡四倍大字标题;主菜单改为纵向简洁排布浮于其上,子页面板按内容自适应高度,去除全屏暗色遮罩大黑块。Xvfb 截图像素自查通过。
* feat(desktop): 村民五套服饰帽饰区分Somhairle H. Marisol14 days1-4/+7
| | | | 人物图集扩至五套变体(1280x48):靛蓝袍配布巾、褐衫配发髻马甲、翠衫配发簪红巾、灰袍配瓜皮帽,主角专属斗笠独立第五套;村民按 id 取模四种服饰轮转,永不与主角同装,四向两帧动画保持。
* feat(desktop): 河畔植被与中式道具点缀Somhairle H. Marisol14 days1-3/+54
| | | | 图集新增柳树(垂枝两段)、灌木、花丛、芦苇、石凳、灯笼七类图块并经复制规则进构建;场景加入两株垂柳、两丛灌木、两处花丛、水中两簇芦苇、河畔石凳与两盏岸边灯笼,芦苇立于水面、灯笼立于岸道,全部入图集无程序几何占位。
* feat(desktop): 江南水乡河道横贯与波纹两帧Somhairle H. Marisol14 days1-15/+32
| | | | 场景改为沿村蜿蜒水带(北岸凸湾、中段横贯、南段收窄),南北两岸石板路沿河展开,木桥三块纵跨全河连接民居门前石径;水面新增第二张波纹图块,按世界 tick/32 取模确定性交替,绘制无新增每帧分配。
* feat(desktop): 民居正面完整化与图集足迹Somhairle H. Marisol14 days1-8/+39
| | | | 新增屋脊/檐口/木构粉墙/格窗/木门五个地块图块,可进屋民居以门为锚点绘制四宽三高完整立面(黛瓦正脊、檐口层次、木构白墙、格窗与木门);新增 planFootprint 供生成阻挡判定,村民不会刷在建筑图块上。
* feat(desktop): 江南美术改为真实 PNG 图集Somhairle H. Marisol2026-09-211-163/+142
| | | | | | | | - scripts/make-jiangnan-art.py 生成三张原创透明 PNG:世界 256x32、角色 1024x48、内景 392x96 - VillageArt.fs 移除进程内像素烘焙,改为 BaseDirectory 加载图集并校验尺寸 - 内景渲染改用图集(地板/墙/窗/桌/床/屏/毯/柜),新增玩家专属 StrawHat 变体 - 内景新增地毯与柜子装饰,角色按 FeetPosition 定位 - fsproj 随包复制三张 PNG;m6c-package.sh 校验三张 PNG 进入交付包
* feat(m6c): 完成江南村庄中文交付Somhairle H. Marisol2026-09-211-0/+428
| | | | | | | | | | 完成江南村庄场景、角色表现和中文界面的 M6c 交付范围。 新增 CJK 字形图集、中文文案与运行时加载,补充民居情境交互和确定性村庄美术表现。 更新资源复制与 Linux/macOS 打包校验,加入 188 字符清单、资源许可说明和对应原型测试。 补充江南美术方向与 M6c 交付说明,并保持原有模拟内核和桌面构建入口不变。
* feat(desktop): add deterministic Jiangnan art and Chinese text primitivesSomhairle H. Marisol2026-09-201-0/+95
[Change Nature] This commit adds the Task 3a desktop presentation data slice. [New Capability] - Defines immutable Jiangnan props, water and paving tiles, NPC variants, directions, and two-frame animation metadata. - Provides formal Chinese scene, menu, status, and missing-glyph text layout primitives. [Implementation] - Keeps the new modules pure and deterministic with no GUI, network, or global mutable state. - Adds focused prototype tests, F# compile ordering, and asset/license boundary documentation. [Impact] - Extends desktop presentation APIs without modifying Kernel or Game.fs. - Leaves GUI rendering integration for Task 3b.