Acceptable modern r_speeds? Created 8 years ago2015-06-11 08:26:30 UTC by Silvertongue Silvertongue

Created 8 years ago2015-06-11 08:26:30 UTC by Silvertongue Silvertongue

Posted 8 years ago2015-06-11 08:31:04 UTC Post #325884
Hullo again chaps.

I've started work on a Half-Life mod (because what else is there to do in 2015?) and I'm worried somewhat about optimisation. Of course, I've tried to carry over techniques from Source where applicable (func_wall'ing geometry to try and make nice neat visleafs, using hints, applying NULL to textures you can't see) but I'm still inexperienced and unfamiliar with the engine limits, which is why I'm worried about my r_speeds.

The best resource I can find on r_speeds is Andy's tutorial (http://twhl.info/tutorial.php?id=38), but while it goes into excellent depth on the subject, there's no escaping the fact that it's more than twelve years old and any references to performance measures are probably woefully outdated. My wpoly counts currently hover around 2000, peaking at around 3500 in specific locations, and while this ought to be disastrous, it hasn't put a dent in my constant 100+ framerate. Should I be concerned anyway for accessibility's sake?

(Note that this part of the mod has few to no model entities, and hence epoly is regularly 0)
Posted 8 years ago2015-06-11 08:41:00 UTC Post #325885
Id say staying around 4k is a good idea.
rufee rufeeSledge fanboy
Posted 8 years ago2015-06-11 14:10:50 UTC Post #325886
Hey Silvertongue!
So I was recently a part of a CS1.6 mapping contest where team TWHL pushed the limits of goldsource - http://twhl.info/vault.php?map=6044 - I was lead optimizer.

Here are some things I've learned:
1) definitely null every face you don't need - Some people have null as a base texture and then put a texture on the seen faces. really, it's up to you. Keep in mind that any face touching the void will be nulled at compile, but it's always good practice.

2) func_illusionary > func_detail / func_wall - Why? - Func_wall and func_detail create clip nodes even if they're set to be non solid. They render the same regardless. And if you have super detailed geometry, just clip over it EXAMPLE. If you have some world geometry that's in an inaccessible area, take parts, and func_illusionary them. Trust me; I've ran the tests, and If you don't believe me, I"ll do some more and share the results.
Behind the func_illusionaries, use a large-scaled texture (Scale: 5-10) to block vis. You could use null, but if you have any visible parts behind your illusionary details, you'll get the hall of mirrors.

3) hint brushes are your friend - At one point during the level development, we were hitting around ~10K wpolys (Almost the entire map was rendered at points even thought the player couldn't 'see' it. Don't quote me on the exact w_poly count though, it's been a while and I don't remember the exact number) I put a hint brush across every major room threshold and even split large vertical rooms in half or thirds. I managed to take the W_polys down about 60%!

4) Modern computers can handle GldSrc easily but I'd recommend blocking out rooms first and then detailing inward from there. The worst thing is when you have an insanely detailed map and you have to go back and clean it up. Mapping clean from the start will save you time down the road. "If you have time to go back and fix something, you have time to do it right the first time" - Probably every dad ever.
Tetsu0 Tetsu0Positive Chaos
Posted 8 years ago2015-06-11 16:26:10 UTC Post #325890
Cheers, Tetsu0, this is way more comprehensive than I was expecting! I didn't even know until your second point that clip nodes added to the processing cost simply by existing. Of course, it's good practice to func_illusionary small stuff just to stop the player getting snagged on it, but for inaccessible geometry I was still using func_wall.

In truth, nothing I'm doing is going to be 'insanely detailed' (actually I'll just be happy if it's not ugly) and probably wouldn't be in this mess at all if I wasn't shamefully sloppy earlier on, but I'm grateful for the help all the same.
Posted 8 years ago2015-06-11 16:46:56 UTC Post #325891
For inaccessible areas, you could cover the entire area with a clip brush. It'll cut your compile time down too.

I'm not sure about clipnodes' effect on actual gameplay, but I know the compiler throws a fit if you have too many. func_illusionaries drastically cut down on clipnodes.
Tetsu0 Tetsu0Positive Chaos
Posted 8 years ago2015-06-11 20:30:11 UTC Post #325901
You still want to Func_wall or Func_Illusionary anything that could cause unnecessary face splitting.
Posted 8 years ago2015-06-11 23:52:54 UTC Post #325908
We have areas bordering 7000wpoly in The Core. It runs perfectly on everything I've played it on including my ex's budget laptop, so I'm really not overly concerned. I wouldn't feel comfortable going much higher than that, though.
Archie ArchieGoodbye Moonmen
Posted 8 years ago2015-06-12 03:42:34 UTC Post #325909
Nuts. I thought I was doing poorly by pushing 1-2000 in my TWHL Tower entry. I've been out of the Goldsource game for too long!
Strider StriderTuned to a dead channel.
Posted 8 years ago2015-06-12 04:17:42 UTC Post #325910
It doesn't run on anything I've played it on. Oh wait, I haven't played it yet.
You must be logged in to post a response.