# Nuclide-Lite Makefile # 2025-01-22 # id1 = Quake; data1 = Hexen 2; qw = QuakeWorld GAME=id1 ENGINE_CLBUILD=m-dbg EDITOR=radiant ENGINE_URL=https://www.github.com/fte-team/fteqw NUCLIDE_DIR=`pwd` QCC_DIR=$(NUCLIDE_DIR) BUILD_DIR=$(NUCLIDE_DIR)/build NAME=idtech2-$(GAME) RADIANT_GAME="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/games/$(GAME).game" RADIANT_XLINK="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game/game.xlink" RADIANT_SYNAPSE="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game/synapse.config" RADIANT_PROJECT="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts/default_project.proj" RADIANT_TEXTURES="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/textures" RADIANT_DEF="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts/entities.def" NRC_GAME="$(NUCLIDE_DIR)/ThirdParty/netradiant-custom/install/gamepacks/games/$(NAME).game" NRC_GAMEDIR="$(NUCLIDE_DIR)/ThirdParty/netradiant-custom/install/gamepacks/$(NAME).game/$(GAME)/" NRC_DEF="$(NRC_GAMEDIR)/entities.def" NRC_SYNAPSE="$(NRC_GAMEDIR)/../default_build_menu.xml" EDITOR_QBSP="$(ARGSTR)TEMPLATEenginepath/qbsp" EDITOR_QVIS="$(ARGSTR)TEMPLATEenginepath/qvis" EDITOR_QRAD="$(ARGSTR)TEMPLATEenginepath/qrad" EDITOR_ENGINEPATH="$(ARGSTR)TEMPLATEenginepath" EDITOR_BASEPATH="$(ARGSTR)TEMPLATEbasedir" EDITOR_HOMEPATH="$(ARGSTR)TEMPLATEuserhomepath" define CMDSTR # endef define ARGSTR \$ endef help: @printf "Available targets:\n" @printf "\thelp\n" @printf "\tgame\n" @printf "\tfteqcc\n" @printf "\tfteqw\n" all: models maps game gfx game: fteqcc cd $(GAME)/src/ && ../../fteqcc pak: game qfiles ./Tools/build_filesdat.sh id1 cd $(GAME)/src && ../../qfiles -pak 0 cd $(GAME)/src && ../../qfiles -pak 1 run: fteqw game ./fteqw -basedir `pwd` -netquake -game $(GAME) wads: imgtool palette ./Tools/build_wads.sh $(GAME) maps: wads ./Tools/build_maps.sh $(GAME) empty: printf "\n" $(GAME)/maps/%.bsp: qbsp qrad qvis empty Tools/make_map.sh $(GAME) "$@" $(GAME)/models/%.mdl: iqmtool empty Tools/make_model.sh $(GAME) "$@" models: iqmtool palette ./Tools/build_models.sh $(GAME) gfx: imgtool palette cd $(GAME)/gfxsrc/ && ls | grep -v palette | grep \.xcf | xargs ../../imgtool --rgb8 --ext png cd $(GAME)/gfxsrc/ && ls | grep -v palette | grep \.png | xargs mogrify -type TrueColor -compress None -flip -format tga cp $(GAME)/gfx/palette.lmp $(GAME)/gfxsrc/palette.lmp cd $(GAME)/gfxsrc/ && ls | grep -v palette | grep \.tga | xargs ../../tga2lmp rm $(GAME)/gfxsrc/*.tga cp $(GAME)/gfx/palette.lmp $(GAME)/gfxsrc/palette.lmp rsync -va $(GAME)/gfxsrc/*.lmp $(GAME)/gfx/ rm $(GAME)/gfxsrc/*.lmp # various palette utilities needed tga2pal: $(CC) -o tga2pal Tools/Source/tga2pal.c wav2loop: $(CC) -o wav2loop Tools/Source/wav2loop.c tga2lmp: $(CC) -o tga2lmp Tools/Source/tga2lmp.c pal2pal: $(CC) -o pal2pal Tools/Source/pal2pal.c pal2wc: $(CC) -o pal2wc Tools/Source/pal2wc.c pal2colormap: $(CC) -o pal2colormap Tools/Source/pal2colormap.c qfiles: $(CC) -o qfiles Tools/Source/qfiles.c Tools/Source/cmdlib.c palette: pal2colormap tga2pal tga2lmp if [ ! -d $(GAME)/gfx ];then mkdir $(GAME)/gfx; fi convert $(GAME)/gfxsrc/palette.png -strokewidth 0 -fill "rgb( 255, 0, 255 )" -draw "rectangle 0,14 16,16" $(GAME)/gfxsrc/palette_nofb.png convert $(GAME)/gfxsrc/palette.png -strokewidth 0 -fill "rgb( 255, 0, 255 )" -draw "rectangle 0,0 16,13" $(GAME)/gfxsrc/palette_fbonly.png mogrify -type TrueColor -compress None -flip -format tga $(GAME)/gfxsrc/palette.png mogrify -type TrueColor -compress None -flip -format tga $(GAME)/gfxsrc/palette_nofb.png mogrify -type TrueColor -compress None -flip -format tga $(GAME)/gfxsrc/palette_fbonly.png cd $(GAME)/gfxsrc/ && ../../tga2pal palette.tga cd $(GAME)/gfxsrc/ && ../../tga2pal palette_nofb.tga cd $(GAME)/gfxsrc/ && ../../tga2pal palette_fbonly.tga cd $(GAME)/gfxsrc/ && ../../pal2colormap palette.lmp mv $(GAME)/gfxsrc/palette.lmp $(GAME)/gfx/palette.lmp mv $(GAME)/gfxsrc/palette_nofb.lmp $(GAME)/gfx/palette_nofb.lmp mv $(GAME)/gfxsrc/colormap.lmp $(GAME)/gfx/colormap.lmp cp $(GAME)/gfx/palette.lmp $(GAME)/gfx/palette.pal -mkdir -p $(GAME)/gfxsrc #rm $(GAME)/gfxsrc/palette.tga #rm $(GAME)/gfxsrc/palette_nofb.tga # fteqw repo update: if [ ! -d ThirdParty/fteqw ];then mkdir ThirdParty && git clone $(ENGINE_URL) ThirdParty/fteqw;else cd ./ThirdParty/fteqw && git pull;fi if [ ! -d ThirdParty/gtkradiant ];then git clone https://github.com/TTimo/gtkradiant ThirdParty/gtkradiant;else cd ./ThirdParty/gtkradiant && git pull;fi fteqcc: update cd ThirdParty/fteqw/engine && $(MAKE) qcc-rel install -m 0777 ./ThirdParty/fteqw/engine/release/fteqcc ./ fteqw: update cd ThirdParty/fteqw/engine && $(MAKE) makelibs ARCH=x86_64 cd ThirdParty/fteqw/engine && $(MAKE) $(ENGINE_CLBUILD) ARCH=x86_64 install -m 0777 ./ThirdParty/fteqw/engine/debug/fteqw ./ imgtool: update cd ThirdParty/fteqw/engine && $(MAKE) imgtool ARCH=x86_64 install -m 0777 ./ThirdParty/fteqw/engine/release/imgtool ./ iqmtool: update cd ThirdParty/fteqw/engine && $(MAKE) iqmtool ARCH=x86_64 install -m 0777 ./ThirdParty/fteqw/engine/release/iqmtool ./ qbsp: printf "qbsp build\n" qvis: printf "qvis build\n" qrad: printf "qrad build\n" radiant: update if [ ! -d ThirdParty/gtkradiant ];then git clone https://github.com/TTimo/gtkradiant ThirdParty/gtkradiant;fi cd ./ThirdParty/gtkradiant && scons target="radiant" mkdir -p ./ThirdParty/gtkradiant/install/games mkdir -p ./ThirdParty/gtkradiant/install/installs Tools/make_launcher.sh ./ThirdParty/gtkradiant/install/ ./radiant.bin radiant netradiant-custom: if [ ! -d ThirdParty/netradiant-custom ];then git clone https://github.com/Garux/netradiant-custom ThirdParty/netradiant-custom;fi cd ThirdParty/netradiant-custom && $(MAKE) DOWNLOAD_GAMEPACKS=no BUILD=debug RADIANT_ABOUTMSG="NuclideLite managed build." mkdir -p ./ThirdParty/netradiant-custom/install/gamepacks/games Tools/make_launcher.sh ./ThirdParty/netradiant-custom/install/ ./radiant.x86_64 netradiant-custom launcher: Tools/make_launcher.sh "./" "./fteqw -readonly -basedir ./ -netquake -game $(GAME) +exec $(USER).cfg" $(GAME).sh defs: Tools/make_mapdef.sh $(GAME) echo "" > "$(RADIANT_GAME)" echo "> "$(RADIANT_GAME)" echo " name=\"$(NAME)\"" >> "$(RADIANT_GAME)" echo " enginepath_linux=\"$(NUCLIDE_DIR)\"" >> "$(RADIANT_GAME)" echo " gametools_linux=\"$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game\"" >> "$(RADIANT_GAME)" echo " prefix=\".$(GAME)\"" >> "$(RADIANT_GAME)" echo " basegame=\"$(GAME)\"" >> "$(RADIANT_GAME)" echo "/>" >> "$(RADIANT_GAME)" mkdir -p "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/game" echo "" > "$(RADIANT_XLINK)" echo "" >> "$(RADIANT_XLINK)" echo "" >> "$(RADIANT_XLINK)" echo "" >> "$(RADIANT_XLINK)" echo "" >> "$(RADIANT_XLINK)" echo "" >> "$(RADIANT_XLINK)" echo "" > "$(RADIANT_SYNAPSE)" echo "pcx tga mip" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "wad" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "idtech2" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "maphl" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "def" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "idtech2" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "wad" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "idtech2" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "wad" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "idtech2" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "idtech2" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "idtech2" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" echo "wad" >> "$(RADIANT_SYNAPSE)" echo "" >> "$(RADIANT_SYNAPSE)" mkdir -p "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts" cp "$(GAME)/scripts/entities.def" "$(RADIANT_DEF)" echo "" > "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" echo "" >> "$(RADIANT_PROJECT)" mkdir -p "$(RADIANT_TEXTURES)/." cp "$(GAME)/gfx/palette.lmp" "$(RADIANT_TEXTURES)/palette.lmp" mkdir -p "$(HOME)/.$(GAME)/$(GAME)/scripts" rsync -rva "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/." "$(HOME)/.$(GAME)/$(GAME)/." rsync -rva "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/." "./$(GAME)/." mkdir -p "$(NRC_GAMEDIR)" echo "" > "$(NRC_GAME)" echo "> "$(NRC_GAME)" echo " type=\"q1\"" >> "$(NRC_GAME)" echo " name=\"$(NAME)\"" >> "$(NRC_GAME)" echo " enginepath_linux=\"c:$(NUCLIDE_DIR)\"" >> "$(NRC_GAME)" echo " enginepath_win32=\"c:$(NUCLIDE_DIR)\"" >> "$(NRC_GAME)" echo " engine_win32=\"fteqw.exe\"" >> "$(NRC_GAME)" echo " engine_linux=\"fteqw\"" >> "$(NRC_GAME)" echo " basegame=\"$(GAME)\"" >> "$(NRC_GAME)" echo " basegamename=\"$(NAME)\"" >> "$(NRC_GAME)" echo " unknowngamename=\"Custom Quake modification\"" >> "$(NRC_GAME)" echo " default_scale=\"1.0\"" >> "$(NRC_GAME)" echo " no_patch=\"1\"" >> "$(NRC_GAME)" echo " no_bsp_monitor=\"1\"" >> "$(NRC_GAME)" echo " show_wads=\"1\"" >> "$(NRC_GAME)" echo " archivetypes=\"pak wad\"" >> "$(NRC_GAME)" echo " texturetypes=\"tga jpg mip hlw\"" >> "$(NRC_GAME)" echo " modeltypes=\"mdl\"" >> "$(NRC_GAME)" echo " maptypes=\"mapq1\"" >> "$(NRC_GAME)" echo " shaders=\"quake3\"" >> "$(NRC_GAME)" echo " entityclass=\"quake3\"" >> "$(NRC_GAME)" echo " entityclasstype=\"def xml\"" >> "$(NRC_GAME)" echo " entities=\"quake3\"" >> "$(NRC_GAME)" echo " brushtypes=\"quake\"" >> "$(NRC_GAME)" echo " patchtypes=\"quake3\"" >> "$(NRC_GAME)" echo "/>" >> "$(NRC_GAME)" cp "$(GAME)/scripts/entities.def" "$(NRC_DEF)" echo "" > $(NRC_SYNAPSE) echo "" >> $(NRC_SYNAPSE) echo " \"[EnginePath]qbsp\"" >> $(NRC_SYNAPSE) echo " \"[EnginePath]qvis\"" >> $(NRC_SYNAPSE) echo " \"[EnginePath]qrad\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] -onlyents \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra4x4 \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra4x4 \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] \"[MapFile]\" " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra4x4 \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra4x4 \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra4x4 \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] \"[MapFile]\" " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo " [bsp] \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [vis] -noambient -fast \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " [light] -extra4x4 \"[MapFile]\"" >> $(NRC_SYNAPSE) echo " " >> $(NRC_SYNAPSE) echo "" >> $(NRC_SYNAPSE)