top of page

看不见的守护者,还有终于会解释自己的封禁 👁️

作家相片: Marcel Dütscher
Marcel Dütscher
7月26日
讀畢需時 4 分鐘

不久前我们在这里写过为孩子而设计,包括举报、反馈和一双留意的眼睛。老实说,那双眼睛是其中最薄弱的一环:我们能收到举报,却几乎看不到一个世界里到底在发生什么。这就是我们一直在做的事,分成两块:一个用于监督的观察者模式,和一套彻底重做的封禁系统,它终于会告诉受影响的玩家发生了什么。


观察者模式。当收到举报时(“有人在乱建东西”“有人在说难听的话”),我们现在可以进入那个世界而不打扰它。而且是真正的隐形,不是那种“请别画我”、被改过的游戏可以直接无视的隐形。服务器对观察者的存在完全保密:没有角色形象,没有停着的飞船,没有占用的着陆台,没有降落动画,没有宠物,没有飞行摩托,没有占用的玩家名额,玩家人数也不会变。对那个世界里的每个人来说,那里真的一个人也没有。飞行可以穿墙(不然根本进不了被封死的基地),生物会无视观察者,反正观察者也不能开火。


观察就是观察。观察者不能碰世界里的任何东西,只有一个例外:可以挖掘方块。这是真正能把冒犯性的建筑从世界里清除的唯一手段,而且每一次清除都会被记录下来。在聊天里观察者是静音的,想主动露面需要另一条单独的命令。屏幕上还会一直显示一个“观察者”标志,免得有人误以为自己在正常游玩。


为什么要做得这么严格。有两个决定,从外面看不出来,但对我们很重要。第一:观察者身份不保存在存档里,每次加入时都会根据服务器配置重新计算。存档可以被下载、再上传到别处,如果保存了监督者身份,它就会跟着存档跑到不属于我们的机器上。第二:它不是世界选项。世界的主人不应该能关掉对自己世界的监督。这也是为什么它不挂在“管理员作弊”设置下面,反正那个设置在世界里默认就是关着的。


找到事情发生的地方。为此有了新命令:/players 显示谁在线,以及所有在这个世界玩过的人;/builds 显示某人在哪里建过东西;/where 能找到某位玩家;/goto 也能跨星球跳转(旧的传送只设置坐标,会把人扔到错误的星球上 🙈)。此外,我们管理面板里的一个概览页面直接从世界存档里读取:玩家、建筑和“建造热点”,这样就连有人没放基地核心、随手搭在荒郊野外的房子也能找到。而且每个被改动的格子现在都会记住最后是谁、在什么时候碰过它。在做这个之前,我们测量了它的存储成本:数据库里一行都没有多出来,因为存储本来就是按格子来的。


私人世界里也行,不过有双重锁。最初的版本有个荒唐的漏洞:隐形观察者只能进入公开的、没有密码的世界,而那恰恰是最没什么事发生的地方。孩子们几乎总是在私人世界里玩,密码只在朋友圈子里传。所以现在监督也能到达那里了。为了不让它变成后门,访问上了双重锁:需要一个只能通过出示秘密代码才能创建的操作员账号,并且还要用专门为此保留的玩家名字,这个名字在全系统范围内被保留,其他人无法注册,也无法用它来玩。缺了任何一样,什么都不会发生。


然后是封禁。以前这块做得真的很糟:被封禁的账号可以完全正常地登录,只有在加入世界时才会撞上一堵墙,没有原因,没有日期,也没有办法询问。从玩家的角度看,就是游戏坏了。现在一登录就能看到当前状态,还有一个消息收件箱:“你的世界被删除了(原因)”“你的封禁已解除”。这条消息在事情发生的那一刻就写好了,因为过后这些信息就不复存在了,被删掉的世界,嗯,就是没了。


是暂停,不是流放。封禁现在主要是临时的,默认三天。到期的暂停在每一个检查点都算“未被封禁”,所以“休息三天”永远不会悄悄变成永久封禁。记录依然会保留作为历史。原因以固定类别给出(聊天、破坏、作弊、名字、其他),用德语和英语翻译显示,如果有人工补充了什么,就会原样显示,一字不改。整件事里最重要的是:消息里可以写明哪天欢迎你回来。


世界的主人现在可以管理自己的世界了。拥有世界的人,也能用同样的手段管理自己的世界:一份自己的封禁名单,执行起来和我们的一样可靠。它会记住账号(所以改名没用),以及游戏内名字(街机访客根本没有账号)。要封谁,从真正来过这个世界的人的列表里选——手动输入名字,恰恰最容易封错孩子。而且因为封禁只决定下一次加入,所以也有踢出:玩家会立刻回到菜单,并看到用自己语言写的原因。消息会在连接关闭之前发出,所以被改过的游戏没法直接无视它继续玩。


我们特意没有做的事。对付规避封禁,最显而易见的办法是设备识别(“新账号,同一台电脑”)。我们否决了它,有三个理由:一插上 U 盘或者 Windows 做一次大更新,标识就变了;被改过的游戏五分钟就能伪造它;而且学校里镜像一模一样的电脑看起来会全都一样。再加上法律方面:按德国法律,读取设备标识需要同意,而 16 岁以下的人无法有效地给出同意。监督不能变成监控。代码里还写着另一条规则:操作员账号本身既不能被封禁,也不能被踢出,否则监督就可能从内部被关掉。


这一切已经在代码里了,会随下一次服务器更新上线。我们真心希望尽可能少用到它。🌟

最新文章

查看全部
分析、计划、代码、检查:我们用 AI 开发的节奏 🤖

我们从来没有隐瞒过,我们在 Blocks Beyond The Stars 上大量使用了 AI,没有它,这么大的游戏根本不可能作为下班后的业余项目做出来。但对我们来说,“用 AI 开发”并不意味着:敲下一个愿望,拿走结果,然后碰运气。几个月下来,一套固定的模式逐渐形成,听起来出乎意料地老派,却正因为如此才管用。今天我们把它完整地讲给你们听。 一切总是从一个人和一个想法开始。在任何 AI 动手之前,

 
 
我们的游戏如何在一周内学会十四种语言 🌍

2026年8月10日 我们刚开始的时候,Blocks Beyond the Stars 正好只会说两种语言:德语,因为我们住在那里;英语,因为互联网说英语。今天它会说十四种。下面讲讲这是怎么发生的——还有一路上出的所有状况。🌍 一切从 Francesco 开始。几周前,从意大利寄来了一个 pull request:Francesco Quirino 开始把游戏翻译成意大利语。纯手工。一组一组地翻

 
 
先一种,再五种:这个游戏是怎么长大的 🪨

看看我们的版本列表,你会发现五个多星期里有 29 次发布,从 6 月 20 日的 0.1.0 到昨天的 0.9.0。这是怎么做到的?肯定不是坐下来一口气做出一个完整的功能。我们是分阶段建造的:先做出真正能用的最小版本,等它稳定、好玩之后,再进入下一个阶段。眼下,小行星就是最好的例子。 第一阶段:它们总算存在了。小行星刚进入游戏时,只有一个问题重要:在一个几分钟就能绕一圈的小天体上,降落、行走和挖掘

 
 

留言


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