nyuuzyou/wikis huggingface dataset:
Half-Life: Alyx Workshop Tools/Level Design/Blind Zombie

== Introduction ==
This tutorial will teach you how to add a Blind Zombie, also known as Jeff, to the map.
== Setup ==
Create a test room. Insert a npc_zombie_blind entity. For this tutorial, set its name to jeff.
Create a Navigation Mesh. The Blind Zombie should now be able to walk to any sound source it identifies.
== Wandering around ==
For the Blind Zombie to be able to walk around, blindly, you must create a trigger_blind_zombie_wander_area filling the areas you want the zombie to walk around by his own. The Blind Zombie will now be able to walk around this area without identifying any sound sources.
== Wandering to a specific point ==
Insert a point_zombie_noise_generator point entity. For this tutorial, set its name to sound_source. You can make the Blind Zombie wander to that specific point with a logic_relay or similar entity with the following output:
My Output	Target Entity	Target Input	Parameter	Delay
<output> 	sound_source 	WanderTo 	 	0.00
== Hearing a noise at a specific point ==
Insert a point_zombie_noise_generator point entity. For this tutorial, set its name to sound_source. You can make the Blind Zombie charge to that specific point with a logic_relay or similar entity with the following output:
My Output	Target Entity	Target Input 	Parameter	Delay
<output> 	sound_source 	GenerateNoise	 	0.00
== Making the Blind Zombie fling ==
For some reason, you may want to make the Blind Zombie instantly fling at something. You can do that with a logic_relay or similar entity with the following output:
My Output	Target Entity	Target Input	Parameter	Delay
<output> 	jeff 	SetFling 	1 	0.00
== Killing the Blind Zombie ==
The Blind Zombie, by default, is invulnerable and won't get killed by standard ways. You can kill the Blind Zombie with a logic_relay or similar entity with the following output:
My Output	Target Entity	Target Input 	Parameter	Delay
<output> 	jeff 	BecomeRagdoll	 	0.00
== Finishing up ==
Compile and run your map, and you should have a working Blind Zombie, with sounds and AI.
Half-Life: Alyx Workshop Tools/Level Design/Buttons

== Introduction ==
This tutorial will teach you how to create buttons for HL:A based mods.
== Setup ==
Create a test room. Insert a prop_dynamic. For this tutorial, set its model to models/props/button_1_pusher.vmdl
Insert a func_physical_button mesh entity. Match its volume to the model you chose for the prop_dynamic and, for this tutorial, set the following properties:
Key 	Value
Name 	button_pusher
Move direction 	<align it with the push direction>
Speed 	10
Delay Before Reset	0
Use sound 	Button_Basic.Press
In the outputs, add the following output:
My Output	Target Entity 	Target Input	Parameter	Delay
OnPressed	<targetEntity>	<input> 	 	0.00
Select the prop_dynamic again and set its Parent Name to button_pusher.
== Finishing up ==
Compile and run your map, and you should have a working button.
Half-Life: Alyx Workshop Tools/Level Design/Custom Pistols

Category:Half-Life:_Alyx_Workshop_Tools
Category:Half-Life:_Alyx_Workshop_Tools/Level Design
Category:Half-Life:_Alyx_Workshop_Tools/Weapons
A set of entities were added to Half-Life: Alyx to allow some modification of the weapon system by the creation of custom pistols.
* Replicates functionality of Alyx's pistol with slide and ammo clips
* Exposes many properties in hammer with default values based on Alyx's pistol 
* Supported by inventory alongside shipped weapons
* Not upgradable
* Not extensible via scripting
* Shares backpack ammo with Alyx's pistol
The new entities are:
* item_hlvr_weapon_generic_pistol
* item_hlvr_clip_generic_pistol
* item_hlvr_clip_generic_pistol_multiple
== item_hlvr_weapon_generic_pistol ==
This entity provides the same behavior as Alyx's initial pistol without any upgrades. It exposes properties in hammer including models, effects, sounds as well as various values like damage and firing rates. The default property values are the same as Alyx's initial pistol. A generic pistol can be placed in a level without changing its default values and it will behave like the shipped pistol. The pistol is composed of multiple moving models: a frame, a slide and a clip. Each of those model needs a left-handed and right-handed version. They all can be overridden to make different looking and animating pistols. One of the properties defines where the pistol will be shown in the weapon inventory UI (Top, Bottom, Left, Right). Another property defines the name of the weapon in the inventory. This name should be unique to allow the inventory to differentiate between generic pistols. If the player already has a weapon in the same inventory slot, the last picked weapon will take its place. The other weapon will no longer be accessible from the inventory but will still be kept around. The player can cycle which weapon is accessible in a given slot by opening the inventory and moving his hand all the way outside the edge of the inventory until it closes. 
== item_hlvr_clip_generic_pistol ==
This entity is a single ammo clip that can be loaded in a generic pistol or stored in the backpack. It exposes properties like models and ammo per clip. Some of those properties are also found in the generic pistol entity and should be set to match the associated pistol.
== item_hlvr_clip_generic_pistol_multiple ==
This entity is a group of clips that can be put in the backpack to increase the total bullet clip count.
The ammo for generic pistols come from the same backpack pool as Alyx's pistol even though their clips and bullets can be made to look different. Only generic clips can be loaded into generic pistols and the backpack will pull the correct one based on the active weapon.
The pistol behavior is triggered by the game logic but many of the actual functionality is driven by attach points, hand poses, animations and anim graphs defined in the models. Those can all be replaced as long as they conform to the structure and the naming conventions of the shipped pistol. The best way to learn about those structures is to open and study the content of Alyx's pistol in the workshop tools.
Half-Life: Alyx Workshop Tools/Level Design/Doors

== Introduction ==
This tutorial will teach you how to create doors for HL:A based mods. These doors can be opened by grabbing the door knob and moving it forward or backwards.
== Setup ==
Create two rooms with a height of at least 128 units and separated by 8 units.
Insert a prop_static entity and, for this tutorial, select the model .
Select the two faces that connect the rooms and clip them using the door frame as a reference. Remove the faces inside the frame. (Note: If you want to prevent issues with texture alignment when subdividing later on, select the faces you plan on cutting holes in and separate them from the rest of the room with Alt+N. Then, when cutting, cut along the entire length and height of the face instead of just along the edge of the doorframe.)
Insert a prop_door_rotating_physics entity and, for this tutorial, select the model .
Switch the grid size to 2 units and align the door with the frame.
For realism, change the property Open Direction to either Open Forward Only or Open Backward Only, since real life doors don't open both ways.
== Finishing up ==
Compile and run your map and you should have a working door.
You can download the example map here [].
== Broken subdivisions and what causes them ==
When you subdivide faces later on in development, (For example, if you want to use a texture that supports Blend Painting,) if faces were cut without being extracted first, you'll notice that the textures will be warped slightly. This is caused by extra vertices added to the affected face during cutting, turning it from a quad with four vertices to an n-gon that has five or more. You can fix this by deleting the extra vertices.
Select the face with broken subdivisions and extract it from the room (Either with the 'Extract Faces' button on the sidebar or by pressing Alt+N,) then do Ctrl+H to hide everything but the selected face.
Then, in the Vertices selection mode select and delete any vertices that aren't on the four corners.
Press U to unhide the rest of the room. In the Meshes selection mode select both the newly fixed face and the room with Shift+Left-click, then press M (Or click on the 'Merge Meshes' button on the sidebar to the left.)
Repeat the process with any other affected faces, and your textures should be aligned properly again.
Half-Life: Alyx Workshop Tools/Level Design/Energy Gun

Category:Half-Life:_Alyx_Workshop_Tools Category:Half-Life:_Alyx_Workshop_Tools/Level Design Category:Half-Life:_Alyx_Workshop_Tools/Weapons
 
== Introduction ==
This tutorial will teach you how give the player the Pistol, or Energy Gun.
== Making it pickable ==
Create a test room. Insert an item_hlvr_weapon_energygun entity. You can set the initial ammo via the property Spawn Ammo.
You can spawn ammo by inserting an item_hlvr_clip_energygun or item_hlvr_clip_energygun point entity.
== Giving it on spawn ==
Insert an info_hlvr_equip_player entity. Set the following properties:
Key 	Value
Equip on Map Start	✓
Pistol 	✓
You can set the initial loaded ammo with the following property:
Key 	Value
Loaded Pistol Ammo	10
You can set the backpack ammo amount with the following property:
Key 	Value
Pistol Ammo	10
Half-Life: Alyx Workshop Tools/Level Design/Flashlight

Category:Half-Life:_Alyx_Workshop_Tools
Category:Half-Life:_Alyx_Workshop_Tools/Level Design
Category:Half-Life:_Alyx_Workshop_Tools/Weapons
== Introduction ==
This tutorial will teach you how to use the flashlight in your map.
You will need:
*A logic_playerproxy
*An info_hlvr_equip_player
*An input method (Triggers, buttons, etc...)
== Setup ==
Create a room with an info_hlvr_equip_player. Set the properties:
Key 	Value
Equip on Map Start	✓
Flashlight 	✓
Grabbity Gloves 	✓
Place a logic_playerproxy and name it playerproxy for this tutorial.
Place a trigger_multiple where you would like your flashlight to be turned on or off.
== Turning the Flashlight On/Off ==
To turn on the flashlight, send the input SetFlashlightEnable to the playerproxy.
My Output	Target Entity	Target Input 	Parameter	Delay
OnTrigger	playerproxy 	SetFlashlightEnable	 	0.00
To turn off the flashlight, send the input SetFlashlightDisable to the playerproxy.
My Output	Target Entity	Target Input 	Parameter	Delay
OnTrigger	playerproxy 	SetFlashlightDisable	 	0.00
== Finishing Up ==
Compile and run your map. When you walk through the triggers, your flashlight will turn on and off.
You can download the example map here. []
Half-Life: Alyx Workshop Tools/Level Design/Gordon Gloves

Category:English Category:Half-Life: Alyx Workshop Tools Category:Half-Life: Alyx Workshop Tools/Level Design Category:Half-Life: Alyx Workshop Tools/Weapons
 
== Introduction ==
This tutorial will teach you how change the player hands to use Gordon Gloves.
== Setup ==
Create a test room. Insert a logic_playerproxy entity and, for this tutorial, set it's name to playerproxy.
Insert a logic_auto entity. In the outputs, add the following output:
My Output	Target Entity	Target Input 	Parameter	Delay
OnNewGame	playerproxy 	SetGlovesGordon	 	0.00
You can switch back to use Alyx Gloves with a logic_relay or similar entity with the following output:
My Output	Target Entity	Target Input 	Parameter	Delay
<output> 	playerproxy 	SetGlovesAlyx	 	0.00
== Finishing up ==
Compile and run your map, and you should have the Gordon Gloves.
You can download the example map here [].
Half-Life: Alyx Workshop Tools/Level Design/Holo Hacking Puzzle

== Introduction ==
This tutorial will teach you how make the Holo Hacking Puzzles. 
== Setup ==
#Create a test room. Insert a info_hlvr_holo_hacking_plug entity at the position you want the player to use the multitool.
#Define the type of puzzle you want the player to do under PuzzleType. The four puzzles that have difficulties are listed below. 
#Insert a info_hlvr_holo_hacking_spawn_target and ensure the player can access the entirety of its radius. (not required for the PointDrag puzzle type.)
##Set the name of the info_hlvr_holo_hacking_spawn_target, for this tutorial, to puzzle_target. 
#Set the info_hlvr_holo_hacking_plug Puzzle Spawn Target to puzzle_target. Set the Difficulty Name to First, Easy, Medium, Hard, or VeryHard.
#(optionally) define the OnHackSuccess output to activate another entity, or re-enable the hacking plug after a set amount of time.
== Puzzle Types ==
Sphere Trace	Point Search	Point Match	Rod Pull	Point Drag
 	 	 	 	
== Outputs ==
Add an output to info_hlvr_holo_hacking_plug with any of the following My Output:
* OnHackStarted
* OnHackStopped
* OnHackSuccess
* OnHackFailed
* OnHackSuccessAnimationComplete
* OnPuzzleCompleted
* OnPuzzleSuccess
* OnPuzzleFailed
== Finishing up ==
Compile and run your map, and you should have a working Holo Hacking Puzzle.
You can download the example map here [].
==See also==
List of Half-Life: Alyx Holo Hacking Difficulties
Half-Life: Alyx Workshop Tools/Level Design/Hotspot Texturing

Hot spot texturing is a method to quickly apply textures to geometry by matching faces to predefined rectangles. This method is especially useful with texture maps consisting of trims and panels, and will allow you to automate a lot of the texture aligning process.
Please refer to the included workshop example map to see some examples of hotspot texturing:
* 
To set up a material for hotspotting, you need to first define the hotspot layout using the Subrect Editor
= Using the Subrect Editor =
The Subrect Editor can be launched from the asset browser:
After opening the subrect editor, you can select a material to use as reference.
After selecting a reference material you can start drawing out rectangles on the grid with LMouse+Drag. The grid size can be changed with '[' and ']' (or from the Edit menu).
here's what it looks like with all rectangles drawn:
By default, hammer will try to align the rectangles to the world orientation when they are applied. However, to get more use and variation out of generic rectangles, you can select them and allow for them to be rotated by toggling "allow rotation" in rectangle properties.Â 
= Setting up materials for hotspotting =
Once you have defined the rectangles for you image, save the file. This will create a .rect file, which contains the definitions of the rectangles. The .rect file may be referenced by multiple different materials.
To assign the rectangle definition to a material, open the material in the material editor, select the attributes tab and then click on the browse button (magnifying glass) under the "Rectangle Definition File".
(to make sure you get a consistent pixel density from the hotspot tool, make sure to set world mapping values as well)
Once the rectangle file has been assigned to a material, the hotspot texture application tool can be used on a face selection in Hammer.
This will attempt to automatically assign the best rectangles of the material to the faces based on size and aspect ratio.
Additionally the rectangle definition can be used with the fast texture tool (ctrl + g). The rectangles can be displayed by selecting 'Show Rectangles'.
Double clicking on the image will select the rectangle under the cursor and update the uvs of the current selection.
Half-Life: Alyx Workshop Tools/Level Design/Keycard Readers

== Introduction ==
This tutorial will teach you to create keycard readers that unlock doors for Half Life: Alyx. These scanners are a lot more flexible than just being tied to keycards and opening doors, as you could use any physics object with any destination you wish that perform specific actions depending on the entity.
Prefab Download: 
=== Requirements === 
At the time of this writing this requires you to have the .fgd dump provided by Gvarados, which can be found on the repo https://github.com/gvarados1/Half-Life-Alyx-FGD
== Setup ==
=== Keycard ===
Insert a prop_physics entity and select the keycard model and give it a name. You can change its color under object properties. For the sake of this demonstration we're using the keycard, but if you want to use a different physics prop then use that instead.
=== Setting up your Door ===
Insert a prop_door_rotating_physics entity, select a door model and give this a name. Set its Spawn Position to Closed. Under spawnflags select Starts Locked and Use closes.
== Creating a Filter ==
Under entities create a filter_activator_name and give this a name. Ensure filter mode has "Allow entities that match criteria" selected and Filter Name has your keycard selected.
=== Adding Trigger ===
Create a mesh, under entity class give it trigger_multiple and give this a name. Under spawnflags check Physics Objects and uncheck Clients. For the example of a keycard scanner, this will be placed in the scanning area of the scanner prop.
=== Keycard Reader ===
For this demonstration we'll place a keycard reader prop_dynamic. This in theory adds nothing more than input for the player and will give feedback to them with a green light after successful scan of a keycard meeting the trigger.
=== Filter Outputs ===
Add two OnPass outputs with your filter_activator_name. On the first one select your target entity to be the door, and for target input select Unlock. For the second OnPass output, select the Keycard reader, for its target input select Skin and for Parameter select 1.
=== Trigger Outputs ===
Add an OnStartTouch output and for its target entity select your filter. For target input select TestActivator.
Half-Life: Alyx Workshop Tools/Level Design/Ladders

== Introduction ==
This tutorial will teach you to create ladders for Half Life: Alyx mods. These ladders allow you to use all movement types such as a teleport up ladders as well as manual climbing each rung.
Prefab Download: Ladder (v1.0)
=== Requirements === 
This requires you to have a hlvr.fgd that has the following entities, these can be found on the repo https://github.com/gvarados1/Half-Life-Alyx-FGD
*prop_handpose
*trigger_traversal_modifier
*info_teleport_magnet, 
== Setup == 
=== Ladder Model ===
Insert a prop_static entity and select the ladder model models/props/metal_ladder_001/metal_ladder_001_128.vmdl. This is only used as a visual guide in game. Rotate it as necessary
=== Adding Grab Hands ===
Next, hand markers need to be placed on the ladder which defines grab points for the players hands. On the right edge of the ladder rungs, add a new prop_handpose entity that sits over each metal rung.
Recommended settings
Name 	Value
Minimum Distance 	4
Maximum Distance 	6
Distance Bias 	0.3
Disengage Distance	16
Use Proximity Bone	False
Extend Size 	0 -2 18
Delete After Spawn	False
Start Disabled 	False
Auto Grip 	False
Ignore Hand 	-1
Model 	Grab Pole
=== Adding Trigger ===
Draw a brush around the ladder, it is recommended to make it 3 units larger than the ladder. If your trigger is too large, your ladder will not be climbable in manual mode. The trigger is the zone that will allow the player to teleport to the top. 
With the new brush selected, press Ctrl + T to tie it to an entity, and change the type to trigger_traversal_modifier. This will automatically apply a trigger material. With the trigger selected, select Center Origin.
 
 
The settings on the trigger can be tweaked as needed, assuming the ladder is 70 units high:
Recommended settings
Name 	Value
Target Point 	0, 0 ,0
Ladder Top Exit 	0, 0, 70
Ladder Bottom Exit	-1, -25, -67
Just in front of the trigger_traversal_modifier, create an info_teleport_magnet entity. This allows snaps the players teleport marker to the position when it gets close. This allows the player to easily teleport to the base of the ladder.
Recommended settings
Name 	Value
Magnet Radius	0
Start Enabled	True
You are now done, Save and Compile and test the ladder ingame
== Known Issues ==
*You cannot teleport down when at the top of the teleporter
*You can walk up to the later in Continous movement mode and it will push you up the prop_static ladder
*In order to engage manual climbing mode, your grabbing hand must leave the trigger volume each time. Make sure your trigger is as form fitting as you can make it.
== Helpful Debug Commands ==
*vr_hand_pose_debug - 0 / 1
This command renders helper overlays in-game that indicate where the hand pose grab markers are. It also shows the position and size the of extend boxes that is where the user can grab.
Half-Life: Alyx Workshop Tools/Level Design/Launching Custom Maps

== Introduction ==
This tutorial will teach you how to launch custom maps made for Half-Life: Alyx.
== Enabling the developer console ==
To start, we'll enable the developer console. This lets you type in various commands that will allow you to enter your maps.
First, right click Half-Life: Alyx in your steam library, and select "properties" from the drop-down menu that appears.
Next, select "Set Launch Options" on the properties menu that is created.
Finally, type "-console -vconsole" into the launch options, then hit "OK."
== Installing your level ==
Now we are going to install the level you've downloaded into the game.
Open the properties of Half-Life: Alyx again and go to Local Files, then select "Browse Local Files."
Now Navigate to \SteamLibrary\steamapps\common\Half-Life Alyx\game\hlvr and open a new file explorer window where you have your downloaded map file.
Drag the map file into the folder called "maps."
== Launching the map ==
Finally, we'll launch the map.
First, launch Half-Life: Alyx to the main menu, then press the ~ key. (it's above TAB)
A window called VConsole2 will appear.
Type in the area labeled "Command" : map [map file name].
Your map will now start loading and you'll be on your way to gaming.
Half-Life: Alyx Workshop Tools/Level Design/Light Cookies

== Light Cookies (HL Alyx) ==
This page is a comparison of the different Light Cookies in HL Alyx.
Light cookies can be applied to spot lights and ortho lights.
== Examples (all light_spot) ==
= default =
Image:DefaultLC.jpg|default light cookie
= box =
Image:BoxLC.jpg|box light cookie
= box_soft =
Image:BoxSoftLC.jpg|box_soft light cookie (used by valve for streetlights)
= combinecleanup =
Image:CombineCleanupLC.jpg|combinecleanup light cookie
= flashlight =
Image:FlashlightLC.jpg|flashlight light cookie
= dirt1 =
Image:DirtLC.jpg|dirt1 light cookie
= dirt2 =
Image:Dirt2.jpg|dirt2 light cookie
= electrical =
Image:ElectricalLC.jpg|electrical light cookie
= muzzleflash =
Image:MuzzleFlashLC.jpg|muzzleflash light cookie
= ring =
Image:RingLC.jpg|ring light cookie
= blank =
Image:BlankLC.jpg|blank light cookie
Half-Life: Alyx Workshop Tools/Level Design/Lua Scripting/How Lua Works With The Api

= How to Make API Calls with Lua with Half Life : Alyx =
The main reason for creating Lua scripts in the first place is to interact with the game engine in a meaningful way.
Api calls are used to get or update the current state of the engine (i.e. the game you are playing).
* For example one could find a particular NPC/Entity in the map and call a function on it. 
== What Does It Mean to Make an API Call? ==
Each of the functions in the Scripting API (see below) are callable from any point in a Lua script. This means that an equivalent function exists in the source engine and can be triggered from an outside source (lua code).
* The Lua code itself lives outside of the engine and can be interpreted at run-time.
* When one makes an API call from Lua, they are only actually indirectly calling any code. The actual code implementation is in the engine itself. 
* Scripting API
== Basic Example - API call vs Lua function ==
See the following basic example:
recordedServerTime = Time()
print(recordedServerTime)
* Time() is an API call, the lua code asks the Source engine for the amount of time the server has been running. It does not keep track of time in the script.
* print() is a lua function, it does not need to talk to the api to work
== Possible Reasons Why Some API Calls Won't Work ==
* Due to the way Half Life : Alyx was developed, certain API calls were simply not implemented perhaps due to lack of need for them in the first place (speculation)
* Similar logic to that of scripts could be created with hammer logical entities (i.e. logic_auto, logic_branch, etc...)
== More Lua Scripting: ==
Lua Scripting