Two Weeks in Veloren 230

7 minute read13 April 2024

Authored by Christof

These weeks, we learn about tags for code documentation and many ongoing development activities.

- Christof, TWiV editor

Contributor Work

Thanks to last two weeks' contributors @gamer-kold, @ThomasS, @crabman, @Dmitry, @zesterer, @horblegorble, @srpapinha, @newclarityex, @Treeco, @necti, @walpo, @lunareclipse and @uniior.

The merged work includes a Rodio (audio crate) update, sign and lantern translation enabling, a rope panic fix, Easter egg and April fool's calendar items, NPC movement planning, miscellaneous post-party cleanup, more ambient light in at dawn and dusk, bombs and fireworks in higher level chests, translation updates, lower parrying costs, petting animals, a Rodio panic fix, Brinestone armor repair costs, Tursus and Wendigo balancing, Troll armor, Code ownership documentation, material price corrections, NPC walking path computation fixes, amd more furniture sprites.

Ongoing (unmerged) work is happening on Dwarven Mine, calendar selected shaders, Hammer skills, moving moderation info to a database, friend groups, documentation cleanup, separate character behavior and posting state updates, Mage Tower, worldgen outside the map, trading fixes, a pet rework, hit point rebalancing, entity to terrain tethers, code documentation tags, merging the book into the main repository, merging Torvus into the main repo, better parrying, and translations.

This developer blog is based on information collected in #blog-content, where game contributors are always invited to communicate their updates or simply post a link to a different channel.

Development discussions

If you want to read into the pathfinding bug hunt and solution genesis take a look into #programmers.

Entity to terrain tethering by @crab features promising previews:

@zesterer started a discussion on a much improved level of detail implementation in #worldgen.

The discussion about quests really took off in MR-1970.

You can follow the discussion about the petting animals in #pets-and-mounts, here is a video

Similarly for blocking in #combat/V4416

@Gemu is currently designing a low level foe

@uniior is designing new furniture for Veloren, see #veloren-art

@Treeco and @xMAC94x work on upgrading to a newer Rust tool chain, see #meta for problems and their potential solutions.

@xMAC94x and @crablet discuss torvus and future moderation tools in #V4159 "Merge torvus".

@horblegorble plotted the health and armor of overworld entities, as a tool for future balancing work V4422 "Various tweaks to entitiā€¦", e.g.

and (effective hit points vs damage per second inflicted by player over progression)

Hammer skill progress in #combat:

Code documentation tags by @zesterer

MR-4423 explains the new code documentation tags, this is still work in progress:

So I've got an idea for a docs thing that I want to try implementing and I'd like some feedback to those that feel like they're still relatively new to the codebase (or, at least, feel like there are large areas that are still a bit of a mystery to them).

The name I'm giving it is the 'tag system'.

We'd introduce a little macro, like the following:


What this does is associate the location it's used in with some higher level docs about a particular concept. For example, you might tag code that handles entity Alignment and damage calculations with a section of the docs that explains how all of those pieces fit together like tag!(alignment).

Tags would need to be declared up-front in a common place (mostly to aid casual discoverability and reduce the chance of two tags accidentally being created for the same concept).

The goal is twofold:

Firstly, the tag name is easy to search throughout the codebase.

Secondly, the macro will - internally - create a unique type associated with that tag so you should be able to right click on it and use your editor's built-in 'find references' or 'go to implementation' feature to navigate through associated parts of the codebase (I need to first double-check that this actually does work through a macro, but I think it should).

  • Hover over tags to get documentation, works
  • Find other uses of the same tag by 'Find references', works
  • Actually write the tags and use them in appropriate places, not done yet

The tag macro can now be invoke like this: tag!(@tag1, @tag2, ...), the reason I decided to add a @ before each tag is to make them grep-friendly, as tags are usually very common words.

Tags are defined as modules in common/src/documentation/tags/, the module-level documentation is what will show up when hovering over a tag.

This unintentionally allows for subtags too, which can simply be defined as submodules of tags and referenced with tag!(@tag1::submodule::subsubmodule).

This MR also contains videos showing code navigation using Helix

and VSCode

The #game-design channel contains several pinned messages which link to design documents. As @DaForLynx just pointed to one of them, here are some links to interesting Google-docs (incomplete list):

More Screenshots

Translation work

Translators included in MR 4411: @aleeo, @Caddis, @Dinariossa, @DiXiao, @evgenkot, @fnetX, @fvasco, @GeroinEX, @GGTheTranslator, @Ixniyevonn, @karinator, @Kretka, @kurtinge, @leca, @loglizzy, @LS-Localicows, @mapemka, @Paw, @Positron832, @Sinari, @Sovenok-Hacker, @tdehtyar, @TheESN, @Thiagod86, @walpo

Translators included in MR 4427: @bov, @FelipePardim, @fnetX, @GGTheTranslator, @Kretka, @kurtinge, @loglizzy, @LS-Localicows, @nwildner, @Positron832, @Sinari, @Thiagod86, @Witch

Thanks to the translators, as well as to @fnetX for compiling these lists of contributors.

Hi(gh)jacking a ship, see you next time!