Year 2552... The Earth is no longer habitable since year 2401 due to the atmosphere collapse and temperature rise. Human race has been forced to live in the different colonized planets into the Solar System. This was called "The Second Exodus". After the "Enceladus Atmosphere Implementation Program" (EAIP) succeeded in year 2295, Saturn's moon Enceladus turned into the most important human colony into the Solar System altogether with Titan's. After the EAIP implementation, Aperture Laboratories developed their more ambitious testing program, The Enceladus Initiative.

Post tutorial Report RSS Propper Tutorial to use it with Portal2 Authoring Tools (P2AT)

Propper is a modified version of the vbsp.exe (similar to the one we all have into our portal2/bin folder that hammer uses when compile) that outputs a model instead of a .bsp file when compile, but cannot be used with P2 Authoring Tools because it's old, was a modification of an old vbsp.exe and, as there are no more updates since 2011 Jan, it cannot be used directly. But the good news is that we can use it in the old SourceSDK instead and then export the model to Portal2!!

Posted by on - Intermediate Props Modelling

Hey guys!

For those who still don't know what Propper is, I'll just say it's a handy tool for turning a bunch of brushes into a prop static, dynamic or physics.

I got very annoyed that there were no such tutorial about the implementation of this useful tool for the P2AT. It looks like nowadays no mapper seems to be interested in using this program, or never managed to finally succeeded implementing it. I really think it's very useful, and my intention was only to describe the process so anyone any time could find the how-to easier that I did...

In my particular case, I recently reached the max. number of brushes allowed per map (8192) in one of my maps, because as a newbi I do lots of crazy things while mapping :D. As some of you already saw in the pictures of my mappack, I've got many brushes composing my floors and ceilings, but also many brushes for those slanted light supports I use, or some custom squarebeams I built, so it seems that I easily reached that max no. of brushes. Examples:

User Posted Image

User Posted Image

So my usage of this tool is mainly to reduce the number of brushes and to have my own models of the most used supports and stuff I made out of brushes. This tutorial is dedicated to those who don't know modeling or don't have time to learn (like me :D)...

Propper is a modified version of the vbsp.exe (similar to the one we all have into our portal2/bin folder that hammer uses when compile) that outputs a model instead of a .bsp file when compile, but cannot be used with P2 Authoring Tools because it's old, was a modification of an old vbsp.exe and, as there are no more updates since 2011 Jan, it cannot be used directly. But the good news is that we can use it in the old SourceSDK instead and then export the model to Portal2. The only requirement is to own the game Half Life 2 - Episode 1 (well, it can be set up for being used also with Portal (1) or HL2... if anyone needs it, just let me know!).

GETTING STARTED

1. Download the SourceSDK tool from your Steam library > Tools.

2. Then (following a modification of the GameConfig.txt file that Chickenmobile made :thumbup: ), we'll make a txt file named GameConfig.txt with the following code inside and place it into [yoursteamaccountname]/SourceSDK/bin/Source2007/bin folder:

code:
"Configs"
    {
       "Games"
       {
          "Half-Life 2: Episode One"
          {
             "GameDir"      "c:\program files (x86)\steam\steamapps\josepezdj\half-life 2 episode one\episodic"
             "hammer"
             {
                "GameData0"      "c:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\halflife2.fgd"
                "GameData1"      "c:\program files (x86)\steam\steamapps\josepezdj\SourceSDK\bin\source2007\bin\propper.fgd"
                "TextureFormat"      "5"
                "MapFormat"      "4"
                "DefaultTextureScale"      "0.250000"
                "DefaultLightmapScale"      "16"
                "GameExe"      "C:\program files (x86)\steam\steamapps\josepezdj\half-life 2 episode one\hl2.exe"
                "DefaultSolidEntity"      "func_detail"
                "DefaultPointEntity"      "info_player_start"
                "BSP"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\vbsp.exe"
                "Vis"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\vvis.exe"
                "Light"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\vrad.exe"
                "GameExeDir"      "c:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\half-life 2 episode one"
                "MapDir"      "c:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\sourcesdk_content\episodic\mapsrc"
                "BSPDir"      "C:\program files (x86)\steam\steamapps\josepezdj\half-life 2 episode one\episodic\maps"
                "CordonTexture"      "tools\toolsskybox"
                "MaterialExcludeCount"      "0"
             }
          }
          "Half-Life 2: Episode Two"
          {
             "GameDir"      "C:\program files (x86)\steam\steamapps\josepezdj\half-life 2 episode two\ep2"
             "hammer"
             {
                "GameData0"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\halflife2.fgd"
                "TextureFormat"      "5"
                "MapFormat"      "4"
                "DefaultTextureScale"      "0.250000"
                "DefaultLightmapScale"      "16"
                "GameExe"      "C:\program files (x86)\steam\steamapps\josepezdj\half-life 2 episode two\hl2.exe"
                "DefaultSolidEntity"      "func_detail"
                "DefaultPointEntity"      "info_player_start"
                "BSP"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\vbsp.exe"
                "Vis"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\vvis.exe"
                "Light"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\source2007\bin\vrad.exe"
                "GameExeDir"      "C:\program files (x86)\steam\steamapps\josepezdj\half-life 2 episode two"
                "MapDir"      "C:\program files (x86)\steam\steamapps\josepezdj\sourcesdk\bin\sourcesdk_content\ep2\mapsrc"
                "BSPDir"      "C:\program files (x86)\steam\steamapps\josepezdj\half-life 2 episode two\ep2\maps"
                "CordonTexture"      "tools\toolsskybox"
                "MaterialExcludeCount"      "0"
             }
          }
       }
       "SDKVersion"      "3"
    }


Obviously, each of you should modify the paths to point to where your SourceSDK is located, maybe they're just the same paths only changing the steam account name josepezdj to yours...

3. Download Propper from moddb. You'll only need 2 files from all included in the .zip file (propper_0.3.zip), the ones located into \sourcesdk\bin\source2007\bin\, which are:

- propper.exe
- propper.fgd

(extract them and place them in [yoursteamaccountname]/SourceSDK/bin/Source2007/bin)

4. Launch SourceSDK and in the bottom part select "Source2007" engine version and the game HL2-Ep1:

User Posted Image

5. Then launch Hammer editor and press F9 (Compile) and set the following:

- In the "Normal Mode" check the "Don't run the game after compile" option at the bottom part of the window and then click "Expert..."
- In the "Expert Mode" hit the "New" button. We'll add a new compile mode that we'll name "Propper" with the following settings:
· Command: propper
· Parameters: -game $gamedir $path\$file


Like so:
User Posted Image

6. Download GUIStudioMDL and place the file GUIStudioMDL.exe preferrably into Half Life 2 Episode One/episodic/bin folder. This program will allow us to recompile the model for being used in Portal2. Launch it and set the following params:

- Go to: Config > Set EP1 Tools Path and locate your C:\Program Files (x86)\Steam\steamapps\common\portal 2\bin folder
- Go to: Config > Set Orange Box Tools Path and locate your C:\Program Files (x86)\Steam\steamapps\common\portal 2\bin folder
- In the main window, middle height, locate Target Mod or “GameInfo” Path and click the "Add" button and locate your C:\Program Files (x86)\Steam\steamapps\common\portal 2\portal2\gameinfo.txt file.

User Posted Image

That should be all for having everything set up correctly :D

STEP BY STEP

These are the basic points to follow for turning your group of brushes into a prop_static for example:

1. Make your object out of brushes using the hammer of Portal2 Authoring Tools and save it alone as a .vmf file. When you're finished close the authoring tools.

2. Now you should place the textures used to make your brushes into this folder:

[youraccountname]/Half Life 2 Episode One/episodic/materials

Beware of placing them right into their respective folders as in Portal2/materials. For example if your texture is located into a "metal" folder, make another metal folder into episodic/materials folder, ok? Or your could simply edit the paths inside your .vmt files to make them point to the right new folders. Anyway, you'll surely see check-board-like textures in your brushes after opening the .vmf file in SourceSDK. This is because most of Portal2 texture files (.vtf) are version 7.5 while the old SourceSDK uses 7.2 vtf files version mostly (don't really know if also other versions... but version 7.2 will do). We should modify our textures. The easiest way is to edit the vtf files with a hex editor. Simply open the .vtf file, go to the 9th column (this may vary depending on the editor) of the first line (check out that at the right end of this line it says "vtf"), find the number 05 and change it by a 02:

User Posted Image

The other way around would be to export the vtf image as a .jpg image file for example, open it with Paint.Net (for example) and save it as a 7.2 version vtf file, but it's more complex.

Important:

- Make sure you modify the vtf version of the files inside episodic/materials folder, not the original ones into Portal2/materials folder, ok?
- Some of the textures you used for your brushes could be stored into the pak01_dir.vpk storage file (located in Portal2/portal2 folder) instead of in Portal2/materials folder. If so, you should use GFCScape to extract them (I'm sure you'll manage to do this, so I won't explain :D)

3. Launch SourceSDK (remember to select Source2007 engine and HL2-Ep1 game as described above), open the .vmf file you created with the P2AT.

4. Then tie all your brushes to a propper_model entity (yes, now this new entity is available!). Let's see this entity's most important properties:

User Posted Image

- Name (targetname): give a name to your prop (mainly in the case we would like to use its shape for collisions, explained more below).
- Model name: this is important as this will be the name of your model to refer into Portal2!
- Material path: here you select where do you want your model's texture materials to be placed after making the prop. By default they would be placed into episodic/materials/models/props as shown in the image above.
- Surface property: just pick up one of them. this is important for example for determining its mass or the sound it makes when hits or it's hit by any other thing in-game.
- Physics mesh: this is very important and useful as it will determine collisions of our model (see below for a detailed handling)
- Concave collisions: better set it to Yes as it will define better our collisions.
- Source folder: here you have to enter the complete path of your output folder where the model will be placed. Check in the above image for an example... it can be wherever in your computer but you have to create the folder as Propper won't do it for you!
- Snap to hammer grid: better set it to Yes.

5. Now just Compile the .vmf (F9). The result will not be a .bsp. The output is a model, composed by 4 different files:

- modelname.qc
- modelname.smd
- modelname.phy
- modelname.dx90

(all these files will be saved into the path you specified in "Source Folder")

- Also there's another output: the texture/s used for your brushes/new-model that will be placed into the path you specified in Material Path field, normally into episodic/materials/models/props/[nameofyourmodel] folder.

6. It's time to (re)compile the model just created with GUIStudioMDL to be able to use it in Portal2 with P2AT. This is so easy, just launch the program and go to File > Load Qc. Now browse and locate your output modelname.qc file in the location you set in the propper_models in [1]"Source folder"[/i]. Then press "Compile". The result will be that a new prop model has beeen added into your Portal2 models folder (Portal2/Portal2/models/props).

7. The last step is to copy our prop's texture/s folder from episodic/materials/models/props/[nameofyourmodel] and move it to Portal2/materials/models/props. Hammer (P2AT) will look for the new model's textures into that folder with the name of your prop.

COLLISIONS

It's obviously interesting to take care about collisions for our models. Almost all of us have experienced how some stock models haven't got a collision model and it's necessary to create playerclip textured brushes or func_clip_physics brushes...

Well, collisions must be specified into the Physics Mesh properties field of the propper_model entity. There are mainly 2 options:

- If we've got an already "solid" shape, simple and without hollowed parts and such, the simplest way would be to use right our group_of_brushes/proper_model's name as collisions. This will take the shape of our model to determine its collisions. Example:

User Posted Image

- For more complex models, bigger and for example with hollowed parts, it's recommended to make a collision model ourselves. How? by simply making a func_brush made out of several simple brushes textured with the playerclip texture and named. Then we specify that given name into the Physics Mesh field. Example:

User Posted ImageAs the rest of the model will be right under the that white panel, I only wanted the uppermost square-shaped part collisions...

User Posted ImageAs the only really important parts I wanted to have collisions were the uppermost square, I made 4 separate playerclip brushes to have those collisions; it's important to note here that it's recommended to make them separated because otherwise the collision would be a plain square-shaped invisible "panel" (joining the 4 corners) and the player won't be able to get through the model!

Collisions result:

User Posted Image

User Posted Image

That's all. It may look difficult but it's not, believe me, after a first trial you'll see that it's easier than it looks at first sight!

All above is just a simple use of Propper, only to make a prop_static. It's possible as well to make several skins for your prop, or making a prop_dynamic or prop_physics amongst other features that won't be covered here by now :D. Check the additional options for more info.

Hopefully someone else will find this tool the same useful as I do! Please post any doubts, suggestions, corrections, completmentary stuff, etc.

And anjoy this tool! :thumbup:

jose

Post comment Comments
RubyCarbuncle
RubyCarbuncle - - 105 comments

Wow, that's really cool, luckily for me though I don't reach the 8,000+ brush limit when I make my maps. But if I ever do I know what I'll be able to download to fix that. Thanks! :)

Reply Good karma Bad karma+1 vote
josepezdj Author
josepezdj - - 114 comments

Thanks Justin! I hope some could get advantage of this, I am actually.

Reply Good karma+1 vote
ScicoPax
ScicoPax - - 154 comments

Mmm, why you don't make your models in Hammer, compile them in Source SDK, copy them to Portal 2 and use them that way? You only have to convert some textures, it's far more easy than doing this and I haven't had any problems that way.

Reply Good karma Bad karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: