Areaportal 教程
This page was translated by DaKang233. Anyone is welcome to add new content or fix errors. Some of the content was translated by machine.
介绍
Areaportal 是一种将地图的一部分划分为单独区域的方法。如果您没有 Areaportal,则整个地图只有一个区域。Areaportal 的主要优点是,当您在一个区域内时,起源引擎甚至不会考虑在任何其他区域绘制任何东西,除非有一个入口在眼前——然后它只绘制通过 Portal 可见性叶子块中的东西。

例子
街道示例
例如,考虑一条满是房屋的街道。为简单起见,我们假设每栋房子都有一扇通向街道的门,没有窗户。此外,每栋房子都在(直的)街道的同一侧。如果你站在一所房子里,那么你可以看到房子的一部分,也可能是街道的一部分,但看不到任何其他房子的一部分。起源引擎甚至不应该考虑绘制任何其他房屋的任何部分,因为您不可能看到它。如果门是关着的,你就看不到街道,所以也没有理由考虑任何这些。
通过在门口放置一个 Areaportal,您可以实现这一理想。这就是会发生的事情。当门口(实际上是 Areaportal)从玩家的角度来看根本不可见时,游戏引擎不会考虑任何事情,除了当前区域:房子。如果门口在视野内,引擎会查看它另一侧(街道)的区域,并找出通过门口可以看到哪些叶子块。然后它只绘制那些叶子块中的东西。在启用 mat_wireframe 的情况下查看时,效果可以被生动地说明。
此外,Areaportal 可以直接与门相关联(prop_door_rotating、func_door 或 func_door_rotating,但不是物理门),这样当门关闭时,引擎就不会费心去想它的背后是什么。总之,地图的这一部分变得几乎和地图中没有其他任何东西一样快。
小木屋示例 - 定义区域
以定义区域为例:假设我们要制作一个带有两扇门、四扇窗户和一个烟囱的小木屋,人们可以像圣诞老人一样进入它。假设我们已经确定这座建筑是我们想要变成它自己的区域的东西。要做到这一点,墙壁、地板和屋顶必须是世界笔刷(不是 detail 笔刷!),以便除上述开口外完全密封,防止泄漏。然后所有这些开口都必须被 Areaportal 覆盖:两扇门,所有窗户,以及烟囱中的某个地方。 Areaportal 在烟囱中的哪个位置并不重要,只要苍蝇不接触 Areaportal 就无法进入。(It doesn't matter where in the chimney the portal is, as long as a fly couldn't get inside without touching the portal.) Areaportal 是否与世界几何体的某些部分重叠并不重要 - 如果两个窗口并排,则可以拉伸一个 Areaportal 以覆盖它们(然后您可以对中间的部分使用 detail 笔刷,因为 Areaportal 正在密封这部分)。但是,如果门框与其 Areaportal 之间存在单个单元的间隙,则该区域不再密封,并且 BSP 程序会变得很慢,并且 Areaportal 将拒绝工作,直到您解决问题并重新编译。
一旦小屋开始工作(不是之前),在每个门口放一扇门并将它们连接到各自的 Areaportal。由于这是一个小木屋,我们将在窗户(用 func_door_rotating 实体做的)中放置大(非透明)百叶窗并将它们连接到它们的各自的 Areaportal 。烟囱入口没有门,但这没关系,尤其是通过该入口的视野无论如何都非常有限。
另请参见
- Areaportal - 关于这个主题的更深入的文章。