Still on (space)tracks!

So, it’s now one year since the previous “Are you ready” blog post was published, and now two years since alpha 0.50 was released! It’s time to tell some kind words. 🙂

A big thank-you to kharnov!

First, we deeply thank our great great friend kharnov for all the years he spent with us working on that awesome project! kharnov had to step back from the project to focus on other topics in his life, and we want to give him a big tribute.

kharnov vodka, the mind-blowing experienceif you find this poster in game, raise your glass

kharnov liked to describe himself as a writer, and liked to recall he was initially hired for that, but he was much more and we want to dedicate him some warm words.

Without him this project would not be what it is, but we not only miss what he was doing, we not only miss his greatness, we miss more than that: we miss a friend, we miss a man: kharnov is a very great and nice guy, the kind of man you cannot see stepping away without having strong feelings. So, let’s have a big thank to kharnov for all his dedication through the years among the lead, for his good mood and for himself. He deserves so much!

Yet it moves

If you browsed the website recently you probably noticed a new page named Development Activity, it’s a page summarizing development activity across all repositories because there is now more than one. Some people worried about the project health because they were looking at the history of the original repository without knowing about all the other ones, so this Development Activity page is very helpful to have a look at what’s going on.

So we can say development is active and even if we’ve known faster pace, yet it moves. 🙂 The url to track those changes is easy to remember: unvanquished.net/activity.

an Advanced Dragoon facing a Battlesuit
Let’s meet together

To follow development and keep in touch, you can have a look on that Development Activity page. You probably know the IRC channels #unvanquished and #unvanquished-dev on FreeNode (see the Chat page) but we also set up a Discord room with bridged channels.

Tracking data

Wait, I said there is now more than one repository… Yes, at the time of alpha 50, there was only one repository tracking the engine, the game code, and a partial part of the Unvanquished main package. Everything else was not tracked properly: in some cases people had some personal repositories but it was only partial and stored in many places if not local, and most of it was not tracked on any source control system at all. Since the last release the Unvanquished repository was split into three: Dæmon (the engine one), Unvanquished (the game code one) and unvanquished_src.dpkdir, the main package one.

Since the engine and the asset repositories are submodules, if you clone the Unvanquished repository recursively and build everything, you’ll be able to start the game enough to join a server and autodownload what’s missing.

Vega textures
Textures and map stuff now tracked on official repositories

So basically, there was a lot of work done on the topic of Unvanquished as a project. A special GitHub organization named UnvanquishedAssets was created to host asset repositories with a large focus on reproducibility, because reproducibility is at least as important as being free and open source.

Legal audit

Since we talk about being free and open source, some big efforts were done on the asset side.

We did a strong audit of our files (and creating asset repositories was helpful to that task), it has taken a lot of time but it looks like we can now put a name and a license in front of every file we have. For the core assets (player, weapon, buildable models…), some assets from one contributor have an NC clause; everything else from core assets is using a CC By SA compatible license. The situation is about the same on map and texture side: a few use NC licenses and everything else is using a CC By SA compatible license. So we now have reproducible assets, clear legal status on them, and a vast majority of free ones. That’s a very big step. Oh, and Supertanker relicensed all his maps to CC by SA 3.0, that’s amazing!

Well, I said “in front of every file”, the remaining exceptions are sounds: we still rely a lot on Tremulous sounds. We created a special resource package named res-legacy for them and that package is meant to be dropped one day. We are at a point where almost everything is replaced from Tremulous but sounds, and it’s hard to track Tremulous sounds’ authorship so we really want to replace them, not only to have our own sound identity but to be more confident on our assets. If you enjoy making weird and awesome noises, we need you for Unvanquished! If you like composing epic sci-fi soundtracks, you’re welcome!

Still on the licensing side, a big effort was done to remove the NC clause on Unvanquished’s Wiki (meh, who had the idea to put an NC clause on a wiki? what’s the point of a non-commercial clause on knowledge?). We are now at a point where permission from only one contributor is missing, we hope to get this permission because rewriting things would be very boring. If you know how to get in touch with Darren Salt, you can save us. 🙂

Now, while we wait for this remaining permission, we ask new Wiki contributors to give permission to remove the NC clause on what they write.

Made to mod

You probably noticed the .dpkdir extension in a previous sentence, DPK is the new name of our package format. Years after years we improved the good old pk3 virtual file system inherited from Quake Ⅲ Arena, and we had to face it: it was not pk3 anymore. The issue happened when we wanted to implement our improvements in asset editors and toolchains: we had to implement a way to tell a third party editor or map compiler our packages are much more than pk3 ones so we chose the .dpk file extension. Like pk3 and pk3dir for engines that support it, a dpk archive can be extracted as a dpkdir directory and loaded by the engine the same way an archive would be. Unlike the good old pk3 format, the DPK format handles package versioning and dependencies, and the game only loads what it needs. You can read more on the wiki page dedicated to DPK format.

Perhaps you heard some murmur about Unity having improved the crunch format. We also use this image compression format optimized for GPU, and we discovered their improved tool reduces the asset compression time of our asset corpus from hours to minutes while reducing the file size significantly. They said “up to 2.5 times faster” but I’ve seen some textures being compressed 6 times faster and the average of the whole is 4.3 times faster, and yes the tool compresses more than 10% more. The results are very impressive and looks very good. The bad news is that they broke compatibility with the old format and did nothing to indicate whether a file is using the old format or the new one, so we decided to make the big jump and to recompress everything, but since we now have asset repositories with reproducible builds, it’s just at the fingertip of make.

NetRadiant loading texture sets according to DEPS file
Selective texture set loading in NetRadiant

If you’re a mapper and want your map to be ready for next release, this forum thread will tell you everything you need, especially DPK related stuff to know. If you want to use crunch, we recommend you our fork that fixes some build issues (it looks like Unity have not driven any test outside of Windows…) and add an option to renormalize properly normal maps. You will probably be happy to hear that Unvanquished is now fully supported by the NetRadiant level editor (including DPK format with dependency support and so on) if you are ready to build the master branch!

So we created asset repositories (which raises the repository count above 30, hence the need for a Development Activity page), and everything is now tracked on them except a couple of maps that are coming soon. History was redone when it was possible and we can thank for that our advanced package format that allowed us to ship incremental updates even when assets were not tracked by any source control system yet.

A big job was done purging our asset base from now unused stuff. Our package system allows incremental updates but it was incremental additions and after 50 alpha releases we had to clean up some mess… You can expect a 30% file size reduction on the distributed files.

Incoming

All the buildable and player models inherited from Tremulous are now entirely replaced. Some gameplay changes happened, especially on the resource management part: Unvanquished gameplay now focuses more on territory capture than base defense. Some servers host some backports playable with 0.50 release so you can already play the new dragoon and enjoy bots leaving the game when you enter the battlezone. Oh, and bots now know how to unstuck themselves when they accidentally jump or fall outside of the navigation meshes. Well, I will not tell you everything to keep some things to say in the release post. 😉

It looks like we are close to a release, what is preventing us to release is we all have very busy lives, sadly it’s just that. There is enough manpower to fix things day after day but playing the release dance needs a bit more than that. Next release will be an alpha again because doing a beta after so many changes would not be meaningful, but you can expect an alpha release as stable as the 0.50 one is.

A lot of work was done on the updater side and it will become the official way to get the game at 0.51 release time. The updater will become the game launcher itself: you’ll just click the Unvanquished icon and if there is an update, it will fetch the update then load the game, otherwise it will just load the game. It’s very convenient and makes easy for players to always be up-to-date without having to care about it.

The alpha 51 will be a big milestone on the method of working side. Keeping alive a big project like Unvanquished requires to clean-up mess and dust sometime. While hacks may be good to start something and get visible results quickly, they can’t scale, especially when you have to track thousands of files in various formats with special build profiles based on esoteric rules like the grand-father directory name. As we don’t plan to drop a buggy game that would be dead on release day, we have to clean-up things to ensure the game is always maintainable and the contribution gap not too high. Focusing on moddability is very sane for an open independent and passionate project like ours.

On the community side some nice maps surfaced, you can try them on servers and learn about them on forums.

We had played some great dev games, but we faced a nasty bug that prevented us from testing more preview packages, so we now have no other choice: if we want to test new things during dev games, we have to ship a new release. 😀

Unvanquished is still on tracks, on spacetracks!

3 thoughts on “Still on (space)tracks!”

  1. Thank you guys for your work.
    Unvanquished is awesome. By far the best FOSS FPS, (and probably my favorite FOSS project). The work since the Tremulous days is impressive. I hope the new version is gonna bring you some press, and a whole brunch of new players.

    Can’t wait for a version without bots stuck all over the place. 😉

Leave a Reply

Your email address will not be published. Required fields are marked *