Static Prop Combine: how do I do that for TF2 maps, and is the VDC lying again?

D

Deleted member 27649

I've been banging my head against a novelty wall specifically meant for banging my head against for the better part of today.

TL;DR at the end of this thingy.

Ok, so apparently I read somewhere (I can't recall anymore, probably some VDC page) that Source really sucks at drawing lots of different props. Something about draw calls? I'm no graphics programmer.

I have a *lot* of static props, being the same four models spammed a lot. I thought it'd be a good idea to combine them into one, single prop, since they all share the same materials and also would be easier to edit later on. Apparently CSGO's compiler can do that, but not TF2's. :(

I spent a good while trying to find anything about combining static props without it being CSGO. There doesn't seem to be anyone who's interested in doing that at all. Or maybe there is one on this very site of TF2Maps!, but no search engine has found that supposed thread.

I found this one thingy called "TeamSpen's Hammer Addons" I've never seen mentioned anywhere besides a handful of VDC pages, for some reason? Supposedly it can do a lot of cool thingies like static prop combining. Unfortunately, Issue #137: Can't parse TF2 static prop format. It just crashes when there are any props on the map at all. Also, GCFSCape hung when trying to open the generated map file, even when it didn't crash.

I tried using CSGO's VBPS. I probably did it the stupidiest way possible, just copying all TF2 assets into the darn naked root files of the game instead of mounting them separately (even because for some reason it wouldn't mount...), and then opening it with CSGO's Hammer++. When I opened my VMF that had only the props and some basic stuff to hopefully have the compilers not yell at me, all the brush textures started losing their own minds, too. When I ran the compiler...!!! It immediately prompted that it finished without actually outputting anything at all, besides telling me that it seemed to make some half-hearted attempt at running VBSP. I then tried running CSGO's VBSP from within TF2's H++. It should be obvious that didn't work either.

So I gave up on the easier ways. I was so determined to combine them static props that I was willing to open up Blender with some rubbish-y plugins for Source rubbish-ies. ...I cannot find any article about how to do that. Probably trivial for someone who knows that software, sure, but blimey! Why is it so hard to do something so simple? Come to think of it, why do level designers have to do that manually...

And at the 'end' of all this, I still don't even know if the Valve Developer Community is *lying* again. Like saying overlays are super expensive and should be avoided at all costs!!!!!, or something.

TL;DR: I do not know if I should be trying to combine static prop models at all, but I cannot for the life of me figure out how to do that. I cannot find any resources on that, nor any solutions.

forum folks please don't link me to that one wall of text, please. I've read it quite a few times and indeed have tried to solve the issue myself

UPDATE EDIT: Even within CSGO and entirely within CSGO, it doesn't seem to want anyone doing anything. I followed Mapcore's guide and not only is it a rubbish process, but also it just complains about a "QC path read failure" on the first item of the list, proceeded by not doing any combining. I did an unreasonable amount of troubleshooting and testing and it refuses to work at all. So that option seems to be out of the table, glued and stapled to the floor.
 
Last edited by a moderator:

Crowbar

Spiritual preprocessor
aa
Dec 19, 2015
1,455
1,297
TF2 does not use automatic static prop combining, nor is that technique without serious drawbacks.

The following question is very, very important. Before trying to fix a performance problem, did you verify the presence of one?
 
D

Deleted member 27649

Yes, I do know that TF2 does not do that automatically, that's why I was asking about different methods of doing it, be it automatic or manual.

I can only think of one method of combining props, that is exporting a world brush with dev measure textures with something like Propper, and using it to align the goal prop models in a 3D modelling program. There most definitely is a better way, but no one seems to have written it down, anywhere. At least, it's not findable in any reasonable way. I and everyone outside of your community would appreciate that knowledge being public. EDIT EDIT EDIT: For god's- I'm NOT asking for a fully fledged guide. Don't answer to something I haven't even said.

May I & everyone know what those drawbacks are, anyways? It's also something that I couldn't find, after an unreasonable amount of searches.

I kindof regret putting so much emphasis on performance. Dealing with it was my main goal, and if I do find out that it's a non-issue, I'll be quite thankful! But not sharing knowledge just because I happened to have invalid reasons is not great. Are those drawbacks so bad combining props is an evil coming straight from heck, even with purposes outside of performance? Avoiding limits, convinience, other more niche things?
 
Last edited by a moderator:

fubarFX

The "raw" in "nodraw"
aa
Jun 1, 2009
1,720
1,978
So like, this could be implemented in a pre-compiler, think of it as an other step to be included in compilepal. It was on my radar to make something like that at some point but I'm mostly pursuing other things atm. It's mostly a matter of merging mdl files. Maybe one day who knows.

The drawbacks as I understand them are that if you rely heavily on areaportals and occluders, you can probably imagine that they don't work as effectively with large combined props. However, there might be larger gains to be made from having less drawcalls so who knows. This type of thing can be very situational
 
D

Deleted member 27649

I haven't heard from anyone about it. (though I'm not really a regular anywhere)
I did somewhat recently consider using a Blender VMF importer (lasa01/io_import_vmf) so I could sortof manually do the job in what I'd hope be an easy way. I've recently been doing some Source model authoring in Blender and such, so I'd imagine I wouldn't get lost much... I haven't tried it, though, as I don't have really have the need anymore (and because... weirdness), but I could experiment with it if you want and if it'd help?

I'm imagining it'll be prone to suffer from problematic lighting, problematic culling, problematic shading, file size increase, &c.

(sorry if this thread is actually about something else and I'm misremembering; I am avoiding reading my own old writing because... it's kinda cringe, yo)
 
Last edited by a moderator:

kamuixmod

L1: Registered
Mar 27, 2013
11
0
I think after some recent updates it does seem to work, it's just that i couldn't get it to work. Dunno if i'm using the comp_propcombine_set wrong.

[INFO] mdl_compiler.__enter__(): Found 0 existing models/maps/first_room30halfmethod_smallersize_backup/propcombine/*
[WARNING] propcombine.group_props_ent(): Unused comp_propcombine_set at -2391.94 -3053.99 899.658
[INFO] propcombine.combine(): Combined 530 props into 530 groups (0 this compile):
| - 0 grouped models
| - 0 ineligible
| - 530 failed to combine
|___



Maybe you might know how to properly use it?