This Week In Veloren 55

6 minute read17 February 2020

Authored by AngelOnFira

This has been an exciting week. We had a huge boost from a Reddit post, and the Rust Game Dev WG released its January blog. Lots of good progress was made towards the goal of 0.6, "the content update". We hear from @AngelOnFira about Mac builds and @TheDip talks about the state of achievements.

- AngelOnFira, TWiV Editor

Contributor Work

Thanks to this week's contributors, @TheDip, @AngelOnFira, @Pfau, @imbris, @iMarv, @Zesterer, @Treeco, @Acrimon, and @Sharp!

The Rust Game Dev Working Group released its January blog! A fan of Veloren posted on /r/pcgaming this week about Veloren. The post got lots of attention, and we've seen a large influx of users on the Discord because of it. We also learned a lot from what people were commenting on the post. Although it was not all positive, lots of it was very constructive on ways we could improve.

@TheDip is working on implementing achievements, as @Felixader is working on their icons. You can check out those icons here. @AngelOnFira has completed preliminary work on Mac builds, the next step is to integrate it with Airshipper. He is currently working on a proof-of-concept for server persistence. At first, this will allow the server to store player levels, but might also work to store world chunks.

The game design working group met last weekend to discuss the skill unlock system. @Zesterer has been working on improving glider physics. @Pfau fixed a visual bug with health bars. @YuriMomo is working on implementing a custom cursor. @Sharp has been working on coloring the map. This shows off some altitude perspective and might include shadows later on.

Map without and with color

Off-topic from Veloren, but one of our expert graphics contributors @Vercidium has just released a large new update to their game, Sector's Edge. Show them some love and check it out! @Vercidium has done some novel graphics analysis and debugging for Veloren with skills they've learned from the industry.

The Mac Build Situation by @AngelOnFira

Over the last half-year, I've been working on and off to get Mac builds working. This week, I finally made it happen by taking the easy way out.

Previously, I had been trying to cross-compile from Linux. For Windows builds, this is quite easy. You tell Rust to target Windows, and you're good. However, with Mac, you require a lot more work. Mac requires that you have a special SDK that can only be compiled from a Mac computer. Not the worst, someone made a GitHub repo with them. The next step is using the SDK to target Mac. Someone else made OSXCross that helps with this. This is where I got stuck.


There were a lot of dependencies that weren't lining up properly, and it was becoming an increasingly difficult task. I trudged through this on and off over many months. During this time, GitHub Actions released for the public. Actions are GitHub's built-in CI/CD tool. It can be used to run tests automatically, build executables, and much more. The biggest upside; it has Mac runners.

Mac runners execute from Mac servers. This means that they have all of the requirements built in to be able to target other Macs. @Songtronix has used this method to build Airshipper for Mac, and it worked flawlessly. I copied @Songtronix's code, tweaked it a little, and it worked (almost) right away as well. Success!

Messer by @AlbinoAxolotl

Even though we have Mac builds, there are still a few issues to iron out. A build should be run when code is merged into master. However, since GitLab is our primary Git hosting platform, it can't easily tell GitHub Actions to run a build. This is supposed to be solved with webhooks, however there are some complications there as well.

So right now, the builds run once a day at midnight. Not sure which time zone. On top of that, we currently don't have a way to get the latest link to this build, which means that Airshipper can't automatically distribute it. Finally, when Actions pulls the repo, a custom step had to be built to pull from GitLab instead, since the LFS files are stored on GitLab's LFS server.

Hopefully, in the coming weeks, we'll see some improvements on the ease of use of these builds. Catch you next time!

Achievement Implementation by @TheDip

Since 0.6 is the "Content Release", it's important that we hit the ground running where we can. @TheDip is one of the first to push forward on this front.

Achievements give players goals to work towards while playing Veloren. Some of the early ones can be for learning, as they teach core mechanics to the player. After early game, achievements can just be for the completionist players. Some might include leveling up to level 20, or completing 3 dungeons.

As of right now, achievements will be displayed in a menu. Hovering over any achievement will bring up a "tooltip" menu that gives a description and requirements. As for "alerts" when you unlock an achievement, I was thinking of putting an arrow above the achievements button. It will flash to let you know to take a look. Since the UI is getting overhauled, all of this is temporary.

Current achievement layout

Triggering an achievement is done with a flag or value. For example, we can count the number of dungeons a player has completed, so that when they hit 3, they get the achievement. Extensions can be that achievements can also be used to give the player something, although I'm not quite sure yet what those would be. That will be left up to the design team.

Felixader also had an idea of making the achievements menu look like an “open book”, per-say. I have yet to attempt that, but that may be something we consider.


Chonker chicken. See you next week!