This Week In Veloren 52

14 minute read27 January 2020

Authored by AngelOnFira

This week 0.5 will be releasing! It's also the 1st anniversary of the blog, so we look back at what some contributors are most proud of. @Tub talks about the new website design and @Songtronix shows us some great progress on Airshipper. @Ender gives a run-down on how text localization is working.

- AngelOnFira, TWiV Editor

Contributor Work

Thanks to this week's contributors, @Sharp, @Zesterer, @Pfau, @imbris, @Slipped, @Acrimon, @Payload1, @Timo, @Treeco, @flyingfryingpan, @Friz64, @Ender, and @Songtronix!

With the release of 0.5 coming up this week, we will be having a launch party this Friday, January 31st at 18:00 GMT. You can check out our countdown here.

We had 50+ concurrent players at the last launch party, and we expect it to be much higher this time! If you're considering streaming the launch, please reach out to any admin or core dev so we can announce it. Here are some of the changes you can expect for this version:

  • Many new worldgen features
  • More diverse mobs with better AI
  • More immersive combat and character progression
  • Tons of performance improvements

@Zesterer has done a lot of work this week on AI. This includes pathfinding, aggro switching, and pet AI. @Sharp got their new worldgen merged just in time for 0.5 as well. @Slipped merged their work on new animals. @Qutrin started working on the switch to wgpu as the new graphics API. @AlbinoAxolotl has been working on some musical instrument assets, as well as dwarven haircuts.

1 Year of This Week in Veloren by @AngelOnFira

This is TWiV #52! That means that one year ago, I had just put out the first edition. At that point, I was just looking for something that I could contribute to on the project. I didn't know the direction the blog would take, just that I wanted to do one every week. If I didn't, I knew I wouldn't write the next one either. So while on vacation in Europe for a month, during exams, and other busy times, I kept up with the weekly, Monday (or Tuesday) devblogs.

This was great for me, as it helped give structure to a lot of the rest of my week. I'm super proud of being able to do this for an entire year! It is my biggest achievement on Veloren, but while we're at it, let's take a look at some of the other contributor's achievements.

@Songtronix is happy about their progress on making Veloren easily distributable with Airshipper. They've taken it on themselves to continually work on improving the Veloren experience. In this coming year, @Songtronix wants to keep working on this by improving documentation in The Book, as well as stabilizing many of the current technologies on the go like auth.

@LunarEclipse has spent much of the last year improving their Rust skills. They have worked a lot on to do with package distribution of Veloren, specifically with the AUR. They also did lots of work on The Book, controller support, and Polish translations. @LunarEclipse is excited about the prospect of content in Veloren this year, and determined to stabilize controller support throughout the game.

Some performance boosts made this possible

@Shandley has been working through many small issues mostly in the SFX area. They're excited about questing and where it's headed, since community-driven content will be a major part of Veloren. This year, @Shandley wants to continue work on the music and sound system. Also, fishing as a side goal 🐟

@Slipped is proud of their work on the new animals in the game. As an early voxel artist of the game, they are now focusing on heading up the animation efforts of Veloren. @Slipped is excited about the future of the animation system, as well as worldsim. "We have a really cool simulation base with the physical simulation of the world so far. Seeing history layered on top of that in a way that has real-world, dynamic consequences will be amazing to see. The devs planning in that area have some really great visions for Veloren". @Slipped is excited to see more biodiversity in the game, and will also be focusing on combat animations.

@Tub is happy about the new website design they've been working on. It was a good experience getting feedback from other developers, and iterating on the design. @Tub hopes to start working on the engine itself this year when they can find time.

@Silentium's biggest milestone was becoming the lead of the game design working group, for which they are super honored. After iterating on the design process many times, @Silentium is excited for the next step of development; implementing the designs. @Silentium is working to finish the combat design, and start working with other groups on other design needs such as exploration and crafting.

@Adam has used Veloren as an opportunity to learn Rust. They have also done a lot of work on combat, ability, and condition state systems, which they will be working on improving in this coming year. They are quite excited about this!

@Sam has recently joined the design team, and has worked on progress through their design proposals. Like @Silentium, they are excited to see their designs be implemented in the game, as well as the form the weapon system will take. @Sam's goal this year is to dive deeper into design concepts surrounding damage types.

Although @Shimox doesn't have a lot in the game, they did get one of their flowers implemented. They are excited to see the transition from getting Veloren to work towards a more content-based focus. This year, @Shimox hopes to work on getting more assets into the game.

@DoNeo is proud of their work starting up the Russian community. They have done a lot of work translating the devblog every week. @DoNeo is excited to see a more integral history and lore system through worldsim. In the coming year, @DoNeo wants to focus on developing the Veloren community through articles, translations, and videos.

@xMAC94x somehow made it through their job, life, and relationships to find time to work on many systems in Veloren. They want to be surprised with where Veloren goes in this coming year. @xMAC94 wants to continue working on networking and macro-scale worldsim.

@Qutrin is proud of the contributions they managed to make this year. They are excited to see the content that will be added to Veloren this year. One of @Qutrin's big focuses will be the switch to the wgpu graphics API.

@Acrimon worked hard on user authentication, which has required a huge amount of collaboration from the team. They are excited to see what the rest of the team will be working on this year. After deploying auth, @Acrimon plans on hot-reloading support to help devs, as well as building out an extensive modding system.

Knight's tomb by @AlbinoAxototl

@Timo is proud of their work on the combat system. They've been focusing on this for many versions now. @Timo wants to see Veloren grow from a prototype into a game with a steady player base and long-term gameplay. This year, they want to dive deeper into the combat system as well as design features around it.

@Aeronic has worked on many musical pieces for Veloren, as well as getting a strong audio team together. They are excited to see where audio will go this year, through both music and sound effects. @Aeronic wants to see a fully encompassing audio experience be implemented in this coming year.

@Yuri broke lots of things. They are excited for more features to break, as well as "Zest branches" and the new contributors that will join the project. They plan on finding many more bugs and exploits this year.

For @Zesterer, their biggest milestone was the 0.2 release. For them, this was the culmination of many months of refactoring and rewriting to produce the new engine. Like many others, @Zesterer is excited to see what will happen with worldsim. @Zesterer's goal is to keep the engine running fast, as they enjoy doing the optimizations.

@Pfau was amazed by the 50+ people that took place in the last release party. He is excited to see combat and equipping become more fleshed out. He wants to learn more Rust so that he can start using the Iced library for some more advanced GUI elements.

@Sharp has spent a lot of time on erosion through many different methods. They are excited about the ways that world simulation systems will react with one another. This coming year, @Sharp plans on getting some other developers up to speed on the erosion systems so that the work can be distributed more.

Website Update by @Tub

A project that has been idling on my desk for months has finally been finished: the website redesign. The most obvious change is that the giant header has been removed and used as a background instead. The second most obvious one (and the whole point of the redesign) was to add a proper start page that's more than just a list of devblogs.

Behind the scenes, a lot of cleanup has happened. Unused features were disabled and removed, some JavaScript was removed in favor of modern CSS features, CSS files were restructured and minified. Shortcodes were added, alleviating the need to write custom HTML code in the pages, and giving a more consistent layout. All of these result in faster page loads with less jitter, slightly better SEO and accessibility, and cleaner code going forward.

Once these things were done, several community members jumped in with suggestions, bug reports, and ideas, many of which I was able to implement during the past weeks. Being my first contribution in this community, it has once again shown me the value of collaboration - together, we created a better site than I could have created alone. Now that the site is live, I expect more ideas to pour in, paving the road for future improvements.

Airshipper Progress by @Songtronix

Last time I showed some concept art on how Airshipper might look:

Airshipper Design

Thanks to the wonderful help of @Timo with his constant effort to make it real we're finally approaching a consumer-ready GUI. Before spoiling you with the final version, let's follow us on our journey on how we have done it!

@Timo started to work on the layout of the UI:

Initial layout. Ugly but a start

And already after a little bit of time he has almost done it:

We even show the changelog now!

After some finishing touches, he's done the layout of the UI!

Looking good so far!

Well, if you look closely you can see a slider beside the play button. Why? Well until then there was no progress bar in the GUI library which can fill up nicely while downloading the game. As I always wanted to contribute to iced I thought this is the chance. So I've done it and I loved the process of doing so! After my Merge Request has been accepted I played around with it for about an hour.

I still do this every day...

And then with some customization efforts by @Timo:

and songtronix is the coolest ^^

Leaving out all the backend horror like making the download button do the actual thing, I have put some efforts to get the UI closer to the design. This is achieved by showing the blog posts and even adding buttons that link to the respective blog. For all the poor souls with a bad internet connection: Do not worry, we cache the news and changelog and only download the whole thing if it actually has changed.

UI with news and changelog

Now let's watch airshipper actually starting the game:

Starting the game

Soliloquy of @Pfau

[ADMIN][Pfau] what needs adjusting
[ADMIN][Pfau] is the min and max value you can zoom in and out
Sharp went offline.
[ADMIN][Pfau] *off he goes*
[ADMIN][Pfau] Sometimes I wonder what my role on veloren is
[ADMIN][Pfau] Quality Control? Art Director? Clown?
Pfau died

Veloren For All Of Us: Localization System by @Ender

Even if English became the de-facto standard on the internet, there is still a majority of the worldwide population is not able to learn it or just prefer to enjoy cultural content in their native languages. This is even truer for video games like Veloren as you can play it before a polished "complete" version is released. Translations are thus an important step to increase the popularity of the game and make it accessible to the greatest number.

More personally, it was for me a great opportunity to discover the Veloren source code and develop my first feature in Rust. I really enjoyed working on this subject as it allows other translators to contribute to this great project.

So, what is the road from an English specific application to an internationalized one? At first glance, it doesn’t seem so complicated: it’s all about text right? So first, how many files and lines of source code does a translator have to work with? Let's take a look at these stats in the 0.4 stable version:

In total there are 107 files in Veloren client application containing 931 lines of text among 23855 lines of code. This increases by around 20% in the upcoming 0.5 version. With this architecture, translating Veloren for non-technical people would be very overwhelming. It is like looking for a needle in a haystack. So the first step to simplify this process is to separate the displayed texts into a unique file and access them with a key-value system.

With this system, new localizations can be easily added. Since the process consists of a simple file to add in the Veloren source code, even non-developers can contribute by taking the English file as an example. So how does this look?

Yeah! Our text is translated and we can now enjoy Veloren in French... or any other language. But there is still an issue here, what are these weird character “F” wrapped in a white box? Well, the current version of Veloren uses a set of font with partial support of the worldwide available characters. In fact, even common Latin languages like Spanish or French are not completely compatible. A quick workaround we implemented for the 0.5 is to convert these unsupported characters to standard letters (A to Z), giving a more readable output.

And here is the result you will have in the 0.5: a pretty translated version, but still incorrect regarding the language rules. So, what is planned for 0.6 version and beyond:

  • Add a way to use different fonts depending on the language to have a correct display
  • Add translations of the bag items
  • Find better fonts supporting a wider range of characters
  • Add MOAR localizations! (Contributions are welcome!)

Here is a preview of the font customization feature:

Configurable fonts for the localization system by @Ender

See you at the release party!