下载 App
开发日志4|原野可以逐渐生成,但玩家留下的痕迹不能随便刷新
做一片可以探索的原野,首先会遇到一个很实际的问题:
玩家还没走到的地方,有必要现在就全部创建出来吗?
《野外整点活》采用按区块生成的方式,让世界随着探索逐渐展开。
但对一款强调元素互动的游戏来说,“生成地图”只是前半件事。后半件事是:玩家改变过的地方,回来时怎么办?
地图负责原貌,状态负责经历
当前世界以32米区块组织。
区块使用世界种子、坐标和不同用途的参数,生成植被、材料与遗迹等内容。这样,同一片区域的初始布局可以稳定复现,而不必把所有初始细节都作为完整存档保存下来。
随后,世界再记录相对于初始状态发生的变化。
一个箱子被搬走了,一片草木被烧过了,材料状态改变了——这些不应该因为玩家暂时离开,就被新的初始布局覆盖。
物体跨过区块边界时,也需要调整归属,不能让它同时出现在两个地方,或回访时突然丢失。
简单来说:
生成规则回答“这里原本有什么”,状态记录回答“你后来让这里发生了什么”。
提前生成,不等于已经探索
另一个容易混淆的地方,是“程序准备好了”和“玩家真正到过”。
游戏会提前准备玩家附近的区块,但只有角色实际进入所在区块,才会计入到访。
遗迹导航也可以通过区块坐标推算目标位置,不需要为了显示方向,就先把远方全部对象创建出来。
我们不希望玩家站在原地,仅仅因为系统预生成了周边区域,就获得一串并不属于自己的探索成果。
探索记录应该描述玩家的行动,而不是程序的后台工作。
想让规则丰富,计算就必须有边界
如果每块草、每个箱子都持续检查整个世界,元素连锁反应很快就会变成计算负担。
目前,邻近材料查询使用空间分桶,只检查相关区域。活动范围内的对象也有数量限制,远处原生节点可以释放,而必要的材料记录继续保留。
这不意味着远方每一场火都在后台完整蔓延。它是一种取舍:优先保证玩家附近的互动,同时控制运行负担。
世界本身也设置了探索记录预算,因此我们不会把它宣传为“真正无上限的世界”。
对我们来说,比赛主题“涌现”并不等于无限。
更重要的是,在有限而可信的规则里,玩家能不能创造足够多不同的经历。





