This Week In Veloren 20

4 minute read 17 June 2019

Thanks to all of the contributors this week, @zesterer, @timo, @liids, @slipped, @Qutrin, @Pfauenauge, @Mckol, and @Cody!

Saturday Screenshot winner

Thanks to @zesterer for this week's screenshot. We're excited to see what comes out next week!

Some snow and grass by @zesterer

Programming

Airshipper by @Songtronix

Sometimes developers, and especially users, just want to play the game. Therefore, I started to work on Airshipper (credit goes to Qutrin for the name). Airshipper allows you to download, manage, and play multiple releases, as well as compile the game for yourself.

A question came into mind on how to do this cross-platform with all dependencies Veloren has. The launcher has to make sure that Git, Git LFS and Rust is properly installed. I accomplished this by using subprocess. With it, I try to run e.g. git --version. This is an easy way to clone, compile and test if the requirements are installed on all platforms.

After many design iterations, I settled with a backend and multiple frontends. The backend is a standard rust library, which will deal with about everything needed - from cloning the repository to compiling the game - and I made sure that I won't be lazy by forcing me:

ouch

Currently, the GUI doesn't get any attention at all due to many issues that need to get solved, but the terminal version is usable. Now, taking a look at the code, error handling and logging is a very important piece and sometimes monstrosities like this happened:

This helper function checks if the dependencies aren't installed

It's a good example to show the current state of Airshipper because this function should say if something else broke instead of telling that the dependency just does not exist while it does.

Currently, Airshipper is in a usable state. You can run it and if all dependencies are installed it should all by itself clone the repository and compile master for you.

Control System Revamp by @Slipped

This week I worked with @timo and @Midge on the merge request (MR) to revamp the control system and add a roll animation, focusing on the animation and physics. I got a few things done in this MR:

  • Added a ~half second roll that can be used with middle mouse to quickly get out of the way of an attack.
  • Reworked the run to a slower pace. By doing this we allow the player to take in more of the world, emphasize gliding, and we now have a player speed that fits the more compact worldgen that @zesterer recently adjusted to.
  • Reworked the glider animation to respond to player speed, by rotating up and down and allowing the player to hang lower when you aren't moving at all with the glider. This is just the start of what we have planned for glider modifications.
  • Added the foundation for "wielding" animations, where you can run and stand with your weapon drawn. This isn't finished yet so the game doesn't visualize any of it, but more to come next week on this!

World Generation by @zesterer

This week, I've spent some time improving world generation. I've redesigned how we do world generation such that world features are cached at multiple layers throughout the system, speeding things up. I've also started work on spawning proper forest varieties: so far we have palm forests, oak forests, pine forests, and snowy pine forests. In the future, I'll be adding rainforests, alpine birch forests, savannah trees, mountain shrubs, and many other kinds of plant.

I've also adjusted mountains to make them consist of more distinct horizontal "levels". I believe that these levels are more interesting to experience since they distinctly segment the world into interesting areas, rather than having the whole world be a smooth mush of hills. To accompany this, I'm going to be adding more interesting cliffs, overhangs, and terrain features such as chasms and craters. Right now the world feels quite empty, but this will change.

Some of the different types of forests

Other Work

ECS Work by @Midge

I helped in a group effort involving @Timo and @Slipped to revamp the Control system into the much better Controller system, improve animation, and generally clean up and organize the ECS systems. It's a better and more organized "pipeline" that will make future development easier by being much clearer on how the parts connect together.

Looking forward, I can say that @Slipped, is soon to be working on better animations, especially in terms of combat. We were discussing some things earlier and I believe the next step is to implement a weapon-drawing and holstering system. And personally, I'm taking advantage of the now well-organized systems to finally be able to work on physics overhauling.

Documentation by @Mckol

I've rewritten the download and compiling sections in the book so new users should find it easier to follow and updated the AUR package so it actually works with 0.2+. While working on the book I found out we can put a rust-toolchain file in the repo so rustup automatically selects nightly without users needing to manually set up directory override.

See you next week!