Port over radiant integration

This commit is contained in:
Marco Cawthorne 2025-01-23 23:36:30 -08:00
parent 4db1c33265
commit 586008044a
4 changed files with 178 additions and 3 deletions

27
.gitignore vendored Normal file
View file

@ -0,0 +1,27 @@
*.bsp
*.dat
*.def
*.lmp
*.lno
*.mdl
*.pal
*.prt
*.lux
*.lit
*.wad
Tools/base_entities.def
conhistory.txt
fteqcc
fteqw
imgtool
installed.lst
iqmtool
pal2colormap
pal2pal
qbsp
qfiles
qlight
qvis
radiant
tga2lmp
tga2pal

View file

@ -6,10 +6,32 @@ GAME=id1
ENGINE_CLBUILD=m-dbg
EDITOR=radiant
ENGINE_URL=https://www.github.com/fte-team/fteqw
NAME=`./Tools/get-name.sh $(GAME)`
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"
ENTITY_DEF="$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts/entities.def"
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"
@ -43,6 +65,9 @@ $(GAME)/maps/%.bsp: qbsp qlight qvis
models: iqmtool palette
./Tools/build_models.sh $(GAME)
edef:
Tools/make_mapdef.sh $(GAME)
gfx: imgtool palette
cd $(GAME)/gfxsrc/ && ls | grep -v palette\.lmp | grep \.xcf | xargs ../../imgtool --rgb8 --ext png
cd $(GAME)/gfxsrc/ && ls | grep -v palette\.png | grep \.png | xargs mogrify -type TrueColor -compress None -flip -format tga
@ -79,8 +104,6 @@ palette: pal2colormap pal2pal tga2pal
mv $(GAME)/gfxsrc/colormap.lmp $(GAME)/gfx/colormap.lmp
mv $(GAME)/gfxsrc/palette.pal $(GAME)/gfx/palette.pal
-mkdir -p $(GAME)/gfxsrc
-mkdir -p $(GAME)/textures # needed by gtkradiant
cp $(GAME)/gfx/palette.lmp $(GAME)/textures/palette.lmp
rm $(GAME)/gfxsrc/palette.tga
# fteqw repo
@ -118,3 +141,70 @@ radiant: update
if [ ! -d ThirdParty/gtkradiant ];then git clone https://github.com/TTimo/gtkradiant ThirdParty/gtkradiant;fi
cd ThirdParty/gtkradiant && scons
Tools/make_launcher.sh ./ThirdParty/gtkradiant/install/ ./radiant.bin radiant
radiant-game: radiant edef
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?>" > "$(RADIANT_GAME)"
echo "<game" >> "$(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 "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?>" > "$(RADIANT_XLINK)"
echo "<!-- Links for the $(NAME) game pack -->" >> "$(RADIANT_XLINK)"
echo "<links>" >> "$(RADIANT_XLINK)"
echo "<item name=\"Nuclide Developer Reference\" url=\"http://developer.vera-visions.com/\"/>" >> "$(RADIANT_XLINK)"
echo "<item name=\"Vera Visions\" url=\"http://www.vera-visions.com/\"/>" >> "$(RADIANT_XLINK)"
echo "</links>" >> "$(RADIANT_XLINK)"
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?><synapseconfig><client name=\"core\"><api name=\"image\">" > "$(RADIANT_SYNAPSE)"
echo "pcx tga mip" >> "$(RADIANT_SYNAPSE)"
echo "</api><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
echo "wad" >> "$(RADIANT_SYNAPSE)"
echo "</api><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
echo "</api><api name=\"map\">" >> "$(RADIANT_SYNAPSE)"
echo "maphl" >> "$(RADIANT_SYNAPSE)"
echo "</api><api name=\"eclass\">" >> "$(RADIANT_SYNAPSE)"
echo "def" >> "$(RADIANT_SYNAPSE)"
echo "</api><api name=\"surfdialog\">" >> "$(RADIANT_SYNAPSE)"
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
echo "</api></client><client name=\"image\"><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
echo "wad" >> "$(RADIANT_SYNAPSE)"
echo "</api></client><client name=\"shaders\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
echo "</api><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
echo "wad" >> "$(RADIANT_SYNAPSE)"
echo "</api></client><client name=\"map\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
echo "</api></client><client name=\"xmap\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
echo "</api></client><client name=\"model\"><api name=\"shaders\">" >> "$(RADIANT_SYNAPSE)"
echo "idtech2" >> "$(RADIANT_SYNAPSE)"
echo "</api><api name=\"VFS\">" >> "$(RADIANT_SYNAPSE)"
echo "wad" >> "$(RADIANT_SYNAPSE)"
echo "</api></client></synapseconfig>" >> "$(RADIANT_SYNAPSE)"
mkdir -p "$(NUCLIDE_DIR)/ThirdParty/gtkradiant/install/installs/$(NAME)Pack/install/$(GAME)/scripts"
cp "$(GAME)/scripts/entities.def" "$(ENTITY_DEF)"
echo "<?xml version=\"1.0\"?>" > "$(RADIANT_PROJECT)"
echo "<!DOCTYPE project SYSTEM \"dtds/project.dtd\">" >> "$(RADIANT_PROJECT)"
echo "<project>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"version\" value=\"2\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"template_version\" value=\"8\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"basepath\" value=\"$(EDITOR_ENGINEPATH)$(EDITOR_BASEPATH)/\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"rshcmd\" value=\"\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"remotebasepath\" value=\"$(EDITOR_ENGINEPATH)$(EDITOR_BASEPATH)/\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"entitypath\" value=\"$(ARGSTR)TEMPLATEtoolspath$(EDITOR_BASEPATH)/scripts/entities.def\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"texturepath\" value=\"$(EDITOR_ENGINEPATH)$(EDITOR_BASEPATH)/textures/\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"autosave\" value=\"$(EDITOR_HOMEPATH)$(EDITOR_BASEPATH)/maps/autosave.map\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"mapspath\" value=\"$(EDITOR_HOMEPATH)$(EDITOR_BASEPATH)/maps/\"/>" >> "$(RADIANT_PROJECT)"
echo "<key name=\"bsp_VMAP: (Fast Fullbright)\" value=\"! &quot;$(EDITOR_VMAP)&quot; -v $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -custinfoparms -threads 4 -samplesize 8 $(ARGSTR) &amp;&amp; ! &quot;$(EDITOR_VMAP)&quot; $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -vis -saveprt$(ARGSTR)\" />" >> "$(RADIANT_PROJECT)"
echo "<key name=\"bsp_VMAP: (Fast Light)\" value=\"! &quot;$(EDITOR_VMAP)&quot; -v $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -custinfoparms -threads 4 -samplesize 8 $(ARGSTR) &amp;&amp; ! &quot;$(EDITOR_VMAP)&quot; $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -vis -saveprt $(ARGSTR) &amp;&amp; ! &quot;$(EDITOR_VMAP)&quot; $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -light -custinfoparms -v -samplesize 8 -fast -threads 4 -samples 4 -shade -shadeangle 60 -patchshadows $(ARGSTR)\" />" >> "$(RADIANT_PROJECT)"
echo "<key name=\"bsp_VMAP: (Full)\" value=\"! &quot;$(EDITOR_VMAP)&quot; -v $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -custinfoparms -threads 4 -samplesize 8 $(ARGSTR) &amp;&amp; ! &quot;$(EDITOR_VMAP)&quot; $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -vis -saveprt $(ARGSTR) &amp;&amp; ! &quot;$(EDITOR_VMAP)&quot; $(CMDSTR) -game $(GAME) -fs_basepath &quot;$(EDITOR_ENGINEPATH)&quot; -light -custinfoparms -samplesize 8 -fast -threads 4 -samples 4 -shade -shadeangle 60 -patchshadows $(ARGSTR)\" />" >> "$(RADIANT_PROJECT)"
echo "</project>" >> "$(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)/."

14
Tools/make_launcher.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
if [ $# -lt 3 ]; then
printf "make_launcher.sh DIR COMMAND DESTINATION\n"
exit
fi
DIR="$1"
COMMAND="$2"
DEST="$3"
printf "#/bin/sh\ncd \"$DIR\"\n$COMMAND\n" > "$DEST"
chmod +x "$DEST"

44
Tools/make_mapdef.sh Executable file
View file

@ -0,0 +1,44 @@
#!/bin/sh
CWD="$(pwd)"
ent_for_mod()
{
# don't bother if we don't have sources
if ! [ -f "$CWD/$1/src/progs.src" ]; then
exit
fi
mkdir -p "$CWD/$1/scripts"
ENT_OUTFILE="$CWD/$1/scripts/entities.def"
echo '' > "$ENT_OUTFILE"
echo "Scanning for definitions inside the game directory."
find "$CWD/$1/src/" -type f \( -iname \*.qc \) | while read EDEF_N; do
echo "... $EDEF_N"
sed -n '/\/*!QUAKED/,/*\//p' $EDEF_N >> "$ENT_OUTFILE"
# fix doxygen markup
done;
sed -i 's/*!QUAKED/*QUAKED/g' "$ENT_OUTFILE"
cat "$CWD/Tools/base_entities.def" >> $ENT_OUTFILE
}
# first dump all the general purpose entities
BASE_ENT="$CWD/Tools/base_entities.def"
echo '' > "$BASE_ENT"
echo "Scanning for definitions inside the general entity codebase."
find "$CWD/src/entities/" -type f \( -iname \*.qc \) | while read EDEF_N; do
echo "... $EDEF_N"
sed -n '/\/*!QUAKED/,/*\//p' $EDEF_N >> "$BASE_ENT"
# fix doxygen markup
done;
sed -i 's/*!QUAKED/*QUAKED/g' "$BASE_ENT"
# each game gets its own ents + general purpose ents appended at the end
if [ $# -gt 0 ]; then
ent_for_mod $1
fi