下载 App
昨天 13:521 浏览综合
开发者日志 第1篇:从0到1,我们做了一个会自己"长"出来的世界


今天是开发第一天
今天正式开始做《小小文明》(Tiny Civilization)——一个以"涌现"为主题的神格模拟游戏。
最近一直在想一个问题:为什么蚁群那么聪明,单只蚂蚁却笨得不行?
答案很简单:没有谁在指挥。每只蚂蚁只遵循几条简单规则——闻到信息素就跟着走、碰到同伴就碰一下、找到食物就往回搬。但几百万只蚂蚁放在一起,它们就会自己建起复杂的巢穴、派出采集队、甚至发动战争。
这就是涌现:简单的个体,在局部互动中,自发产生出宏观层面的复杂秩序。
我们想做的,就是让玩家体验这种"我啥也没干,怎么就长出一个文明了?"的惊喜感。


今天完成了什么
1. 搭好了最基础的模拟引擎
最开始就是一堆小红点,在灰色背景上乱走。
我们用了经典的 Boids算法——三个简单规则:
- 分离:别挤在一起
- 对齐:方向跟邻居保持一致
- 凝聚:往群体中间靠
就这三行代码,出来的效果特别神奇:几十上百个小红点,突然就像鱼群一样流动起来了。你在屏幕这边看着,根本不觉得这是写出来的程序,倒像是在观察一群真的小鱼。
2. 加了生存系统
小人会饿了。饿了就会自己找吃的,吃饱了就到处逛,饿太久就死掉。
然后加了繁殖:两个小人靠得近、都吃饱了,就会生一个新的。
你猜怎么着?我们没写任何"要群居"的代码,但小人自然而然就凑成一堆一堆的。因为找食物的时候大家都往同一个地方跑,跑着跑着就扎堆了。
这就是第一次感受到涌现的魔力——你设计的是规则,结果是你意想不到的。
3. 他们开始盖房子了
吃饱了没事干的时候,小人会开始盖房子。
一开始就是棕色小方块,盖着盖着就聚成了一片。我们盯着屏幕看了十分钟,看着几十个棕色方块慢慢铺满屏幕的一角,变成一个"村子"。
那种感觉很奇妙:你知道这都是你写的代码,但你依然会觉得"哇,他们真的建出了点什么"。
4. 加了神力系统
现在玩家能当神了:
- 按1放食物
- 按2放小人
- 按3放火山(搞破坏用的)
- 按4降雨(蓝色小雨点掉下来那种)
按F加速,看着小人飞速发展,然后往他们村子中间扔个火山——看他们四散奔逃,特别解压。
5. 有了阶段进度
现在游戏会自动检测:
- 🌱 荒野期:刚开局,小人到处逛
- 🏕 部落期:开始盖房子了
- 🏘 村落期:房子有一堆了,人口也起来了
左上角实时显示人口、食物、房子数量。


遇到的问题
今天踩了几个坑:
第一个坑:加了个大背景方块,结果鼠标点击全被挡住了,放不了东西。 折腾了半天才想起来——ColorRect默认会拦截鼠标事件,要设置 mouse_filter = IGNORE 才行。
第二个坑:小人繁殖速度一开始调太快了,一会儿就50个人口上限了。后来把饥饿值消耗速度和繁殖条件调了调,现在生态平衡多了。
第三个坑:Boids群体行为的参数一开始不对,小人要么挤成一团不动,要么散得到处都是。调了半小时分离力和凝聚力的权重,才出来那种"像鱼群一样流动"的感觉。


设计上的一点思考
做这个游戏最核心的原则是:玩家不直接创造文明,玩家创造条件。
你不能命令某个小人去种田,你只能在旁边放一片可食用的植物。然后你看着——他们慢慢发现了这个食物来源,慢慢开始固定在这片区域活动,慢慢就有人"发明"了种植。
你没教他们种地。是他们自己学会的。
这就是涌现。


明天要做的事
- 扩展玩法阶段:从现在的3个阶段,扩展到6个——荒野期、部落期、农业期、村落期、城邦期、文明期
- 导入美术素材:现在都是方块,明天找免费的像素素材,把小人、树木、房子都换成好看的
- 加更多神力:比如地震、瘟疫、空投猎物
- 调平衡:让生态发展的节奏更舒服,不要太快也不要太慢


写在最后
今天最大的感受是:写涌现类的游戏,最有趣的部分不是你写了什么,而是你没写什么。
你写了移动、写了觅食、写了繁殖。但你没写"要群居",没写"要建村子",没写"要分工"。
这些都是自己长出来的。
明天继续。看看明天我们的小人又会自己长出什么来。


《小小文明》开发日志 · 第1篇 开发第1天 / 共21天












