Welcome to TWiV 42, the only edition that comes with a towel included! This week look at the newly-created game design working group and improvements to CI. We also get some updates about auth, asset compression, player creation, and a new song by @Aeronic.

Contributor Work

Thanks to this week's contributors, @xMAC94x and @Zesterer!

@Acrimon has been continuing work on auth by fixing bugs, as well as working on a Veloren video renderer. @AngelOnFira has been working on cross-compiling to Mac, as well as an RFC and discussions on moving VCS to Github. He has also been working on asset compression, which has resulted in a 50% decrease in the asset folder size.

@SrMizuki has been working on improving the player creation screen, see the image below. @Felixader created an Imgur gallery with their work, you can check that out here. @Zesterer has just finished his work on clouds, but there will be a larger writeup on that next week.

The WIP character creation screen

Verdant Glades by @Aeronic

Your browser does not support the audio element. An exploration or village theme

CI Improvements by @xMAC94x

The GitLab CI cache currently copies all residual build files into a .zip (2 GB compressed, 8 GB uncompressed) before and after every job. This kills CI performance, as Rust builds leave a lot of small files and many dependencies, which take longer to zip. With the new changes, we precompile Veloren while building our CI Docker image.

This cache will be saved under /dockercache/veloren/target and we can make a symlink to that folder in the .gitlab-ci.yml file. That way we can reuse the cache and we don't need to copy stuff. Docker is quite quick to start up the container with this cache.

@Zesterer has created Moon

We can have multiple runners going at once, compiling different branches, because Docker handles the storage completely. There is no shared storage between them. However we have a huge disadvantage, the cache doesn't get updated. This means the cache is the same every time it builds. So we don't get any advantages of Rust incremental builds between Docker image builds. When we want to update the cache, we need to create a new Docker image.

However, I would expect a weekly run to be viable. This should be an overnight image build, as it takes 40 min on an 8 core ryzen 1700X. Even if it took 3 hours it wouldn't be a problem.

The new system can compile all jobs in a merge-to-master pipeline version in 32 minutes on a single runner compared to over 2 hours on the previous system.

New Game Design Working Group

This week, a new working group was created for game design! @Silentium is the team lead and has been working hard the last few weeks to get design frameworks in place.

Two weeks ago, a design meeting was held for character stats. The process is to write a Google Doc during the meeting, and then move it to the design repo on Gitlab as an RFC. Here is a link to the doc, and here is the description of the topic:

The idea for this system is to create a few stats that combat is concerned with. That isn't to say that other systems outside combat shouldn't have anything to do with these stats, and there should definitely be more stats than this in the game, but for combat purposes, these are a few stats that we might want to consider.

This past weekend, another meeting was held about damage types. You can check it out here.