Portal Placement

From P2SR Wiki

Revision as of 17:52, 19 June 2021 by Jerry (talk | contribs) (Created page with "{{P2 Title|Portal Placement}} ==Overview== '''Portal placement''' is a process that can be split up into four steps: # '''Bullet ray cast''' - an initial step of shooting a po...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Portal Placement

Overview

Portal placement is a process that can be split up into four steps:

  1. Bullet ray cast - an initial step of shooting a portal and finding what surface has been hit.
  2. Pre-bumping verification - checking if hit surface is viable for portal placement.
  3. Bumping - attempting to fit the portal around other portals and edges.
  4. Post-bumping verification - checking if bumped position is viable for portal placement.

This article will attempt to explain all of these steps, as well as mention all of the glitches and techniques related to them.

Bullet Ray Cast

At the moment of shooting a portal, a ray is being traced with following parameters:

  • It's traced from the current player's eye position towards the current eye looking direction, transformed by linked portals matrix if peeking through ones. Keep in mind that in some cases the player's eye position and rotation is not always equal to the player's camera position and rotation - for instance, shaking changes camera position but not eye position.
  • The length of the ray is equal to 215 * √3, which covers the maximum distance between two points within the bounds of Source's map.[1]
  • It hits surfaces marked as solid, ignoring (as in "shooting through") following entities:

prop_physics, prop_weighted_cube, prop_monster_box, func_physbox, npc_portal_turret_floor, prop_energy_ball, npc_security_camera, simple_physics_prop, simple_physics_brush, prop_ragdoll, prop_glados_core, player, Player[2], projected_wall_entity, prop_paint_bomb, prop_exploding_futbol and npc_personality_core.

The tracing does go through portals, but it's stopped on the first hit prop_portal. This means that it's possible to shoot portals through world portals just fine, but shooting a prop_portal results in hitting a surface on which it's placed.

Then, if ray does hit something, presumable angles for placed portal are calculated. If hit surface is a floor or a ceiling, then the ray direction is used as an up vector, resulting in the top of the portal oriented away from the player. If it's not a floor nor a ceiling, then player's up vector is used, resulting in the portal rotated upright.[3]

From there, the game uses the position and rotation for further checks.

Pre-bumping Verification

TBW

Bumping

TBW

Corner check algorithm

TBW

Post-bumping Verification

TBW

Related glitches

TBW

Portal Bumping

TBW

Portal Edge Glitch

TBW

Portal Bumping

TBW

Obscure placement scenarios

TBW

References

  1. This info has no application, making it useless. In most cases, it's easier to assume the ray is cast infinitely forward.
  2. Yes, the filter has two player classes implemented with uppercase and lowercase P. No idea why.
  3. Upright meaning vector directed towards positive Z. This changes only when interacting with sticky gel (seems to work differently in P2:CE)