-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build-release: allow do build dpk or merged dpk+vm as a mod #24
base: master
Are you sure you want to change the base?
Conversation
We already have `build-release vm` command, it produced a `vm_0.dpk` only containing the `.nexe` files. Now we can do `build-release base` to build `unvanquished_0.dpk` from `pkg/unvanquished_src.dpkdir`. It only contains built files from the dpkdir. We can also do `build-release mod` to buils `unvanquished_0.dpk` with both files from `pkg/unvanquished_src.dpkdir` and the `.nexe` files. It uses Urcheon if available, otherwise it fallbacks on a script mimicking what does Urcheon (but less complete and with no file conversion). It may be good enough to build a mod dpk with a single command. For debugging purposes the `--fake-urcheon` option makes possible to use the script mimicking Urcheon even if Urcheon is available. As usual the build folders are stored in `build/target` and the produced files are stored in `build/release`. The `--reference <ref>` option can be used to build a delta pak from the given reference (requires Urcheon).
f6a1d6c
to
14ec448
Compare
So one can do that (assuming being called from within build-release mod --reference v0.52.0 --pak-name nightly And get a delta pak named To get a versionned dpk, one needs #16 to be merged as well. |
OK, now that #16 is merged, one can do: build-release mod --reference v0.52.0 --pak-name nightly -v And get:
This with crunched assets, nexe debug symbols, etc. Just like our release builds. |
I'm skeptical that build-release is a good entry point for modding. The VMs are comparatively easy to build - the default options should work fine. There aren't any extra optimization options or static linking stuff which makes building the engine complicated. So going through this script is a pointless extra layer. The only exception would be if modders want to have Breakpad symbols. Seems unlikely to me though. Is that the use case you have in mind? Being opposed to complex shell scripts, I would rather see an Urcheon option that takes the path to a build directory containing VMs to include in the pak. |
I remind the whole purpose of this script (and doing things like embedding a As said in #21 “People are complaining for long time doing a mod isn't easy, Not doing this here would make modders second-class citizens and would end in code duplication and discrepancy. I want modders not being second class citizens, and in fact modders are us when we do hotfixes, nightly servers or host gameplay or feature experiments. This can benefit the nightly server, the tutorial effort, the lua effort, etc. For example, right now our nightly server is broken when we release the game because of the dpk is inexistent to get a nexe merged until we also modify the dpkdir. Even if we go the road of splitting base dpk and nexe dpk, the ability to build the basepak from this script is more than welcome because everyone wants the unvanquished dpkdir to be moved back in Unvanquished repository and then we need an easy way to build it outside of UnvanquishedAssets. Those enhancements are also purposed to reduce the amount of manual steps done at release time. I'm also thinking about extending Why I find this script a good entry point is that:
I also have that idea but even if that gets implemented in Urcheon at some point, it would just mean to me I'll make I still want |
Most of the diff size here is the fake Urcheon implementation. I thought it would be the most controversial part but I want this because it makes making a mod very easy and not crunching a mod is OK if that allows more modders to use this script out of the box without having to set-up the complete Urcheon environment and deps. Here is some file sizes comparison, first is a crunched delta pak (from 0.52.0 to master), then full pak (master), crunched then not crunched:
|
Thanks for explaining your thinking.
How hard would it be to make fake-urcheon a separate script? Also I would want Finally, producing a pak named |
The real obstacle here is that the fake-urcheon relies on the
Good idea. It's OK to me, I can turn the lack of Urcheon into an error with an advice to use |
|
Duplicating is fine. It's a small function.
How is shelling out to Fake Urcheon any less self-contained than shelling out to Real Urcheon?
I don't follow. |
The idea is to have a self-contained build-release with a working alternative for those who don't have strong enough need for setting-up the full Urcheon and its environment. Right now, someone already able to build the game code can get a simple mod dpk just by relying on the shell and 7z. I can understand getting the full featured Urcheon may look like a huge step (and be discouraging) just to distribute a simple mod. That's the motivation behind the fake urcheon. If Urcheon was available in common distros or other things making it easy to get working I would not even consider an alternative. :D
As long as build-release lives in a separate repository that is not Unvanquished, people may just want to donwload the script without cloning build-release repository. That's why I like it being self-contained. Once this script and its possible dependencies like fake-urcheon are in Unvanquished or in Unvanquished/daemon, the best way to use the script would be to use it from the Unvanquished repository itself, meaning sidecar files like fake-urcheon would be guaranteed to be there as well. Moving build-release to Unvanquished or Unvanquished/daemon makes script splitting less risky. |
e9921a4
to
2e59443
Compare
The self-containment consideration seems bogus to me, as if people will be able to mod Unvanquished without knowing how to clone a Git repository. But I'm not against moving all the release scripts to |
+1 on that, that's a step towards making modding simpler. I agree with the idea of making Urcheon optional too, because people would get scared by the perceived complexity and the dependency list otherwise (q3map, crunch, python, sloth, etc). Long term, if we want to have a |
We already have
build-release vm
command, it produced avm_0.dpk
only containing the.nexe
files.Now we can do
build-release base
to buildunvanquished_0.dpk
frompkg/unvanquished_src.dpkdir
. It only contains built files from the dpkdir.We can also do
build-release mod
to builsunvanquished_0.dpk
with both files frompkg/unvanquished_src.dpkdir
and the.nexe
files.It uses Urcheon if available, otherwise it fallbacks on a script mimicking what does Urcheon (but less complete and with no file conversion). It may be good enough to build a mod dpk with a single command.
For debugging purposes the
--fake-urcheon
option makes possible to use the script mimicking Urcheon even if Urcheon is available.The
--vmpak-name <name>
and--basepak-name <name>
options canbe used to build dpk paks with non-default names.
As usual the build folders are stored in
build/target
and the produced files are stored inbuild/release
.