top of page

每个方块都是实心的——除了不是的时候

作家相片: Marcel Dütscher
Marcel Dütscher
6月22日
讀畢需時 1 分鐘

我们的客户端网格生成器有一条铁律:凡是不是空气的方块,都要渲染,而且都有碰撞。就这样。这种简化让网格生成又快又简单——直到有个功能偏偏要打破这条规矩。


能量闸门。我们想给能量护栏做一道闸门:一层闪闪发光的薄膜,玩家和友好的 NPC 可以直接走过去,野生动物却过不去。也就是说,一个看得见、但对一部分人来说并不是墙的方块。这恰恰是我们的架构没有设想过的。


解决办法分成两半。在客户端,网格生成器有了第一个刻意设置的例外:闸门方块会被渲染,但不计入碰撞网格——玩家直接走过去就行。真正的逻辑在服务器上运行:生物的移动系统每走一步都会检查路上有没有能量屏障。野生动物和敌人会转身离开,同伴和玩家则可以通过。这个检查必须加进全部三套移动系统——野生动物、同伴、星球敌人——否则就会有一种生物不“认识”这道闸门。


诚实的脚注:会飞的生物可以直接从护栏上方滑翔而过。这不是 bug,而是有文档记录的限制——护栏就是拦不住任何会飞的东西。这样刻意留下的缺口,我们宁愿写下来,也不愿藏起来。


留给我们的启示:像“所有非空气都是实心的”这样的架构规则之所以有价值,正是因为它们很简单。但你得知道那个唯一的例外住在哪里——以及它为什么住在那里。

最新文章

查看全部
为什么新版本叫 2026.7.19,而不是 0.9.2 🗓️

今天更新的人,会从 0.9.1 版本一下跳到 2026.7.19。这看起来像是笔误,其实是一个刻意的决定:我们改变了版本号方案,从“语义化”版本改成了基于日期的版本(年.月.序号)。原因如下。 旧方案回答的是没人问的问题。语义化版本(0.9.1、1.2.3 ……)来自软件库的世界。在那里它很棒:第一个数字承诺“不会破坏任何东西”,第二个承诺“只有新增”,第三个承诺“只有修复”。而游戏不对任何人做这

 
 
大扫除:我们终于把 GitHub 的缓存用对了 🧹

在上一篇技术文章里,我们测量了构建和检查流水线到底花了什么:不是钱,而是等待时间和存储空间。那篇文章的结尾是“清理工作已经计划好,但还没完成”。结果比预想的快:从今天中午起,它已经进入主分支了。下面是数字。 先看结果。我们仓库的缓存用量,从 63 个条目共 5.32 GB,降到了 13 个条目共 2.46 GB。以前每个拉取请求都要跑的 C# 安全分析,现在在那里只需要 4 秒,而不是 4 分半,

 
 
每月一千次构建,而且一次都不花钱 ⚙️

先更正一件事。这篇文章的第一版声称,我们的 GitHub 构建分钟数用完了,被迫升级到 Pro 账号。这是错的,而且只要看一眼文档就能弄清楚:对公开仓库来说,GitHub 的构建分钟数是免费的。产物和缓存也一样。我们的仓库从五月底起就是公开的,所以我们从来没有为任何一分钟付过钱,以后也不会。与其悄悄改掉文字,我们宁愿重写一遍,告诉你们测量到底显示了什么。结果比错误的版本有趣得多。 先猜测,后查看。

 
 

留言


這篇文章不開放留言。請連絡網站負責人了解更多。
bottom of page