ReX Posted June 7, 2012 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. 0 Share this post Link to post
andrewj Posted June 7, 2012 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 0 Share this post Link to post
esselfortium Posted June 7, 2012 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. 0 Share this post Link to post
ReX Posted June 7, 2012 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. 0 Share this post Link to post
andrewj Posted June 7, 2012 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). 0 Share this post Link to post
ducon Posted December 23, 2012 The Linux version crashes (segfault) with Deus Vult’s map05. 0 Share this post Link to post
Egregor Posted December 24, 2012 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. 0 Share this post Link to post
andrewj Posted December 24, 2012 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. 0 Share this post Link to post
esselfortium Posted December 24, 2012 Would it be possible to add a mode that somehow visually displays seg splits from the most recent node build? 0 Share this post Link to post
andrewj Posted December 24, 2012 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) 0 Share this post Link to post
Egregor Posted December 24, 2012 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 0 Share this post Link to post
traversd Posted December 24, 2012 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! 0 Share this post Link to post
Kappes Buur Posted December 24, 2012 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 0 Share this post Link to post
Xaser Posted February 3, 2013 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. 0 Share this post Link to post
andrewj Posted February 4, 2013 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 0 Share this post Link to post
Xaser Posted February 4, 2013 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 0 Share this post Link to post
andrewj Posted February 4, 2013 Very easy feature to add -- I'm glad it is useful to someone. 0 Share this post Link to post
traversd Posted February 11, 2013 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. 0 Share this post Link to post
andrewj Posted February 12, 2013 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). 0 Share this post Link to post
traversd Posted February 12, 2013 No worries. Thanks for what you have done already :0) 0 Share this post Link to post
esselfortium Posted February 16, 2013 Question: What actually are solidsegs? The Doom Wiki says they're the same as Openings, but I don't think that's true. 0 Share this post Link to post
andrewj Posted February 16, 2013 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. 0 Share this post Link to post
_bruce_ Posted February 16, 2013 andrewj, could you spill a little bit more info on openings? 0 Share this post Link to post
andrewj Posted February 17, 2013 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. 0 Share this post Link to post
_bruce_ Posted February 17, 2013 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! 0 Share this post Link to post
CodeImp Posted February 17, 2013 Here is a plugin that allows you to see subsectors, segs and splits (nodes) that the nodebuilder created: http://www.doombuilder.com/plugins/nodesviewer.zip Source code for the plugin is in the Doom Builder repository, or here. 0 Share this post Link to post
Xaser Posted February 17, 2013 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? 0 Share this post Link to post