Propper: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
 
(146 intermediate revisions by 47 users not shown)
Line 1: Line 1:
==Introduction==
{{lang|Propper|title=Propper}}
'''Propper''' is an edited version of vbsp that outputs a model instead of a bsp.


Many mappers need to make props for their maps, but don't want to learn a separate modeling program.
{{propper|4.1}} is an edited version of [[VBSP]] that outputs a [[model]] instead of a [[BSP (Source)|BSP]] file.
This tool allows them to make models in Hammer in a one-step process. It's also useful to modelers who
work with mappers. Propper keeps texture mapping intact, and auto-generates
a physics mesh.


===Features===
Propper allows users to easily create models using {{hammer|4}} instead of a typical model-editing software. It keeps texture mapping intact and can auto-generate a [[Collision mesh|physics mesh]].
* Can create static props, dynamic props, or physics props
 
* Generates a .qc file and automatically compiles the prop for use in your game.
{{modernDeprecated|If you are using {{hammerpp|2}}, a [[Hammer++/Propper++|built-in Propper]] is now available under {{code|Tools > Propper}} (or {{key|Ctrl|Shift|P}}), and it serves as a replacement for this tool. It converts the Hammer mesh directly so there is no quality loss in the geometry due to the BSP process.}}
 
==Features==
* It can create [[Prop static|static props]], [[Prop dynamic|dynamic props]], or [[Prop physics|physics props]].
* Generates a [[QC|.qc file]] and automatically compiles the prop for use in-game.
* Generates a working physics mesh.
* Generates a working physics mesh.
* Automatic material conversion--Turns map textures into valid model textures.
* Automatic material conversion - turns map textures into valid model textures.
* Distinguishes between real textures and "tool" textures.
* Distinguishes between regular textures and [[Tool textures|tool textures]], such as nodraw and clip.
* Respects Hammer smoothing groups or autosmooth.
* Respects Hammer [[Smoothing groups|smoothing groups]] or autosmooth.
* Configure your prop from within Hammer.
* Allows to configure several of the prop's surface, usage, and mesh properties from within Hammer.
* Displacement support--outputs any displacement surface you can make (not solid).  
* Displacement support - outputs any [[Displacement|displacement surfaces]] that are created (the end mesh will not be solid).
* skins support--use multiple textures on the same prop.  
{{confirm|Is it solid or not?}}
* custom gib support
* Skins support - allows for [[Multiple Skins for a Single Model|multiple textures on the same prop]].  
* Custom gib support
* [[$keyvalues]] support: cables, particles, and physgun interactions are available.
* [[$keyvalues]] support: cables, particles, and physgun interactions are available.
* Allows to output multiple models out of one map.
* [[LOD]] support.
* [[Bodygroup]] support.
==Download==
* Propper version .24 is available [https://www.moddb.com/members/cfoust/downloads/propper here]
* Propper beta version 0.31 is available [https://www.moddb.com/members/cfoust/downloads/propper-beta-3 here]. (The latest version written by the original author)
* Propper for the {{src13|4.1|nt=0}} is available [https://github.com/tuxxi/propper-2013/releases/ here.] (As a third-party fork)
* Propper for {{tf2|4.1}} can be found [https://tf2maps.net/threads/guide-getting-propper-working-nowdays.38589/ here.]


===Future planned features===
{{warning|Some versions of Propper are outdated and no longer work with any games other than the "Source SDK" as described [http://www.tophattwaffle.com/configuring-propper-for-steampipe/ here.]}}
* Output multiple models out of one map
* Automatic culling of invisible faces
* LOD support.


==Download==
===Disclaimer===
A public beta release is now available!
This program has been used with some success by community mappers. It's based on VBSP, which we all know and trust not to destroy our PCs. That said, use at your own risk. I steal no responsibility for damage to your computer or games that may occur while using Propper.
[http://crazycarl.hl2sm.com/files/propper_0.23.zip http://crazycarl.hl2sm.com/files/propper_0.23.zip]


==Directions==
==Directions==
===Installation===
===Installation===
There are two versions of propper included. One is for the 2006 SDK, and the other works with both the 2007 and 2009 versions. A .fgd (Forge Game Data) file is included for both, to help you configure your props.  
To install Propper-2013, simply extract [[propper.fgd]] and propper.exe into the bin folder of the game the tool will be used with.


The folders in this ZIP file mirror the folders in the SDK. For best results, unzip the file to your steamapps\<username> folder, and let your zip utility keep directories intact.
After installing, the game configuration should be changed a bit. Open Hammer under the game within which Propper was installed, and click '''Tools,''' then '''Options.'''


After installing, you should change your game configuration a bit. Open Hammer under the game with which you will use Propper, and click Tools:Options.
Go to the '''Game Configurations''' tab, and click the '''Add''' button, next to the '''Game Data files''' area. Open propper.fgd when prompted (it will be right there if installed correctly). Then click '''OK or Apply''' to save the settings. Finally, restart Hammer so the settings take effect.


[[Image:Hammerjc.jpg]]
[[File:Hammerjc.jpg]]


Find the section for "Game Data Files", and click the "Add" button. Open propper.fgd when prompted (It will be right there if you installed correctly). Then Click OK or Apply to save the settings. Finally, restart Hammer so the settings take effect.
{{note|The custom folders may need to be created in * c:\propsource\USERNAME\Your_Custom_Model_Folders_Here * in order for Propper to work.}}


IMPORTANT: propper.fgd should be ''below'' your game's fgd in the list. If Hammer tries to load propper.fgd first, it will give you error messages. To do this, do the following.
===Making A Prop===
To use Propper, open the map in Hammer and then turn some brushes into a propper_model entity.


Add the propper.fgd to your Game Data files in Hammer.
There are several important properties of the {{ent|propper_model}} entity:


Apply this in Hammer, then close Hammer.
<table border=1 cellspacing=0 width=80% >
<tr><td>Name</td><td>The name that other entities refer to this entity by.</td></tr>
<tr><td>Origin (X Y Z)</td><td>The position of this entity's center in the world. The model's origin point defines how it is lit and is how the prop is positioned in a map. For static props, put the origin somewhere that enables easily aligning the prop.</td></tr>
<tr><td>Model Name</td><td>The directory and name of the finished model. Relative to &lt;yourmod&gt;/models the model will be created here, inside the "models" folder of the selected mod or game. The .mdl extension is not needed.</td></tr>
<tr><td>Material path</td><td>Location of the model's textures. Relative to &lt;yourmod&gt;/materials. Make sure this folder exists before running! Propper extracts material files from the mod folder or game cache and makes a copy in this location.</td></tr>
<tr><td>Scale</td><td>Scale the model up or down by this factor.</td></tr>
<tr><td>Surface property</td><td>The physical properties of the model--affects impact sounds and weight for physics props.</td></tr>
<tr><td>Physics mesh</td><td>Pick any brush entity (including this one) to represent the physical shape of the model. Leave this field blank for a non-solid model. If you leave this blank while making a physics prop, Propper will automatically use the propper_model entity for collisions.</td></tr>
<tr><td>Mass</td><td>Weight of the prop in kg. Enter zero or lower to automatically calculate mass.</td></tr>
<tr><td>Concave collisions</td><td>Used to make a concave collision model. If no is selected, the model will be 'shrink-wrapped'.</td></tr>
<tr><td>Smoothing mode</td><td>Determines how vertex normals are computed for lighting.</td></tr>
<tr><td>Source folder</td><td>Location of source .qc and .smd files. The final directory will be &lt;sourcefolder&gt;/&lt;modelname&gt;. This folder path may be anywhere on the hard drive that is convenient.</td></tr>
<tr><td>Smoothing threshold</td><td>If auto-smooth is enabled, edges flatter than this angle will appear smooth. Pick from 0 to 180.</td></tr>
<tr><td>Snap to Hammer</td><td>Every vertex will be snapped to the nearest grid point.</td></tr>
<tr><td>Welding threshold</td><td>Vertices will be snapped together if within this tolerance. A value of 0 is not recommended because there may be visible gaps in the mesh. Larger numbers will merge vertices together, and may be useful for optimizing the model.</td></tr>
<tr><td>Auto-Center</td><td>The model's origin point defines how it is lit and is how the prop is positioned in a map. Auto-center moves the model's origin to the center of its bounding box and is recommended for physics props. </td></tr>
<tr><td>Disable normal mapping</td><td>This option removes all bump map info from the converted materials. This is useful when using -StaticPropLighting to light props.</td></tr>
<tr><td>Don't warp displacement textures</td><td>In Hammer, when moving a displacement point, the texture moves with it. If yes is selected, the texture will stay in place.</td></tr>
</table>
 
===Compiling===
You run Propper just like you would compile a map with vbsp. Pass it the current game directory and your vmf file.


Now find your GameConfig.txt file. This will be located either here: "C:\Program Files\Steam\steamapps\<yourusername>\sourcesdk\bin\ep1\bin", or here: "C:\Program Files\Steam\steamapps\<yourusername>\sourcesdk\bin\orangebox\bin", depending on what version of the Source Engine you are using (replace "C:" with whatever drive letter you are using for SourceSDK, of course).


In GameConfig.txt, ensure that the "GameData" entry for Propper is numbered after that for the game you are working with. If Propper is listed as "GameData0" and your game (e.g. TF2) is listed as "GameData1", change this code. (Note: Hammer will often overwrite this, resetting Propper back to GameData0, making it unusable. You may need to temporarily change your GameConfig.txt file to "read only" while working in Propper to prevent this.)
'''Command'''


Save and close GameConfig.txt. You're ready to go.
Write '''propper''' in the command field. You can browse to the propper executable with the '''Cmds''' button.


===Making a prop===
<font color="#FF0000">'''Important:'''</font> If propper doesn't start and instead write '''Running command: cd ""''', use an absolute path to propper.exe for it to work.
To use Propper, copy some geometry from your map and paste it into a new Hammer file.
There are three included entities. The first, '''propper_options''', is required for your prop to compile correctly.


Place one in the map and look at its properties:


<table border cellspacing=0 width=80% >
'''Launch Parameters'''
<tr><td>Name</td><td>The name that other entities refer to this entity by. (not used by propper)</td></tr>
<table border=1 cellspacing=0 width=80% >
<tr><td>Origin (X Y Z)</td><td>The position of this entity's center in the world. Rotating entities typically rotate around their origin.</td></tr>
<tr><td>-game</td><td>The path to the [[Game Directory]].</td></tr>
<tr><td>Model Name</td><td>The directory and name of the finished model. Relative to &lt;yourmod&gt;/models The model will be created here, inside the "models" folder of your selected mod or game. The .mdl extension is not needed.)</td></tr>
<tr><td>-nocompile</td><td><font color ="red">Optional.</font> Prevents Propper from running [[studiomdl]] to compile the props (this makes it a great .smd exporter).</td></tr>
<tr><td>Material path</td><td>Where the model's textures will be. Relative to &lt;yourmod&gt;/materials. Make sure this folder exists before running! Propper extracts material files from your mod folder or game cache, and makes a copy in this location.</td></tr>
<tr><td>-logging</td><td><font color ="red">Optional.</font> Propper will create a .log file with all its output.</td></tr>
<tr><td>Scale</td><td>Scale the model up or down by this factor.</td></tr>
<tr><td>-nomaterials</td><td><font color ="red">Optional.</font> Prevents Propper from copying and converting material files.</td></tr>
<tr><td>Surface property</td><td>The physical properties of the model--affects impact sounds and weight for physics props.</td></tr>
<tr><td>-obj</td><td><font color ="red">Optional.</font> Will cause Propper to output Wavefront OBJ files instead of SMD files. Useful for exporting geometry to other 3D tools.</td></tr>
<tr><td>Concave collisions</td><td>Used to make a concave collision model. If you choose no, the model will be 'shrink-wrapped'.</td></tr>
<tr><td><vmf name></td><td>The name of the vmf file containing the props. ''must come last''</td></tr>
<tr><td>Produce collisions?</td><td>Picking Yes allows the prop to be solid.</td></tr>
<tr><td>Smoothing mode</td><td>Determines how vertex normals are computed for lighting.</td></tr>
<tr><td>Source folder</td><td>Where you want to keep your .qc and .smd files. The final directory will be &lt;sourcefolder&gt;/&lt;modelname&gt;. Make sure this folder exists before running! This folder path may be anywhere on your hard drive that is convenient for you.</td></tr>
<tr><td>Smoothing threshold</td><td>If auto-smooth is enabled, Edges flatter than this angle will appear smooth. Pick from 0 to 180.</td></tr>
<tr><td>Snap to Hammer</td><td>Causes every vertex to be snapped to the nearest grid point.</td></tr>
<tr><td>Welding threshold</td><td>Vertices will be snapped together if within this tolerance. A value of 0 is not recommended because there may be visible gaps in the mesh. Larger numbers will merge vertices together, and may be useful for optimizing your model.</td></tr>
<tr><td>Model Origin</td><td>The model's origin point defines how it is lit and is how the prop is positioned in a map. Auto-center puts the model's origin at the center of its bounding box and is recommended for physics props. For static props, put the origin somewhere that lets you align the prop easily.</td></tr>
<tr><td>Automatically compile</td><td>By default, propper will run studiomdl to compile the prop. You can disable this. Disable this to use Propper as a simple .smd exporter. Or you may wish to add options to the .qc file before compiling the prop. </td></tr>
<tr><td>Fix up materials</td><td>By default, propper will make a copy of any material used in the prop and make it valid for use on a model. You can disable this.</td></tr>
<tr><td>Don't warp displacement textures</td><td>In Hammer, when you move a displacement point, the texture moves with it. If you pick yes, the texture stay in place.</td></tr>
</table>
</table>


'''Example Path Settings:''' This user was building a brick archway model called "arch" for a map for submission during the TF2 Artpass competition. In the propper_options entity, the following settings were used:
Propper can be run from within Hammer. Just create a new Run configuration and run Propper instead of VBSP.
* Model Name: artpass/arch
[[File:Running_propper.gif‎|none]]
* Material path: models/artpass/arch
* Source folder: C:/propsource


'''Running Propper:''' You run Propper just like you would compile a map with vbsp. Pass it the current game directory and your vmf file.
<font color="#FF0000">'''Important:'''</font> There must be no extra spaces or lines in the parameters box. Propper may refuse to run if anything comes after '''$file'''.
propper.exe -game $gamedir $path\$file
Propper will compile the model automatically unless you disable that function.


You can run Propper from within Hammer. Just create a new Run configuration and run propper instead of vbsp.
Run Propper. For each propper_model entity there is in the map, it should create a new model. Hammer may have to be restarted to see the new models.
[[Image:Running_propper.gif‎|none]]
 
You should now have a new prop available to you! If you are replacing an existing model, you may have to restart Hammer to see the changes.


===Additional options===
===Additional options===
There's also the '''propper_physics''' entity. If you place this entity in your map, Propper will produce a
There are a number of optional entities you can use to configure each prop. They all contain the following property:
physics prop. See [[Prop data]] for documentation on the following.


<table border cellspacing=0 width=80% >
<table border cellspacing=0 width=80% >
<tr><td>Name </td><td>The name that other entities refer to this entity by. (not used by propper)</td></tr>
<tr><td>Model to apply to</td><td>Pick a propper_model entity for this property to apply to.</td><tr>
</table>
This determines which of your models will be affected by the entity. For example, if you have a propper_model entity called ''myModel1,'' any of the following entities should use ''myModel1'' here.
 
* '''propper_physics''': If this entity is used, Propper will configure your model as a physics prop.
See [[Prop data]] for documentation on the following.
 
 
<table border=1 cellspacing=0 width=80% >
<tr><td>Origin (X Y Z)</td><td>The position of this entity's center in the world. Rotating entities typically rotate around their origin. (not used by propper)</td></tr>
<tr><td>Origin (X Y Z)</td><td>The position of this entity's center in the world. Rotating entities typically rotate around their origin. (not used by propper)</td></tr>
<tr><td>Health preset</td><td>Dictates how strong the prop is vs. different weapons.</td></tr>
<tr><td>Health preset</td><td>Dictates how strong the prop is vs. different weapons.</td></tr>
<tr><td>Health</td><td>Overrides the prop's health. Setting this to 0 will make the prop unbreakable. -1 will use the default value from "Health preset"(recommended).</td></tr>
<tr><td>Health</td><td>Overrides the prop's health. Setting this to 0 will make the prop unbreakable. -1 will use the default value from "Health preset"(recommended).</td></tr>
<tr><td>Mass</td><td>Weight of the prop in kg. Enter zero or lower to automatically calculate mass.</td></tr>
<tr><td>Flammable</td><td>Will it burn? Picking this enables the 'ignite' options.</td></tr>
<tr><td>Flammable</td><td>Will it burn? Picking this enables the 'ignite' options.</td></tr>
<tr><td>Ignite at half-health</td><td>Just like those barrels in HL2.</td></tr>
<tr><td>Ignite at half-health</td><td>Just like those barrels in HL2.</td></tr>
Line 113: Line 126:
</table>
</table>


New in version 0.22 is '''propper_skins'''. Propper can create alternate skins by replacing a texture that is on your prop. If you have multiple textures on your model that you want to change, you can use this entity more than once.
* '''propper_skins''': Propper can create alternate skins by replacing a texture that is on the prop. If multiple textures on the model are necessary, this entity can be used more than once.
*'''NOTE''': There is a limit of textures on any one model. Both the model and extra skins should not have more than 32 textures. This does not include the tooltextures.
 
Propper.31 has lifted the limit of textures.


<table border cellspacing=0 width=80% >
<table border=1 cellspacing=0 width=80% >
<tr><td>Name</td><td>The name that other entities refer to this entity by. This is not used, but will be in the future.</td></tr>
<tr><td>Material</td><td>Pick a texture that's present in the original model. This will be skin 0.</td></tr>
<tr><td>Material</td><td>Pick a texture that's present in the original model. This will be skin 0.</td></tr>
<tr><td>Skin(1-14)</td><td>This texture will replace the original when you pick skin #.</td></tr>
<tr><td>Skin(1-14)</td><td>This texture will replace the original when picking skin #.</td></tr>
</table>
</table>


====New Entities in 0.23====
* '''propper_attachments''': Add attachment points to a model (for cables and particles)
* propper_attachments: add attachment points to a model (for cables and particles)
* '''propper_cables''': Add ropes/cables to dynamic models!
* propper_cables: add ropes/cables to dynamic models!
* '''propper_particles''': Attach particle emitters to dynamic models (2007 engine and later only)
* propper_particles: attach particle emitters to dynamic models (2007 engine and later only)
* '''propper_physgun_interactions''': Add custom behavior to physics props--eg. stick to walls, paint splatter, impale enemies
* propper_physgun_interactions: add custom behavior to physics props--eg. stick to walls, paint splatter, impale enemies
* '''propper_gibs''': Pick custom physics models to use as gibs when the prop breaks
* propper_gibs: pick custom physics models to use as gibs when the prop breaks
* '''propper_lod''': A brush entity that can be used to create low-poly versions of the model.
* '''propper_bodygroup''' : Bodygroups allows swaps between parts of a mesh. For example, the model could have a door with several different knobs and allow the mapper to pick one.
 
===Steampipe / {{src13|4}} Update===
With Valve's new Steampipe content system, all Valve games reside in the "common" folder, instead of a "[username]" one. Now, as a stopgap, mappers no longer access Hammer through the SourceSDK tool (so do not download it). Instead, go into your game's bin folder and double-click "Hammer.bat" to access Hammer (and the same for some other tools). (For example, to access Hammer for {{css|4}} go to {{path|C:\Program Files (x86)\Steam\SteamApps\common\Counter-Strike Source\bin}}, and find "Hammer.bat".)
 
==Reported Bugs==
* An instance was found where textures were being applied incorrectly and to the wrong faces.
* If materials are used that are in the root ''materials\'' folder, Propper will try and convert the material for every face on which it appears.
* The 2007/2009 versions no longer create folders when saving source (smd and qc) files.
* When propper_model x,y,z is set it will reset to center point when model is move and/or saved then reopened. Note: using spaces between x y z(0 0 0) will save.
* When multiple models are made from one file the first and last model will have their textures but in-between models will have no textures.
* Propper sometimes may not run because of what you have in ''<yourmod>/custom'' folder. Try clearing it if you have this issue.
* In Hammer for CSGO SDK, adding ''propper.gfd'' to hammer will crash the editor after loading a normal map. A simple fix will be removing ''@include "base.fgd"'' and creating the missing classes manually.
* Propper is incompatible with {{GMOD|3.1}}'s updated studiomdl. You can get around this by replacing {{GMOD|3.1}}'s studiomdl.exe with studiomdl.exe from {{hl2|3.1}} or {{CSS|3.1}} (or another game) or by running propper on a different game.
* Propper does not read {{GMOD|3.1}}'s {{file|mount|cfg}}
* Generated props with [[Prop static|prop_static]] lightmaps will show up black.
* Running Propper on a .vmf that exceeds the max brushsides limit will prevent the program from running, and no error will be reported. This can be easily bypassed by selecting anything you want to turn into a model and pressing Ctrl + H to quickhide everything else. (Ctrl + U to bring everything back afterwards.)
 
==Using Propper with specific games==
==={{l4ds|4.1}}, {{as|4.1}}, and {{portal2|4.1}}===
Propper doesn't currently work with any SDK newer than the Orange Box-era SDK. If mapping for these games, try the following:
<ol>
<li> Extract the materials (VMT and VTF files) that will be used from the post-Orange-Box game using {{gcfscape|3.1}} and mirror them in an Orange Box game (Such as Episode 2, or {{portal|4.1}}).</li>
<li> Run Propper from the Source SDK as normal.</li>
<li> Take the files created by Propper and copy them into the appropriate folder in the Game.</li>
</ol>
 
This process does work when using Propper with Alien Swarm.
 
==={{csgo|4.1}} SDK===
{{Tip| There is a CS:GO Propper package available for [https://mega.nz/file/5ZFkGALY#HczIXOBc6nB5Z1incTom54wdJeWlG0315iv1JvVmBVQ download] with  set up /usage explanation .pdf It is advised to use this version of propper with CS GO SDK}}
 
Propper can be used with the CS:GO SDK. The installation process is similar to other Source games. Source SDK will also be necessary!
 
<ol>
<li> Install the Source SDK Base 2013 Multiplayer tool</li>
<li> Extract the csgo materials folder and move it into '''SteamApps\common\Counter-Strike Global Offensive\''' </li>
<li> Move the Propper files into '''Source SDK Base 2013 Dedicated Server\bin'''</li>
<li> In the Run Map menu, create a new configuration and select "Executable" while pressing the cmds button</li>
<li> Navigate to '''Source SDK Base 2013 Dedicated Server\bin''' and select propper.exe</li>
<li> Add the normal parameters </li>
</ol>
 
If getting these errors while compiling a model and/or the converted props textures are wrongly scaled etc.:
WARNING: *** Encountered VTF file with an invalid minor version!
WARNING: *** Encountered VTF file with an invalid full header!
 
This is caused by newer VTF formats, 7.5 is standard for cs:go. Converting the used textures to an older format, like 7.2, resolves this. Supposedly the ep1 propper.exe does not suffer this issue, and might therefore be used instead.
 
==Using Propper With Displacements==
* If the tool is run on a map with no brushes (displacements don't count), Propper will crash. Thus, if making a model solely from displacements, place a normal (non-displacement) brush somewhere in the vmf file. This is an obscure bug from VBSP that hasn't been tracked down yet.


==FAQ==
==FAQ==
'''I get this error when I run propper'''
Can't load c:\program files (x86)\steam\steamapps\xxxxxxxxxxxx\sourcesdk\bin\orangebox\bin\filesystem_steam.dll.--VFileSystem017
This is due to using a version of Propper compiled against an outdated engine version. The latest official version created by the original author no longer works
after Valve's SteamPipe update. To fix this error, download the [[Propper#Download |latest version]] of Propper compiled for Source SDK Base 2013.
'''I keep getting an error like this:'''
Error opening d:\program files\steam\steamapps\blah\mymap
.vmf: File d:\program files\steam\steamapps\blah\mymap
.vmf, line 1: Invalid argument.
This happens when you have a line break or other white space in the parameters box of Hammer. Don't copy-paste the parameters in there. Type it in.
'''I can't find these prefabs I've heard about. Where are they?'''<br>
'''I can't find these prefabs I've heard about. Where are they?'''<br>
Propper no longer includes any prefabs for the config entities. You should use the entity tool and find propper_options in the list of entities.
Propper no longer includes any prefabs for the config entities. You should use the entity tool and find propper_options in the list of entities.
'''I can't find the new entities/the fgd won't work'''<br>
propper.fgd needs to go ''after'' your game's fgd in the list of "Game Data Files". Some users have gotten success by editing propper.fgd: add this line at the beginning of the file:
@include "base.fgd"


'''My prop's collisions are wrong. It's solid where it shouldn't be.'''<br>
'''My prop's collisions are wrong. It's solid where it shouldn't be.'''<br>
There are some cases where two brushes get combined into one big collision piece. Try to avoid making brushes overlap and it should not be a problem.
There are some cases where two brushes get combined into one big collision piece. Try to avoid making brushes overlap and it should not be a problem.
'''My prop's collisions are in the wrong place.'''<br>
If your useing a func_brush to show propper where to make the collisions, you will need to set the origin of the func_brush in the same place as your propper_model.
Secondly make sure your func_brush entity (your collision entity) has the right origin set, even if the .vmf shows a proper fit, the collision brush may still shift during compile.


'''I made a large building into a model and the lighting is not as good as a brush model. What gives?'''<br>
'''I made a large building into a model and the lighting is not as good as a brush model. What gives?'''<br>
Models in Source use rather simple vertex lighting, whereas brushes get radiosity lightmaps. What that means in simple terms is your map gets nice soft shadows and bounced light, but props don't. Buildings just look better when they're made from brushes.
Models in Source use rather simple vertex lighting, whereas brushes get radiosity lightmaps. What that means in simple terms is your map gets nice soft shadows and bounced light, but props don't. Buildings just look better when they're made from brushes.


In some cases, you can get better lighting on your props by enabling per-vertex lighting when you compile your map. In the command line of [[vrad]], include ''-StaticPropLighting'' to enable that feature. Models that use normal mapping aren't compatible with per-vertex lighting, so open any .vmt file created by Propper and remove any instance of [[$bumpmap]].
In some cases, you can get better lighting on your props by enabling per-vertex lighting when you compile your map. In the command line of [[vrad]], include ''-StaticPropLighting'' to enable that feature. Models that use normal mapping aren't compatible with per-vertex lighting, so use the "Disable normal mapping" option when you use Propper.


'''Propper quits with an error saying it can't open such-and-such file.'''<br>
'''Propper quits with an error saying it can't open such-and-such file.'''<br>
Usually this is a result of the EP1 version of Propper trying to write to a folder that doesn't exist. The OB version has no problem creating these folders. So browse to the folder mentioned in the error message and make sure it's there.
Be sure that you have permission to write to that folder, that it's not write-protected, and that you have entered a valid folder.
 
It might also be that the file exists, but is write-protected. Make sure it's not open in another program, and it's not set to read-only.


'''Why would I want to make a prop anyway?'''<br>
'''Why would I want to make a prop anyway?'''<br>
Line 155: Line 235:


'''Hammer's a mapping tool! People who want to make models should learn a real modeling program like Blender or XSI.'''<br>
'''Hammer's a mapping tool! People who want to make models should learn a real modeling program like Blender or XSI.'''<br>
I agree, but maybe they don't want to... (A better answer is that it is far more efficient to minimize the volume of learning required. So if a tool can be used to output models to a certain standard, with a much lower learning curve, it is far more effective to use it. The standard engineering principle applies: the simpler any system is, the fewer number of moving parts, the more efficient and effective it will be.)
I agree, but maybe they don't want to. For better or worse, people are more comfortable working with tools they know. The learning curve with Propper is far lower than that of the "official" tools - you use virtually the same procedures you already know from Hammer. Propper was originally meant to be a map optimization tool, but people have used it to make some very nice models.
 
==Bug reports==
* The EP1 version of the tool won't create the folders it needs, and will quit if you don't make them beforehand. So make them beforehand.
* If you run the tool on a map with no brushes (displacements don't count), Propper will crash. This is an obscure bug from vbsp and I haven't managed to track it down yet. If you encounter this bug, just stick a nodraw, func_detailed brush in the map.
* If you use the propper_skins entity, but only specify one alternate skin, the skin function will not work correctly. Specify two or more alternate skins to get it to work.


==Tips/Caveats==
==Tips/Caveats==
* You can use visgroups to hide brushes; They will be ignored by Propper.
*If certain invisible textures are used (eg. clip, nodraw, sky), on a face, that face will be erased. This can lower the final poly count of the model by using nodraw on any face that the player won't see.
* If you make any brushes func_detail, they will be non-solid in the finished prop. Using any other entity seems to cause problems, however.
*LOD entities are not yet sorted by distance. So always make the closest LOD FIRST, and so on. Otherwise, they won't switch right.
* If you use certain invisible textures (eg. clip, nodraw, sky), on a face, that face will be erased. You can lower the final poly count of your model by using nodraw on any face that the player won't see.
*It is now possible to construct a physical shape for the model. Make it a func_brush, and point the propper_model to it.
* A good way to work is to make your visible model a func_detail, and then make a very simple collision model on top of that, out of nodraw brushes.
*Hammer has a one-unit grid limit while working. However, it is possible to make a model at a larger scale--say, 16:1--and then tell Propper to scale it down to the correct size. That would allow the creation of model objects as small as 1/16 inch. (It is also possible to resize brushes within {{hammer|4.1}} itself, as always.)
* Hammer limits you to its one-unit grid while you work. However, you can make your model at a larger scale--say, 16:1--and then tell Propper to scale it down to the correct size. That would allow you to model objects as small as 1/16 inch. (You can also resize brushes within Hammer itself, as always.)
*Don't set "materialpath" to the same folder as any of the map textures. The model materials may overwrite the map materials! It's best to follow the convention of putting model textures under "models\"  
* Don't set "materialpath" to the same folder as any of your map textures. The model materials may overwrite your map materials! It's best to follow the convention of putting model textures under "models\"  
*Propper will overwrite files without asking, so make sure there are no files in the selected folders that you don't want to lose.
* Propper will over-write files without asking, so make sure there are no files in your selected folders that you don't want to lose.
 
==Left 4 Dead==
Propper doesn't currently support Left 4 Dead. If you are mapping for L4D, you can try the following:
<ol>
<li> Extract the materials (vmt and vtf files) you want to use from L4D using [[Gibbeds_VPK_Extractor]] and mirror them in an Orange Box game that you own (such as Episode 2).</li>
<li> Run Propper from the Source SDK as normal.</li>
<li> Take the files created by Propper and copy them into your L4D folder.</li>
</ol>
 
==Source Code Patches==
The source code for Propper is available as a patch to Valve's SDK code. (Since Propper is a hacked version of vbsp.exe, I don't want to release the entire code--most of it belongs to Valve).
 
First create a new mod through the Source SDK (either OrangeBox or Ep1). Find the project for vbsp. Visual C++ Express 2008 can compile this project with no problems. If you select the "Release" version, you will create a new vbsp.exe.
 
'''0.23 version patch is available if there is a demand!'''
 
Then download one of my patch files:<br>
[http://crazycarl.hl2sm.com/files/vbsptopropper_b22_OB.patch http://crazycarl.hl2sm.com/files/vbsptopropper_b22_OB.patch] for Orange box, or <br>
[http://crazycarl.hl2sm.com/files/vbsptopropper_b22_EP1.patch http://crazycarl.hl2sm.com/files/vbsptopropper_b22_EP1.patch] for EP1.
 
Follow these instructions for [[Setting up Tortoise SVN to apply a Patch]], substituting the vbsp folder for the game code. Your vbsp source code is now the source code for Propper. Edit and compile it as you wish.
 
==Disclaimer==
This program has been used with some success by community mappers. It's based on vbsp, which we all know and trust not to destroy our PCs. That said, use at your own risk. I claim no responsibility for damage to your computer of games that may occur while using Propper.
 
==External Links==
[http://forums.steampowered.com/forums/showthread.php?t=970412 Steampowered forum thread on Propper]


Some tutorials have been made to help with using Propper.
==External links==
*[https://github.com/tuxxi/propper-2013/releases/tag/1.0 Propper-2013 v1.0 (Recompiled Propper against Source SDK Base 2013.)]
*[http://www.tophattwaffle.com/configuring-propper-for-steampipe/ Configuring Propper for Steam Pipe, TopHATTwaffle]
*[http://www.interlopers.net/forum/viewtopic.php?f=2&t=33085 Interlopers forum thread on Propper]


[http://www.worldofleveldesign.com/forums/viewtopic.php?f=7&t=711 World of Level Design: Propper Tutorial (Part 1 - Basics) – By Oilcake]
;Some tutorials have been made to help with using Propper.
*[http://www.worldofleveldesign.net/forums/showthread.php?448-Propper-Tutorial-The-Basics World of Level Design: Propper Tutorial (Part 1 - Basics) – By Oilcake]
''The above link is no longer valid (404)'' - [[User:KristjanT32|KristjanT32]] ([[User talk:KristjanT32|talk]])


[http://www.youtube.com/watch?v=nyE4BY5ySUg Youtube: Hammer Tutorial #24 Propper by rocketrascal34]
*[http://www.youtube.com/watch?v=nyE4BY5ySUg YouTube: Hammer Tutorial #24 Propper by rocketrascal34]


[http://www.youtube.com/watch?v=Ps5WhmC4xJE Youtube: uber's tutorial series; making a prop_physics from brushes with the Propper tool by UBER069]
==See Also==
* [[Map2Prop]] the [[GoldSrc]] equivalent to Propper.
* [[Propper++]] the {{hammerpp|1}} equivalent to Propper.


{{sdktools|0}}
[[Category:Third Party Tools]]
[[Category:Third Party Tools]]
[[Category:Level Design]]
[[Category:Level Design]]

Latest revision as of 00:14, 30 November 2024

English (en)Русский (ru)中文 (zh)Translate (Translate)

Propper Propper is an edited version of VBSP that outputs a model instead of a BSP file.

Propper allows users to easily create models using Hammer Hammer instead of a typical model-editing software. It keeps texture mapping intact and can auto-generate a physics mesh.

Obsolete-notext.pngDeprecated:If you are using Hammer++ Hammer++, a built-in Propper is now available under Tools > Propper (or Ctrl+ Shift+P), and it serves as a replacement for this tool. It converts the Hammer mesh directly so there is no quality loss in the geometry due to the BSP process.

Features

  • It can create static props, dynamic props, or physics props.
  • Generates a .qc file and automatically compiles the prop for use in-game.
  • Generates a working physics mesh.
  • Automatic material conversion - turns map textures into valid model textures.
  • Distinguishes between regular textures and tool textures, such as nodraw and clip.
  • Respects Hammer smoothing groups or autosmooth.
  • Allows to configure several of the prop's surface, usage, and mesh properties from within Hammer.
  • Displacement support - outputs any displacement surfaces that are created (the end mesh will not be solid).
Confirm:Is it solid or not?

Download

Warning.pngWarning:Some versions of Propper are outdated and no longer work with any games other than the "Source SDK" as described here.

Disclaimer

This program has been used with some success by community mappers. It's based on VBSP, which we all know and trust not to destroy our PCs. That said, use at your own risk. I steal no responsibility for damage to your computer or games that may occur while using Propper.

Directions

Installation

To install Propper-2013, simply extract propper.fgd and propper.exe into the bin folder of the game the tool will be used with.

After installing, the game configuration should be changed a bit. Open Hammer under the game within which Propper was installed, and click Tools, then Options.

Go to the Game Configurations tab, and click the Add button, next to the Game Data files area. Open propper.fgd when prompted (it will be right there if installed correctly). Then click OK or Apply to save the settings. Finally, restart Hammer so the settings take effect.

Hammerjc.jpg

Note.pngNote:The custom folders may need to be created in * c:\propsource\USERNAME\Your_Custom_Model_Folders_Here * in order for Propper to work.

Making A Prop

To use Propper, open the map in Hammer and then turn some brushes into a propper_model entity.

There are several important properties of the propper_model entity:

NameThe name that other entities refer to this entity by.
Origin (X Y Z)The position of this entity's center in the world. The model's origin point defines how it is lit and is how the prop is positioned in a map. For static props, put the origin somewhere that enables easily aligning the prop.
Model NameThe directory and name of the finished model. Relative to <yourmod>/models the model will be created here, inside the "models" folder of the selected mod or game. The .mdl extension is not needed.
Material pathLocation of the model's textures. Relative to <yourmod>/materials. Make sure this folder exists before running! Propper extracts material files from the mod folder or game cache and makes a copy in this location.
ScaleScale the model up or down by this factor.
Surface propertyThe physical properties of the model--affects impact sounds and weight for physics props.
Physics meshPick any brush entity (including this one) to represent the physical shape of the model. Leave this field blank for a non-solid model. If you leave this blank while making a physics prop, Propper will automatically use the propper_model entity for collisions.
MassWeight of the prop in kg. Enter zero or lower to automatically calculate mass.
Concave collisionsUsed to make a concave collision model. If no is selected, the model will be 'shrink-wrapped'.
Smoothing modeDetermines how vertex normals are computed for lighting.
Source folderLocation of source .qc and .smd files. The final directory will be <sourcefolder>/<modelname>. This folder path may be anywhere on the hard drive that is convenient.
Smoothing thresholdIf auto-smooth is enabled, edges flatter than this angle will appear smooth. Pick from 0 to 180.
Snap to HammerEvery vertex will be snapped to the nearest grid point.
Welding thresholdVertices will be snapped together if within this tolerance. A value of 0 is not recommended because there may be visible gaps in the mesh. Larger numbers will merge vertices together, and may be useful for optimizing the model.
Auto-CenterThe model's origin point defines how it is lit and is how the prop is positioned in a map. Auto-center moves the model's origin to the center of its bounding box and is recommended for physics props.
Disable normal mappingThis option removes all bump map info from the converted materials. This is useful when using -StaticPropLighting to light props.
Don't warp displacement texturesIn Hammer, when moving a displacement point, the texture moves with it. If yes is selected, the texture will stay in place.

Compiling

You run Propper just like you would compile a map with vbsp. Pass it the current game directory and your vmf file.


Command

Write propper in the command field. You can browse to the propper executable with the Cmds button.

Important: If propper doesn't start and instead write Running command: cd "", use an absolute path to propper.exe for it to work.


Launch Parameters

-gameThe path to the Game Directory.
-nocompileOptional. Prevents Propper from running studiomdl to compile the props (this makes it a great .smd exporter).
-loggingOptional. Propper will create a .log file with all its output.
-nomaterialsOptional. Prevents Propper from copying and converting material files.
-objOptional. Will cause Propper to output Wavefront OBJ files instead of SMD files. Useful for exporting geometry to other 3D tools.
<vmf name>The name of the vmf file containing the props. must come last

Propper can be run from within Hammer. Just create a new Run configuration and run Propper instead of VBSP.

Running propper.gif

Important: There must be no extra spaces or lines in the parameters box. Propper may refuse to run if anything comes after $file.

Run Propper. For each propper_model entity there is in the map, it should create a new model. Hammer may have to be restarted to see the new models.

Additional options

There are a number of optional entities you can use to configure each prop. They all contain the following property:

Model to apply toPick a propper_model entity for this property to apply to.

This determines which of your models will be affected by the entity. For example, if you have a propper_model entity called myModel1, any of the following entities should use myModel1 here.

  • propper_physics: If this entity is used, Propper will configure your model as a physics prop.

See Prop data for documentation on the following.


Origin (X Y Z)The position of this entity's center in the world. Rotating entities typically rotate around their origin. (not used by propper)
Health presetDictates how strong the prop is vs. different weapons.
HealthOverrides the prop's health. Setting this to 0 will make the prop unbreakable. -1 will use the default value from "Health preset"(recommended).
FlammableWill it burn? Picking this enables the 'ignite' options.
Ignite at half-healthJust like those barrels in HL2.
Ignite from explosionsWon't break right away if something explodes near it, but will ignite.
Explode damageDamage to do when breaking
Explode radiusRadius of explosion
GibsGeneric shards to spawn when the prop breaks
Gib countHow many gibs?
Gib skinWhich skin to use on the gib models, if applicable.
  • propper_skins: Propper can create alternate skins by replacing a texture that is on the prop. If multiple textures on the model are necessary, this entity can be used more than once.
  • NOTE: There is a limit of textures on any one model. Both the model and extra skins should not have more than 32 textures. This does not include the tooltextures.

Propper.31 has lifted the limit of textures.

MaterialPick a texture that's present in the original model. This will be skin 0.
Skin(1-14)This texture will replace the original when picking skin #.
  • propper_attachments: Add attachment points to a model (for cables and particles)
  • propper_cables: Add ropes/cables to dynamic models!
  • propper_particles: Attach particle emitters to dynamic models (2007 engine and later only)
  • propper_physgun_interactions: Add custom behavior to physics props--eg. stick to walls, paint splatter, impale enemies
  • propper_gibs: Pick custom physics models to use as gibs when the prop breaks
  • propper_lod: A brush entity that can be used to create low-poly versions of the model.
  • propper_bodygroup : Bodygroups allows swaps between parts of a mesh. For example, the model could have a door with several different knobs and allow the mapper to pick one.

Steampipe / Source 2013 Source 2013 Update

With Valve's new Steampipe content system, all Valve games reside in the "common" folder, instead of a "[username]" one. Now, as a stopgap, mappers no longer access Hammer through the SourceSDK tool (so do not download it). Instead, go into your game's bin folder and double-click "Hammer.bat" to access Hammer (and the same for some other tools). (For example, to access Hammer for Counter-Strike: Source Counter-Strike: Source go to 🖿C:\Program Files (x86)\Steam\SteamApps\common\Counter-Strike Source\bin, and find "Hammer.bat".)

Reported Bugs

  • An instance was found where textures were being applied incorrectly and to the wrong faces.
  • If materials are used that are in the root materials\ folder, Propper will try and convert the material for every face on which it appears.
  • The 2007/2009 versions no longer create folders when saving source (smd and qc) files.
  • When propper_model x,y,z is set it will reset to center point when model is move and/or saved then reopened. Note: using spaces between x y z(0 0 0) will save.
  • When multiple models are made from one file the first and last model will have their textures but in-between models will have no textures.
  • Propper sometimes may not run because of what you have in <yourmod>/custom folder. Try clearing it if you have this issue.
  • In Hammer for CSGO SDK, adding propper.gfd to hammer will crash the editor after loading a normal map. A simple fix will be removing @include "base.fgd" and creating the missing classes manually.
  • Propper is incompatible with Garry's Mod's updated studiomdl. You can get around this by replacing Garry's Mod's studiomdl.exe with studiomdl.exe from Half-Life 2 or Counter-Strike: Source (or another game) or by running propper on a different game.
  • Propper does not read Garry's Mod's 🖿mount.cfg
  • Generated props with prop_static lightmaps will show up black.
  • Running Propper on a .vmf that exceeds the max brushsides limit will prevent the program from running, and no error will be reported. This can be easily bypassed by selecting anything you want to turn into a model and pressing Ctrl + H to quickhide everything else. (Ctrl + U to bring everything back afterwards.)

Using Propper with specific games

Left 4 Dead seriesLeft 4 Dead series Left 4 Dead series, Alien Swarm Alien Swarm, and Portal 2 Portal 2

Propper doesn't currently work with any SDK newer than the Orange Box-era SDK. If mapping for these games, try the following:

  1. Extract the materials (VMT and VTF files) that will be used from the post-Orange-Box game using GCFScape and mirror them in an Orange Box game (Such as Episode 2, or Portal Portal).
  2. Run Propper from the Source SDK as normal.
  3. Take the files created by Propper and copy them into the appropriate folder in the Game.

This process does work when using Propper with Alien Swarm.

Counter-Strike: Global Offensive Counter-Strike: Global Offensive SDK

Tip.pngTip: There is a CS:GO Propper package available for download with set up /usage explanation .pdf It is advised to use this version of propper with CS GO SDK

Propper can be used with the CS:GO SDK. The installation process is similar to other Source games. Source SDK will also be necessary!

  1. Install the Source SDK Base 2013 Multiplayer tool
  2. Extract the csgo materials folder and move it into SteamApps\common\Counter-Strike Global Offensive\
  3. Move the Propper files into Source SDK Base 2013 Dedicated Server\bin
  4. In the Run Map menu, create a new configuration and select "Executable" while pressing the cmds button
  5. Navigate to Source SDK Base 2013 Dedicated Server\bin and select propper.exe
  6. Add the normal parameters

If getting these errors while compiling a model and/or the converted props textures are wrongly scaled etc.:

WARNING: *** Encountered VTF file with an invalid minor version!
WARNING: *** Encountered VTF file with an invalid full header!

This is caused by newer VTF formats, 7.5 is standard for cs:go. Converting the used textures to an older format, like 7.2, resolves this. Supposedly the ep1 propper.exe does not suffer this issue, and might therefore be used instead.

Using Propper With Displacements

  • If the tool is run on a map with no brushes (displacements don't count), Propper will crash. Thus, if making a model solely from displacements, place a normal (non-displacement) brush somewhere in the vmf file. This is an obscure bug from VBSP that hasn't been tracked down yet.

FAQ

I get this error when I run propper

Can't load c:\program files (x86)\steam\steamapps\xxxxxxxxxxxx\sourcesdk\bin\orangebox\bin\filesystem_steam.dll.--VFileSystem017

This is due to using a version of Propper compiled against an outdated engine version. The latest official version created by the original author no longer works after Valve's SteamPipe update. To fix this error, download the latest version of Propper compiled for Source SDK Base 2013.

I keep getting an error like this:

Error opening d:\program files\steam\steamapps\blah\mymap

.vmf: File d:\program files\steam\steamapps\blah\mymap

.vmf, line 1: Invalid argument.

This happens when you have a line break or other white space in the parameters box of Hammer. Don't copy-paste the parameters in there. Type it in.

I can't find these prefabs I've heard about. Where are they?
Propper no longer includes any prefabs for the config entities. You should use the entity tool and find propper_options in the list of entities.

My prop's collisions are wrong. It's solid where it shouldn't be.
There are some cases where two brushes get combined into one big collision piece. Try to avoid making brushes overlap and it should not be a problem.

My prop's collisions are in the wrong place.
If your useing a func_brush to show propper where to make the collisions, you will need to set the origin of the func_brush in the same place as your propper_model. Secondly make sure your func_brush entity (your collision entity) has the right origin set, even if the .vmf shows a proper fit, the collision brush may still shift during compile.

I made a large building into a model and the lighting is not as good as a brush model. What gives?
Models in Source use rather simple vertex lighting, whereas brushes get radiosity lightmaps. What that means in simple terms is your map gets nice soft shadows and bounced light, but props don't. Buildings just look better when they're made from brushes.

In some cases, you can get better lighting on your props by enabling per-vertex lighting when you compile your map. In the command line of vrad, include -StaticPropLighting to enable that feature. Models that use normal mapping aren't compatible with per-vertex lighting, so use the "Disable normal mapping" option when you use Propper.

Propper quits with an error saying it can't open such-and-such file.
Be sure that you have permission to write to that folder, that it's not write-protected, and that you have entered a valid folder.

Why would I want to make a prop anyway?
It's also not uncommon for mappers to run into the brush/face/plane limits for a very large or detailed map. Props let you add detail to your map without pushing this limit. If a feature is used several times in a map, making it a prop will reduce the size of the .bsp and the system memory needed to run the map.

Models can be smaller and more precise than the stuff you make in Hammer. Plus there is the fun stuff Propper lets you do with physics models.

Hammer's a mapping tool! People who want to make models should learn a real modeling program like Blender or XSI.
I agree, but maybe they don't want to. For better or worse, people are more comfortable working with tools they know. The learning curve with Propper is far lower than that of the "official" tools - you use virtually the same procedures you already know from Hammer. Propper was originally meant to be a map optimization tool, but people have used it to make some very nice models.

Tips/Caveats

  • If certain invisible textures are used (eg. clip, nodraw, sky), on a face, that face will be erased. This can lower the final poly count of the model by using nodraw on any face that the player won't see.
  • LOD entities are not yet sorted by distance. So always make the closest LOD FIRST, and so on. Otherwise, they won't switch right.
  • It is now possible to construct a physical shape for the model. Make it a func_brush, and point the propper_model to it.
  • Hammer has a one-unit grid limit while working. However, it is possible to make a model at a larger scale--say, 16:1--and then tell Propper to scale it down to the correct size. That would allow the creation of model objects as small as 1/16 inch. (It is also possible to resize brushes within Hammer Hammer itself, as always.)
  • Don't set "materialpath" to the same folder as any of the map textures. The model materials may overwrite the map materials! It's best to follow the convention of putting model textures under "models\"
  • Propper will overwrite files without asking, so make sure there are no files in the selected folders that you don't want to lose.

External links

Some tutorials have been made to help with using Propper.

The above link is no longer valid (404) - KristjanT32 (talk)

See Also