下载 App

【开发日志 01】立项:我不指挥任何一颗点

10/113 浏览综合
大家好,我是《涌现》的开发者。这是聚光灯 21 天挑战的第一篇开发日志。
先说这次在做什么:一个关于「群体」的小游戏。我不想做那种「给一张目标图案、让玩家照着摆」的玩法,而是反过来——我只给每个个体写三条很小的规则,形状让它自己长出来。
三条规则短到能写在便签上:
离得太近,就互相推开一点(18px 内生效);
看看邻居们在往哪走,就稍微跟上一点;
再朝邻居堆的中心,轻轻靠过去(70px 内算邻居)。
第一版跑起来那晚,我盯着屏幕看了很久。两百个光点满屏乱撞,像一段没调好台的噪声。几秒之后,不知道是谁先带的头,它们汇成了一股流。而我从头到尾,没写过一行「你们该往哪走」的代码。
这是我最想在这个游戏里呈现的东西:秩序不需要指挥。蚂蚁没有工头,鸟群没有队长,每个个体只遵守几条局部规则,整体就会自己长出方向。我们总以为复杂的东西背后必有复杂的设计,但很多时候,复杂只是简单规则被重复了足够多次之后的样子。
坑也很实在。技术上这是 O(N²):260 个粒子就是每帧 67600 次距离计算,手机端能不能稳住 60 帧还没验证,这是最大的性能隐患。参数也敏感得吓人——聚合权重稍微调大一点,整群「啪」地塌成一个点。分寸这种东西代码给不了,只能一遍遍试。
(配图:第一关「聚」的实机截图。此刻它们还各走各的——再过几秒,就会汇成一股流。)
下一篇聊「手」:怎么让玩家伸进屏幕,成为群体的第 0 号规则。
【开发日志 03】把「好看」翻译成数字截图
【开发日志 03】把「好看」翻译成数字
大家好,第三篇。这一周卡在了整个项目最难的地方:怎么判定玩家做到了。 前两篇都在讲「让它长出来」。可长出来之后还有个更麻烦的问题——我怎么知道它长对了? 「看起来像了」是一种感觉。感觉做不了关卡,关卡需要一个数字。 所以我给「涌现」这件事造了五把尺子。 序:把每个粒子的速度方向当成一根单位长度的箭头,全部加起来,再除以粒子总数。全体朝同一个方向走,这个值接近 1;各走各的,接近 0。 散布:所有粒
官方
4 赞
【开发日志 05】17KB 变 16MB,和被驳回那一次截图
【开发日志 05】17KB 变 16MB,和被驳回那一次
大家好,最后一篇。前面讲规则、讲度量、讲关卡,这篇讲把它交到别人手里:打包和上架。 游戏本体是一个单文件 HTML,17,072 字节,零外部依赖,双击就能玩。 为了让它在手机上能被下载,我给它套了个 WebView 壳:Jetpack Compose + Material 3 的 Web2APK 模板,页面放进 assets/www/index.html 离线加载,不联网也能跑。最终 APK 1
官方
4 赞
【开发日志 02】引力·斥力·涡旋:手,成了第四条规则截图
【开发日志 02】引力·斥力·涡旋:手,成了第四条规则
大家好,接着上一篇说。 三条规则是往游戏里写死的「自然规律」,玩家只能在旁边看着。可好看的鸟群看三分钟,也就变成屏保了。 所以这一步要解决的是:怎么让玩家把手伸进来,又不把涌现弄坏。 答案不是给他一根指挥棒,而是给他三种力场,让他成为第四条规则——一条随时可以改写的规则。 引力 ◎:460 像素半径,越近拉得越紧,但不是平均用力,而是按距离衰减。90 像素以内额外压了 0.99 的速度阻尼,这个补
官方
4 赞
【开发日志 04】前 10 关是课,最后一关把笔还给你截图
【开发日志 04】前 10 关是课,最后一关把笔还给你
大家好,第四篇,讲关卡。 上一期写了五把尺子。有了尺子,关卡才谈得下去——不然「过关」这两个字根本落不了地。 最终定下来 11 关:聚、环、分、序、三、双环、流、避、匀、息、∞。 真正撑起这 11 关的,是一个叫「规则预算」的东西。 每一关,分离、对齐、聚合三条规则的权重加起来有一个上限。第一关只给 4 点,最后一关放到 9 点。预算不够,就意味着你必须放弃点什么。 比如「分」这一关:聚合开得太高
官方
3 赞