emollick/cezanne-city
GitHub: emollick/cezanne-city
一款用画家手势进行城市建造的浏览器游戏,融合程序化涌现模拟与塞尚风格的厚涂渲染。
Stars: 0 | Forks: 0
# 塞尚之城
这是一款通过画家手势来游玩的浏览器城市建造游戏。你永远不会直接放置建筑:你只需画一条路,圈出一块建房子的空地,落下一条深色的树木线,开辟出一个广场——小镇便会明白你的意图,并在南方海湾的画卷上,以厚重的油画刀法将其呈现出来。
**游戏目标:** *“我创造了这个地方,但我却无法精确地设计出它的模样。”*
## 游戏玩法
- **做出手势** —— 九种工具,全为宽大的笔触:道路、住宅、树木、广场、市场、市政地标、保留(保护区)、重建、刮除(擦除)。
- **改变风格** (M) —— 整个画布会以塞尚不同时期的风格重新绘制:早期的深色刮刀画法、印象派的笔触、结构式笔触,或是晚期的半透明块面画法。
- **观察小镇的演绎** —— 房屋会按自己的节奏沿着道路聚集,彼此依靠,加建楼层,在繁华的街角变成商铺,在采石场附近化作作坊。
- **留意涌现的细节** —— 小镇通过细致入微的观察来表达自己(例如“人们正穿过橄榄林”),而绝不是提出要求。点击提示即可前往该地点。
- **回应或重塑** —— 拓宽拥挤的道路,或将贸易转移到其他地方,或者干脆让熙熙攘攘的人群成为这个地方的特色。
- **让它沉淀** —— 按下 S 键。界面光晕褪去,时间流转,镜头缓缓摇至曾让人留恋的视角,画作随之悄然自我重塑。
各个街区会逐渐涌现并形成自己的特质(如渔区、画家区、优美的山坡、旧城区),终有一天,小镇会为它们命名。这些特质会带来实际的影响:廉价的客房住满了画家;新财富涌向渔业海岸,而晒渔网的地方则转移到了别处。
你擦除的每一样事物都会在画作中留下浅浅的疤痕。没有什么是能回到空白画布的。
## 操作说明
鼠标左键绘画 · 右键拖动或空格+拖动平移视角 · 滚轮缩放 ·
1–0 选择工具 · S 沉淀 · 空格键暂停 · H 打开帮助。
小镇会在本地自动保存,并在你两次访问之间持续生机。
## 运行方式
这是纯静态文件,无需构建。你可以使用任何你喜欢的方式托管该文件夹:
```
python -m http.server 8626 -d .
```
`window.CEZ` 是一个用于测试的无头驱动 API(包含手势、时间步进、镜头、状态等)—— 详见 `js/api.js`。
## 技术说明
- 纯手工打造的厚涂渲染器:每一个可见元素都是基于种子的、确定性的笔触点画,分布在多层画布上(天空条带、地面网格、建筑色带、实时图层、罩染/颗粒包浆)。光影变化会以渐进式重绘的方式荡漾开来——让画作展现出清晰的自我重塑过程。
- 模拟系统:源自手势的期望场、道路可达性广度优先搜索 (BFS)、吸引力、财富流动、交通与磨损(捷径)、重建、市场、带有特质识别与命名的区域聚类、程序化环境氛围(微风、海浪、蝉鸣、钟声)—— 全部使用纯原生 ES modules 实现。
标签:Web游戏, 前端, 城市建设, 数据可视化, 模拟经营, 浏览器游戏, 自定义脚本, 艺术可视化