entryway Posted July 11, 2007 This bug happens on some big levels. After attempt to build nodes with ZenNode or zdbsp I got the error: --------------------------- Doom Builder --------------------------- The nodebuilder did not build the required structures. Please check your map for errors or select a different nodebuilder. Your map will be saved without the nodes. --------------------------- ОК --------------------------- But! Through command line both nodebuilders work perfectly! Practically I can build nodes for my level directly from DoomBuilder only with bsp-w32.exe, but its nodes are buggy in some cases. I can send the level to CodeImp directly for reproducing the bug. DoomBuilder Version 1.68.0385 ZenNode Version 1.2.1 ZDBSP Version 1.8 Doom BSP node builder ver 5.1 Quick Nodebuilder params: Executable: D:\games\Doom2\Doom Builder\ZenNode.exe Params: -b- %F -o %F When to rebuild: Alway rebuild nodes Output of ZenNode after building through command-line: D:\games\Doom2\Doom Builder\ZenNode.exe -b- HSPIRIT-Ligth.WAD ZenNode Version 1.2.1 (c) 1994-2004 Marc Rousseau Working on: HSPIRIT-Ligth.WAD *MAP01 : NODES - 6911/7189 ( 96%) SEGS - 17162/17497 ( 98%) 4.555 secs REJECT - Efficiency: 38.3%/ 0.0% Sectors: 795 18.088 secs Saving to HSPIRIT-Ligth.WAD... 1 Level processed in 22.643 seconds - 1 Level needed updating. D:\games\Doom2\Doom Builder\ 0 Share this post Link to post
entryway Posted July 11, 2007 I have added following record into nodebuilders section in DoomBuilder\Parameters.cfg deepbsp1 { title = "DeePsea Normal build"; executable = "deepbsp.exe"; parameters = ""%F" "%T""; }It works without errors and fast as zdbsp 0 Share this post Link to post
hawkwind Posted July 12, 2007 I'm surprised no one thought of this before, including myself. Good one entryway .... :) 0 Share this post Link to post
doom2day Posted July 12, 2007 ZDBSP tends to be buggy. It probably doesn't like what you are doing. It has happened to me before. 0 Share this post Link to post
entryway Posted July 12, 2007 doom2day said:ZDBSP tends to be buggy. It probably doesn't like what you are doing. It has happened to me before.But it works perfectly from command-line for my wad. 0 Share this post Link to post
Doom Marine Posted July 19, 2007 I'm encountering the same problem with my hell map too; the node builders that came with DB (Zennode, ZDBSP, & BSP-W32) doesn't like it. My stargate map with 35k sidedefs got its node rebuilt just fine, but when I up the ante and tried to rebuild nodes for my 53k sidedef hell map: --------------------------- Doom Builder --------------------------- The nodebuilder did not build the required structures. Please check your map for errors or select a different nodebuilder. Your map will be saved without the nodes. --------------------------- ОК --------------------------- This error was encountered occasionally at a high enough sidedef count, and occurred more and more frequently as the map became more complex... until one day it consistently gave me this error. This is really slowing down my mapping effort. 3D mode is rendered a mess without the level nodes, which makes it unusable. The only way I could see my hell map now is to run it through ZDoom, which automatically rebuit my level's nodes. Entryway: What commands did you use to operate the nodebuilders? I have basic knowledge of CMD, but not sure how to run a WAD through the nodebuilders with it. 0 Share this post Link to post
Dr. Zin Posted July 19, 2007 I have run into this problem too (as a matter of fact I made a post about it here: http://www.doomworld.com/vb/showthread.php?s=&threadid=39110&highlight=map). The only real solution I have found is to use seed sectors to build the map in parts, then attach them to the main file. I think running a nodesbuilder externally could work if you reachthe point that DB stops letting the nodes build. 0 Share this post Link to post
Doom Marine Posted July 19, 2007 I'm not sure how to run the nodebuilders externally, instructions would be nice. I hope Codeimp release a future DB that address this rare problem (nodebuilding and huge levels). 0 Share this post Link to post
entryway Posted July 19, 2007 Doom Marine Firstly, try to extract files from this archive: http://prboom-plus.sourceforge.net/doombuilder.zip into your DoomBuilder folder, start DoomBuilder, press F5 (Configuration), go to the Nodebuilder page, select DeePsea in the profiles list, open your map and try to rebuild the nodes. If it will not work, then put your map in the DoomBuilder folder (with nodebuilders) and try: zdbsp.exe DV.WAD -o TEST.WAD or zdbsp.exe DV.WAD -o TEST.WAD --map=MAP05 TEST.WAD will be WAD with nodes rebuilt by zdbsp.exe 0 Share this post Link to post
Doom Marine Posted July 19, 2007 Fantastic! Your plan A worked without a hitch... Thanks for your help Entryway... I think my map is calling me now... 1 Share this post Link to post
CodeImp Posted July 19, 2007 Yes I keep silent because I don't feel like playing for helpdesk and there is no logical explanation in this topic that explains the problem. Hence, I cannot fix it either. When I know the cause of this problem, then I may be able to fix it. Ask youself questions like these: Have you tried other parameters in DB? The correct parameters for a normal ZenNode build are: %F -o %F What is this -b- you added? Might be the cause? Did you change anything in any of the configurations? 0 Share this post Link to post
entryway Posted July 19, 2007 CodeImp said:Yes I keep silent because I don't feel like playing for helpdesk and there is no logical explanation in this topic that explains the problem. Hence, I cannot fix it either. When I know the cause of this problem, then I may be able to fix it.I can send you test map which can't be compiled from DB directly, but can from command-line. In the evening.Have you tried other parameters in DB?Yes. In all cases it does not work. Neither with my parameters, nor with parameters by default.The correct parameters for a normal ZenNode build are: %F -o %FDoes not work too.What is this -b- you added? Might be the cause?D:\games\Doom2\Doom Builder\ZenNode.exe ZenNode Version 1.2.1 (c) 1994-2004 Marc Rousseau Usage: ZenNode {-options} filename[.wad] [level{+level}] {-o|x output[.wad]} -x+ turn on option -x- turn off option √ = default -b[c] √ - Rebuild BLOCKMAP c √ - Compress BLOCKMAPDid you change anything in any of the configurations? Only Invert mouse and Filtering. 0 Share this post Link to post
CodeImp Posted July 19, 2007 Doom Builder does not like an empty or missing BLOCKMAP lump as result from the nodebuilder. But if the same problem occurs with "normal" settings, then there may be something else going on. 0 Share this post Link to post
entryway Posted July 19, 2007 CodeImp said:Doom Builder does not like an empty or missing BLOCKMAP lump as result from the nodebuilder. But if the same problem occurs with "normal" settings, then there may be something else going on. Check your PM. Only deepbsp.exe and bsp-w32.exe can build nodes directly from doombuilder for that level 0 Share this post Link to post
entryway Posted July 19, 2007 Try this test map http://prboom-plus.sourceforge.net/testmap.zip ZDBSP 1.9 does not want to build nodes for this map even from command linezdbsp.exe testmap.wad -o tmp.wad ----MAP01---- Unhandled exception. ZDBSP cannot continue.ZenNode works correctly from the command lineZenNode.exe testmap.wad -o testmap.wad ZenNode Version 1.2.1 (c) 1994-2004 Marc Rousseau Working on: testmap.wad MAP01 : BLOCKMAP - * Level too big to create valid BLOCKMAP * 0.012 secs NODES - 8/8 (100%) SEGS - 28/28 (100%) 0.002 secs REJECT - Efficiency: 0.0%/ 0.0% Sectors: 3 0.009 secs 1 Level processed in 0.023 seconds - No Levels needed updating. 43.478261 levels/secbut does not work directly from DoomBuilder. deepbsp works without errors from DoomBuilder. 0 Share this post Link to post
CodeImp Posted July 19, 2007 Yes, I just ran it through Doom Builder in debug mode and built it with ZenNode and normal parameters. The problem is the BLOCKMAP: the nodebuilder can't make a BLOCKMAP because the map is too big (not in number of elements, but the aera used). Doom Builder notices the missing BLOCKMAP lump and will tell you the nodebuilder failed (which is very true and understandable now that we know what causes it). If you really want a map this big, just let the engine or another nodebuilder take care of it, they have tricks that allow for ridiculous large blockmaps. 0 Share this post Link to post
entryway Posted July 19, 2007 But I can't use 3d mode without building the nodes!!! Why you don't want to build blockmap in doombuilder like other ports do? It's only one simple function in prboom-plus for example. See P_CreateBlockMap in https://www.crowproductions.de/repos/prboom/branches/prboom-plus-24/prboom2/src/p_setup.c And why this large map works correctly if I use deepbsp or bsp32 in DB? 0 Share this post Link to post
CodeImp Posted July 19, 2007 Other nodebuilders (such as deepbsp and bsp32) may have techniques that allow for this huge blockamp. If you use deepbsp or bsp32 in DB, then you can use 3D mode, not? If for some reason you don't want to use those nodebuilders in DB to use 3D mode, then you could try to disable DB checking the blockmap lump by going into the game configuration and changing the "BLOCKMAP" setting in the "maplumpnames" structure. Usually it is set to 4 which means BLOCKMAP is supposed to be generated by the nodebuilder. Set it to 0 and DB will completely ignore this lump (means it will also not be in your WAD file!) 0 Share this post Link to post
entryway Posted July 19, 2007 CodeImp said:Other nodebuilders (such as deepbsp and bsp32) may have techniques that allow for this huge blockamp. If you use deepbsp or bsp32 in DB, then you can use 3D mode, not?Yes, it works. If for some reason you don't want to use those nodebuilders in DB to use 3D mode, then you could try to disable DB checking the blockmap lump by going into the game configuration and changing the "BLOCKMAP" setting in the "maplumpnames" structure. Usually it is set to 4 which means BLOCKMAP is supposed to be generated by the nodebuilder. Set it to 0 and DB will completely ignore this lump (means it will also not be in your WAD file!)It works too, but I think you should make that behaviour more user friendly. 0 Share this post Link to post
CodeImp Posted July 19, 2007 I think you should bitch at the authors of the nodebuilders to make them work with huge blockmaps or just choose a different nodebuilder... thats my think. 0 Share this post Link to post
entryway Posted July 19, 2007 IIRC, it is impossible to build correct blockmap for big levels in original doom format. It is impossible because it uses 2-byte offsets. If it is impossible, it should not be built. Most of ports rebuild blockmap if size of lump is greater than 0x10000/2. So I think you can change BLOCKMAP value in maplumpnames to zero for following configs (at least): Boom.cfg, ZDoom*.cfg 0 Share this post Link to post
andrewj Posted July 20, 2007 Yes the BLOCKMAP size is limited by the format. There is no such thing as "huge blockmaps". glBSP always writes a BLOCKMAP lump, even if it overflows (with the assumption that ports will detect the overflowed size and generate their own). Note prBoom 2.4.5 code does not check for zero size lumps:if (M_CheckParm("-blockmap") || (count = W_LumpLength(lump)/2) >= 0x10000) P_CreateBlockMap(); BTW entryway, the maximum size is 0x10000*2 bytes not 0x10000/2, right? 0 Share this post Link to post
myk Posted July 20, 2007 Ajapted said: the maximum size is 0x10000*2 bytes not 0x10000/2, right? That's what the ZenNode author seems to say, in regard to the Doom map format. The standard engine, though, can only handle up to 64 KB (Venetian blinds crashes will occur at certain locations of the level if it's bigger). 0 Share this post Link to post
andrewj Posted July 20, 2007 To make a correction: the latest glBSP, version 2.20, will write an empty lump if the BLOCKMAP overflows. I had forgotten about that. Looking at my code now, it doesn't seem right. It will flag an overflow for 0x10000 bytes or more (and output an empty lump), even though PrBoom and other ports support upto 0x20000 in size. Hmmmm... 0 Share this post Link to post
entryway Posted July 20, 2007 Note prBoom 2.4.5 code does not check for zero size lumps:The latest two versions of PrBoom (2.4.6+) and PrBoom-Plus (2.4.6.1+) do it:if (M_CheckParm("-blockmap") || W_LumpLength(lump)<8 || (count = W_LumpLength(lump)/2) >= 0x10000) P_CreateBlockMap();BTW entryway, the maximum size is 0x10000*2 bytes not 0x10000/2, right?oh, sorry :) 0 Share this post Link to post
entryway Posted July 20, 2007 So, DoomBuilder behavior is at least not friendly to users in this point IMO. Many of maps are too large for BLOCKMAP, but DB likes only deepbsp and its false BLOCKMAP which is not used in ports. Also deepbsp is not included in DoomBuilder, hence users cannot work with huge levels at all (in a configuration by default) 0 Share this post Link to post