17173 > 游戏资讯 > 官方公告 > 正文

《Ostriv》Alpha 5补丁9热修复55

2026-05-12 10:56:04 神评论
17173 新闻导语

《Ostriv》Alpha 5补丁9热修复55发布!深入解析建筑凹多边形系统带来的技术挑战与优化,新增教堂记录功能与多项问题修复。点击了解更新详情与游戏体验优化!

在这里,我想聊聊在为玩家增加另一种自由度时,所引发的复杂性爆炸问题。在之前的文章中,我曾提到过某些自由形态建筑将具备这种自由度。
在Alpha 5版本中,某些建筑只要满足四边且保持凸多边形,就可以被塑造成任何形态。摆脱这一限制听起来很简单,只需增加更多的点即可,但实际上,许多优化方案和代码简化都依赖于原有的限制。凸多边形的数学运算要比凹多边形简单得多。
以铺路为例,这是最简单的情况。从图形学角度看,流程非常直接:生成两个三角形组成的四边形,将其渲染到纹理贴图中,然后在地形片元着色器(fragment shader)中使用该贴图,在需要的地方应用鹅卵石纹理。为了支持更高级的凹多边形,你只需要在原有基础上增加实际的三角剖分(将多边形转换为GPU可用的三角形集合)即可,后续流程保持不变。
但随后事情就变得复杂了。玩家可以选中建筑,并且建筑需要呈现出被选中的状态。此前,我们依赖于片元着色器中的一个简单检查,基于你提供的4个点,在建筑周围的地面上绘制出漂亮的圆形轮廓。



然而,在片元着色器中对具有任意数量顶点的复杂多边形执行该检查,很快就会变成一场性能灾难,尤其是在低端GPU上。
因此,现在你需要提供一种替代的选择方案,它依赖于一组单独的三角形用于透明填充,并使用调整过高度的条带作为边缘。你甚至可以在每个点上添加圆圈来模拟圆角效果。它看起来甚至可以和原始版本一样好:



此外,事实证明,我们的拾取系统(picking system)依赖于凸多边形来判断玩家点击了哪个建筑。这实际上与检测玩家放置的建筑是否与其他建筑重叠的系统有关。因此,整个系统都需要重构以支持凹多边形。一旦完成重构,你会发现由于检查逻辑更复杂,新代码运行速度变慢了,所以你需要为每个形状添加包围盒(bounding box),在检查多边形之前先进行包围盒测试(更轻量的测试)。
但这还不是最难的部分。由于《Ostriv》中的铺路不仅是贴图,而是分部分建造的,我们还需要建筑工人从石料堆位置走到该区域内的每个点。对于四边凸多边形来说这很简单:你生成一个点阵,石料堆与每个点直接通过直线连接,从而减轻了寻路系统的负担(网格点可能多达数百个)。但在凹多边形中,无法保证直线不被其他建筑遮挡。所以,现在你需要为铺路施工增加一套微观层面的寻路逻辑。
我提到过施工现场周围的那些小旗帜了吗?以前它们是作为建筑的凸包(convex hull)生成的。显然,这也需要进行更改。
我甚至不确定自己是否记全了所有内容,但你大概能明白,仅仅是给形状增加几个点,就会带来多大的额外工作量。
现在,我很期待接下来处理住宅院子的工作。

与此同时,以下是本次更新的内容:

添加/修改:
  • 现在按住Shift键可以指挥所有的手推车/犁/马车等。
  • 微小的UI更改。
  • 教堂现在将记录所有的洗礼、婚姻和葬礼。
  • 市政厅将记录市民的抵达和离开情况。
修复:
  • 如果未收割,农作物在12月会消失的问题。
  • 供应选项数值在失去焦点后无法保存的问题。
  • 删除来源后,“添加”供应来源按钮不显示的问题。
  • 仓库和市场摊位在指定供应来源时工作不正常的问题。
  • 无论设置如何,“自动补种”总是开启的问题。
  • 与围栏和路径被阻挡相关的崩溃问题。
  • 在某些情况下,新农田的土壤被错误地耗尽的问题。
  • 铺路施工期间石料堆不可见的问题。
  • 拖拽动物或车辆时鼠标光标可能重置的问题。
  • 国库统计数据未正确更新按钮提示信息的问题。
【来源:steam】
我想了解这个游戏:
官网 专区 下载 礼包
关于Ostriv,Alpha 5,补丁,建筑,多边形,铺路,着色器,性能优化,游戏开发,更新内容的新闻
17173 首页全新改版规划中!现向各位玩家征集真实使用意见,你的想法将直接影响新版页面设计~动动手指填写问卷,快来共创你心仪的页面布局吧! 参与问卷