🏯 这是什么
一个「活着」的古代中国城市:44 个人口各过各的日子 —— 吃饭、耕作、去市集交易、天黑回家睡觉;市集上摊位真在成交,累计的钱数一天天涨。天气不是贴图,是规则:一年四季按季节概率自己演化,也会被你手动锁住。
- 五档天气:晴 → 阴 → 雨 → 暴雨(带闪电)→ 雪,雨会打湿地面、雪会积在屋顶与街面
- 电影模式:2.35:1 宽银幕 + 景深 + 全量调色 + 手持呼吸,配合自动运镜,按一下直接出片
- 全部可重建:布局、贴图、建筑、角色都由脚本生成,改一行参数,整座城重来一遍
Gallery
实机画廊
全部是引擎里直接截的图,点开看大图,左右键翻页。
Behind the scenes
技术细节
🧱 程序化美术管线
tools/gen_layout.py— 生成城市布局:街道、地块、城墙、河道 →shared/city_layout.jsontools/gen_textures.py— 程序化 PBR 贴图(1024²,albedo / normal / rough 三件套),瓦片、砖石、木料、夯土全是算出来的blender/build_city.py— 建筑与城墙模型 →godot/assets/models/*.glbblender/build_chars_pro.py— 角色模型,关节命名与villager_rig.gd严格对齐,动画直接可用
改完贴图或模型,跑一次 godot --headless --import 就能整城重建 —— 没有一章是手工拖出来的。
🌦️ 天气与天空
- 按季节自动演化:马尔可夫概率链,四季各不相同;也可以手动锁住某一档慢慢看
- 粒子全跟相机:三层雨 + 两层雪,发射盒每帧贴到镜头前方 —— 人在城里走到哪儿,雨就下到哪儿
- 连锁反应:风向量走全局 shader 参数,树、竹、庄稼按顶点高度摆动,风大时飘落叶;地面水花由小涨大
- 闪电:2~4 次脉冲包络,同时点亮环境光 / 方向光 / 天空,亮度刻意压住不过曝(高光截断 0.13%)
- 材质随天气变:所有不透明表面共用一个 shader,湿度与积雪实时改变粗糙度和颜色
📊 性能与素材
- 先修基准工具(macOS 后台节流会造成假 30fps),再拿诚实基线:静态几何 24ms(占 56%)、surface 噪声 11ms、天空 radiance 重烘 8ms
- 583 个 CC0 素材(4K 材质 / HDRI / 中式道具 glTF,5.8 GB)全部支持离线复验:
--verify一文不差 - 五档画质:低 / 中 / 高(高:SSAO + 体积雾),帧率不够就往下切,画面依然成立







