本文由第三方AI基于17173文章http://news.17173.com/content/05122026/105604032.shtml提炼总结而成,可能与原文真实意图存在偏差。不代表网站观点和立场。推荐点击链接阅读原文细致比对和校验。
《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)生成的。显然,这也需要进行更改。
我甚至不确定自己是否记全了所有内容,但你大概能明白,仅仅是给形状增加几个点,就会带来多大的额外工作量。
现在,我很期待接下来处理住宅院子的工作。
与此同时,以下是本次更新的内容:
添加/修改:
在Alpha 5版本中,某些建筑只要满足四边且保持凸多边形,就可以被塑造成任何形态。摆脱这一限制听起来很简单,只需增加更多的点即可,但实际上,许多优化方案和代码简化都依赖于原有的限制。凸多边形的数学运算要比凹多边形简单得多。
以铺路为例,这是最简单的情况。从图形学角度看,流程非常直接:生成两个三角形组成的四边形,将其渲染到纹理贴图中,然后在地形片元着色器(fragment shader)中使用该贴图,在需要的地方应用鹅卵石纹理。为了支持更高级的凹多边形,你只需要在原有基础上增加实际的三角剖分(将多边形转换为GPU可用的三角形集合)即可,后续流程保持不变。
但随后事情就变得复杂了。玩家可以选中建筑,并且建筑需要呈现出被选中的状态。此前,我们依赖于片元着色器中的一个简单检查,基于你提供的4个点,在建筑周围的地面上绘制出漂亮的圆形轮廓。

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

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

- 市政厅将记录市民的抵达和离开情况。
- 如果未收割,农作物在12月会消失的问题。
- 供应选项数值在失去焦点后无法保存的问题。
- 删除来源后,“添加”供应来源按钮不显示的问题。
- 仓库和市场摊位在指定供应来源时工作不正常的问题。
- 无论设置如何,“自动补种”总是开启的问题。
- 与围栏和路径被阻挡相关的崩溃问题。
- 在某些情况下,新农田的土壤被错误地耗尽的问题。
- 铺路施工期间石料堆不可见的问题。
- 拖拽动物或车辆时鼠标光标可能重置的问题。
- 国库统计数据未正确更新按钮提示信息的问题。
【来源:steam】
关于的新闻
今日热点
热门测试游戏
- 1曾创下150万在线的上古网游《冒险岛》,终于又回来了
- 2《永恒之塔》手游首测试玩:复古MMO端游的简化版怀旧服
- 3《权力的游戏》IP改编3D动作网游,PC版5月14日抢先上线
- 4男子躺20米高竹竿上扮演济公 月薪过万 当事人:无防护措施 练了15年
- 5最新暗黑风MMO端游《无冕之烬》首测前瞻:前作换皮改成端
- 6绅士日报:NEXON又曝涩涩MMO新作,预告片画面太露骨,性感时装看过瘾!
- 7魔兽世界:比至暗之夜史诗包还贵,450R的房屋已经突破玩家底线
- 8夯爆了!魔兽世界再上央媒,这次居然是学习强国!
- 9《暗黑破坏神2:重制版》第14赛季定档5月23日开启
- 10《红色沙漠》更新后暗改女主服装,裙底加布料引玩家众怒



