PDA

View Full Version : Node builders


Pate
December 3rd, 2001, 02:27 AM
I was browsing sbsoftware's web pages and found this statement about DeePsea:

The fastest node builder on the planet! No other node builder even comes close to DeePBSP!

This got me thinking. Can this possibly be true? ZenNode is lightning-fast, can DeePBSP actually be orders of magnitude faster?

And if it is faster, does it cause holes in Legacy OpenGL mode? Almost all PWADs I have seen say that their nodes have been built with ZenNode and not with DeePBSP.

(I don't have DeePsea, probably not going to get it either, I just got curious.)

Aliotroph?
December 3rd, 2001, 09:27 AM
Hmmm, I'm not sure. I have the shareware version of DeePsea but I've never built any nodes with it. I'll test it later though. I used ZenNode to rebuild Vilecore and it only took a couple minutes. I don't see how a BSP program can be much faster than a couple of minutes for a 32 map wad. I wasn't even using the fastest settings.

I'm also writing a launcher program for ZenNode. It's intended to make it easier to use so mappers will have an better time with all those fancy options. I hope to be done by the end of the week. It's in VB though so it only supports Windoze. I'm not ever sure if ZenNode works on other platforms anyway.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 3rd, 2001, 11:11 AM
It's not easy to make comparisons, since both nodebuilders have various options that vary the time taken.

Large levels are actually required to be able to tell, since small levels have variance that makes time inaccurate. For anything less than 2-3 seconds who cares http://forums.newdoom.com/UBB/smile.gif I did some quick tests with a level familiar to you - Phobia. I disabled visual output for both editors.

For Legacy, DeePbsp should use a depth setting of 32 (the default is 16).

Anyway, using a depth setting of 32, Phobia takes 35 secs with Zennode (-rz no reject) and 14 secs with DeePbsp (32 factor).

For -n3z (the fastest) Zennode takes 6 secs and for DeePbsp (depth=8) it takes 4.8 secs. Don't think these settings will work with legacy though http://forums.newdoom.com/UBB/smile.gif [all run on a PIII800]

The Mummy levels work fine in GL mode with DeePbsp and Phobia works with depth=32. The default of 16 produced a vertex overflow error in Legacy in some areas - a legacy coding issue really.

Btw, Legacy fries my system after running it 2X. The 2nd time it's very slow and will lockup upon exit after a few times (1.32 beta). And when it crashes there's a file problem since it leaves unallocatd clusters. I'd play with it more, but so far too much hassle. Also my sound settings are not restored - oops that's ZDOOM - annoying little bug. I should try this on XP so I don't have to constantly be rebooting http://forums.newdoom.com/UBB/smile.gif

PS: Historically in 1995 DeePbsp was over 10x faster than the current BSP1.2. BSP today is still relatively slow compared to DeePbsp and Zennode.

Pate
December 3rd, 2001, 12:17 PM
Ok, that test seems to indicate that DeePBSP is actually faster. But saying that no other "comes even close" is a bit exaggarated IMHO.

I think that a good test wad would be Doomworld's 10 sector contest wad. It really strains any nodebuilder. Too bad ZenNode needs some source tweaking before it can process that wad. I've emailed Marc about it.

Perhaps a fair test would be some commonly available megawad.(Vilecore, TeamTNT's wads etc) The test should build everything (nodes, reject etc) because that's the normal way to use a nodebuilder. The effect of reject is especially interesting, because ZenNode's documentation emphasizes that it is very fast on reject.

And, as you said, making objective tests is very difficult. Simply the fact that you most likely use different compilers makes a difference.

Aliotroph?
December 3rd, 2001, 12:50 PM
In the end, I don't care too much about speed. DeePBSP and ZenNode are both really fast, but which one usually works better. I see a problem's already been mentioned with ZenNode. When the time is down in the seconds for a level though I don't think speed matters.

Can DeePBSP be run on its own? I know this doesn't work with some editors and their BSP programss.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

Pate
December 3rd, 2001, 01:12 PM
I agree with you Alio. Speed is mostly a non-issue on modern computers. This thing just piqued my interest.

deepteam
December 3rd, 2001, 01:49 PM
Lol - are you being fair or just being .. ? I'd say 2x faster is "not even close" (at settings that work), wouldn't you? Or is a car that goes 200mph the same as one that does 100mph?

If you want to slag something, read the WARM doc. Now there is something. Totally in the dark about other node builders (at the time, DeePbsp blew the socks off of WARM), yet he had the balls to write WARM was the fastest (not bothering to even check is NO excuse).

A reject is NOT node building. The distinction is very clear. On an average level on todays machines PII+, rejects make no difference in speed. ZDOOM, for example, is experimenting with discarding the REJECT as he already did the BLOCKMAP. I'm not to interested in REJECT code, aside from making random settings that let's enemies cruise around you http://forums.newdoom.com/UBB/smile.gif

I looked at the 10 sector PWAD and picked the largest level (MAP26). Lo and behold, that level already used DeePbsp. DeePsea has a nodeviewer that gives you statistics that told me. However, that level is the same size as Phobia, around 13k linedefs. No sweat, took 3.8 (at 8 setting, which is what was used) and 5.4 (at 32).

However, Zennode does NOT work with MAP26. How about that.

For smaller levels, under 2000, hard to time it closely enough. For example, Mumphuq2 (1400 linedefs) takes only 0.6 sec at 32 and 0.3 sec at 8. Timing accuracy is +/- 0.050 secs at best and usually 0.10!

I'm pretty sure DeePbsp will work for ALL of them. Way too much BS written about nodes by people who NEVER actually TRIED it - usually I just ignore http://forums.newdoom.com/UBB/smile.gif

deepteam
December 3rd, 2001, 01:58 PM
DeePbsp is an independent program - however, I never documented the variables - it will always use the default of 8.

Just type DeePbsp input.wad output.wad

It WILL NOT overwrite the same file - a safety issue.

You can't suppress the screen display. All these are variable from DeePsea.

Wrote this initially in 8/94 (read this as I looked up the defaults).

Pate
December 3rd, 2001, 02:19 PM
As I said earlier, ZenNode does not work with 10sector.wad without source code tweaking. After configuring it takes 13.5 seconds to build the nodes of MAP26 on my 1G Athlon. (using the default settings on Linux)

According to this q&d comparison DeePBSP seems to be about 4 times faster. That can be called "not even close".

I would still like to see those reject times. For scientific interest, if nothing else. http://forums.newdoom.com/UBB/wink.gif

deepteam
December 3rd, 2001, 03:55 PM
2X, 4X what's the difference? Or is the 200mph car not much different in speed than the 100mph car? IOW, why can't people just be up front and not try to justify an earlier misspoken statement and be positive for a change?

Already explained my attitude on REJECT. Reread it carefully and you'll see the answer.

Saying zennode does not work with 10sector is hardly informative. It doesn't work with SOME of the levels would be an accurate statement. Even that is lacking in detail. I'm pretty sure it works ok with most - or list the ones it doesn't work with http://forums.newdoom.com/UBB/smile.gif

It was interesting that the one I choose happened to be done by DeePbsp and couldn't be done by Zennode (pure coincidence). And all that after challenging whether DeePbsp could do "10sector". Being open minded and actually trying stuff out .. err.. wait I already said that.

Aliotroph?
December 3rd, 2001, 04:15 PM
What compenent of a wad can stop of BSP program from working? Does it have something to do with having 10 sectors divided up into different areas across the map?

I guess I don't need to try the speed test now. School just takes up too much time. http://forums.newdoom.com/UBB/smilies/cwm32.gif

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 3rd, 2001, 05:46 PM
There is no "component" of a level that can stop a BSP, per se. It's all in the code. Marc choose to do some things that can cause trouble, like building lists http://forums.newdoom.com/UBB/smile.gif

Stphrz
December 3rd, 2001, 07:08 PM
REJECT TABLES ARE IMPORTANT! Try running something like Vrack2 on a P3 500 without a reject table, then run it with a fully optimized one. The difference is obvious. I would hazard a guess that it would enable you to bump up the resolution and still get less slowdown. The difference is even more dramatic with timedemo tests.

Any level that has thousands of sectors and hundreds of monsters should have a reject table. Any author that doesn't compile one is surely a barbarian upstart infidel assrabbit!!!!!

------------------
A squid eating dough in a polyethylene bag is fast and bulbous, got me? -Captain Beefheart

Aliotroph?
December 3rd, 2001, 07:13 PM
Can you explain that in more detail deepteam?

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 3rd, 2001, 08:19 PM
Please no soapbox sermons. Didn't I say "average" size levels, didn't I say PII+? What part of that was confusing?

I defy you to contradict that! So there http://forums.newdoom.com/UBB/smile.gif

PS: It's NOT sectors, but LINEDEFS -- but what do I know.

deepteam
December 3rd, 2001, 08:20 PM
Not much to explain. Look at the Zennode source and you can see for yourself why it gets the error.

The Undertaker
December 3rd, 2001, 08:24 PM
I still think reject matters, no matter how fast the box or small the wad. Until you can pull an easy 2048x1536x32 with all bells and whistles on an "average" size level we're gonna need everything we got to speed things along.

Rellik_jmd
December 3rd, 2001, 08:26 PM
Yup, rejects are still very important as most of the community is on P2 or less machines (as far as my experience and listening to them gripe about their slow assed 'puters).

And hey, imagine trying to build the nodes of something like Phobia with the WADED node builder? LOL, might as well be building VIS tables.

------------------
Member of Team DEIM (http://www.teamdeim.com/)
Webmaster The DOOM Editing Resource (http://www.teamdeim.com/der/)

Stphrz
December 3rd, 2001, 09:00 PM
<BLOCKQUOTE><font size="1" face="Trebuchet MS, Verdana, Arial, Helvetica, serif">quote:</font><hr width="100%" size="1" noshade><font face="Trebuchet MS, Verdana, Arial, Helvetica, serif" size="2">PS: It's NOT sectors, but LINEDEFS -- but what do I know.

</font><hr width="100%" size="1" noshade></BLOCKQUOTE>

You are incorrect sir. A reject table is used as a shortcut to determine what sectors are potentially visible from any particular sector in the map. It's a big two dimensional matrix of 1's and 0's (bit vectors). In fact Carmack himself said the reject table could be used to assist in determining the pvs in Doom levels. That could potentially be very useful in speeding up rendering, especially in GL accelerated ports. A very good reason for it not to be discarded.


P.S. I do fully realize that in the los calculations required in compiling the reject linedefs are the determining factor, but that wasn't what I was talking about.
------------------
A squid eating dough in a polyethylene bag is fast and bulbous, got me? -Captain Beefheart

Aliotroph?
December 3rd, 2001, 10:00 PM
I think I can see how reject could be used for pvs (not that I undestand a lot about pvs). I disagree with throwing it away. What would be the point? It helps more than hinders in most cases.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 3rd, 2001, 10:37 PM
Did I make a random REJECT in DeePbsp or not? Anyone here code one? What is the format of a REJECT table? (sectors*sectors is the size, but what it means is being misinterpreted).

And before you leap off a cliff, don't take comments out of context. The context is WAY BACK THEN. Shit, machines are like 100x FASTER now. You might as well state that an interactive game like DOOM is impossible -- on an 8085 http://forums.newdoom.com/UBB/smile.gif

It MAKES NO DIFFERENCE on average levels. I've tested this many times long ago when this same stuff came up. Freaking simple to test.

Take MAP14 1680 linedefs, the LARGEST stock doom level there is and perhaps "average" in todays world. Play it with and without rejects in stock DOOM.

Can you tell the DIFFERENCE on a P200? And I'm saying a PII+ which is at least 2x the speed of a P200 (PII233) and a PIII800 could care less.

I'm telling you a 14,000 linedef level plays just dandy with a cleared reject on a PIII800 (and sure this will blow on a P200, but that's not what my reference point was).

It's the number of enemies that might do me in on speed- but a REJECT won't help a damn bit if they are all in the SAME room http://forums.newdoom.com/UBB/smile.gif

This reject and nodes stuff comes and goes like rain and snow. Usually I ignore since I know what these things always turn into http://forums.newdoom.com/UBB/smile.gif

And finally, it's an ENEMY thing, NOT a drawing thing. It has NOTHING to do with resolution. The pvs is for ENEMIES, sortof. The Linedefs are used to determine PVS in the reject builder, not sectors per se. So if you put 2 and 2 together you can see the end result. IOW, how does an enemy "see" you with a cleared reject?

So you CAN NOT do a pvs for level display from this (look at the format). You can make an enemy not Attack though - see DeePbsp http://forums.newdoom.com/UBB/smile.gif

However, the BLOCKMAP is a bounding thing that is supposed to speed culling, but even that is actually NOT needed. Randy got rid of it and it runs faster! What has been inferred is just not true. A case of misinterpretation.

You guys need to test more before you post http://forums.newdoom.com/UBB/smile.gif That's where all this started - not bothering to test.

Conclusion - if you make a level around 2000 linedefs, a reject doesn't make much difference except on the slowest machines. Build one if you care about the slackers http://forums.newdoom.com/UBB/smile.gif

Aliotroph?
December 3rd, 2001, 11:03 PM
I think I goofed my wording a bit deepteam. When I was talking about REJECTs being useful I was mostly thinking of my friends with their puny 486s (yeah it's sad). Any assumptions I make about REJECT are only really based on either what I have heard here or have read in docs for programs like ZenNode.

For now I think it should stay because of all the slow systems (unless you have a better idea for speed increases - which you may just have http://forums.newdoom.com/UBB/smile.gif ).

I know enemies make a BIG difference in speed when they're in one area, but so do lines. Phobia won't play on my PC even with the monsters turned off so unless Ebola threw a huge number of other sprites into most of his rooms, I still think Legacy needs faster drawing of some sort.

I don't think anyone meant REJECT could really be used to do pvs for drawing faster in 99.99999% of cases. However I can see why it would be easier to figure those kinds of things out with a REJECT table saying that one sector isn't visible at all from the next one (I know this isn't always true). If I'm just spouting nonsense again, feel free to stop me. http://forums.newdoom.com/UBB/smile.gif

Time to go find out how to pass The Vilecore methinks. http://forums.newdoom.com/UBB/smilies/cwm35.gif

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 3rd, 2001, 11:21 PM
The REJECT does NOT say 1 sector (geometric area as determined by nodes = ssector) is visible from another. How could it? That's determined by LineDefs (via the segs).

The same "sector" (meaning the DOOM SECTOR resource which does NOT define an area) can geometrically be ALL over the map. So what happens when you pack sectors (as in DeePsea) and you get the same geometric area in noncontiguous areas?

It's ALL about enemies nothing more,nothing less. And it's not that good at that.

So the comment: "the reject table could be used to assist in determining the pvs in Doom levels" did mean he thought it could be used (pretty clear statement here). It's not true.

Btw, even a 486/100 plays MAP14 ok. It's these huge suckers that get the complaints on slower machine, but believe me, no REJECT is going to rescue that one. Wishful thinking.

What machine do you run? And what video card?

GL mode is tremendously slower in all GL ports I've tried or could get working anyway http://forums.newdoom.com/UBB/smile.gif. Try running it in regular mode. Doesn't look bad (IMO).

And yes, a LOT of documentation is totally bogus.

deepteam
December 3rd, 2001, 11:56 PM
Ok, tested vrack2 (that also used DeePbsp for the nodes created with an 8 factor) with and without a reject. Made absolutely NO DIFFERENCE on a PIII800.

All the enemies in the same area cause the potential slowdown - although I didn't get any.

A full REJECT will NOT speed things up here. IOW, they are ALL in attack mode in the same area. It does help a little for enemies offscreen.

I should run this on a PIII550 and see. If I remember I'll do it tomorrow or you can remind me http://forums.newdoom.com/UBB/smile.gif

So far Lut's upcoming millenium level is the largest I've played and it's also about the largest possible: 16k linedefs, 32k maxed on the ssegs. No problem playing this either

Aliotroph?
December 4th, 2001, 12:13 AM
Ok, I think I see your point with the REJECT thing. I'm just going to shut up about that until I learn Sea++ and crack open the source. http://forums.newdoom.com/UBB/smile.gif

My computer is a PII MMX 300MHz (slightly overclocked). I've 64MB RAM and a 32MB Savage4 card. Phobia runs like total shit no matter what I do with it. Turning down the graphics as far as they will go and running in a window with no monsters helps a bit, but now enough to make it playable.

For some reason if I run in software mode I can't get my screen bright enoght to see the game. I have to run in GL just to be able to see (Legacy is the only port where I have that problem).

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

Stphrz
December 4th, 2001, 03:24 AM
<BLOCKQUOTE><font size="1" face="Trebuchet MS, Verdana, Arial, Helvetica, serif">quote:</font><hr width="100%" size="1" noshade><font face="Trebuchet MS, Verdana, Arial, Helvetica, serif" size="2">The REJECT does NOT say 1 sector (geometric area as determined by nodes = ssector) is visible from another. How could it? That's determined by LineDefs (via the segs). </font><hr width="100%" size="1" noshade></BLOCKQUOTE>

Right! And I thought you didn't understand. That is exactly what I said if you read my post again. The reject table does say if a sector is potentially
visible from another: an entry of 0. The reject table does say if a sector is impossible to see from another: an entry of 1. An entry of 1 means that los calculations are not done for the monsters in question. At all. You are also right that the reject is for monsters only but it could be used for pvs. Unless of course Carmack doesn't know what he's talking about :P I didn't say it was the perfect method but it could be used to determine (crudely) what could not possibly be seen and therefore what would not have to be rendered. You are also right that the reject isn't always useful, especially if some clownboat decides to put 10,000 enemies in a one room level or something.

<BLOCKQUOTE><font size="1" face="Trebuchet MS, Verdana, Arial, Helvetica, serif">quote:</font><hr width="100%" size="1" noshade><font face="Trebuchet MS, Verdana, Arial, Helvetica, serif" size="2">Ok, tested vrack2 (that also used DeePbsp for the nodes created with an 8 factor) with and without a reject. Made absolutely NO DIFFERENCE on a PIII800. </font><hr width="100%" size="1" noshade></BLOCKQUOTE>

Can you increase the resolution in the game until you start to get slowdown in Vrack2? I don't know because I only have a P3 500 and I start noticing slowdown at 1280x1024 without a reject. I'll bet you might be able to play Vrack2 with reject at a higher rez with full speed than one without. It works for me. The fact remains that the reject table does improve framerate in many cases. Sometimes dramatically, sometimes just a bit. In rare cases it does absolutely nothing. It's also useful for certain special effects as well.
------------------
A squid eating dough in a polyethylene bag is fast and bulbous, got me? -Captain Beefheart

Rellik_jmd
December 4th, 2001, 08:29 AM
AGAIN, rejects might be useful for the bulk of users who have slower computers. Who cares how it runs on your P3? Of course it's going to run good, doesn't take a rocket scientist to see that.

DEEP, you need to watch how you say stuff cuz you always come across as sounding like a holier-than-thou jerk. It gets very hard to tolerate.

------------------
Member of Team DEIM (http://www.teamdeim.com/)
Webmaster The DOOM Editing Resource (http://www.teamdeim.com/der/)

deepteam
December 4th, 2001, 09:52 AM
Since a REJECT is # SECTORS squared/8 - "sectors" = the kind in a level, explain precisely how this can do a pvs for DRAWING? No indeterminate words, just MATH will do.

To illustrate, imagine I have ONE DOOM SECTOR that covers 1000 linedefs, how exactly can one derive a PVS for drawing? There's only ONE byte. Is that clearer?

Clearly you are misinterpreting Carmack's and my statements by injecting your own assumptions.

The word "could" and the word "can" have different meanings. He was musing not thinking of all the variations possible. Don't hang someone by thinking out loud nor hang your argument on same. If he read my example, he'd say, "oh shit, I guess it can't".

When I said not SECTORS, but LINEDEFS, it boiled back to the above. Since you DO NOT have a linedef reference (which is the final pvs required), SECTORS mean absolutely nothing (cap letters are the DOOM lump names).

I also suspect that the extra code involved in the BEST scenerio of culling a REJECT for a pvs would be WORSE than the BLOCKMAP - a pvs aid, which turns out to be a shackle instead of an aid - and Id did that too.

Almost everyone does the best they can at the time. Everyone learns better ways of doing things or discovers that what they did actually doesn't help. It's difficult to test these things. So that wasn't a criticism of Id, just the way it is.

I see is talk about what one READ. MOST of that is an exaggeration - OLD at that, for 386 or 486/33 machines - meaning it should be qualified to large levels and/or many enemies and/or slow machines. Do the tests, don't repeat old bs.

Sure the reject helps on doggy machines. Did I EVER say anything different? Why keep beating a dead horse.

I said on higher end machines I challenge anyone to see if there is a difference on average levels. Since it ONLY controls enemies, all it does is reduce the number of enemy "checks" (as you agree).

Meaning it only makes a difference where someone saturates the level with enemies ALL over. Not exactly my style of level http://forums.newdoom.com/UBB/smile.gif

If they are all in the SAME area, it does nothing, in fact checking the reject actually slows it down - since the end result of the checks says: "YUP, they can see YOU and each other".

On the AVERAGE level on a PII+ .. err I said that before too.

deepteam
December 4th, 2001, 09:56 AM
And Rellik, if people say things that are off-the wall, (like you just did), they should not have thin skins and be able to take constructive criticism.

Case in point: You need to watch how you say stuff cuz you always come across as sounding like a judgmental holier-than-thou jerk. It gets very hard to tolerate.

Cool down. See, that's precisely the same kind of statement you made and MORE appropriate for YOU since you went OUT OF YOUR WAY to be some overall judge jerk.

But that's a common thing on forums. Those who do exactly what they accuse someone else of doing somehow never see themselves of doing the same.

If you can't handle a factual discussion and insist on interjection your own persona - here's a suggestion: stay out of it.

Leave your "personal" opinions to yourself or be willing to take the same in kind. That's how I get in the "flame" wars. Poster get pissed because I do to them exactly what they do to me. Being blind to oneself is no excuse.

deepteam
December 4th, 2001, 10:36 AM
Vrack2 runs the same at 1600x1200 with or without a reject. It does run a bit slower than at 800x600 when I'm firing, but the slight stutter is not a big deal.

Mind you, this res consumes WAY more processing power + video bandwidth (like 4 times more) just to do the graphics. The reject checking stays EXACTLY the same. A tiny pittance of time compared to the grunt display work.

Which reminds me, the original DOOM baseline to determine code relevance was 300x200 and a 386. So using relative scaling of code importance (considering just the video aspect), a reject is at least 31 times LESS important than it used to be. If I factor in a PII it's more like 100x less.

Now this will REALLY get you, but it PROVES my point about assumptions.

There is no frikken REJECT in the original VRACK2. I just assumed there was one from the way you talked. Maybe I'll make one and see if it makes a diff at 1600. Will probably take forever http://forums.newdoom.com/UBB/smile.gif

I'm pretty sure I won't see any difference for the scaling reasons listed. The mind does strange things. Maybe I'll be surprised by my own assumptions http://forums.newdoom.com/UBB/smile.gif

Aliotroph?
December 4th, 2001, 01:37 PM
Hmmm, you sort of made it sound as if it would work almost the same if mappers making big wads just made their own crude rejects. This is probably a dumb thought. http://forums.newdoom.com/UBB/smile.gif I just felt like saying it.

I wonder how much it helps in Vilecore. Those levels have lots of enemies, but they're really mazy levelys with enemies throughout. I could try rebuilding it without a REJECT I suppose, but I get the feeling most of the lag I get is just Legacy on my system.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

Doom_Dude
December 4th, 2001, 01:59 PM
Hmmmmmmmm! http://forums.newdoom.com/UBB/smilies/cwm20.gif http://forums.newdoom.com/UBB/smilies/cwm20.gif http://forums.newdoom.com/UBB/smilies/cwm20.gif http://forums.newdoom.com/UBB/smilies/cwm20.gif

------------------
http://www.newdoom.com/hosted/themegawad/sig/vilesig1.GIF
The Megawad (http://www.newdoom.com/hosted/themegawad/)
Deathcore & Vilecore Ver2.0 is coming!
Gimme a wicked weapon a mean assed monster in a kewl level and an engine that delivers.

Aliotroph?
December 4th, 2001, 02:01 PM
Soon as I mention Vilecore Doom_Dude pops in! http://forums.newdoom.com/UBB/smilies/cwm12.gif

Hey, what's up with the underscore in the name? You know how hard that is to type?

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 4th, 2001, 02:18 PM
Now that you mention it, I've toyed with exactly that idea - let mappers make their own crude rejects. A great idea! Then you can make "safe" zones where enemies don't attack. Pretty cool stuff really.

Makes for a very interesting level. You can have hords of enemies that are just WAITING for you to get out of your safe zone for the mad dash to the switch or whatever.

I played with it a long time ago. Most people that edit do mainly vanilla stuff. Stuff like scripts are the exception. Maybe someday http://forums.newdoom.com/UBB/smile.gif

But on Vilecore 2.0 - Those are exactly the kind of average size levels I'm talking about. Didn't count all the enemies, looks like around 400-500 per level.

The problem gets to be the number of enemies visible at once.

Btw, NONE of those have REJECTS built. A PII300 should be able to handle these levels no problem (map29 is the largest). If there are a lot of enemies in one spot, that is just a sprite overload/check/display issue, nothing to do with rejects.

Maybe your system has a GL driver glitch for your video card if the # of enemies is low in one area?

Cancel that comment ):

I just ran one of the levels and believe I discovered the problem - the nodes as they exist in the levels are causing the slowdown.

I redid then nodes on map04 with DeePbsp (32 setting) and like the framerate jumped WAY up. Before I did that it was chugging hard.

Don't have time now, need to check some other levels and make sure I'm not doing a boobie .. Rebooting from scratch eliminates at least one variable. Oh, and I run with -mb 64, although on these levels shouldn't matter?

See how interesting this all gets when one actually tries different things http://forums.newdoom.com/UBB/smile.gif

Aliotroph?
December 4th, 2001, 02:28 PM
I don't think my GL support is the best, but it works. The lag is usually in areas with lots of monsters or just after I load a game. The super-shotgun also always lags on it's first shot.

I know my copy of Vilecore has REJECTS because I rebuilt the whole wad with ZenNode to fix a couple of GL bugs (and give any other improvements that might have occurred).

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 4th, 2001, 02:44 PM
Which level is the worst for you? At what resolution? You shouldn't be running past 640x480 - unless you want to eat cycles like crazy.

I'll do some comparisons. What -n setting do you use on Zennode? Could be the same problem as I noticed with the original nodes - who knows, but there's something fishy going on.

However: "The lag is usually in areas with lots of monsters" and "just after I load a game" and "The super-shotgun also always lags on it's first shot" are all NOT related to rejects.

64mb is just not enough for windows. You need a bit more memory though - and it's damn cheap now. Sounds like your disk (vcache) cache is out of control. I limit mine so it can't consume all of memory when doing disk i/o.

PS: Nevermind on the nodes http://forums.newdoom.com/UBB/smile.gif I had something running chugging temporarily in the background. Like I said, I always reboot and start from scratch to verify something.

Stphrz
December 4th, 2001, 02:50 PM
The reject table is similar in nature, not exact mind you, to the vis data in the quake games. The quake games still require a bsp for drawing purposes. The vis (or reject in the case of Doom) can only tell the engine what it can COMPLETELY IGNORE!!!! There is no math required to convey that idea now is there? The engine load is lightened because it has less to keep track of. Since it has to do less work, less cpu cycles are needed. Ergo the game runs faster. Those extra cpu cycles can be used to display higher resoulutions, or eyecandy effects, yada yada yada.

BTW pvs stands for potentially visible set. If something is potentially visible by way of the vis (or reject) then the engine must jump through all the usual rendering hoops it normally does and keep track of the level data (linedefs, textures, etc...) The reject table can at least tell the engine what is definately not visible.

Aliotroph?
December 4th, 2001, 03:09 PM
I'd get more RAM but this isn't my computer. I'm supposed to be getting one from the government this year because of my low vision though. That thing will have at least 256 megs. Then we'll see Vilecore run. I'm not sure which level is the worst. I've only played through half of them, but anything with a million monsters in one room is bad.

As for ZenNode, I just used whatever the default was. I couldn't be bothered with options at the time. I think I'll use Vilecore to test my program with ZenNode though.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 4th, 2001, 04:01 PM
You keep assigning your own conclusions from where you started. Please go back to the 1 sector example above.

No math required? Lol - come'on I won't let you off that easy "sir". This is a MATH assignment, not an English assignment.

How does a 1 sector REJECT data (as in prior) help you out in what you say? Please no innuendo, clever words and allusions, just a simple explanation of how it can cover ALL those linedefs. Mmm, obviously it can't. Q.E.D.

I've carefully explained why it can't work. A REJECT is a simple structure, so simple that it is easily rendered useless even for what it's supposed to do in levels. Case in point: 10sector wad. Please analyze the problem. How does DOOM code handle that?

You need to show how a 1 sector, 2000 linedef level can do a visual level display pvs - with math. Can it even do a pvs on enemies? Think about this example. It succinctly illustrates the problem and flaws in the REJECT.

IOW, code that relies on the REJECT for actual level pvs would die a quick death on any level that "shared" SECTORS.

Next: relative importance on fast machines?

The cycles "freed up" are a pittance compared to the requirements of higher resolutions = in the context of HIGHER end machines - which I've always stated.

So you free 1000 cycles out of 1 million. YOU WON'T NOTICE on a high end machine. Look at ZDOOM source code P_SIGHT.CPP and cross check the code for the function P_CheckSight() [you'll be amazed what is really going on - not so simple as you think]. Now look at all the OTHER code that's running.

IOW, academically you free cycles, in the real world (of high end machines), it doesn't matter. It's a moot point, argumentative rhetoric. That's all I'm saying.

Looks like you are nitpicking where there is none to be picked from me anyway http://forums.newdoom.com/UBB/smile.gif

Sure, if you have zillions of enemies and zillions of linedefs and zillions of sectors - the REJECT helps a lot - IF - THEY ARE NOT in the same area, otherwise it HINDERS. An interesting dilemna presented by the newer ports. Doom never had that problem since it had inherent limits http://forums.newdoom.com/UBB/smile.gif

IOW, all this checking slows you down at a time when it's the worst time to do so. BOOM actually added a "quick" bypass, where it checks for the same ssector - meaning of course that they are visible and need to be CHECKED for GAMEPLAY status, not drawing status.

The mere display requirements of that many enemies far outway any other problem - especially at higher res.

But let's take the AVERAGE size level, more or less average enemies. Like Vilecore as I just noticed. Geez, earlier I was testing monster levels compared to this.

All this stuff has been repeated so long, it's taken as fact without critical analysis. Sad.

"BTW pvs stands for potentially visible set."

No shit, I didn't know that http://forums.newdoom.com/UBB/smile.gif

Q.E.D. stands for ... naw I won't do what you did http://forums.newdoom.com/UBB/smile.gif

Stphrz
December 4th, 2001, 04:26 PM
Ok now this is getting funny. I stated above in some other post, that a reject table does not *always* help in *all* situations. Neither does the vis data in quake. In a single sector level everything is *always* potentially visible. In any case the reject table can never hinder. It can help a lot, a bit, or not at all. You are not going to tell me it can cause things to slow down are you? The engine has to constantly do those checks you mentioned anyway to determine if the monster is able to attack the player. Any situation where it can disregard the need to check if the player is visible(attackable) is a plus.
Christ in a sewage ditch. You are obviously not understanding my reasoning. That could be my fault. Maybe I'm not clear enough.

Los calculations are not trivial. We are talking about way the hell more than 1,000 cycles. We are talking about tens of millions when you have a lot of sectors and a lot of monsters.

*If it helps you can substitute every place I said "sectors" with "ssectors" - a geometric area determined by the nodes as you said because that is what I had in mind. I never once said that the calculation of the reject table was not based on the linedefs. I stated just the opposite. The reject table as you will agree is end result of a whole lot of complex calculations. Which of course is the reason it takes so damn long :P When the game is run, many of those calculations don't have to be run again all the time. Just because a P3 800+ can run an average level with an average monster count without a loss of speed because there is no reject does not negate it's importance. So what. A P133 can run an average level with an average monster count with no speed loss too. A lot of levels comming out these days are way the hell bigger and far more complex than average. I've already stated how I have found that in some cases the reject table can improve a level's performance on a P3 500. It may not be perfect, but the reject table is not the flawed, useless albatross you make it out to be.


------------------
A squid eating dough in a polyethylene bag is fast and bulbous, got me? -Captain Beefheart

Aliotroph?
December 4th, 2001, 04:53 PM
This just gave me a neat idea. If you have a "shared" sector that has it's two areas on opposite sides of a complex map, does that mean the reject could tell DooM that the monster on the other side of the map can see you? It seems to me it would be a bit like those floor-code things in Wolf3D. You could actually mess with the game's AI, but messing with the map structure. Just a thought.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

Stphrz
December 4th, 2001, 05:11 PM
<BLOCKQUOTE><font size="1" face="Trebuchet MS, Verdana, Arial, Helvetica, serif">quote:</font><hr width="100%" size="1" noshade><font face="Trebuchet MS, Verdana, Arial, Helvetica, serif" size="2">If you have a "shared" sector that has it's two areas on opposite sides of a complex map, does that mean the reject could tell DooM that the monster on the other side of the map can see you?</font><hr width="100%" size="1" noshade></BLOCKQUOTE>

No. The reject table does not determine what a monster can see. It determines what a monster cannot see. In the case above the reject table would indicate that a sighting is possible. Line of sight calculations would then have to be done to see if the monster could in fact see you. You could however, by manipulating the reject table, tell the engine that a monster couldn't see you even though it is right beside you. You could create "safe zones" where no monster could see or attack you no matter what.

Aliotroph?
December 4th, 2001, 06:03 PM
Ok, I knew about that effect you mentioned. Thanks for clearing that up.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 4th, 2001, 08:59 PM
Yeah this is getting real funny. Still putting your own private spin on the facts.

"Not always" and "sometimes" were NOT the topic. I also never said "always" either did I? So what. Water is wet is my answer to those kind of points. Just filler justifications.

An objective debate ANSWERS questions posed. You keep ignoring them AND you are shape shifting. I notice http://forums.newdoom.com/UBB/smile.gif

Seems you refuse to accept the fact that your original statement is flawed regards VIS. Do you really still think you can do a level display from a REJECT or do you want to die by it? (Waves hands and says yes.)

LOOK AT THE CODE. If you can't understand it, then just tank it. I'm amused that you are using just subjective expressions and not an objective rationalization.

And now you are even changing what you said as if you said that originally. You said sectors and you meant sectors. No doubt about it. But if you insist, let's make is ssectors. How exactly does a REJECT (which is SECTOR oriented) know about ssectors? Mmm, damn!

I never said it didn't help did I (as a universal statement)? DO NOT put words in my mouth I never uttered - NOT NICE and guaranteed to make me drive them back at you. Nor change your statements to something that you never originally said. Also not nice.

Read CAREFULLY what I wrote. Please quote the part that you claim is incorrect regards having a REJECT for average levels on a PII+. That's how it's done. Not by word shifting and changing the topic. Hell you are now partly saying what I SAID all along. Amazing.

High res slows you down - has NOTHING to do with a reject. Already factually showed the math - which you still fail to appreciate (or acknowledge) - on why that happens.

It can be an albratross for high end systems. Not "all" the time - never said that - I haven't seen "all" levels.

How long make a reject takes has very little to do with the actual game. It's a factorial issue - just like nodebuilding is. You made another unfounded assumption: that the game code has to do the same thing. You might as well argue about nodes in the same way. Interestingly enough, those are also not the best way to cull. Time moves on.

It's a MATH problem from the point of a reject pgm, but in the game, the problem is much simpler. In fact, the exact same code is in DeePsea when you draw a line and it intersect another line. It then splits the line where it crosses. Vector math. No clumsy split commands required there.

You could look at the code or take my word for it (nah, don't do that, what do I know).

Christ in a monkey suit (I can say cool stuff too). No hurt eh? Seems I keep repeating the same examples. If ALL the enemies are in the same AREA (a real SECTOR even) then the check is just dirty overhead isn't it? So yeah, it hurts in such an example. Another Q.E.D.

Or let me put it this way, if you are after speed there are other ways that will give better results. After all, we aren't in the dark age any longer, well some of us aren't.

For example, if you pack sectors and pack sidedefs, you get a much smaller and more compact memory footprint for the level. (for one of those above I reduced it by 19000 sidedefs, that's right 19000, and 1900 sectors.

Oh that was Vrack2, yawn, no biggie as you originally claimed. Even at 1600x1200. It doesn't have a reject. Did you know that? Is he a barbarian? tsk tsk.

That translated into more efficient L2 caching, with a big improvement in basic playing speed.

The similarity to QUAKE vis is only in abstract purpose. I was going to mention this before, but.. Ok, here goes. I rewrote 100% of ALL the quake utilities for about a 3x speed increase - I got tired of the long times. So you see, you are preaching your story to the wrong guy http://forums.newdoom.com/UBB/smile.gif

And last but not least, I also chuckled that you took a mathematical RATIO statement of one part of code vs the universe of game code (1000 vs million). You presumed that I meant it only took a 1000 ( put on thinking cap ).

Try to read CAREFULLY what the other person is explaining and don't let your own assumptions dictate the answer in your brain ahead of time.

If you want to talk actual cycles, it's billions and billions of instructions (think Carl Sagan), but who's counting.

Aliotroph?
December 4th, 2001, 09:11 PM
Ok, I think he should see the point from that. Maybe we should just let that one rest. At any rate I'm in no position to argue (cause I don't know crap about the math involved here).

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

mystic
December 4th, 2001, 10:43 PM
Wahay, I managed to keep out of it, mainly becuase I dont have a clue what they are on about.
Hey Rellik and Stphrz, I never knew about this reject stuff, Im saddled with a slow PC. What do I do to make a reject table so I can speed up my maps? is it an option with zennode (I love zennode).

Deepteam and Aliotroph? on my crappy PC (Pentium MMX233) Legacy is much faster and smoother in opengl mode than in software or Dos. I have no idea why Phobia is so slow on Aliotroph?'s machine unless he is running at a high resolution. I never go higher than 640x480 with Doom and I am able to enjoy roaming around Phobia (no monsters) with some slowdown in certain areas but mostly okay and well worth the effort.

------------------
Creator of 'The Mummy Phuquers' and 'Mystic' series of Doom wads.
also creator of ANDYDM1.WAD (my favourite)

MYSTICMEG IS CUMMING SOON
http://www.murray6.pwp.blueyonder.co.uk/liam/6.gif
http://www.gtroad.net

Pate
December 5th, 2001, 12:09 AM
ZenNode creates REJECT automatically unless you tell it not to.

Stphrz
December 5th, 2001, 05:22 AM
<BLOCKQUOTE><font size="1" face="Trebuchet MS, Verdana, Arial, Helvetica, serif">quote:</font><hr width="100%" size="1" noshade><font face="Trebuchet MS, Verdana, Arial, Helvetica, serif" size="2">Oh that was Vrack2, yawn, no biggie as you originally claimed. Even at 1600x1200. It doesn't have a reject. Did you know that? Is he a barbarian? tsk tsk.</font><hr width="100%" size="1" noshade></BLOCKQUOTE>

Yes. Yes he is. He's also an upstart infidel assrabbit. That's why I used that example. I've even bugged Fredrick with my preaching on this. http://forums.newdoom.com/UBB/smilies/cwm35.gif


<BLOCKQUOTE><font size="1" face="Trebuchet MS, Verdana, Arial, Helvetica, serif">quote:</font><hr width="100%" size="1" noshade><font face="Trebuchet MS, Verdana, Arial, Helvetica, serif" size="2">
The similarity to QUAKE vis is only in abstract purpose. I was going to mention this before, but.. Ok, here goes. I rewrote 100% of ALL the quake utilities for about a 3x speed increase - I got tired of the long times. So you see, you are preaching your story to the wrong guy </font><hr width="100%" size="1" noshade></BLOCKQUOTE>

Whoa. Cool. Where can I get 'em? I checked your page for links but didn't find any. The long waits were something that always bugged me as well. I got too frustrated to get very far in quake editing because of that. If I had quake utilities that were three times faster I would give it another shot. http://forums.newdoom.com/UBB/smilies/cwm11.gif



------------------
A squid eating dough in a polyethylene bag is fast and bulbous, got me? -Captain Beefheart

Aliotroph?
December 5th, 2001, 08:43 AM
I have no idea what's up with Phobia on my computer then. It won't run worth garbage. I only play at 640x480 as well. I can't even run Phobia with all the graphics turned right down though. Maybe I'll try software, but I can't see anything in that mode because it's too dark.

------------------
"Killed Aliotroph?"
- obituary from Perfect Dark

deepteam
December 5th, 2001, 10:44 AM
Ok, let's put this friggen subject to bed.

I went out of my way to verify my own deductions [again] since the last time I did this the levels were way smaller than Vrack2 http://forums.newdoom.com/UBB/smile.gif Hell, I could have been full of it - but I was praying I wasn't (no wisecracks).

I ran in on a Celeron 550 (an overclocked whatever it used to be - it uses a 100mhz fsb). Win98se, 128mb, Banshee card - sort of an average system.

Amazingly it ran at only slightly slower at 1200x768 as it did on the PIII800. I'd have to play and time a demo to be able to accurately tell.

Wish ZDOOM has a timing thing like one of the ports has -can't remember right now- I love that feature.

Ok, so then I made a reject with Zennode defaults (didn't take too long). Played it again. No difference that -I- can detect. The game does stutter a bit when you fire at the enemies in either mode (also on the PIII800). Why?

Easy, it's the res.

So I lowered it to 800x600. Plays like a dream with or without a reject.

IOW, the overhead of the code/video for the resolution is so much greater than the amount of time saved using the REJECT that one can't tell.

I think that what may happen is that if you -want- to see a difference one will think there is a difference. I've seen this symptom many times in DeePsea help questions http://forums.newdoom.com/UBB/smile.gif

Using that as a rough base, I'd say that anything less than a PII300 should probably run Vrack2 at 640x480. A P200 should be OK at 320x200 http://forums.newdoom.com/UBB/smile.gif

deepteam
December 5th, 2001, 10:57 AM
I never released the utilities because I didn't want to document and fend off questions about same - like "what does it mean when it says ...". Aren't those original util messages awful http://forums.newdoom.com/UBB/smile.gif

You see, I put way more specific/extra error messages in the BSP, plus a percent trace, plus a detailed log, dynamic resizing (did you know the Quake utils are hardcoded to a lower spec than the game actually allows?) IOW, all the stuff you really need.

All this difference from the stock stuff meant I had to document. I would never release something that complex without spending doc time. Just not me.

The stuff I did release is so straight forward that I've never had a question asked about it. The BSP stuff can grind out some really oddball messages http://forums.newdoom.com/UBB/smile.gif

The main reason it's so much faster is that I use direct pointers, not indexed values in arrays. IOW, to make code faster one looks for the biggest bottle neck and spends the most time there. So you see, that's why this whole topic is sort of a natural.

Stphrz
December 5th, 2001, 03:17 PM
<BLOCKQUOTE><font size="1" face="Trebuchet MS, Verdana, Arial, Helvetica, serif">quote:</font><hr width="100%" size="1" noshade><font face="Trebuchet MS, Verdana, Arial, Helvetica, serif" size="2">A P200 should be OK at 320x200 </font><hr width="100%" size="1" noshade></BLOCKQUOTE>

Yes. Yes it is. Once you run a reject. It is amazingly slow with an empty one(about 7 fps at the start, jumps to over 30 with a reject). On a P200 it runs faster at 320x400 with an optimized reject than at 320x200 with an empty one. I have verified that. This btw, only holds true for about the first half of the level when the vast majority of the monsters are still alive. Speeds start to even out once more than half (about 500) of the badguys are toast. I have a P200 no mmx, a P2 266, and a P3 500 all networked :) The P200 has no internet access 'cause I'm too cheap to buy another ip address :P I could probably set something up by dicking around, I've heard there are ways :) But I can't be arsed.

You are right that the faster the machine the less obvious effect the reject table will have, but I just don't see that as an excuse not to put that little extra effort in. Like you said, if you have a fast machine it doesn't take that long.

------------------
A squid eating dough in a polyethylene bag is fast and bulbous, got me? -Captain Beefheart

deepteam
December 5th, 2001, 03:59 PM
The P200 has no internet access 'cause I'm too cheap to buy another ip address
===================================

No sure what you meant there. [If you know all the following - just ignore, maybe someone else will benefit.]

You can network as many machines as you like using only 1 real ip address. This is done using NAT. You can have a real computer do this or buy some extra gear.

I've done both - well actually Mike set it up. I think the computer way (we did it this way first), was NT4, but the newer Windows also supports internet connection sharing (I think they call it that).

The way we do it now is via a Netgear Router. Good equipment, fast, easy to set up, inexpensive (about $100) and it works. Pays for itself in no time.

1st one I got on Ebay (for isdn) and the 2nd one new for cable - way cheaper than the isdn one and I don't have to leave a computer turned on.

You can configure it to port-forward so you can play any game that way. However, you loose the natural "firewall" you get from having local ip addresses that can't be attacked (easily) from the outside. A virus can still do you in via email/browsing. XP has some safety built in for that now too.

Did I say I have a P200? Probably not, msgs get too long as it is. I don't have it networked to anything so it's a pia to test this stuff. I have the card, etc, just never need it. I use that machine for my lowend testing for DeePsea to make sure everything is fast enough there too http://forums.newdoom.com/UBB/smile.gif

Stphrz
December 5th, 2001, 04:40 PM
I recorded a short demo of vrack2. Ran around shot a few things and quit. I used zdoom v1.22. I did a timedemo of the demo at 320x200 on the vrack2 with an empty reject and got 14fps. I then did a timedemo of the same demo on the vrack2 with an optimized reject at 320x400 and got 20fps. At 512x384 I got 16fps. At 640x480 I got 13fps. By the time I got to 800x600 the framerate on the optimize vrack2 had tanked to 6fps. Zdoom seems to run the level a lot faster than Boom does. Boom only gets about 7 fps, without reject just standing there at the start. I always thought Boom was faster than Zdoom. Guess not :)

On the subject of the network. I'm using cable. You can buy extra ip adresses for computers on your hub to get internet access. It costs an exta $8/month per computer or ip address. The way around this that I had heard was similar to what you described. You can do it by just using special software as well but that's slower I imagine and not much cheaper.

deepteam
December 5th, 2001, 05:00 PM
Thanks for the info - now to make a final summary that will be useful and interesting. Could you do one for one a level about 1500-2000 linedefs and more or less rectangular architecture. The multiwad from DOOM_DUDE has a lot of those (almost typed "-").

And on the speed subject, sometimes people make slightly angles or irregular lines where none have to be. These have a great impact on game play speed because the large number of ssectors created.

Back to cable. Unless you really need more than 1 ip address, you can pay for the router in about 1 year. Mainly an issue if you host games. Mike and I both play online without any problem. Game traffic is nothing.

Had a funny thing happen one time though. His computer uses port forwarding, so when Serious Sam came out, he hosted the game so we could play coop.

In about 10 minutes we had 2 other users jump into the game from the outside. At first, I said, hey, is that you? It really spooked me at first.

The Netgear I use is the RT311, single port out. I already have a switch (a router would do the same) so that would work for you too.

Stphrz
December 5th, 2001, 10:37 PM
Ok, I used one of my own levels, pmapi.wad. It has 2208 linedefs 456 sectors and 181 badguys. Quite squarish. It was my first level.

Framerate with reject 67fps

Framerate without reject 64fps

Roughly a 4% difference. Of course the human eye cannot distinguish between 67 and 64 fps (I'll laugh at anyone who says they can :) And the Doom engine clips the framerate to 35fps during play, so of course there is not way to tell the difference just by playing. On your machine the difference in timedemo framerate numbers could actually be quite dramatic (in the case of Vrack2) but you would never know it by simply playing the level. Even 25% difference could go unnoticed if the numbers were say something like 100fps(with reject) compared to 75fps(without reject) as an example. I just pulled those numbers out of my ass, you'd have to try it see if that's really the case or not.

------------------
A squid eating dough in a polyethylene bag is fast and bulbous, got me? -Captain Beefheart