Talk:Material surface properties

From Valve Developer Community
Jump to navigation Jump to search

Is it possible to add one's own $surfaceprop to the game? My coder and I have been looking but with little succes. We wanted to add some more types of metal to our mod. Any suggestions? --18px-ri.png-Jimius 12:12, 4 Jul 2005 (PDT)

just add an entry to surfaceproperties.txt. Sorted! MLSTRM 14:45, 21 September 2009 (UTC)

Portal 2 custom textures

I was trying to put in custom textures in portal 2 and when I used a snow $surfaceprop hammer stopped working (portal 2 hammer doesn't have error reports; IT SHOULD; but I think that the code used to read $surfaceprop in portal 2 is different from the orange box so when you use an "invalid" $sufaceprop it stops working when loading the resources at startup, because as soon as I took out the texture in question of the materials folder it worked fine) so is there a way to import the "invalid" $surfaceprops from the orange box or should I compile a list of "valid" $surfaceprops and stick to it

Asphalt

Can't find surfaceprop asphalt for material MARK/BLENDROADCONCRETE001A, using default

Need I say more?--Markboydude 18:47, 20 August 2011 (PDT)

Test Map

I created a test map for a Garry's Mod racing game a while back that contains almost all surface properties available for HL2 in the form of world geometry. I'm wondering if the map would be good to post on the wiki's surface property page so people can see the interactions?

Here's the map on dropbox: gmr_test_surfaceproperty.bsp I also made some of my own documentation. Its on GoogleDrive

The map was never put on the server and thus never used to test the racing game mode like I had planned. It took me a while to make all the .vmf files and put them in the map. I would like it to be public so other people can make use of it. --Bamboy360 12:17, 28 February 2014 (PST)

Jumpfactor

Is there a way to edit the "jumpfactor" of a material in Counter-Strike: Source or Counter-Strike: Global Offensive and have it working upon packing the map? The only way I've gotten this working is through the surfaceproperties_manifest by adding your own per-map surfaceproperties_mapname file. These are placed in the "Custom" folder (Cstrike directory) and once packed, don't seem like they override the game's surfaceproperties_manifest.

You mean solely packed in the bsp with no additional files or plugins anywhere? No. --Sirhephaestus (talk) 00:52, 25 January 2024 (PST)

Any plans on expanding the information on this page?

It would make sense for every surface property to have its information on its own page. Particularly for strange ones like water, or slime. More information can't be bad, right?

It would be good to have more information, but in my opinion most surfaceprops aren't unique enough to feel like they need their own pages. Loudslappingsounds (talk) 01:47, 24 December 2020 (PST)

Where do tf2's surface properties go?

I was looking into the surface properties manifest text file when I found a couple of undocumented surfaceprops, there being grenade_napalm, wrecking_ball, demoman_grenade, scout_baseball, scout_ornament, ball_bouncy, passtime_ball, and snow (good chance that last one is modified to fit tf2's physics in some way). Where should they go accordingly? --Whatausername64 (talk) 18:31, 9 June 2022 (PDT)

$surfaceprop rubber sound issues

Just an FYI, the rubber $surfaceprop has sound clipping and should not ever be used, at least in Counter-Strike: Source.

VMTs with no $surfaceprop will have issues

Not including a $surfaceprop in a vmt for brushes will cause the material to take on the sound (and perhaps the other properties as well) of whatever the last material you interacted with that did have a $surfaceprop defined. Tested in Counter-Strike: Source --Sirhephaestus (talk) 18:56, 29 May 2024 (PDT)

"Availability" section

I feel like we should author the Availability section a bit, or maybe reformat the whole list even.
Some surfaceprops are only in one game, and some are added in one game, used in the next, but not ported to the game after. For example "Watermelon" is in HL2, it is listed in the L4D2 surfaceprop but commented out, and i think csgo had it again.
So since this list is pretty odd by now, we should do something, i think. I had three ideas on how we could make this easier:

  • Do it like Tool_textures_(Source) where we got a box of "base HL2 surfaceprops" and then below another box for game specific ones where we could add stuff like the l4d2 melee weapon surfaceprops, or the ep2 jalopy tire.
  • Add the "in" and "not" templates to every "availability" box, but i think this might expand the list vertically quite a lot.
  • Make two new columns, one for "in" and one for "not in" in which we just add the game logo template like this:
Surfaceprop Description In Not in
Watermelon For the fruit. Half-Life 2 Left 4 Dead 2

Any ideas?
--MrFunreal (talk) 12:27, 3 January 2025 (PST)

Good ideas. I find the last one interesting because if both columns "in" and "not in" are empty, you can tell that one should find out theirselves because no one has investigated yet (which isn't communicated at the moment).
I think your first idea with distinct tables could make sense: one table for "since hl2", eventually more "since" tables and one table for the rest? Not sure if that works out but combined with the "(also) in" and "not in" columns, this could become good, not sure.
Apart from that, in the current state I personally find it better if the column "Availability" is on the left (as long as it doesn't get wider than "in all games since X"), such that the widest column "Description" is on the right.
Right, it's complicated. But can we make it "better" by splitting by game? I don't know. I think its current sorting by material categories is ok so if we change that ground up, it should become convincingly better.
Since people come here to find legal values for the $surfaceprop VMT material property for their game (they do, don't they?), a per-game overview makes sense. I'm asking myself whether one table with all games' surface properties and an availability column (like the current one) is sufficient or whether per-game subpages with one unmistakable table could also come into question (for example Material surface properties/Half-Life 2 containing only hl2 surfaceprops).
I once wrote a small program to generate the List of CS:GO Surface Types. The table I made for that page is of course very wide (well, in case we go for the subpages I mentioned above, such tables could in fact be good) but maybe I can reuse the program to generate a different table for our purpose, combining multiple games? I would just have to find out what we want to have in that table.
--popcorn (talk) 16:11, 3 January 2025 (PST)
That's one WIDE list. Personally i'd use this page when making models or materials and can't remember what surfaceprops even exist. So all the data is not that relevant for those moments.
If i had my way, i would personally go with one list that has the "in" and "not in" columns. Because i think if we had a list for each and every game this page will become very tall to scroll through, and most lists will be 90% filled with the same basic surfaceprops. And making a list for "only" the special things that other games have, like "strongmanbell" in l4d2 and csgo would be odd, cause that's a custom thing two games have.
I do like your point of "if the logo is missing, its because nobody bothered to check yet", which would be like an implied "Todo, check other games".
But i got a feeling that if you add the "availability" to the very left, then any "not in" might become very wide. And a "Since" is also not really that useful, Because who's to say that the next game actually uses it. Like jalopytire. Introduced in hl2ep2, but only in ep2.
I own all the HL2 games, css/csgo, l4d1/2 and some more. I wouldn't mind scraping through all the surfaceprops and authoring the list for all the games i have with the one large table.
Preferably this type of table, because if you look at it in "edit mode" it looks clean and easy to write in. (Colors are just copied from somewhere. We can even color boxes inside the table like the current one)

Should i give it a go and for now make the separate lists for each of the Special, Concrete/Rock, Paper... surfaceprops, spanning all games at once, with the "in" and "not in" to the right? It can easily be reordered afterwards if we change our minds.
--MrFunreal (talk) 05:47, 7 January 2025 (PST)

Yes, sure, go ahead. Only suggestion I'd have is that the name of the $surfaceprop should go to the left because as you mentioned, people want to know what materials exist and I would expect the main key of the row to be in the first, not in the third column.
OT: Um... "clean and easy to write in"? Compared to regular table wikisyntax? And if I'm noticing this right, the indented {{table}} seems to break indentation below it... Why not class=wikitable (or standard-table)? I know, your example may look cooler, but this template nesting is not nice to maintain, defeats the purpose of tables in wikisyntax, and – if only there was a corresponding table class creating the same look – would be unnecessary template load. Maybe request a new css table class?
--popcorn (talk) 07:57, 7 January 2025 (PST)
Ah, i see. The table for some reason doesn't "un-indent" below. But the tables on this page won't be indented to begin with. shrug. I'll do the default boring table then.
--MrFunreal (talk) 09:12, 7 January 2025 (PST)
Page is updated. Couldn't check csgo myself, and i felt like downloading it once over when its already abandoned seemed like a waste of disk space for me :s
--MrFunreal (talk) 13:43, 7 January 2025 (PST)
Did that. I'm realizing that there are a lot of materials appearing in just one game. How about moving them to an own table per game? Each of those tables will probably not be that long, so they (hopefully) won't need those subcategories "Manufactured" etc. Yes or yes? Oh and I find the $surfaceprop names should be <code>, shouldn't they?
--popcorn (talk) 08:06, 8 January 2025 (PST)
I feel like having one page for it would be best. Perhaps we could make one list of all base surfaceprops that almost every game has, wit hthe "not in" column for all exceptions. And then a second one that's not usually shared across all games. Such as everything in surfaceproperties_hl2, _l4d2.txt and so on. in their own separate list?
My issue i am having with this idea is that i thing having a single page and a single list would be easier to find all the data, since you could do a Ctrl+F search for what you're seeking for all games. So thag mod devs could see what other game may have what they want and copy some data back and forth.
Oh, also, is the "in" field in "Metal_barrel" supposed to have that text? I think that should have been in "blockbullets"
Actually, Why don't we make one list for just the base named something like "Shared (scripts/surfaceproperties.txt)", and then a second one for new additions for all the other games like l4d2, csgo and "Hl2 only" like the strider. That should make it a little easier i think.
--MrFunreal (talk) 07:48, 10 January 2025 (PST)
I think your last paragraph is exactly what I meant. :D Sorry, I didn't mean separate pages anymore, just multiple additional per-game tables on this page. I just took the liberty to edit the page that way. Opinions?
Yes and no. The metal_barrel in csgo does block bullets almost exactly like blockbullets (see List of CS:GO Surface Types, sort by smallest 'damagemodifier' and 'penetrationmodifier'). Though I accidentally put that sentence in the wrong column, thanks!
--popcorn (talk) 12:05, 10 January 2025 (PST)
I'm all for that idea. But it might get a little awkward. Some games add new surfaceprops to the "shared" surfaceproperties.txt AND to the game's own script. TF2 for example added "wasabiball" to the base surfaceproperties.txt. So some careful wording should be considered.
But then how many lists are we going to have? One for each and every game is too many, unless its perhaps a super special material that really only that one single game has. Like the csgo list. But Some are shared between games like strongmanbell in csgo and l4d2.
So that would be four lists now. One for "Base", a second for "surfaceprops in other games", a third one for "exists in ONLY this game" like that csgo list, and then the "third party" list. Theoretically we could even remove or hide the "third party" list via a dropdown cause its not officially valve, but some people do use Gmod and might want their custom special surfaceprops. Not so sure about Infra and BMS.
--MrFunreal (talk) 12:39, 10 January 2025 (PST)
Okay so now things got interestingly confusing. The big "Base" list has many surfaceprops that only some games have. So if i was going to look for l4d2 surfaceprops, i will need to look for all the ones in the base with the l4d2 logo in it and also check the "l4d2 only" list . I think by now it would be easier to list all of those materials in each list for the specific games. That way l4d2 and csgo, ect. will list the same material, yes, but you can easily tell what surface properties this one game has in addition to all the base. Would be way easier to monitor just a single list of custom surfaceprops. So i'm gonna do that and reword it to be as simple as possible, cause checking multiple lists just for materials that one game has is frustrating.
--MrFunreal (talk) 04:35, 11 January 2025 (PST)
Edit: Dear god, i forgot the manifests. Some games ship with the hl2 specific file. Some still use it, others do not. So i will simply go through the entire list once over top to bottom and figure out which games do use the leftovers. What a nightmare.
--MrFunreal (talk) 05:48, 11 January 2025 (PST)
There, done. I went through all the surfaceproperty scripts of all games i had, checked which scripts are used by the manifests that are being used, and mentioned which games ship it, whether its used or not.
Just for information, i did this checking which surfacepropery is used according to the manifest, merged all scripts of a game to one, used macros to delete everything but surfaceprop name, and then compared the list of all surface properties of every game to HL2. This allowed me to easily see which game added, or removed surfaceproperties.
And now i don't wanna see these things ever again.
--MrFunreal (talk) 08:25, 11 January 2025 (PST)
I like it! Good work! However, I now found some $surfaceprops missing for csgo when taking the sum of the base table plus csgo's. I added them.
--popcorn (talk) 11:30, 12 January 2025 (PST)