Creating a portal/object fizzler: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (made it clearer and did slight reformatting)
 
(42 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{otherlang2|fr=Creating a portal/object_fizzler:fr|ru=Creating a portal/object_fizzler:ru}}
{{LanguageBar}}
 
{{merge|[[Emancipation Grid]]}}
[[File:Gear testchmb 010000.jpg|thumb|350px|The fizzler in-game.]]
{{back|Portal Level Creation}}
{{morescreenshots}}


This wall of particles destroys any objects that come in contact with it and closes any portals that have been opened by the player.
This wall of particles destroys any objects that come in contact with it and closes any portals that have been opened by the player.
{{Warning|If a player dies inside this entity, even if they are filtered out of it, the game will crash!}}


== Step 1 ==
=== Step 1 - Hallway Size ===


First thing is first, due to the sheer size of the fizzler you might need to create an appropriate sized doorway to construct the fizzler in. However there are about two known particle effects that exist for this effect. Those two effects are:
First, you need to create an appropriate hallway for the size of fizzler you want. 128x128 Hammer Units is the most common in {{Portal|4}} test chambers although there are some that are 192 Hu across.


* '''portal_cleanser''' - The normal sized fizzler effect, however it is the only known one that exists.
=== Step 2 - Creating the [[trigger_portal_cleanser]] entity ===
* '''Cleanser_edge_1''' - A larger more messy effect, that is used for larger fizzlers, mainly this effect is only to be used at the fizzler's source.
 
== Step 2 ==
[[Image:Trigger portal cleanser.JPG|thumb|right|250px|Adding the fizzler holders.]]
The first thing that needs to be created is the doorway that will act as the fizzler holder. You can also use a prop for this effect as well, however for the purpose of this tutorial a model will be used.
The first thing that needs to be created is the doorway that will act as the fizzler holder. You can also use a prop for this effect as well, however for the purpose of this tutorial a model will be used.


Line 21: Line 17:
The available props for this is:
The available props for this is:
* '''models/props/portal_cleanser_1.mdl'''
* '''models/props/portal_cleanser_1.mdl'''
To use as a base we need to create a [[trigger_portal_cleanser]], which in size should be ''128x128''. Note that this is the base size for a '''normal sized''' fizzler. Also the trigger should be just '''2''' Units thick.
Go ahead and name it if you want, that way you can keep track of how many you might have.
{{clr}}
Modify the following flags:


To use as a base we need to create a [[trigger_portal_cleanser]], which in size should be ''124x128''. Note that this is the base size for a '''normal sized''' fizzler. Also the trigger should be just about '''2''' Units thick.
{{entity-flag-start}}
{{entity-flag|Everything (not including physics debris)|on|}}
{{entity-flag-end}}


Go ahead and name it if you want, that way you can keep track of how many you might have.
The <code>Everything</code> Flag will fizzle [[prop_dynamic|prop_dynamic entities]] which can cause problems if the fizzler's model is one.
{{clr}}
If this is the case, modify the following flags to fizzle player portals and [[prop_physics|prop_physics entities]] (like the cube or radio) but '''''NOT''''' prop_dynamic entities:


{{Note|Don't forget to check "flags" to make sure '''Clients''' and '''Everything''' are selected. However if you don't want it to emancipate objects that pass through it, un-check ''Everything''.}} {{clr}}
{{entity-flag-start}}
{{entity-flag|Clients|on|}}
{{entity-flag|Physics Objects|on|}}
{{entity-flag|Everything (not including physics debris)|off|}}
{{entity-flag-end}}


== Step 3 ==
=== Step 3 - Adding Fizzler Models ===
[[Image:Portal trigger Top.PNG|thumb|right|250px|The Top View.]]
[[File:Fizzler framer&trigger.jpg|200px|thumb|left|Frame and Trigger]]
Next is to make a [[prop_static]] with the world model of: '''models/props/portal_cleanser_1.mdl'''. Go ahead and clone it '''(Shift+Drag)''' and rotate the cloned prop to make it appears as in the picture above.
Make 2 [[prop_static]] entities and set their World Model to '''models/props/portal_cleanser_1.mdl''', rotate one of them by 180 degrees.


You are free to line up everything you have so far directly in a straight line, or you can change it to your liking.
You are free to line up everything you have so far directly in a straight line, or you can change it to your liking.
{{clr}}
=== Step 4 - Creating the [[info_particle_system]] entity ===
Create a [[info_particle_system]] entity and enter the following properties:
{| class=standard-table
!  Property Name || Value
|-
| Particle System Name || portal_cleanser
|-
| Start Active || Yes
|}
The particles available are <code>portal_cleanser</code>, <code>cleanser_edge_1</code> or <code>cleanser_edge_2</code>
*<code>portal_cleanser</code> is used in most of the normal test chambers. The size of the hallways it is used in is 128x128 Hammer Units. Its appearance is lines going left and right.
*<code>cleanser_edge_1</code> only emits one side of the fizzler, its particles going 192 Hammer Units. Its appearance is dots going one direction.
*<code>cleanser_edge_2</code> is the same but instead of dots for particles it has lines.
For the tutorial, we will use the <code>portal_cleanser</code> particle.
Align it to the trigger brush precisely in the center and then you are finished.
{{clr}}
Results:
[[File:Portal1 objectfizzler editor.png|300px|thumb|left|Editor View of a Fizzler taken from <code>testchmb_a_00</code>]]
[[File:Portal1 objectfizzler ingame.jpg|300px|thumb|left|In-Game View of a Fizzler taken from <code>testchmb_a_00</code>]]


Now there is one last thing to be done.{{clr}}
{{clr}}


== Step 4 ==
=== Step 5 - Respawning Boxes ===
[[Image:Portal Cleanser Final.PNG|thumb|right|250px|Adding an [[info_particle_system]] entity.]]
The last thing to put in is a [[info_particle_system]] entity, with the ''particle system name'' Property set to: '''portal_cleanser'''. Last to do is to make sure it aligns with your trigger right directly in the center of the brush itself.


Make sure to also have the particle effect start active.{{clr}}
If you have a box dropper that you want to spawn a new box if the player destroys one with a fizzler, you can use the output ''OnDissolveBox'', but only if your box prop_physics is named '''box'''.


== Theory ==
If you have multiple droppers in your map along with a cleanser and you want the box dropper to deliver a new box, follow these instructions:
[[Image:Gear testchmb 010000.jpg|thumb|right|250px|The Final Product.]]
And thats it, now you're all done! Compile with vvis and vrad enabled and anything that walks through the fizzler should now automatically be fizzled. Good Luck.{{clr}}


== Special Note ==
Enter this output for the '''trigger_portal_cleanser''':
{| {{OutputsTable}}
| [[File:Io11.png]] || OnDissolve || !activator || FireUser1 || <none> || 0.00 || No
|}


If you have a box dropper that you want to spawn a new box if the player destroys hers in a fizzler, you can use the output ''OnDissolveBox'', but '''only if your box prop_physics has the world model "models/props/metal_box.mdl" and/or is named box.{{Note| This needs to be tested.}}'''.
Enter this output for the '''box''':
Since this can be limiting in certain conditions, the alternate solution is to make 2 trigger_portal_cleanser brushes, 1 unit thick right next to each other and use the output ''OnDissolve'' rather than ''OnDissolveBox''. Create 2 filters, one that ''accepts'' the box name(s) you want, and one that ''rejects'' the box names you want. Apply one filter to one of your trigger_portal_cleanser, and the other filter to your other trigger_portal_cleanser. In this manner, one trigger_portal_cleanser will only handle you boxes dissolve, and the other will handle other physics objects, and portal fizzling.
{| {{OutputsTable}}
| [[File:Io11.png]] || OnUser1 || logic_drop_box || Trigger || <none> || 0.00 || No
|}
 
You will have to change the logic_drop_box name in the output depending on which box dropper the box came from.


== See also ==
== See also ==
* [[Portal Level Creation]]
* [[Portal Level Creation]]
[[Category:Level Design Tutorials]]
[[Category:Portal]]
[[Category:Portal]]
[[Category:Level Design]]
[[Category:Tutorials]]

Latest revision as of 17:58, 8 August 2025

English (en)Français (fr)Русский (ru)中文 (zh)Translate (Translate)
Merge-arrows.png
It has been suggested that this article or section be merged with Emancipation Grid. (Discuss)
Portal Level Creation


This wall of particles destroys any objects that come in contact with it and closes any portals that have been opened by the player.

Step 1 - Hallway Size

First, you need to create an appropriate hallway for the size of fizzler you want. 128x128 Hammer Units is the most common in Portal Portal test chambers although there are some that are 192 Hu across.

Step 2 - Creating the trigger_portal_cleanser entity

The first thing that needs to be created is the doorway that will act as the fizzler holder. You can also use a prop for this effect as well, however for the purpose of this tutorial a model will be used.

Note.pngNote:You can make a fizzler any size you want for your map, it will just require more info_particle_system entities.

The available props for this is:

  • models/props/portal_cleanser_1.mdl

To use as a base we need to create a trigger_portal_cleanser, which in size should be 128x128. Note that this is the base size for a normal sized fizzler. Also the trigger should be just 2 Units thick.

Go ahead and name it if you want, that way you can keep track of how many you might have.

Modify the following flags:

Flag
Checkbox-on.png Everything (not including physics debris)

The Everything Flag will fizzle prop_dynamic entities which can cause problems if the fizzler's model is one.

If this is the case, modify the following flags to fizzle player portals and prop_physics entities (like the cube or radio) but NOT prop_dynamic entities:

Flag
Checkbox-on.png Clients
Checkbox-on.png Physics Objects
Checkbox-off.png Everything (not including physics debris)

Step 3 - Adding Fizzler Models

Frame and Trigger

Make 2 prop_static entities and set their World Model to models/props/portal_cleanser_1.mdl, rotate one of them by 180 degrees.

You are free to line up everything you have so far directly in a straight line, or you can change it to your liking.

Step 4 - Creating the info_particle_system entity

Create a info_particle_system entity and enter the following properties:

Property Name Value
Particle System Name portal_cleanser
Start Active Yes

The particles available are portal_cleanser, cleanser_edge_1 or cleanser_edge_2

  • portal_cleanser is used in most of the normal test chambers. The size of the hallways it is used in is 128x128 Hammer Units. Its appearance is lines going left and right.
  • cleanser_edge_1 only emits one side of the fizzler, its particles going 192 Hammer Units. Its appearance is dots going one direction.
  • cleanser_edge_2 is the same but instead of dots for particles it has lines.

For the tutorial, we will use the portal_cleanser particle.


Align it to the trigger brush precisely in the center and then you are finished.

Results:

Editor View of a Fizzler taken from testchmb_a_00
In-Game View of a Fizzler taken from testchmb_a_00

Step 5 - Respawning Boxes

If you have a box dropper that you want to spawn a new box if the player destroys one with a fizzler, you can use the output OnDissolveBox, but only if your box prop_physics is named box.

If you have multiple droppers in your map along with a cleanser and you want the box dropper to deliver a new box, follow these instructions:

Enter this output for the trigger_portal_cleanser:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnDissolve !activator FireUser1 <none> 0.00 No

Enter this output for the box:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnUser1 logic_drop_box Trigger <none> 0.00 No

You will have to change the logic_drop_box name in the output depending on which box dropper the box came from.

See also