Gel (Portal 2)

From Valve Developer Community
Revision as of 05:20, 7 April 2016 by P0rtalmaster (talk | contribs) (Creating a Gel Dropper)

Jump to: navigation, search
The Repulsion gel effect.

Gel or paint is a puzzle element of Portal 2. It flows out of droppers in blobs, and covers any surface or object it splashes on, changing its physical properties and coloring it if blue or orange. Water streams behave the same way gel does, but cleans gel off surfaces. Gel streams can be redirected with portals and funnels.

Note:For gel to render properly, you must have at least one light entity.

There are three main types of gel. Repulsion gel is blue, and causes things to bounce around. Propulsion gel is orange, and makes objects slippery and players move quickly. Conversion gel is white, and allows the placement of portals.

Note:Entering "1" on $paint_type will result in an unused type of gel known as Reflection Gel. This gel uses a slightly modified version of the Conversion Gel texture and will reflect lasers. This gel was originally planned to be included in the Peer Review DLC co-op update, replacing the also unused Adhesion Gel, however the effects of the gel were considered too similar to those of the Discouragement Redirection Cube.

Creating a Gel Dropper

Using an instance

1. Create a func_instance entity with the following properties:

Property Name Value
Fix up Name gel_dropper
VMF Filename instances/gameplay/paint_dropper.vmf
$paint_sprayer gel_sprayer
$trigger_to_start start
$trigger_to_stop stop
$paint_type 0 = Bounce, 1= Stick, 2 = Speed, 3 = Conversion, 4 = Water

If the cube dropper doesn't show up then save and reload so you can position it properly.

2. Create the entity you want to activate the gel dropper, such as a trigger_once at the entrance to the room, and give it the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger gel_dropper-start Trigger 0.00 No
Note:Hammer will indicate that this is invalid. Don't worry about it.

From scratch

Note: The following applies to the Underground theme mostly.
  1. Create your pipe system using prop_statics. Use the 'Color' setting to change the color of the "Gel Flow" arrow. Make sure you have a proper dropper model at the end, and also use an 'interior cap' model inside the dropper.
  2. Create an info_paint_sprayer, and place it inside the dropper.
  3. Give it the settings that your map requires.
  4. Trigger the 'Start' and 'Stop' inputs as required.

If you want to create paint bombs, then the process is somewhat more complex:

  1. Create your pipe system.
  2. Create a prop_paint_bomb, and give it a name like "paint_bomb".
  3. Create a point_template. Give it a name like "paint_bomb_temp" and set 'Template 01' to "paint_bomb".
  4. Create an env_entity_maker. Give it a name like "paint_bomb_spawner" and set 'Point_template To Spawn' to "paint_bomb_temp".
  5. Trigger 'ForceSpawn' of "paint_bomb_spawner" with your output of choice (e.g. a button). If want them to drop at a regular time interval, you can use a logic_timer, and trigger 'ForceSpawn' using the 'OnTimer' output. Alternatively, you can trigger 'ForceSpawn' of "paint_bomb_spawner" whenever "paint_bomb" explodes.
Note:If you are using a floor button or other less predictable input device, use the process for gel droppers found on this page.


  1. For paint to function in your map, you need to turn on the flag "Paint in map" in the Map Properties. This includes sticking to surfaces as well as affecting physics objects; boxes will look painted, but they will not act painted.
  2. For paint to appear on surfaces, you need some light in your map (at least one light entity). Otherwise it will only coat certain entities like turrets and cubes.
  3. There does not seem to be a way to put objects into a painted state through the I/O system, though there are inputs to remove paint. Nor does there appear to be any way of detecting precisely when gel or water lands on and coats a particular surface.

See Also