Kaiser Posted December 15, 2014 Does anyone know a way to make Doom Builder 2 correctly build GL nodes with GLBSP? It seems that whenever I compile a map, it doesn't build/insert GL nodes in the wad file. While on subject, I am also using glvis to build the PVS data, but since its a separate tool, there doesn't seem to be a way to have DB2 automatically call this tool after compiling the map. So basically is there a way to force GL nodes to be built in DB2 as well as being able to have DB2 call glvis to build the PVS data during map compile? 0 Quote Share this post Link to post
Gez Posted December 15, 2014 I thought only Vavoom used PVS... I guess the problem with GL nodes and DB2 is that they aren't in the traditional node lumps, and in fact come after BLOCKMAP/BEHAVIOR, so it might simply not be looking for them. Are you using an edited configuration in which the GL_ node lumps have been added to the map format? As for working around it not calling two different tools, maybe a simple console program that calls glbsp and then glvis on the same file could be created quickly, and using it as the nodebuilder would work... 0 Quote Share this post Link to post
Kaiser Posted December 15, 2014 No, I simply specified what node compiling tool I wanted to use in DB2's configuration settings. Gez said:I thought only Vavoom used PVS... Nope, Strife-VE uses them too :) 0 Quote Share this post Link to post
Gez Posted December 15, 2014 DB2 looks for a list of nodebuilder lumps to import: // This verifies if the nodebuilder lumps exist in a WAD file private bool VerifyNodebuilderLumps(WAD wad, string mapheader) { bool lumpscomplete = false; // Find the map header in source int srcindex = wad.FindLumpIndex(mapheader); if(srcindex > -1) { // Go for all the map lump names lumpscomplete = true; foreach(DictionaryEntry ml in config.MapLumpNames) { // Read lump settings from map config bool lumpnodebuild = config.ReadSetting("maplumpnames." + ml.Key + ".nodebuild", false); bool lumpallowempty = config.ReadSetting("maplumpnames." + ml.Key + ".allowempty", false); // Check if this lump should exist if(lumpnodebuild && !lumpallowempty) { // Find the lump in the source if(wad.FindLump(ml.Key.ToString(), srcindex, srcindex + config.MapLumpNames.Count + 2) == null) { // Missing a lump! lumpscomplete = false; break; } } } } return lumpscomplete; } This list is obtained from the config file: /* MAP LUMP NAMES Map lumps are loaded with the map as long as they are right after each other. When the editor meets a lump which is not defined in this list it will ignore the map if not satisfied. The order of items defines the order in which lumps will be written to WAD file on save. To indicate the map header lump, use ~MAP Legenda: required = Lump is required to exist. blindcopy = Lump will be copied along with the map blindly. (useful for lumps Doom Builder doesn't use) nodebuild = The nodebuilder generates this lump. allowempty = The nodebuilder is allowed to leave this lump empty. script = This lump is a text-based script. Specify the filename of the script configuration to use. */ doommaplumpnames { ~MAP { required = true; blindcopy = true; nodebuild = false; } THINGS { required = true; nodebuild = true; allowempty = true; } LINEDEFS { required = true; nodebuild = true; allowempty = false; } SIDEDEFS { required = true; nodebuild = true; allowempty = false; } VERTEXES { required = true; nodebuild = true; allowempty = false; } SEGS { required = false; nodebuild = true; allowempty = false; } SSECTORS { required = false; nodebuild = true; allowempty = false; } NODES { required = false; nodebuild = true; allowempty = false; } SECTORS { required = true; nodebuild = true; allowempty = false; } REJECT { required = false; nodebuild = true; allowempty = false; } BLOCKMAP { required = false; nodebuild = true; allowempty = false; } } 0 Quote Share this post Link to post
Kaiser Posted December 17, 2014 Gez said:As for working around it not calling two different tools, maybe a simple console program that calls glbsp and then glvis on the same file could be created quickly, and using it as the nodebuilder would work... Would it be possible to have DB2 invoke a .BAT file to call multiple tools during compiling? 0 Quote Share this post Link to post
Gez Posted December 17, 2014 Kaiser said:Would it be possible to have DB2 invoke a .BAT file to call multiple tools during compiling? Yes I think so. Might be harder to transmit the error messages (if any) back to the DB2 but otherwise it should work. 0 Quote Share this post Link to post
Kaiser Posted December 21, 2014 This is absolute garbage, no matter what, Doom Builder 2 refuses to insert the GL nodes after compiling with glbsp. I even tried setting up the maplumpnames setting in the config to include the gl lump names but it fails to save the map when I do that. How does one even make this work? This is getting frustrating. Here's my setup: /* MAP LUMP NAMES Map lumps are loaded with the map as long as they are right after each other. When the editor meets a lump which is not defined in this list it will ignore the map if not satisfied. The order of items defines the order in which lumps will be written to WAD file on save. To indicate the map header lump, use ~MAP Legenda: required = Lump is required to exist. blindcopy = Lump will be copied along with the map blindly. (usefull for lumps Doom Builder doesn't use) nodebuild = The nodebuilder generates this lump. allowempty = The nodebuilder is allowed to leave this lump empty. script = This lump is a text-based script. Specify the filename of the script configuration to use. */ doommaplumpnames { ~MAP { required = true; blindcopy = true; nodebuild = false; } THINGS { required = true; nodebuild = true; allowempty = true; } LINEDEFS { required = true; nodebuild = true; allowempty = false; } SIDEDEFS { required = true; nodebuild = true; allowempty = false; } VERTEXES { required = true; nodebuild = true; allowempty = false; } SEGS { required = false; nodebuild = true; allowempty = false; } SSECTORS { required = false; nodebuild = true; allowempty = false; } NODES { required = false; nodebuild = true; allowempty = false; } SECTORS { required = true; nodebuild = true; allowempty = false; } REJECT { required = false; nodebuild = true; allowempty = false; } BLOCKMAP { required = false; nodebuild = true; allowempty = false; } ~GL_MAP { blindcopy = true; required = false; nodebuild = true; } GL_VERT { required = false; nodebuild = true; allowempty = false; } GL_SEGS { required = false; nodebuild = true; allowempty = false; } GL_SSECT { required = false; nodebuild = true; allowempty = false; } GL_NODES { required = false; nodebuild = true; allowempty = false; } GL_PVS { required = false; nodebuild = true; allowempty = false; } } Here's the glbsp config setup: compilers { // This defines what files a compiler uses // The setting named "program" defines what .exe to run glbsp { interface = "NodesCompiler"; program = "glBSP.exe"; } } // Below are configurations for this nodebuilder. If you want to make your own configurations, // it is recommended to do so in your own file as this file will be updated each release. // NOTE: Nodebuilder configuration key names defined here must be unique for all nodebuilders! // Recommend to start the key name with the name of the compiler, followed by underscore and a specific name. // The "compiler" setting must refer to an existing compiler (such as defined above), but it // does not have to be a compiler defined in the same configuration file. nodebuilders { glbsp_normal { title = "glBSP - Normal"; compiler = "glbsp"; parameters = "-v2 %FI -o %FI"; } glbsp_fast { title = "glBSP - Fast (no reject)"; compiler = "glbsp"; parameters = "-normal -noreject -v5 -factor 1 %FI -o %FO"; } } I really appreciate those who can help me out with this. 0 Quote Share this post Link to post
Gez Posted December 21, 2014 Kaiser said:This is absolute garbage, no matter what, Doom Builder 2 refuses to insert the GL nodes after compiling with glbsp. I even tried setting up the maplumpnames setting in the config to include the gl lump names but it fails to save the map when I do that. How does one even make this work? This is getting frustrating. Here's my setup: ~GL_MAP { blindcopy = true; required = false; nodebuild = true; } That won't work, ~MAP is a hardcoded thing in DB2. It won't recognize ~GL_MAP in the same way. // Map header name in temporary file internal const string TEMP_MAP_HEADER = "TEMPMAP"; internal const string BUILD_MAP_HEADER = "MAP01"; public const string CONFIG_MAP_HEADER = "~MAP"; // Get the lump name lumpname = ml.Key.ToString(); if(lumpname == CONFIG_MAP_HEADER) lumpname = mapname; 0 Quote Share this post Link to post
MaxED Posted December 23, 2014 Kaiser said: Doom Builder 2 refuses to insert the GL nodes after compiling with glbsp. Fixed in the latest revision of GZDoom Builder Kaiser said: glbsp_normal { title = "glBSP - Normal"; compiler = "glbsp"; parameters = "-v2 %FI -o %FI"; // <- this should be "-v2 %FI -o %FO" } 0 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.