func_wall usage for mappers

Started by NumB
10/08/2008 15:01
Page 1 of 3
NumB10/08/2008 15:01(edited 11/08/2008 13:55)

I'm suggesting 2 add a rule for mappers 2 use original "worldspawn" insted of "func_wall" as more as possible. Why? :

1. Shadows don't give lags - thows all shadows is the mapmodel itself (plus map will look better itself).
2. Clients will have less lags, cuz all objects what aren't "worldspawn" aren't sended 2 client (not like other players) (plus, cuz it all will be only 1 model - clients will have better fps).
3. Servers will have better cpu, cuz they aren't sending all thows objects to all clients each frame (yes, cuz "worldspawn" cannot be changed under any condition - it isn't sended to client - client loads it from .bsp hemself).

P.S. Use "func_wall" only for invinsible objects to avoid shadows.

dEMolite mapper10/08/2008 15:37(edited 10/08/2008 15:38)

Originally posted by NumB
P.S. Use "func_wall" only for invinsible objects to avoid shadows.


wtf? for invisible walls it is better to use the clip texture, it doesn't fps it doesn't create a entity, it will only be add to the bsptree. And also it doesn't create shadows.

Originally posted by NumB
2. Clients will have less lags, cuz all objects what aren't "worldspawn" are sended 2 client (like other players) (plus, cuz it all will be only 1 model - clients will have better fps)


Model != not Worldbrush
Entity != Model
Model != Entity
Worldbrush != Model

The Worldbrush it self isn't a Model its only the bsptree.
So i wouldn't recommend mappers that they shouldn't use func_walls for the stages or for the jumpstones, because there will be some issues.

#1 Issue: It will increase the compile time for mappers(mostly for beginners because of the bad brushwork)
#2 Issue: Without func_walls maps with big rooms will get lowfps because they are now worldbrushes. (It isn't recommend for older machines. Most of the community users have older machines where they get lowfps on maps)

Extranote:
func_walls & func_illusionary can make shadows too
and also it func_walls & func_illusionary are good when the mappers are using them wisely (max 3-5 objects in a func_wall & func_illusionary)

NumB10/08/2008 23:48(edited 10/08/2008 23:58)


wtf? for invisible walls it is better to use the clip texture, it doesn't fps it doesn't create a entity, it will only be add to the bsptree. And also it doesn't create shadows.

dEMolite

I had in mind: use clip (invinsible texture) for func_wall


Model != not Worldbrush
Entity != Model
Model != Entity
Worldbrush != Model

The Worldbrush it self isn't a Model its only the bsptree.
So i wouldn't recommend mappers that they shouldn't use func_walls for the stages or for the jumpstones, because there will be some issues.

#1 Issue: It will increase the compile time for mappers(mostly for beginners because of the bad brushwork)
#2 Issue: Without func_walls maps with big rooms will get lowfps because they are now worldbrushes. (It isn't recommend for older machines. Most of the community users have older machines where they get lowfps on maps)

Extranote:
func_walls & func_illusionary can make shadows too
and also it func_walls & func_illusionary are good when the mappers are using them wisely (max 3-5 objects in a func_wall & func_illusionary)

dEMolite


While creating a map - mby not, but when map is complited and created, worldspawn uses "maps/your_map_name.bsp" model and all other objects use models what are created by map itself and there names are "*1" to "*how_much_non_worldspawn_objects_you_made".

And lower fps are exactly from your non-worldspawn objects like "func_wall", cuz they all are custom objects for the client what are sended and requrie more internet speed and fps, cuz all of them are using diffrent models and can be modified, so client updates them all each frame while original worldspawn cannot be changed even with client-side cheats, becuz it is impossible, cuz that object is loaded to client only while connecting (or shold I say not TO, but ON).

In other words: more worldspawn and less func_wall ends in better internet speed and better as server as client fps.

// adition:

If you are not beliving me, I can create a plugin what will change model/size/solidtype/visibility of any non-worldspawn object and even can create a plugin, what wont send no objects to client and you will see only worldspawn and nothing more, what will make lags lower.


P.S. In onther words: usage of worldspawn is better then func_wall. Any adverage amxx coder who worked with EntityState can prove you wrong. And lets not forget - amxx dosn't do nothing new, it's just hooking/blocking/creating fake events using hl engine itself.

// edit:

/invis plugin what makes water/players invinsible blocks object send to client (in this case they are "func_water" and "player"). And as you see - it realy makes fps better, cuz evrything what you see (including sprites hl engine reformats to models, only sprites are following client view angle).

SchlumPF11/08/2008 02:31(edited 11/08/2008 02:31)

NumB is right ^^
mappers should just use func_*'s whenever they are needed, not for a simple brush which will never change

raver mapper11/08/2008 02:59

Now explain this: http://nuuk.nl/a/func_wall.jpg

Left pilar: func_wall
Right pilar: not tied

dEMolite mapper11/08/2008 04:08

Yep this picture from raver explain the things which i mean. It's all depend on the VIS process during the compile, the pic from raver, also the cylinder can also draw shadows with the righ zhlt settings.


In other words: more worldspawn and less func_wall ends in better internet speed and better as server as client fps.

NumB


Everyone thinks that the maps are now playable with wpolys of 2000-3000 and a high epoly count with around 5000-6000epolys. Which isn't really truth.
The HLengine is now 10years old and it was a milestone. Nowdays the pcs are faster but the can't handel such big request with w-& epolys.


/invis plugin what makes water/players invinsible blocks object send to client (in this case they are "func_water" and "player"). And as you see - it realy makes fps better, cuz evrything what you see (including sprites hl engine reformats to models, only sprites are following client view angle).

NumB


func_water that the thing. If the water is invisible also if you can't see the texture moving there wont be a problem and also it is the same with the players. If a player is seeable or is drawn by the engine. The polygones of the players will be counted to the eploys. If there is no player to draw(with a plugin) no epolys will be added.
In this part you are write. But not with the func_walling because it helps alot during the build progress and to make the brushwork alot better for older machines.

SchlumPF11/08/2008 06:23(edited 11/08/2008 06:47)

Originally posted by dEMolite
In this part you are write.

should be right i think :P
could any mapper create a map with 2 rooms amybe? one rooms full with func_walls and one which is just worldspawn?

NumB11/08/2008 13:18(edited 11/08/2008 13:22)

Here you go a plugin, to see how much fps it wold save: source (*.sma) & compiled (*.amxx).

Command: say /nowalls

Belive me, you'll be amaized how much fps it will save if your pc is slow.

// edit:

That picture btw will only take more cpu while compliting map. In game it has absolutely no effect. Or does - map models "*#" wont be precached and analized, so API wont work that hard, while "wordlspawn" is the main model traceline scanner what cannot change and requres as much cpu as I made 255longjumps (NONE!).

raver mapper11/08/2008 13:26

Originally posted by NumB
Here you go a plugin, to see how much fps it wold save: source (*.sma) & compiled (*.amxx).

Command: say /nowalls

Belive me, you'll be amaized how much fps it will save if your pc is slow.

// edit:

That picture btw will only take more cpu while compliting map. In game it has absolutely no effect. Or does - map models "*#" wont be precached and analized, so API wont work that hard, while "wordlspawn" is the main model traceline scanner what cannot change and requres as much cpu as I made 255longjumps (NONE!).


If thats true, hint brushes wont have any effect. But they do ...

NumB11/08/2008 13:44(edited 11/08/2008 13:53)

Let me explain now 2 all of you:

Evrything what we see in cs - models. Including sprites, only sprites are models what follow your view.

What is a worldspawn? - worldspawn is a big solid object what is solided by its model.

Real size of all brush-entities is 64x 64y 64z. There are two ways to set model on an entity. 1 - popular one to simpely set visible model. 2 - advanced one what forcess object size and solidation absolutely repeat the model. All brush entities are working the second way, nomather are solid. If i'll change func_illusion solid type - it will repeat the model also. So now you know, that all objects realy are blocks what just change tipe when model is setted we can discuss more. Your all mapping is just creating the models and keyvalues on random entities. At mapstart all models are precached to client. During that dllfucn what takes only one moment the models are analized and ready 2 be used with entities.

In other words:
Making bounch of func_walls you are forcing engine to analize more entities what takes more cpu then analizing only one worldspawn.

P.S. I shold call this thread "Challange: mappers vs. scriptors Round: Fight for fps". :D

FragGyver mapper11/08/2008 17:23

Worldbrushes do affect the performance ingame. Just check a map with gl_wireframe and check the leaf threads that are created by worldbrushes. Those raise the polycount and will reduce the fps. There is a reason why every mapper is using func_walls cause those wont create those leaf threads.
And not everything is a model ingame, like you said, cause models in hl1 are only build out of e polies, triangular, and world brushes are w polies. When you take a look at r_speed you can see the amount of both. If everything would be a model you would only see e polies.
Maybe we force the engine to analyze more enitities with func_walls, but its better than having too much polies. The task a mappers has is to find the right balance between models, brushes and enitities ;)

Bla^11/08/2008 21:36

Just made a map to test this..
With func_walls:
size: 193kb
cpu usage: 97-100

With world brushes:
size: 192kb
cpu usage: 93-96

tested without metamod, default cs settings and multiple tests

dEMolite mapper11/08/2008 21:41

Bla^ we aren't talking over the cpu usage.
We are talking about the hlengine with the fps issues.

Bla^11/08/2008 21:44(edited 11/08/2008 21:45)

I just proved point number 3 in first post and less cpu usage in serverside will effect server fps...

NumB12/08/2008 04:12(edited 12/08/2008 04:14)

Even if it takes more power 2 load the map - map will use less resurcess while playing! I wold rather connet 5 minutes then play with 14fps or 1000+ ping! Althow it is imp anyway (i'm obout 5 min connection w/o no downloads).

chikito12/08/2008 05:28

numb& schlumPF are right!

dEMolite mapper12/08/2008 07:42

lol NumB & SchlumPF aren't right. If you think without func_wall it takes less cpu makes a stresstest over a week. But without func_wall you will get lowerfps than with func_walls!
And if you don't believe us mappers take the carebear and learn how hlengine is drawing the leafs and how the compiler tools are creating the leafs during the vis compilestage

Bla^12/08/2008 12:21

Demolite... 1 week - 1 hour it doesn't make any diffrence.. With func_walls cpu usage is higher and that's it :)

NumB12/08/2008 12:55(edited 12/08/2008 14:39)

I know, that you mappers are right in mapping, but omg. WorldSpawn will take less cpu than thet func_wall. Making worldspawn insted of func_wall you are just making wordspawn model a bit more bigger, plus you are making ping lower and server+client side fps higher. Yes it takes mby it takes more time for valve hammer 2 complite the map, but omg... Wold you like if all plugins of the world were uber lagy and wold give uber big ping, only cuz scriptors are 2 lazy 2 and want to compile source as fast as possible?

Download that my plugin and enable your anti-virus scan, so your pc will be lagy. Then check how much fps /nowalls will give you. Please, mappers. Even if someway, somehow it all dosn't work by models (and i'm 100% sure its wrong), it will take only max 5 more seconds 2 connect as an exchange for perfect fps and lower ping.

I cannot understand what you dont wanna do it. It's only the source of the map. And already proved, that all good stuf have hard sources.

// edit:

At the end of each server frame there is a scan. It starts from 1 and gows to hl-entity limit. Not much that that scan takes much cpu (it's mby 1380*player_number loop), but if entity was found it forcess the dllfunc to add that entity 2 full pack for specific player (and that dllfunc uses not a little power). Bounch of all thows entities are func_walls what you created. Althow that scan dosnt check wordspawn, cuz it's unchangable object and is loaded only once for each player and server! Not like other objects - they are loaded each frame and scanned each traceline and other map objects scans, when worldspawn is the main object and evrything is scanned by it.

// edit2:

Can anyone make 2 test maps? Absolutely the same, only in one - the way you are already doing it all. And another with as less func_walls as possible?

SchlumPF12/08/2008 14:50(edited 12/08/2008 15:14)

either the engine loops each frame from 1 to glb_maxEntities which is the overall number of used entitys or to 900 + player * 15 which is without adding some startparameter to the server the maximum of entities whichc an be used. these are a lot loops and still if about 500entities are found it sends a lot of data to the player. the data is send in a forward which is called more than a million times within a few secs. this forward works in 2 steps: first step is preparing the data where it can be stopped and in the second step it sends the data where the data can be manipulated. this is a lot data which effects the ping and is one main reason for low fps.
this is why numb and me would like mappers to use less func_* entitys. i never did sth big with vhe... maybe just looking up what entitys are in the climbtimer/healthdoors and how do they work so i never got so deep in it that i really had to think about polys and leafs etc so i could be wrong but you can be wrong too.
as numb already said using less func_walls would cause in lower fps especially for the server and ofc in a lower ping (maybe just 1ms for ppl with dsl2k+ but ppl like me who can just get dsl light which is like dsl 0.3k will fell this better ping)

edit:
nvm... had a talk with eMTi who explained me why this is not possible <3

Page 1 of 3

Please log in to post replies.