Portal 2

Portal 2

Not enough ratings
在 Portal 2 中创建不可能的几何空间
By idontknow and 1 collaborators
了解有关 world portals 即 linked_portal_doors 是如何工作的并且在你的地图中使用它们。
   
Award
Favorite
Favorited
Unfavorite
这是一个翻译副本 / This is a translated copy
原指南 / Original guide:
https://steamproxy.net/sharedfiles/filedetails/?id=1263981224
本指南中出现的 “我” 均指原作者。/ All "I" in this guide mean the original author.

本指南存在许多翻译不当的地方,欢迎提出指正。/ There are many improper translations in this guide, please correct me.
简介
本指南将解释 Portal 2 地图中看似不可能的几何空间是如何工作的,以及如何使用此技巧自己创建地图。
我之所以开始制作本指南,是因为有很多人问我 unreal chambers 中的地图是如何工作的。
因此,如果您对这种方式的技术方面感兴趣,那么您来对地方了。如果您自己是地图制作者,并且想重现此效果,那么我在下面提供了有关如何进行此操作的说明。
你将需要些什么
只需要一点点的四维超空间想象能力 :)
并不是,但实际上,如果您对传送门的概念不完全感兴趣,那么您会很好。

如果您想自己创建这样的地图,我将以如何使用 Hammer / 锤子 编辑器为前提。
如果您不知道锤子是什么(它是针对 Source 游戏引擎的 Valve 官方制图工具),或者从零基础就开始使用它,请查看这些链接
它实际上是如何工作的
确实很简单。唯一起作用的是 portal / 传送门。不,不是您惯用的蓝色和橙色传送门,而是称为 world portal / 世界传送门的东西。
World Portal 是 Hammer 编辑器中可用的实体。实际上,它们在 Hammer 中被称为 linked_portal_door,但是每个人都称它们为 world portal。实际上有一个很好的理由:这些 portal 与您习惯的传送门基本相同。功能实际上是完全相同的。唯一的区别是玩家无法放置 world portal,它们没有轮廓,并且呈矩形。对,就是那样。
亲眼了解差异:

一个例子
在我的地图 the unreal chamber 2 中,实际上有三个单独的房间。
以下是整个内容的概述:


房间中间的三个拱门中只有通往其他房间的 world portal:


这些房间如何相互连接:


房间之间非常相似且具有相同的大小,从而增强了这种“unreal effect / 虚幻效果”,使人产生一种幻觉,即您始终在同一房间内,但是当您走过拱门时,房间周围的测试元素会发生变化。
如何制作这种不可能的几何空间的地图
步骤 1:在地图上的某个地方放置两个 linked_portal_door 实体。
这两个实体将是您将要彼此连接的两个 world portal。您现在可能会有疑惑,一个传送门显然需要一个二维平面,为什么它们是点实体,但是请不要担心。该引擎实际上将为您创建传送门,而此实体只是告诉它将传送门放置在何处。现在,我们将在步骤 2 和 3 中配置 world portal 的大小和方向。

步骤 2:设置 world portal 的大小。
为此,更改您的 linked_portal_door 实体的 WidthHeight 属性。确保为两个 world portal 选择相同的值,否则它们将无法连接!另请注意,您应该精确输入所需大小的一半。因此,如果您希望 world portal 的高度为 128 个单位,宽度为 64 个单位,则需要输入 64 作为高度,输入 32 作为宽度。该 world portal 将在左侧和右侧扩展 32 个单位,在顶部和底部扩展 64 个单位,因此,linked_portal_door 实体实际上是 world portal 的中心。

步骤 3:调整 world portal 朝向的方向。
当您在 Hammer 中选择一个 linked_portal_door 实体时,它将看起来像这样:

您会注意到一条红色,绿色和蓝色的线条从该实体发射出来。
红线 是您的 world portal 面向的方向。这是您从 world portal 出来时将要面对的方向。
蓝线 是通过 world portal 看到的朝上的方向。
绿线 是从 world portal 出来时朝左的方向(如果您站在 world portal 的前面,则朝右)。
您可以使用 2D 视图中的旋转手柄旋转实体,但要完全对齐 world portal,我建议使用“Transform / 变换”菜单(Ctrl + M)或通过编辑实体的“Pitch Yaw Roll / 俯仰偏角”(Y Z X)属性来手动设置旋转角度。

步骤 4:连接两个 world portal 实体。
这真的很简单。只是给两个实体两个不同的名字。然后,将第一个 world portal 的“Linked Portal / 连接到的传送门”属性设置为第二个 world portal 的名称,反之亦然。

步骤 5:激活 world portal。
就是这样。您已经完成了 world portal 的设置。但是,它们还不会出现在游戏中。要激活它们,您需要在两个 world portal 上将“Start Active / 初始激活”属性设置为“Yes / 是”,或者触发“Open / 打开”输入到两个 world portal 以激活它们。您可以通过触发 world portal 上的“Close / 关闭”输入来禁用它们。

这里有一些重要的事情:
  • 根据图形设置中的着色器详细程度,world portal 会在玩家离它们稍远一点的情况下停止渲染。他们只会在应该看到 world portal 的地方看到一个白色矩形,看起来不太好。因此,如果您想防止这种情况发生则不要在较大的区域中使用它们,或者您在某个地方通知玩家应该提高其着色器细节级别。
  • 由于引擎的限制,Source 不允许您同时拥有 4 个以上的激活的 world portal 。(实际上,您可以拥有更多。但是图形将开始出现 bug,并且您的控制台将会有很多报错,因此您可能不想这样做,试一试也很有趣
  • 请注意,world portal 不能通过使其两个彼此面对来创建无限走廊效果。根据您的着色器设置,在经过一些 world portal 疯狂递归之后,引擎将停止在 world portal 内部渲染更多深度,并且您会在 world portal 的位置看到一个白色矩形。根据经验,最好不要拥有可以通过其他 world portal 看到的 world portal。如果您没有,那您​​也不会遇到这个问题。
  • 如果您希望能够通过 world portal 发出激光,或者要使炮塔在 world portal 中进行拍摄和射击,则需要在 world portal 后面添加一个坚固的方块,否则激光将无法通过该 world portal。
  • 有时您会注意到,您的 world portal 不会完全显示在放置它们的位置,而是沿红色轴向前或向后一点偏移(通常只有 1 个单位)。如果 world portal 靠近墙壁或道具模型内部,则这种情况尤其常见。如果在多次编译中位置偏移是一致的,则可以用 Hammer 在另一个方向上移动它来弥补它。我不知道是什么原因造成的,但这就是我处理此问题的方式。
另外,更专业的 Hammer 编辑:
只需阅读 linked_portal_door Wiki 页面
如何善加利用
当然,您可以只使用 world portal 来连接地图上实际上彼此相距较远的两个区域。如果您正在处理一个大型项目,并且不想丢失地图上的概览,因此可以在编辑器中在空间上分隔大区域,或者您正在与多个人一起处理项目,则这特别有用。可以将地图分工,每个人创建自己的那部分,然后最后将它们与 world portal 链接在一起,而不必担心这些区域在空间上不匹配。
此处阅读有关 Portal 2 中实体的一些用法。

免责声明:现在变得非常主观

使用 world portal,您基本上只是比平常能访问更多的传送门。同样,大多数时候人们实际上并不知道 world portal 是什么或它们如何工作,因此您可以使用它。
因此,我想做的就是以某种方式使用它们来创建不可能的几何空间的错觉,例如:
  • 建立两个通向相同位置但不相通的走廊
  • 使走廊突然改变前进的方向
  • 拱门/窗户/门会带领您通向其他地方而不是走过的地方
  • 通过旋转门来翻转重力
这有点麻烦,因为这是您不期望的,即使您完全熟悉 world portal,也不确定它如何工作,这可能很有趣。
传送门的轮廓
有时,根据您在地图上放置房间的方式,可能会发生以下情况:


这才是真正发生的原因:


您可以通过 world portal 看到真实的传送门,但是它对于您来说并不是直接可见的,因此引擎认为您看不到它并为您绘制了轮廓。这会令人困惑。

幸运的是,我们可以使用以下控制台命令禁用传送门轮廓:
portal_draw_ghosting 0

您可以在地图中放置一个 point_clientcommandlogic_auto 实体,以在地图开始时运行此命令。
随意命名您的 point_clientcommand(在此实例中,我将其命名为 ghosting_command),然后将此输出添加到您的 logic_auto
1 Comments
МиланаХаметоваXXX 30 Mar, 2021 @ 11:50pm 
hi