下载 App

《我真没让他们建城啊!》开发者日志 01

修改于10/1620 浏览
立项与涌现 你不能造房子,不能修路,也不能命令任何一个小人。 你只能改变环境,然后眼睁睁看着他们自己把文明搞出来。
类型: 微型文明模拟 / 群体 AI / 上帝游戏 / 轻 Roguelite 主题: 涌现 单局时长: 约 15 分钟 当前进度: 核心系统可运行原型完成
一、立项:一个抽象的主题词,怎么变成一款能玩的东西 拿到主题「涌现」的时候,第一反应其实是懵的。
因为「涌现」和「跳跃」「解谜」「收集」不一样——它不是一个玩法,它是一个现象。你没法让玩家"按 A 键来涌现"。如果照着字面做,很容易做成两种情况:
一种是假涌现:写一堆 if-else,在特定条件下播放"村庄出现了"的动画。玩家一眼看穿是脚本,没有惊喜。 一种是炫技涌现:堆一个康威生命游戏或者粒子物理,确实"涌现"了,但没人知道该怎么玩。 所以立项的第一步不是想玩法,而是先把主题翻译成一句可执行的话。
我的推导是这样的:
涌现 = 简单规则 × 大量个体 × 局部交互 → 复杂全局结构 拆开看,三个要素缺一不可:
简单规则——个体本身必须足够笨。如果每个小人都很聪明,那复杂结构就是"聪明人商量出来的",不是涌现。 大量个体——单个蚂蚁没有智慧,蚁群才有。数量本身就是系统的一部分。 局部交互——每个个体只能看到自己周围一小块,没有全局视野。全局结构必须从局部信息里长出来。 于是,游戏的形态就自动被限制死了:
玩家绝对不能直接建造任何东西。
因为一旦玩家能点"建造村庄",那村庄就是玩家造的,不是涌现的。这个游戏就死了。
这就是整个项目的第一公理,也是最重要的设计红线:
玩家只能改变环境,不能下达命令。
我把它进一步固化成三条不可违背的原则:
原则 含义 反面教材 玩家不建造 没有"建造房屋"按钮,房屋是系统对现象的命名 传统模拟经营 个体不聪明 不用行为树 / GOAP / LLM,只有 Utility AI 打分 智能体 NPC 结构自己长 道路、村庄、市场、战争全部由底层数据累积触发 关卡设计师摆场景 顺着这三条往下推,游戏的一句话就出来了:
你不能造房子,不能修路,也不能命令任何一个小人。你只能改变环境,然后眼睁睁看着他们自己把文明搞出来。
二、对「涌现」的思考:三件想明白了的事
  1. 涌现不是特效,是"命名" 这是我做这个项目最核心的一次认知转变。
一开始我总想"怎么把村庄做得更酷"。后来发现方向反了——系统不应该"创造"村庄,系统应该"发现"村庄。
小豆人们不知道什么叫村庄。他们只是:困了找个安全的地方睡、饿了去有食物的地方、喜欢跟同类待在一起。当某个区域恰好满足"睡觉的人多 + 人口密集 + 恐惧低 + 附近有资源"时,系统才回过头来,给这个现象起了个名字,叫"村庄"。
村庄不是被造出来的,是被命名的。系统在这里扮演的不是造物主,而是一个观察者、一个记录员。
这个视角一换,整个架构就顺了:底层只管跑规则,涌现系统只管看,看到符合条件的东西就给它命名、发一个弹窗告诉玩家。
代码里也是这样落地的——涌现系统不生产任何资源、不修改任何状态,它只读数据、只打标签。库存归库存系统管,聚落只是"接管"真实存在的库存,绝不凭空变出东西。
一个细节:如果涌现系统能凭空造资源,玩家很快就会发现"只要堆人口,系统就会发食物",游戏就退化成刷数值了。系统必须守恒,这一点比看起来重要得多。
  1. 玩家的爽点是"我什么都没做,它自己发生了" 这是这个题材唯一值得追求的瞬间:
“等等,他们为什么突然开始干这个了?”
传统游戏里,玩家做 A,游戏给 B,因果关系是清晰的、被设计的。而这个游戏要的恰恰是因果链长到玩家自己都算不清:
玩家在地图中间扔了一堆苹果 → 两个村子的人流在苹果地交汇 → 开始交换 → 出现市场 → 市场吸引人流 → 踩出一条路 → 路让商人走得更快 → 商队出现了 → 狼群从商路上咬死商人 → 恐惧扩散 → 原路废弃、新路诞生 → 城市因为恐惧分裂 → 两个部落开始抢食物……
玩家只做了一件事:扔苹果。
蝴蝶效应不是叙事手法,是这套系统的直接产物。
  1. 设计师必须主动放弃控制权 这是最难接受、但也是最重要的一条。
作为开发者,本能地想控制一切:想设计地图、想编排剧本、想保证每一局都有戏剧性。但涌现游戏的魅力恰恰在于——连我自己都不知道这一局最后会变成什么样。
所以我给自己定了一个规矩:
设计师制定规则,然后连设计师自己都不知道这一局最后会变成什么。
代码里所有的涌现阈值(多少人口算城市、多少次交易算市场、多久的战斗算战争)都是可调的规则,不是剧本。我调的是物理常数,不是剧情走向。
真正的回报是:测试的时候我自己会被自己的游戏惊到。有一次我只是想看看狼群 AI 有没有 bug,结果看着看着,两个从来没打过架的村子因为我随手放的几个苹果打起来了。那一刻我就知道,方向对了。
三、做了什么 截至现在,核心系统已经跑通。整个项目约 6000 行 Lua,拆成 13 个模块,按"数据 → 决策 → 涌现 → 表现"分层。
3.1 世界:一张会记账的地图 地图是 64×64 的逻辑网格。它的核心不是地形,而是七张热度场:
热度场 记录什么 Walk 谁从这里走过(踩路) Sleep 谁在这里睡过(聚居) Trade 谁在这里交易过(市场) Death 谁死在这里(墓地/恐惧) Fight 哪里发生过战斗(战场) Pop 实时人口密度 Fear 恐惧浓度 每张小豆人走过一格,Walk 就 +1。这些数据持续累积、缓慢衰减,然后反过来改变世界。
道路就是最直观的例子,也是整个游戏第一个"WOW 时刻":
走的人多 → Walk 累积 → 草被踩秃 → 变成泥路 → 移动更快 ↑ ↓ └────────── 更快所以更多人走 ←────────────────┘ 一个完美的正反馈闭环。没有寻路规划器在规划城市道路,路只是"被走得足够多"。
代码上做了几个刻意的选择:
热度用求和不用平均,单格钳制在 0~100。区域均值达标时,必然存在至少一个种子格也达标,这样热点检测不会漏掉偏移的聚集区。 确定性伪随机:地图生成用哈希种子,保证开局面板稳定可复现。 固定步长模拟:不管玩家开 1x / 2x / 4x,模拟都以 0.1 秒定步长推进,保证倍速只是"看快一点",不改变行为结果。这条对观察类游戏很重要——玩家切倍速不应该让世界变成另一个世界。 寻路用 A*,成本按路况分级,而且墓地有性格惩罚:胆小的(Brave < 0.35)绕路绕得更狠,胆大的(Brave > 0.65)几乎不绕。于是"城市自然绕开墓地"这件事不用写代码,它自己会从性格里长出来。 3.2 小豆人:坚决不做行为树 设计文档里我写死了一条:不要行为树,不要 GOAP,不要 LLM NPC。
用的是最朴素的 Utility AI——每个行为算一个分数,谁分高做谁:
EatScore = 饥饿度 × 食物距离权重 SleepScore = 疲劳度 × 安全感权重 RunScore = 恐惧 × 危险权重 SocialScore = 社交需求 × 性格.社交 看起来简单到可笑,但小豆人的行为在观感上非常聪明。因为涌现的智慧不在个体,在群体。
每个小豆人有四个性格值(0~1):社交 Social / 贪婪 Greed / 勇气 Brave / 好奇 Curiosity。
繁殖时,子代 = 父母平均值 + 随机突变。
这一行代码是这个项目第二层的涌现。环境会自然筛选性格:
怪物多 → 胆小的活下来 → 几代以后整个文明变胆小 资源稀缺 → 贪婪的抢到食物 → 文明越来越贪婪 资源分散 → 好奇的先发现 → 探索型文明诞生 玩家从来没有点过"升级探索能力"。这是自然选择。
行为本身也做了取舍:交易是守恒的(A 的木头的确到了 B 手上),攻击有真实的战斗节奏和伤害判定,睡觉要真的睡够时长。不搞"瞬间完成"的假动作,因为观察类游戏里,看得见的真实过程本身就是乐趣。
3.3 涌现系统:系统给现象"命名" 这是整个项目的灵魂模块。它不做别的,只做一件事:持续观察,发现符合条件的东西就命名、记录、告诉玩家。
目前实现了 20 项文明现象图鉴:
类别 现象 空间 第一条道路 / 村落 / 城市 / 鬼城 / 边境 / 城市圈 经济 市场 / 商路 / 商队 / 垄断 群体 大迁徙 / 难民潮 / 圣地 / 新世界 冲突 战争 / 世仇 宏观 黄金时代 / 大饥荒 / 文明崩溃 每一项都是玩家第一次触发时弹窗,比如第一次出现商路:
发现新的文明现象:「商路」 当两个从未交流过的聚落开始持续交换资源,一条商路自然诞生了。
这就是 GameJam 版本的成长目标——不是打败 Boss,是集齐文明的图鉴。也是玩家愿意开第二局的理由。
实现上踩过一个很典型的坑,值得记下来:
部落分裂距离必须小于等于聚落间距阈值。
如果"两个聚落离得多远才算两个部落"的距离,大于"两个聚落离得多远才算同一个聚落"的距离,那么新生的聚落永远会被并进第一个部落,第二个部落永远不会诞生——战争也就永远不会发生。
一个阈值的大小关系,决定了整个游戏最戏剧化的系统能不能启动。涌现系统里全是这种"看不见但致命"的耦合。
3.4 玩家:四个"神之手" 玩家扮演的不是国王,是世界规则的干扰者。目前有 9 种干预工具,分成四类:
投放资源:食物 / 木材 / 石头 制造危险:狼群 / 野火 放置诱因:篝火(吸引聚居)/ 宝藏(吸引贪婪)/ 图腾(吸引好奇)/ 钟(定期聚人) (第四类"改变法则"见下一节) 关键在于:所有工具都不直接指挥小豆人。篝火不会命令"过来睡觉",它只是让小豆人觉得"这里暖和,靠近点"。至于最后会不会变成城市中心——那是他们自己的事。
神力有成本、会缓慢回复,所以玩家不能无脑刷屏,每一次干预都是一次赌注:赌这群笨东西会怎么解读你的善意。
3.5 规则卡与随机事件:往系统里扔石头 12 张世界规则卡,每 150 秒三选一,选中后永久改变底层规则:
「人多力量大」「远方的饭更香」「死亡留下恐惧」「篝火让人安心」「独狼」「商人的时代」「好战年代」「丰饶时代」「慢生活」「基因涌动」「抱团取暖」「车同轨」
比如「独狼」——人口越密集,好奇的小豆人越想离开。结果是城市群不断分裂生长。又比如「车同轨」——小豆人更偏爱已经踩出来的路,路形成得更快。
7 个随机事件:丰收 / 干旱 / 寒冬 / 暴雨 / 瘟疫 / 流星 / 狼群。
这些事件的意义不是"扣 20% 人口"。是:
往系统里扔一颗石头,然后观察涟漪。
干旱不直接杀人,它让食物回复变慢,然后饥饿、迁徙、冲突会自己发生。
3.6 表现层:NanoVG 像素风 + 50 段音效 视觉上做了一个"反常规"的决定:地图变化比角色动画重要得多。
小豆人就是 16~24 像素的"小豆子"——圆头、身体、两只脚,几个状态。但地图会随着时间肉眼可见地"活过来":开局纯草地 → 出现踩踏痕迹 → 泥路 → 石路 → 村庄帐篷 → 城市房屋 → 市场摊位 → 墓地。这张地图真的被这些小东西活过。
技术上全部用 NanoVG 程序化绘制(平色块 + 深色轮廓 + 统一色板,刻意保留低像素感),没有一张美术贴图,所以整个包体非常轻。
音效倒是认真做了,一共 50 段音频:
环境与 BGM:荒野环境音、雨声循环、游戏 BGM 涌现音:第一条路、村落、城镇、城市、市场、墓地各有专属提示音 世界音:采集、交易、战斗、狼嚎、死亡、出生、篝火、钟声 UI 音:悬停、点击、开关、规则卡选择 事件音:丰收、干旱、瘟疫 音频管理做了分类限流(同一类音效有最大并发数和冷却),还带了距离衰减和声道偏移——所以把镜头拉到远视角时,整个世界的声音是"从一个点传出来"的,拉近才能听清细节。避免了一百个小人同时采集时音效糊成一片。
四、几个印象最深的取舍
  1. 不用行为树,一开始是"敢不敢"的问题。 行业惯性会让人本能地觉得"复杂行为 = 复杂架构"。但这次恰恰相反:个体的简单是卖点的一部分。行为树让 NPC 变聪明,而我要的是 NPC 变笨、群体变聪明。
  2. 系统必须守恒。 涌现系统只能"发现",不能"创造"。一旦哪个模块偷偷变出资源,整个经济就崩了,玩家也会立刻闻出"假"的味道。
  3. 一个阈值能决定一个系统是否永远不触发。 上面说的部落分裂距离就是例子。涌现游戏里,各个系统的耦合极其隐蔽,调参时必须时刻问自己:“这个数字变大/变小,会不会让某个现象永远无法出现?”
  4. 玩家必须看懂"我做了什么"。 纯涌现的风险是玩家觉得"跟我没关系"。所以规则卡、现象弹窗、第一次道路出现时的镜头震动和提示语,都在反复告诉玩家一件事:你只改变环境,剩下的是他们自己的选择。
五、下一步 [ ] 数值打磨:保证玩家 3 分钟内看到第一次明显涌现(第一条路) [ ] 新手引导:渐进式教学节奏,让新玩家 30 秒内理解"我该干什么" [ ] 文明结算界面:一局结束后回放这一局的文明兴衰史 [ ] 音频与特效细节补齐 [ ] 打包、宣传 GIF、投稿材料 写在最后 这个项目最让我兴奋的地方,是它的规模很小,但可能性很大。
底层只有几个系统:移动、需求、资源、性格、环境、几张数值场。但把它们叠在一起,道路、聚落、贸易、战争、迁徙、城市、废墟、文明兴衰,全都会自己长出来。
用 5 个系统,制造 50 种故事。
如果做完这个游戏,玩家能说出一句:
“等等,他们为什么突然开始干这个了?”#聚光灯gamejam开发者日志
00:07
雨天決行 开发者日志02-人工智能的自我修养截图
雨天決行 开发者日志02-人工智能的自我修养
又和大家见面啦!第二篇日志,说实话一开始不知道该怎么编排,但团队里惊喜的成果越来越多,我们已经迫不及待把更新的内容端上来给大家啦!那么事不宜迟,快来看看都有什么新情报吧ദ്ദി˶ー̀֊ー́ )✧ 一.美术(重磅升级) 以主美小为的生命力作为燃料(bushi)本次美术组取得了大进程!首先是各个ui界面的优化和细化,上次大家看到时还只是初具雏形的草稿,现在大多都完整起来了哦! 同时,随着配色的补全,手
42 赞
36 回复
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合截图
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合
大家好,我是一个人报名了 2026 聚光灯 21 天游戏创作挑战 的独立开发者。今年主题公布那一刻我就笑出了声——涌现。因为我已经想做这个游戏很久了: 《气味之城》:你不是猫神,你只是一只猫。 先说一个所有养猫人都懂的事实:你永远无法"教会"一只猫任何它自己不想学会的事。但你家猫可能自己学会了——听见冰箱开门就瞬移到厨房;你心情不好时过来踩奶;凌晨三点准时在你身上练马拉松。没人教过它,这些行为是它
3 赞
4 回复
《我真没让他们建城啊!》开发者日志 06截图
《我真没让他们建城啊!》开发者日志 06
06 让那条链被看见了。 但玩家看完之后,问了一个更难的问题:看完了,然后呢? 一局结束,一切归零;一门知识学会,那个按钮就死了。 今天做的事,是给每一样东西接上下文。 日期: 2026-10-14 当前进度: 补上缺失的外层循环(转生/道基);知识从二值开关升级为可深造、可组合、可跨局继承;修复一个 0.75% 概率的地图崩溃;首次打通本地预览验证 写在前面:两条反馈,一个共同的字 06 收尾时
3 赞
2 回复
00:39
【开发日志3】主场景与玩法无缝化衔接截图
【开发日志3】主场景与玩法无缝化衔接
大家好我是鸭。这里是墨江里的一群鸭,嘎嘎嘎~ 今天主要时间用来搭建主场景了,感觉有点浪费时间啊……理论上来说要进入到搜打撤玩法的unity场景搭建了。 不想打字了,大家看看画面表现效果吧~ #TapTap聚光灯独立游戏
11 赞
1 回复
00:10
群迹·上取其下,下取其上截图
群迹·上取其下,下取其上
#聚光灯gamejam开发者日志 向大家汇报一下今日进度,目前在和蚁群的默认移动算法进行斗智斗勇。或许是我的AI对蚂蚁有别样的理解,其实最初写出的方案更接近于围绕着恒星公转的行星。 哦我还以为文章里可以插入多支视频视频,想要展示一些其它的运动方式,可惜了。那么就简单在上方传一个比较典型的,有点类似于蟑螂的运行方式。 目前仍在解决蚁群的随机运动,和玩家可操纵性之间的平衡问题。以及如各位所见,目前的
3 赞
1 回复
00:34
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!截图
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!
- 人类曾因掌握元素合成技术而一度辉煌,又因滥用元素能量而逐渐从内里衰败。 - 30世纪80年代。社会文化充斥着激进乐观主义与庞大机械美学,在这里,污染和能源共生,幸福与痛苦并存。官方广播和宣传画里依旧在宣扬“科学将战胜一切”、“元素能量将再造新农田”的口号,而世界主城却已经因为污染过度而濒临崩溃、空间挤压严重。为了寻找新的生存空间与无污染能源,官方启动了“重构拓荒计划”。 - 玩家将作为前线拓展
14 赞
5 回复
《卡牌工业》开发日志 01|从“涌现”到产线对打截图
《卡牌工业》开发日志 01|从“涌现”到产线对打
大家好,我们正在用 Godot 做一个暂名《卡牌工业》的游戏。目前已经跑通了最小的生产与战斗循环,也做了两轮迭代。这篇先记录一下:面对“涌现”这个题目,我们讨论过什么,又为什么最后收敛到卡牌和工厂。 第一步:头脑风暴,涌现可以是什么? 刚看到“涌现”这个题目时,我们的想法几乎朝每个方向散开了。塔防、物理搭建、探索、解谜、经济系统、叙事,甚至增量游戏,都能让简单规则在玩家的操作中长出新的结果。再想下
《一方烟火》开发日志07|灯亮了,也有雨雪了截图
《一方烟火》开发日志07|灯亮了,也有雨雪了
版本:V-20261019|已审核通过并上线。 上一篇主要在补存档、教程和卡顿。这次想把村子的样子再往前推一点:换掉不太合群的条纹棚,让收市后的村落也有灯光,雨雪也真正落到画面里。 夜景怎么放进按天推进的游戏? 营业结算后,画面会渐渐入夜,窗户和灯笼亮起来。当天的收益已经结算并保存,点“继续营造”就能回来,不需要等动画播完,也不会额外消耗一天。视角菜单里还可以单独切换日夜,看看自己建好的村子。教学
2 赞
00:30
《失心》游戏开发者日志01|游戏UI迭代及实机演示截图
《失心》游戏开发者日志01|游戏UI迭代及实机演示
进入《失心》之前,玩家首先看到的是我们工作室 UNLOOK 的标识。我们将原来的标识转成 SVG,并让其中的红色瞳点转动、观察,再逐步显露完整字形,希望这个短暂的开场能带出一点好奇和不安。 这次《失心》的开局 UI,我们围绕小灵通(因为游戏的主要交互道具就是小灵通)做了几轮调整,希望玩家从打开游戏开始,就能感受到故事里的年代和气氛(故事年代背景为2000s)。 早期版本先确定了一个方向:把菜单放进
13 赞
10 回复
开发日记[03]|核心三大系统完工!宗门炼丹采药弟子体系已落地截图
开发日记[03]|核心三大系统完工!宗门炼丹采药弟子体系已落地
各位道友,好久不见!本期开发日记来同步我们项目最新的研发进度。 经过一段时间的持续攻坚,游戏最核心的三大玩法系统:草药系统、丹药合成系统、弟子系统已经全部开发完成,底层逻辑、数值规则、交互框架都已经跑通。虽然距离完整可玩Demo还有不少内容需要补齐,但宗门经营的核心循环已经搭建完毕,终于可以和大家聊聊这套玩法的设计思路。 首先是草药系统。我们希望采药不只是简单的点击拾取,而是整个宗门资源链的起点