I want mappers being able to build against original files, not against converted one. This way it avoids all the format issues in the edition chain (netradiant), in the buildchain (q3map2) or specific bugs due to specific format (like shadowcasting issues with crunched textures). Uncommon compression formats (like webp, crn, etc.) are for internal use in the game engine itself. Also I want mappers being able to build Unvanquished-related stuff without having to rely on “.unvanquished/pkg” at all. Do you remember the time when Quake 3 modders were all building against “.q3a/baseq3” and how it was hard to prove the build was clean, so nobody cared for legal issues because it was hard to prove the build was clean because of the way the build chain was designed to mix Id Software “Intellectual Property” with user's contribution ? I don't want that for Unvanquished and Daemon based game makers. I want the Daemon engine to be an engine it's nice to make game with, and if something is annoying in Unvanquished build, it means it's annoying in Daemon-based game development and must be fixed.
I think people must be able to create games with Daemon just the way we do Unvanquished, so if it's hard to me to rebuild Unvanquished the way Unvanquished is done, it means it's hard to create a game with Daemon. That's why I'm not only thinking about the engine itself, but I'm also thinking about the editing toolchain and the the way assets are managed.
That's why I remade all these tex packages a way they can be fetched independently, each one having his own build mechanism, done a way you can build multiple of them in a row. Because if we success at this point, it means everyone who wants to base his own game on Daemon can success at this point too.
The repositories I have on my computer will allow anyone to fetch and build one texture package:
Code: Select all
git clone …/tex-space_src.dpkdir
# fetching tex-space_src.dpkdir
cd tex-space_src.dpkdir
urcheon prepare
# preparing .
urcheon build
# building build/test/tex-space_test.dpkdir
urcheon package
# packaging build/pkg/tex-space_1.0.dpk
Or to fetch all texture packages:
Code: Select all
git clone …/UnvanquishedAssets
cd Unvanquished-assets
make init
# fetching tex-all_src.dpkdir
# fetching tex-common_src.dpkdir
# fetching tex-ej01_src.dpkdir
# fetching tex-exm_src.dpkdir
# fetching tex-ex_src.dpkdir
# fetching tex-pk01_src.dpkdir
# fetching tex-pk02_src.dpkdir
# fetching tex-space_src.dpkdir
# fetching tex-tech_src.dpkdir
# fetching tex-trak5_src.dpkdir
make prepare
# preparing src/tex-all_src.dpkdir
# preparing src/tex-common_src.dpkdir
# preparing src/tex-ej01_src.dpkdir
# preparing src/tex-exm_src.dpkdir
# preparing src/tex-ex_src.dpkdir
# preparing src/tex-pk01_src.dpkdir
# preparing src/tex-pk02_src.dpkdir
# preparing src/tex-space_src.dpkdir
# preparing src/tex-tech_src.dpkdir
# preparing src/tex-trak5_src.dpkdir
make build
# building build/test/tex-all_test.dpkdir
# building build/test/tex-common_test.dpkdir
# building build/test/tex-ej01_test.dpkdir
# building build/test/tex-exm_test.dpkdir
# building build/test/tex-ex_test.dpkdir
# building build/test/tex-pk01_test.dpkdir
# building build/test/tex-pk02_test.dpkdir
# building build/test/tex-space_test.dpkdir
# building build/test/tex-tech_test.dpkdir
# building build/test/tex-trak5_test.dpkdir
make package
# packaging build/pkg/tex-all_2.0.dpk
# packaging build/pkg/tex-common_2.0.dpk
# packaging build/pkg/tex-ej01_1.0.dpk
# packaging build/pkg/tex-exm_1.0.dpk
# packaging build/pkg/tex-ex_1.0.dpk
# packaging build/pkg/tex-pk01_1.0.dpk
# packaging build/pkg/tex-pk02_1.0.dpk
# packaging build/pkg/tex-space_1.0.dpk
# packaging build/pkg/tex-tech_1.0.dpk
# packaging build/pkg/tex-trak5_1.0.dpk
Of course, for mapping, there is no need to build these packages, and it's not recommended since it's better for the mapper to build his own map sources against texture dependencies sources. That way, mappers can build against “tex-space_src.dpkdir” if they only need this texture package, or building against “Unvanquished-assets/” if they need all tex packages.
That way open-source mappers who wants to make open source maps only can fetch open source tex-packages only. “Hello Xonotic mappers, Unvanquished will be a good target for you, I hope we will be able to work together, and I'm sure once you will have tasted the improvement we have made to the toolchain you will ask for them in Xonotic too, it's win-win”.
It's because of that I'm writing a toolchain and I'm modifying q3map2 like adding -fs_pathpath support to q3map2 the same way it works in the daemon engine. That way people can compile maps doing “q3map2 -fs_pakpath Unvanquished-assets" and can test maps doing “daemon -pakpath Unvanquished-assets/build/test".
Currently I'm trying to run Unvanquished only using the built packages from the repositories I made, running daemon from Unvanquished git and pakpath from Unvanquished-assets. It already works for model package (only faced one issue with flamer first person view, haven't yet tried to find the cause, everything else work as expected) and already works with tex packages (I still have to consciously check some names to be sure).
This way, this repositories also makes Unvanquished a fully reproducible game, for everything, from code to assets, by everyone (including Debian for example, since it's the example you gave for licensing). To me that is more important than having a completely free game, the reproducible build requisite comes before the open source build requisite, since open source stuff you can't build from source does not make so much sense.
I want anyone being able to do:
Code: Select all
git clone https://github.com/UnvanquishedAssets/UnvanquishedAssets
git clone https://github.com/Unvanquished/Unvanquished
cd UnvanquishedAssets
make
cd ..
cd Unvanquished
mkdir build ; cmake .. ; make
./daemon -pakpath ../../Unvanquished-assets/build/pkg
If I'm checking my repositories against yours it's because I redid the git history for each tex-package. For example for the tex-space package, I unpacked osirion files from env-osirion-r02.zip with original base names (like “osirion/osirion/sky01_back6”, converting them to png, and rotating bottom cw and top ccw, with a commit that says they are original files converted to png with bottom rotated wc and top ccw (following Ingar's instructions he left), then I made a commit renaming all that stuff to fit Unvanquished naming (renaming “osirion/sky02_left2.png” to “env/shared_space_src/sky02_rt.png” for example), then I made a commit to add shaders, etc.
Yes I like git history like I like to tell stories. Once upon a time, here finishes my wall of text.