下载 App

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

修改于10/1618 浏览
今天删掉的东西,比加进去的更多。
我先加了一整套「增量游戏」的系统,又亲手把它拆了。
因为玩家说了一句话:这个游戏的核心,不该是数字变大。
日期: 2026-10-13
当前进度: 删除转生/神力成长曲线;人口上限改由住房决定;知识传授系统上线(神不建造,只教知识,小人自己建);修复一个"点了没反应"的随机 bug
horizontal linehorizontal line

写在前面:两次转向

今天被玩家打断了两次,两次都在纠偏。
第一次,他说:「这个游戏需要更像一个增量的策略游戏。」
我照着做了:双层循环(内层单局 + 外层跨局)、转生系统、道基货币、永久升级树、神力成长曲线。做完之后,玩家看着结算页上那棵升级树,说:
第二次,「这个封住一下,不是直接给东西,而是传授知识。」
然后他又补了一张截图——那是我做的「建造面板」,玩家可以直接放置伐木场、矿场。
这两句话合起来,是在指出同一个错误:我把神变成了建筑师和数值管理员。
horizontal linehorizontal line

一、先做,再删:一个关于"增量"的误判

1.1 我做的那套东西

按增量游戏的教科书结构,我实现了完整的一层:
系统实现
内层循环神力 → 投放 → 文明演化 → 结算
外层循环结算发「道基」→ 买永久升级 → 下一局更强
转生货币道基 = ⌊(峰值人口/30)^1.5 + 纪元×2.5 + 聚落×2 + 现象×0.4⌋
永久升级树神启/恩泽/血脉/厚土/先见/遗泽 六条
神力成长随纪元推进,上限 +25/级、回复 +0.5/s
还配了实测:首局道基收益 31、大爆发局 58,幂等性、存档往返、满级封顶全部通过。
技术上它是对的。设计上它错了。

1.2 错在哪

这个游戏的一句话是:
你不能造房子,不能修路,也不能命令任何一个小人。
你只能改变环境,然后眼睁睁看着他们自己把文明搞出来。
而我的增量系统在做什么?
  • 转生:让玩家攒一个叫"道基"的数字,然后买升级——这跟"改变环境"没有任何关系。
  • 神力成长曲线:让神力随文明推进变强——这是在给玩家加数值,不是在改变世界。
  • 建造面板:让玩家直接放置伐木场——神成了建筑师,直接违反第一原则。
玩家要的"增量感",不是数字变大,是复利式的文明增长——他们的人变多、走得更远、造出更复杂的东西。

1.3 删掉的东西

删除原因
Prestige.lua(整个转生模块)与"改变环境"无关,是纯数值层
结算页转生面板三栏还原为两栏
B.InfluenceGrowth + W.InfluenceMax/Regen给玩家加数值,不是给世界加变化
神力增强浮动提示同上
建造面板直接违反第一原则
删完,Render.lua 从 3001 行回到 2925 行。
horizontal linehorizontal line

二、人口成为唯一的增长轴

玩家给的第二个方向很明确:
发展资源就是发展人口,人口抵御野兽。
这句话把游戏的增长逻辑钉死了——人口既是劳动力,也是军队。

2.1 从常量到住房

改造前,人口上限是一个硬编码常量:
lua
HardPopulationCap = 150 -- 从头到尾不变
改造后,上限由住房决定:
lua复制
lua
BaseWandererCap = 45 -- 无聚落时的兜底 PerLevelCap = { 50, 90, 150, 240 } -- 聚落每级自带 PerHousingBuilding = 25 -- 玩家(后来是知识)建的住房
于是循环闭合了:
采集资源 → 建住房 → 人口上限提升 → 人口增长
                                  ↓
            人口既是劳动力(采集更快)也是军队(抵御野兽)

2.2 一个必须实测才能发现的死锁

第一版我设了 BaseWandererCap = 24。跑探针:
[v3] 终局:人口=0 上限=24 峰值上限=24
[v3] 建住房次数=0 玩家设施=0 聚落=0
[v3] 野兽:狼存活=10 被击杀=0
人口归零、0 聚落、10 头狼存活、0 击杀。
这是个死锁:
人口上限 24 太低 → 聚落(需 6+ 人聚集)长不出来
                 → 没有聚落可建住房 → 上限永远 24
                 → 被野兽吃光
只有跑起来才会发现。 光看代码,24 是个很合理的"小容量开局"数字。
修完(兜底 45、每级 50 起、野兽压力调温和、安全期 180→240s):
[v3] 终局:人口=11 上限=220 峰值上限=220
[v3] 聚落=1 最高纪元=4 狼被击杀=14
上限从 45 涨到 220,聚落长出来了,小人击杀了 14 头狼——"人口即军队"生效了。
horizontal linehorizontal line

三、神不建造,只传授知识

这是今天最重要的改动。

3.1 问题的本质

玩家给的截图是建造面板。我一开始以为他是在说"面板不好看",后来才明白——
只要玩家能直接建造,这个游戏就不是这个游戏了。
神一旦能盖房子,就退化成了普通的城建游戏。"涌现"这个词就没有意义了,因为结果是玩家直接给的。

3.2 修正:知识不是设施,是规则

神不建造,神只传授知识。
人学会知识后,自己决定要做什么、在哪里做。
违规版修正版
玩家动作直接放置建筑传授知识
建造者玩家小人自己
位置玩家选定小人自己找
资源玩家直接扣小人自己攒、自己花
神的位置建筑师知识的给予者

3.3 六门知识

每门知识都是一条写进小人大脑的规则:
知识代价教的是什么他们自己会做的事
🪨 矿物知识40辨认石头里的东西自己建矿场
🌾 农耕知识35种子和土地的关系自己开垦农田
🏠 建筑知识45怎样住得更结实自己盖房
⚒ 冶炼知识55火能对石头做什么自己建工坊
⚔ 军事知识50怎么面对威胁自己建瞭望塔/兵营
🌿 医疗知识40怎么对待伤口自愈更快
前置依赖:矿物 → 冶炼 / 军事(不能跳级)。
关键实现:Buildings.Build 从"玩家调用"改成由 Emergence 驱动小人自建。玩家全程没有点过任何"建造"。

3.4 实测:先教什么,决定文明能不能活

同一套系统,两种知识顺序:
顺序人口聚落纪元小人自建
温和(先农耕/建筑)2215 蒸汽farm/housing/mine/watchtower/barracks
军事优先(先矿物/冶炼)004farm/housing/mine/watchtower/workshop
军事优先把资源砸在防御上,没先解决食物,灭族了。
这不是 bug,这是策略。先教什么,真的会决定文明的命运。
horizontal linehorizontal line

四、知识不该剧透结果

第一版的知识描述是这样的:
❌ 矿物知识:「教他们认识石头里的矿:采石更快,日后懂得用矿石打造武器」
玩家立刻指出来:不该有明确指向。
他说得对。涌现游戏的核心是"你不知道会发生什么"。描述里写"会打造武器",等于把结果提前告诉了玩家——那还有什么好"涌现"的?
改成只讲教的是什么:
✅ 矿物知识:「教他们辨认石头里的东西。」
知识旧(剧透)新(只说教什么)
矿物采石更快,日后打造武器教他们辨认石头里的东西。
农耕自己开垦农田,食物不再只靠采集教他们种子和土地之间的关系。
冶炼自己建工坊,工具武器更精良教他们火能对石头做什么。
军事自己建防御工事,主动清剿野兽教他们怎么面对威胁。

4.1 补上事后的一环:知识涌现图鉴

光改描述还不够——玩家总得在事后知道发生了什么。于是加了 5 条图鉴条目:
⛏ 学会辨矿 — 「你只教了他们辨认石头。后来他们自己找到了矿,还在上面搭了棚子。」
⚒ 学会用火 — 「火能对石头做什么——他们试出来了。试出来的东西,比你教的更多。」
图鉴记的不是"你教了什么"(你的动作),而是"他们做成了什么"(涌现)。
实测:5 条里 4 条被点亮(know_smelt 没亮是因为工坊要 60 木 40 石、本局资源不够——符合预期)。
horizontal linehorizontal line

五、那个"点了没反应"的 bug

玩家截图说「资源点击不生成」。
我先写了三个探针,全部显示投放正常:资源 40→41、神力 100→90、地图中央未被 UI 覆盖。
探针复现不了,说明问题在特定条件下。
最后定位到 Camera.lua 的长按平移判定:
lua复制
lua
if Camera.longPressT >= LONG_PRESS_TIME and not moved then -- 0.28 秒 Camera.longPressPan = true dragged = true -- ← 直接判定为"拖动"
本意是"选中工具后,长按可以拖地图"。但它直接置 dragged = true,而抬手时 dragged 为真就不投放。
结果:任何按住超过 0.28 秒的左键点击,都会被静默吞掉。

5.1 为什么表现成"随机"

人手点击普遍在 0.2~0.4 秒,正好卡在阈值两侧。所以按快一点能投,稍微慢一点就没反应。
回退验证:
按住时长修复前修复后
0.10s✅✅
0.20s✅✅
0.30s❌ 静默吞掉✅
0.50s❌ 静默吞掉✅
0.80s❌ 静默吞掉✅
阈值精确吻合 0.28 秒。

5.2 修复

把"长按"从直接判定为拖动改成只预备拖动状态,是否拖动交给移动距离判断:
lua复制
lua
if Camera.longPressT >= LONG_PRESS_TIME and not moved then Camera.longPressPan = true -- 不再置 dragged = true
OnMouseUp 也改成只看 dragged(真的移动过)。
顺带一提:我第一版修复只加了"选中工具时才判定长按"——那没有解决问题,因为选中工具时正是长按生效的场景。第二版才是真正的修复。改完必须回退验证,否则你不知道自己修的是不是真问题。
horizontal linehorizontal line

六、今天踩到的坑

6.1 删除代码比写代码危险

删 DrawPrestigePanel 时,我用脚本按行号删除,结果只匹配到函数的第一个 end(嵌套的 end 被误判),把函数劈成了两半,留下满地碎片。
教训:按行号删函数不可靠。要么用括号配平,要么用编辑器精确选中。后来我改用「向上吃掉注释块 + 向下找到函数真正的结尾」才删干净。

6.2 全局替换会改坏函数名

批量把 W.InfluenceMax() 替换成 B.InfluenceConfig.Max 时,把函数定义本身也改了:
lua
function B.InfluenceConfig.Max -- 无效语法!
教训:批量替换前先看一眼会不会命中定义。这次靠 LSP 报错才发现。

6.3 面板重叠会吃掉点击

给图鉴加 ✕ 按钮后,实测发现点不动——命中的是下面叠着的态势面板的关闭按钮。
因为 RegisterUI 是后进先出的命中优先级,谁后画谁赢。修法是:图鉴打开时让态势面板和小地图让位。

6.4 调色板键名靠猜会崩

给新设施写渲染时,我用了 P.woodHi / P.rockHi——这两个键不存在。查了实际调色板才发现应该用 P.beam / P.rockLight。
教训:用调色板键之前先 grep 确认存在。
horizontal linehorizontal line

七、当前状态

项数值
代码21 个玩法模块,11160 行 Lua(含测试工具共 12592 行)
神之手工具12 个(资源 / 危险 / 诱因 / 天罚)
知识6 门(今天新增)
文明现象图鉴39 条(今天新增 5 条知识涌现线)
像素精灵33 张
音效注册54 条
人口上限由住房决定(45 起,可达 240+)
horizontal linehorizontal line

八、下一步

  • [ ] 规则卡重定位:12 张卡全是"改变小人规则",现在和知识系统语义重叠,需要重新定位为"改变环境对行为的回报"
  • [ ] 拆分 Render.lua:2989 行,逼近 3000,每次改动都要小心
  • [ ] 知识的学习反馈:小人学会知识时,应该有可见的"顿悟"瞬间
  • [ ] 发布素材:project.json 里 icon/screenshots/promotional_image 仍全为空
  • [ ] 战争率:把冲突判定限定在不同部落之间
  • [ ] 收纪元阈值:蒸汽时代比预期更易达到
horizontal linehorizontal line

写在最后

04 我写的是:一个能被反复重放的世界,还得有值得你重放的理由。
今天发现,我给的那个"理由"(转生、永久升级)是错的——它是数值的理由,不是世界的理由。
真正值得重放的理由,应该是:
这一次,我教了他们不一样的东西,于是他们长成了不一样的样子。
删掉转生系统的时候有点心疼——那套东西技术上是完整的,实测数据也漂亮。但玩家那句话是对的:
这个游戏的核心,从来不是数字变大。是"你不能直接给结果"。
神能盖房子,这个游戏就死了。
神只能教知识,这个游戏才活着。#聚光灯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:34
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!截图
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!
- 人类曾因掌握元素合成技术而一度辉煌,又因滥用元素能量而逐渐从内里衰败。 - 30世纪80年代。社会文化充斥着激进乐观主义与庞大机械美学,在这里,污染和能源共生,幸福与痛苦并存。官方广播和宣传画里依旧在宣扬“科学将战胜一切”、“元素能量将再造新农田”的口号,而世界主城却已经因为污染过度而濒临崩溃、空间挤压严重。为了寻找新的生存空间与无污染能源,官方启动了“重构拓荒计划”。 - 玩家将作为前线拓展
14 赞
5 回复
00:10
群迹·上取其下,下取其上截图
群迹·上取其下,下取其上
#聚光灯gamejam开发者日志 向大家汇报一下今日进度,目前在和蚁群的默认移动算法进行斗智斗勇。或许是我的AI对蚂蚁有别样的理解,其实最初写出的方案更接近于围绕着恒星公转的行星。 哦我还以为文章里可以插入多支视频视频,想要展示一些其它的运动方式,可惜了。那么就简单在上方传一个比较典型的,有点类似于蟑螂的运行方式。 目前仍在解决蚁群的随机运动,和玩家可操纵性之间的平衡问题。以及如各位所见,目前的
3 赞
1 回复
00:39
【开发日志3】主场景与玩法无缝化衔接截图
【开发日志3】主场景与玩法无缝化衔接
大家好我是鸭。这里是墨江里的一群鸭,嘎嘎嘎~ 今天主要时间用来搭建主场景了,感觉有点浪费时间啊……理论上来说要进入到搜打撤玩法的unity场景搭建了。 不想打字了,大家看看画面表现效果吧~ #TapTap聚光灯独立游戏
11 赞
1 回复
《卡牌工业》开发日志 01|从“涌现”到产线对打截图
《卡牌工业》开发日志 01|从“涌现”到产线对打
大家好,我们正在用 Godot 做一个暂名《卡牌工业》的游戏。目前已经跑通了最小的生产与战斗循环,也做了两轮迭代。这篇先记录一下:面对“涌现”这个题目,我们讨论过什么,又为什么最后收敛到卡牌和工厂。 第一步:头脑风暴,涌现可以是什么? 刚看到“涌现”这个题目时,我们的想法几乎朝每个方向散开了。塔防、物理搭建、探索、解谜、经济系统、叙事,甚至增量游戏,都能让简单规则在玩家的操作中长出新的结果。再想下
开发日记[03]|核心三大系统完工!宗门炼丹采药弟子体系已落地截图
开发日记[03]|核心三大系统完工!宗门炼丹采药弟子体系已落地
各位道友,好久不见!本期开发日记来同步我们项目最新的研发进度。 经过一段时间的持续攻坚,游戏最核心的三大玩法系统:草药系统、丹药合成系统、弟子系统已经全部开发完成,底层逻辑、数值规则、交互框架都已经跑通。虽然距离完整可玩Demo还有不少内容需要补齐,但宗门经营的核心循环已经搭建完毕,终于可以和大家聊聊这套玩法的设计思路。 首先是草药系统。我们希望采药不只是简单的点击拾取,而是整个宗门资源链的起点
00:30
《失心》游戏开发者日志01|游戏UI迭代及实机演示截图
《失心》游戏开发者日志01|游戏UI迭代及实机演示
进入《失心》之前,玩家首先看到的是我们工作室 UNLOOK 的标识。我们将原来的标识转成 SVG,并让其中的红色瞳点转动、观察,再逐步显露完整字形,希望这个短暂的开场能带出一点好奇和不安。 这次《失心》的开局 UI,我们围绕小灵通(因为游戏的主要交互道具就是小灵通)做了几轮调整,希望玩家从打开游戏开始,就能感受到故事里的年代和气氛(故事年代背景为2000s)。 早期版本先确定了一个方向:把菜单放进
13 赞
10 回复
【归真葫芦】开发者日志02:打不到的母体,怎么打?截图
【归真葫芦】开发者日志02:打不到的母体,怎么打?
大家好,这里是高速星星工作室,今天来讲讲《归真葫芦》的核心玩法啦! 非常温馨幸福的封面图也搓出来了!希望带两娃的师父可以一直这样幸福下去…… 这一阶段经过策划老师们的反复捶打我们变得更加松软()主要完成了: 生命游戏的基础规则 ✔ 葫芦系统(摄取、炼制、吐出) ✔ 母体与关卡配置 ✔ 整体玩法确定 ✔ 【玩法循环】 摄取红秽 → 炼成金秽阵形 → 吐回棋盘 → 推进演化 → 用演化结果攻击母体。 重
5 赞