Portal BTS - Tutorial - Vacuum Tubes

From Valve Developer Community
Jump to navigation Jump to search
Portal Level Creation

Stub

This article or section is a stub. You can help by expanding it.

Skill Level

This tutorial expects you to have this amount of knowledge within the topic to follow along smoothly.

Novice Familiar Competent Proficient Expert


Introduction

This guide will teach you how to create Vacuum Tubes. You can enter some vacuum tubes however, other vacuum tubes are just for detail.

Enterable Tubes

Enterable vacuum tubes are seen in testchmb_a_15.

Setting Up

Put prop_static entities. Set their model to these:

  • Straight Tube - clear_tube_straight.mdl
  • Mutli-Directional Tube - clear_tube_tjoint.mdl
  • Broken Tube - clear_tube_broken.mdl
  • 90 Degree Tubes - clear_tube_90deg.mdl

Enter the following properties:

Property Name Value
Collisions Not Solid


Create your path with the models.

Vacuum Tube Path

Walls

Create walls with the nodraw texture, and texture the inside faces or visible faces with metal/metalwall_bts_006a. Create orange pits as well.

Vacuum Tube Walls


Simple Collisions

Put brushes around the tubes with the invisible texture. The ceiling and floor brushes should be 32 units in width and the side brushes should be 24 units in Width. Turn all of these brushes to a func_detail.

Vacuum Tube Collision

Movement

Horizontal Movement

Create brushes with the Trigger texture 32 units high and 80 in width, the length will depend on how long your tube is.

Vacuum Tube Collision

Tie each individual brush to a trigger_push entity and enter the following properties:

Property Name Value
Speed of Push 350

Tick the Clients flag and set its Push Direction to the direction your tube will go.

Vertical Movement

If your pipes require you to move up, you need to create a 80w*80l*16h brush with the Invisible texture, tie it to a func_door entity and enter the following properties:

Property Name Value
Name door_push_up_pipe
Speed 200
Forced Closed Yes
Move Direction -90 0 0

Set the Lip value to the distance you need the door to move as a negative number.

Create a 29w*128l*64h brush with the trigger texture, tie this brush to a trigger_multiple and enter the following properties.

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch door_push_up_pipe Open <none> 0.00 No

Under flags, untick Touch Opens and tick Door Silent. Set the lip value to a negative value to move the door upwards.

Make sure there are no trigger_push brushes that interfere with the door_push_up_pipe. You will also have to force the player to crouch.

Lighting

Create a light entity and enter the following properties:

Property Name Value
Brightness 242 91 0 100
BrightnessScaleHDR .5
Constant 500000

Place these lights 592 units away from each other. Sometimes you can put these lights closer if necessary.

Entrance

Create an env_soundscape and enter the following properties:

Property Name Value
Radius 64
Soundscape portal_escape.tube

Place the soundscape inside of the entrance.


You will have to get creative if you don't want the entrance to your tube to be a broken tube.

Broken Tube

Create a tube with the clear_tube_broken model.

Put invisible brushes around the broken tube model for collision.

Force Crouch

Create a point_clientcommand entity and set its name to clientcommand.

Create a trigger_multiple entity and enter the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger clientcommand Command +duck 0.00 No
Io11.png OnEndTouch clientcommand Command -duck 0.00 No
Icon-Bug.pngBug:When a player loads a save, loads a new map, or selects a new chapter, they will remain ducked if they didn't exit the trigger.  [todo tested in?]

Sound

Create an ambient_generic entity and enter the following properties:

Property Name Value
Name sound_suction
Sound Name Portal.tube_suck

Under Flags, tick Is NOT Looped.

Place the ambient_generic inside the tube, but move it a bit closer to the direction the tube is going.

Particles

Create an ambient_generic entity and enter the following properties:

Property Name Value
Name particles_broken_tube_suck
Particle System Name broken_tube_suck

Under Flags, tick Is NOT Looped.

In Portal, the first 2 Control Point values were used, however, they don't change the particle in any way so they can be left ignored.

Place the particle above the broken tube model.

Starting the Effects

Create a logic_relay entity and set its name to relay_broken_tube_effects.

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger sound_suction PlaySound <none> 0.00 No
Io11.png OnTrigger particles_broken_tube_suck Start <none> 0.00 No

Exit

Place a new soundscape to what you need.

You will have to get creative if you don't want the exit to your tube to be a Box Dropper Lid breaking. Some level designers create another broken tube for the exit.

Box Dropper

First, complete the Box dropper guide.

The top of the box dropper shaft uses the portal_testchmb.tight_space soundscape.

Make sure the tube exit drops you into the box dropper.

Arch

Create a 128*128*8 arch with the nodraw texture and enter the following properties:

  • Wall Width: 29
  • Number of Sides: 32

Use the vertex tool to create this exact shape:

Box Dropper Arch

Tie the brushes to a func_detail.

Texture the top faces and the center faces with metal/metalwall_bts_006a.

Note.pngNote: This is being done a bit differently from how testchmb_a_15 creates the arch because the map uses a slightly outdated version of Test Chamber 09, optionally you can texture the center faces with metal/metalwall061f because the area came from an earlier art pass.
Todo: Finish the rest of the guide

Detail Vacuum Tubes

These vacuum tubes can simply be seen shooting boxes across the tube. However, not all vacuum tubes require boxes.

See also