Visplane Explorer : new 0.80 version

Is it possible to know precisely where a visplane overflow will occur and to highlight the most likely culprits? I have a map for vanilla Doom that has been crashing (running chocolate-doom) with visplane errors, and I have been systematically trimming the areas that I believe are causing the problem. I ran Visplane Explorer and looked at the results, but am no closer to definitively knowing if the error remains and what the source of the error is.

Share this post


Link to post

Areas that definitely overflow show up in red, otherwise the brighter shades of brown have the most visplanes.

I suggest not merely trying to get rid of red areas, but have a "safety buffer" of say 10 or 20 planes below the limit.

Windows are often bad for visplane counts, it can double the number of visplanes (the current room + the nearby room). Making them high enough so the player cannot see any floors through the window helps (but of course that usually ruins the effect).

You can also add "fences", a 64 unit high (or so) sector which the player cannot get on and which blocks the view of the floors in a large room, especially at the highest parts of a room.

Stairs can be bad too -- you can make bigger steps or replace them with a lift.

Lighting gradients (the same sector textures and heights, but only difference is the light levels) also increase visplane counts.

Hope that helps

Share this post


Link to post
ReX said:

Is it possible to know precisely where a visplane overflow will occur and to highlight the most likely culprits? I have a map for vanilla Doom that has been crashing (running chocolate-doom) with visplane errors, and I have been systematically trimming the areas that I believe are causing the problem. I ran Visplane Explorer and looked at the results, but am no closer to definitively knowing if the error remains and what the source of the error is.

Have you tried running Chocorenderlimits? It'll show you the visplane counts (among other things) for your current position at any given time, so you can get a clearer idea of what exactly will trigger it. It can also outline each individual plane, so you can see where they're concentrated.

Share this post


Link to post
andrewj said:

Areas that definitely overflow show up in red, otherwise the brighter shades of brown have the most visplanes.

I suggest not merely trying to get rid of red areas, but have a "safety buffer" of say 10 or 20 planes below the limit.

My map has no red areas, and I had figured out that the lighter the brown, the greater the number of visplanes. What I'm experiencing is a visplane overflow only around a narrow range of coordinates, when looking in a particular direction. I had figured this out the hard way (i.e., moving around each possible area of the map to see if the game would crash) even before I discovered Visplane Explorer. I was curious to know if the utility could include a flag that indicates that a visplane overflow will occur (or at least the probability of one), and from what coordinates.

esselfortium said:

Have you tried running Chocorenderlimits? It'll show you the visplane counts (among other things) for your current position at any given time, so you can get a clearer idea of what exactly will trigger it. It can also outline each individual plane, so you can see where they're concentrated.

I'll be sure to give it a shot. I believe this may be what I was asking andrewj above. Thanks.

Share this post


Link to post

Yeah Chocorenderlimits will let you try certain spots and angles better, Visplane Explorer only tests 8 view angles (the major compass directions) so potentially misses some overflows.

V.E. also doesn't open doors, raise stairs or lower floors, and that can increase the visplanes (very significantly in some maps).

Share this post


Link to post

The Linux version crashes (segfault) with Deus Vult’s map05.

Share this post


Link to post

So, I need some really basic help using this program:

A: When I load a map into VE on its own I get a blank map. White boarders, black and blue background. I don't get any analysis. Changing the settings shows no visual map change. How do I get it to render information?

B: How, in very lamen terms, do I load VE into DB2? I've got no idea. DB2 doesn't currently display a VE button option.

Share this post


Link to post
ducon said:

The Linux version crashes (segfault) with Deus Vult’s map05.

That map will crash DOOM too.

Visplane Explorer assumes the map works in DOOM.EXE

Egregor wrote:
When I load a map into VE on its own I get a blank map.

Press TAB to toggle analysis mode (I know, should be a gui button)

Also make sure the map is DOOM format -- VE does not support Hexen format maps (or UDMF).

Note too that the DB2 plugin is a separate thing, I suggest doing a search on the DB2 forums for it.

Share this post


Link to post

Would it be possible to add a mode that somehow visually displays seg splits from the most recent node build?

Share this post


Link to post
esselfortium said:

Would it be possible to add a mode that somehow visually displays seg splits from the most recent node build?

Should be quite easy.

hi ho, hi ho, it's off to work I go..... (been meaning to give this program some tlc)

Share this post


Link to post

oh, TAB, heh, right . . . I knew that. It works, thanks. I think I thought I pressed tab before but I really pressed Caps Lock. Somethings wrong with me :P

Share this post


Link to post
andrewj said:

Should be quite easy.

hi ho, hi ho, it's off to work I go..... (been meaning to give this program some tlc)


Awesome!

Share this post


Link to post
Egregor said:

So, I need some really basic help using this program:
.......
B: How, in very lamen terms, do I load VE into DB2? I've got no idea. DB2 doesn't currently display a VE button option.

Then you are not using the latest SVN version.
eg. since r1599 it is a plugin

Clicking on the VE icon




shows all visplanes and brings up a sub icon to select different modes

Share this post


Link to post
esselfortium said:

Would it be possible to add a mode that somehow visually displays seg splits from the most recent node build?

I hate to be "that assface who bumps for a re-request", but I just found myself wishing for the same thing a few seconds ago. Though chocorenderlimits has a mode to view visplanes, there's nothing at all that shows exactly where the segs are split, which I think would be a super-useful thing when trying to optimize limit-pushing scenes (like I finding myself doing right now... and every time I work on a vanilla map :P ).

Semi-tangent, but IMO, segs have always been a bigger problem than visplanes since the latter can be avoided pretty easily if you know what you're doing. Segs, though... well, that pretty much limits the size of anything you work on, and i can't resist pushing the damn limit until it bends up to breaking. :P

And now, we randomly return you to your regularly scheduled topic.

Share this post


Link to post
Xaser said:

I hate to be "that assface who bumps for a re-request", but I just found myself wishing for the same thing a few seconds ago. Though chocorenderlimits has a mode to view visplanes, there's nothing at all that shows exactly where the segs are split, which I think would be a super-useful thing when trying to optimize limit-pushing scenes (like I finding myself doing right now... and every time I work on a vanilla map :P ).

Nothing wrong with asking for something :)

OK I just implemented it, please try this unofficial test binary:
http://oblige.sourceforge.net/files/visexp-087test-win32.zip

Share this post


Link to post

Well damn! That was quick. :)

That definitely helps -- I actually managed to oust some overflows already with it. Thanks for seeing to it, sir. :D

Share this post


Link to post

Would a sub-sector view also be possible/useful? To see where the seg splits relate to or am I misunderstanding the seg splits again? Can you have a subsector on one side of a 2-sided linedef that uses a seg split and another on the other side that doesn't?

Certainly, just the seg splits shows just how much overhead some small detailing can contribute to a scene.

Share this post


Link to post

Yes you can have a seg split on only one side of a linedef, though it will be a lot rarer than both sides being split (since it can only happen when that linedef sits along a partition line).

I don't plan to add any subsector or node view to Visplane Explorer, that would be better done by a node viewing program (or a DB2 plugin).

Share this post


Link to post

Question: What actually are solidsegs? The Doom Wiki says they're the same as Openings, but I don't think that's true.

Share this post


Link to post
esselfortium said:

Question: What actually are solidsegs? The Doom Wiki says they're the same as Openings, but I don't think that's true.

Solidsegs are not the same as openings.

Solidsegs are for clipping, they remember a horizontal range on the screen (e.g. from pixel 20 to pixel 100 on the 320 pixel wide screen) where a completely solid (one sided) wall has been drawn. Nothing further needs to be drawn in those pixel columns, so subsequent walls are clipped (horizontally) to those ranges.

You could overflow the limit by creating a room with a row of 40 16x16 pillars, where the player can see them all at once. This overflow is not detected by vanilla DOOM engine, so it would corrupt memory and possibly crash.

P.S.

Share this post


Link to post

Heh ok.

Openings are strongly related to drawsegs.

Drawsegs remember an on-screen position of a draw seg (wall section). They are remembered for two reasons: (1) for sprite clipping -- because sprites are handled at the end once all the walls and floors are drawn, and (2) for drawing mid-masked textures -- also done at the end.

Each drawseg needs to remember the "opening" for each column of the screen they are on (a top and a bottom pixel coordinate) and these are stored in the openings array. The openings array also stores for some mid-masked texture stuff.

Openings rarely come close to overflowing, and then only when visplanes or drawsegs are excessively above their limits, e.g. ten times the limit -- that's why I removed the display of openings from Visplane Explorer.

Share this post


Link to post
andrewj said:

Heh ok.

Openings are strongly related to drawsegs.

Drawsegs remember an on-screen position of a draw seg (wall section). They are remembered for two reasons: (1) for sprite clipping -- because sprites are handled at the end once all the walls and floors are drawn, and (2) for drawing mid-masked textures -- also done at the end.

Each drawseg needs to remember the "opening" for each column of the screen they are on (a top and a bottom pixel coordinate) and these are stored in the openings array. The openings array also stores for some mid-masked texture stuff.

Openings rarely come close to overflowing, and then only when visplanes or drawsegs are excessively above their limits, e.g. ten times the limit -- that's why I removed the display of openings from Visplane Explorer.


Big thanks!

Share this post


Link to post

The plugin is reeeally cool, but only when it seems to work. Larger maps (I think?) are causing an unhandled exception ("Index was out of range") when trying to fire up the viewer.

As a quick test, trying to run it on Back to Saturn X E1 MAP01 will cause the exception.

[EDIT] Just got word that a new version went up that should fix the crashing. I can't seem to trigger it again -- thanks for the quick fix!

[DOUBLE-EDIT] Hey guys, is this vanilla-compatible?

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now