diff --git a/BUILD-SYSTEM.adoc b/BUILD-SYSTEM.adoc index b634eee0..26bef55a 100644 --- a/BUILD-SYSTEM.adoc +++ b/BUILD-SYSTEM.adoc @@ -241,3 +241,29 @@ around. Some of them are listed here. any +TEXTURE1+ lumps it generates. To work around this, a “dummy” IWAD file containing an empty +TEXTURE1+ lump is contained inside the +dummy+ directory. + +== Node builder + +Each Freedoom level found in the "levels" directory should have exactly +11 lumps in a https://zdoom.org/wiki/WAD[particular order] with no +padding between the lumps. Of those 11 lumps 6 (, THINGS, +LINEDEFS, SIDEDEFS, VERTEXES and SECTORS) are maintained by a level +editor such as GZDoom Builder, SLADE or Eureka. The remaining 5 lumps +(SEGS, SSECTORS, NODES, REJECT and BLOCKMAP) are added by a node +builder. The Freedoom project uses the +https://github.com/Doom-Utils/zennode[ZenNode] node builder. For +example, to rebuild the nodes for all 100 levels run the +"rebuild-nodes" make target in the top level makefile: +[source,bash] +----------------- +make rebuild-nodes +----------------- +To control how the node builder is invoked, or which levels are +rebuilt, override the NODE_BUILDER and NODE_BUILDER_LEVELS make +variables respectively. For example, to specify the full path to +ZenNode when it's not in the path and to rebuild only the first +chapter of Freedoom 1 as well all of the deathmatch levels: +[source,bash] +----------------- +make NODE_BUILDER=/opt/zennode/ZenNode NODE_BUILDER_LEVELS="c1m? dm??" rebuild-nodes +----------------- diff --git a/Makefile b/Makefile index 4eca9423..c425155e 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,8 @@ CPP=scripts/simplecpp DEUTEX=deutex DEUTEX_BASIC_ARGS=-v0 -rate accept DEUTEX_ARGS=$(DEUTEX_BASIC_ARGS) -doom2 bootstrap/ +NODE_BUILDER=ZenNode +NODE_BUILDER_LEVELS=c?m? dm?? map?? FREEDOOM1=$(WADS)/freedoom1.wad FREEDOOM2=$(WADS)/freedoom2.wad @@ -160,6 +162,15 @@ test: test-map-names fix-map-names: scripts/fix-map-names levels +# Rebuild the nodes for the level WADs. By default this invokes "ZenNode" on +# all 100 level WADs. Override the "NODE_BUILDER" prefixed variables to +# configure. +rebuild-nodes: $(addprefix levels/,$(addsuffix .wad,$(NODE_BUILDER_LEVELS))) + for level in $^; \ + do \ + $(NODE_BUILDER) $$level -o $$level; \ + done + %.6: $(MAKE) ASCIIDOC_MAN="$(ASCIIDOC_MAN)" -C dist $@ diff --git a/levels/map06.wad b/levels/map06.wad index a93c5ba5..f38860aa 100644 Binary files a/levels/map06.wad and b/levels/map06.wad differ