linked_portal_door is a point entity available in Portal 2. Commonly referred to as a world portal, it is a square portal that leads seamlessly to another linked_portal_door. It makes it seem like two distant parts of the map are actually connected. The player can shoot the portal gun through it, but portals viewed through it don't look quite right.
Warning: It will be automatically deleted whenever behind a func_door! That's a major problem, since behind doors is the main place you'll want one. Portal 2 style doors are OK though.
Warning: Having a moving func_brush near it causes it to automatically close. It can be reopened after manually closing it again.
Warning: There is a limit of 4 portals visible on-screen by default. This means you are essentially limited to 2 world portals in singleplayer, and none in Co-op. Setting the console variable
r_portal_fastpath 0 at the start of the map will remove this limit, though it's unknown what performance impact this has. To do: Needs testing.
This entity is used in every Puzzle Maker level, to connect the exit and entrance elevators to the entrance and exit airlock rooms; but also in the GlaDOS wakeup sequence and in Chapter 9, in the Chamber 75 Death Trap with 6 defective turrets aiming directly at you. The incinerator shaft and the turret room are actually completely separate from their supposed surroundings. They are the only uses of this entity in the final version of the game, though commentary states that it was often used during the development of the title to link chambers together.
- ...tweaks to existing levels. When we started the project making any big structural change in a level or the order of levels would lead to hours or even days of busy work trying to reconnect things and make sure they lined up again. If we ever wanted to ship something the size of Portal with the finely tuned balance we desired then we needed a way to be able to make big changes to the layout of the game without paying the cost of making everything line up again. We needed a way to bend space. We needed to think with portals. Using portals to connect different areas in the world we could make any type of impossible space work out. You could look through a hallway into the next room but the hallway might be on the other side of the map and the room you are looking into might be in a completely different orientation. We could seamlessly insert an elevator, a huge expansive vista, a room that was bigger on the inside than the outside, or even create an infinite fall by connecting a shaft back into itself. Soon every connection between any space was a portal. We would even switch them on the fly. Even a simple door worked like the cartoons - just a facade painted on a wall that seamlessly opened somewhere else entirely. Once the game settled down we were able to finalize our path and remove all of the world portals. There's only one impossible space left in the whole game - see if you can figure out where it is. -Eric Tams in the Portal 2 Developer Commentary.
It's also extensively used in The Stanley Parable for the sections that loop infinitely on themselves or where backtracking leads the player somewhere completely different than where they came from.
The linked_portal_door is represented in Hammer by a three axis marker when selected. The red axis is normal to the surface of the portal, the green axis is the width, and the blue axis is the height.
- 1/2 width of the desired portal. Must be less than 1024, and match the corresponding property of the partner.
- 1/2 height of the desired portal. Must be less than 1024, and match the corresponding property of the partner.
- Start Active
- Whether to start the linkage as active from the start. Note:(As of DLC1) This will create a logic_auto entity somewhere in your map. The engine will try to tell you that the logic_auto has invalid i/o. You can safely ignore this.
- Linked Partner
- Another 'linked_portal_door' entity which will link to this one.
- Entity Scripts
- Space delimited list of VScript files (without file extension) that are executed after all entities have spawned. The scripts are all executed in the same script scope, later ones overwriting any identical variables and functions.
- Script think function
- Name of a function in this entity's script which will be called automatically every 100 milliseconds (ten times a second) for the duration of the script. It can be used to create timers or to simulate autonomous behavior. The return value (if present) will set the time until the next call. Note:Try to avoid expensive operations in this function, as it may cause performance problems.
- Pitch Yaw Roll (Y Z X) (angles)
- This entity's orientation in the world. Pitch is rotation around the Y axis, yaw is the rotation around the Z axis, roll is the rotation around the X axis.
- Set a new partner door.
- Open the door and cause the portal to activate.
- Close the door and cause the portal to deactivate.
- Removes this entity from the world.
- Removes this entity and its children from the world. Note:Entities already remove orphaned children upon being removed, but this input removes all children on the same frame, being marginally faster than
- Adds a keyvalue/output to this entity. It can be potentially very dangerous, use with care.
<output name> <targetname>:<inputname>:<parameter>:<delay>:<max times to fire, -1 means infinite>
- Fire the
OnUseroutputs; see User Inputs and Outputs.
- Same as a player invoking +use; may not do anything depending on the entity. Can also be invoked by firing an output that does not specify an input.
- Execute a VScript file from disk, without file extension. The script contents are merged with the script scope of the receiving entity.
- Execute a string of VScript source code in the scope of the entity receiving the input. String quotation may be needed when fired via console. Bug: In , the code is executed in the script scope of the entity that fires the output, not the one receiving the input.Warning: Never try to pass string parameters to a script function with this input. It will corrupt the VMF structure because of the nested quotation marks, which then must be removed manually with a text editor.
- Execute a VScript function in the scope of the receiving entity.
- Send this entity to a spot in the map. If the entity is parented to something, it will be offset from the parent by this amount.
- Set this entity's angles.
- Move with this entity. See Entity Hierarchy (parenting).
- Change this entity to attach to a specific attachment point on its parent. The entity will teleport so that the position of its root bone matches that of the attachment. Entities must be parented before being sent this input.
- As above, but without teleporting. The entity retains its position relative to the attachment at the time of the input being received.
- Removes this entity from the the movement hierarchy, leaving it free to move independently.
- Called when the door has started its open animation.
- Called when the door has started its close animation.
- Called when an entity enters this linked portal.
- Called when the player enters this linked portal.
- Called when an entity exits this linked portal.
- Called when the player exits this linked portal.
- These outputs each fire in response to the firing of the like-numbered
FireUser4Input; see User Inputs and Outputs.
- This output fires when the entity is killed and removed from the game.