These weeks in Veloren 245

21 minute read03 April 2025Feb 12 -> Feb 23

Authored by horblegorble

Stumbling on a pirate hideaway — by Sam113

The time warp continues, as we look back on the arrival of some of the most anticipated updates to Veloren.

— horblegorble, TWiV Contributor

Contributor work

Thanks to everyone who contributed to veloren these last weeks: @steanne, @DaforLynx, @NeuralModder, @phoenix13032005, @GeekyGami, @unii, @UncomfySilence, @do-no-van, @horblegorble, @Tarhun, @zesterer, @xMAC94x, @isse, @floppy, @Synis, and @Supa.

Merged work

Airships are go for launch!

Having taken off back in December of last year, @Tarhun's uplifting changes finally make their landing:

The age of Airship travel has arrived!

For more than a few weeks, I've been working, diligently but mostly slowly due to inexperience with the game design and the language, to automate Airship movement and travel between Sites with docks.

Thanks to @zesterer for guidance and the many code reviews. Thanks to @isse for assistance and to everyone else that offered encouragement.

Airships now travel a network of routes between dock sites. Every Site with an Airship Dock now has two to four routes connected to the same number of other sites. Airships stop at the dock for about 90 seconds, then lift off and fly to the destination site while following the terrain.

There's still work to be done on smoothing out the ride, so it's best for now to jump on and take a seat, then zoom out and look around.

🔊 ⏩ The world suddenly feels a whole lot smaller. Music by @Zakru

To not spoil the fun of exploring the Airship route network, I'll just say that the destination site from any particular docking position is always the same. The rest is up to you!

Gitlab: !4671 -> !4709 + !4738

Now we're talking

@zesterer gives NPCs the gift of the gab, unlocking big ambitions down the road:

For the past few weeks I've been slowly working on a much-awaited feature: two-way dialogue!

It's in the early stages, but you can already use it to ask NPCs how they feel about you, who they are, where you are, and even temporarily hiring NPCs (if you're playing singleplayer, this might be useful!).

Thanks to @Pfau for his work on the UI: although it's still a work in progress, it's already looking great.

A name destined to wear the chef hat

Dialogue is passed all the way through to rtsim, allowing for dialogue sequences as part of long-running behaviours. The most exciting part, for me, is that this feature unblocks work on a lot of future things such as:

  • Questing
  • Factions & politics
  • Story-telling and exposition
  • NPC hiring and groups

🔊 Talk is cheap, so keep some coins on hand to be persuasive

Gitlab: !4686 + !4739 + !4747

Towns and dungeons play musical chairs

The tunes are a changing, with three new soundtrack additions and a reshuffle of dungeon music. First up is a delicate dance through snowland choreographed by @phoenix13032005.

🔊 Where Frost Played — @phoenix13032005

Striking a more jubilant tone, @phoenix13032005 also gives fresh energy to the sunshine of coastal and savannah towns.

🔊 Fill The Mugs — @phoenix13032005

And for the bloodthirsty adventurer, a much more sinister vibe from @GeekyGami will echo through the halls of vampire castles.

🔊 Still Heart's Coffin — @GeekyGami

@phoenix13032005 also played umpire for a dungeon themed round of musical chairs. When the beat stopped, here's where the sounds landed:

DungeonTracks
Gnarling FortJungle AmbientThe Undergrowth
Adlet StrongholdMysty TempleA Heart's Ice-Cold Protection
Sahagin IslandSacred TempleThrumming Waters
Haniwa CatacombsCobbled Halls
Vampire CastleVast OnslaughtStill Heart's Coffin
Sea ChapelMysty TempleRuination
Myrmidon DungeonSacred TempleVast Onslaught
Cultist DungeonSacred TempleRuination
Terracotta RuinsJungle Ambient
Dwarven MinesDank DungeonCobbled Halls

Gitlab: !4712

Bouncing off the walls

Obstacle course architects will have to rethink their designs in light of new climbing mechanics from @Synis. Make sure your climbing boots and chalk are in good nick.

Parkour Pete gives us some demos of new techniques

Gitlab: !4734

Towning around

That bumpy, unlit road in town now gives a smooth, lantern adorned ride all the way to the remodelled tavern. Courtesy of @isse:

Lately I've been working a bit on our towns, both just generation wise, and adding sprites (blocks with extra details, beds, chairs etc.) from @Supa and @unii .

With these changes we've also started using a lot more "tiled" sprites. Which are sprites that take up many blocks to have better colliders, and we can do some composition with the different tiles without needing to create voxel models for each variation.

The first example of these were the lantern sprites. These are built from three parts, a base, a top and the lantern. And if you look closely you can see where the separation is because the light level is different if the lantern is lit.

Example of how it can be composed, with some issues still in the model

Also added a basement to tavern buildings and changed their generation a bit.

Our roads between towns didn't play well with our site rendering code, so I updated that.

Previous (left) and new (right)

In earlier versions we've had some issues with plazas and roads ending up underwater, and houses being a whole lot higher up. This is because when placing the house we use an approximated altitude that's based on a per chunk altitude value. And when placing the plaza we used a method to replace the top most blocks of the loaded terrain. I changed plazas and roads to instead behave more like other plots (building generators). And if any corner of the plaza would end up under water I instead place a wood platform at an appropriate altitude.

Gitlab: !4748

Hammer tweaks that haft to happen

@UncomfySilence has brought the balance hammer down across the skill tree, with changes across damage, timing, energy, and more. If you've been getting into the swing of things, you may need to switch up your tactics.

An artist rendition of the balancing process

Gitlab: !4721

Holding on to let go

While the misadventurous among us have appreciated the second chance of recovering from a downed state, there were an unfortunate few that 'jumped' to an early conclusion. But fret not, for @isse has heard your feedback, and she is giving our trigger fingers some breathing room.

How much do you really miss your campfire?

Gitlab: !4759

More or less

For those that can't wait till New Years for a good countdown, @do-no-van gives you the chance to experience the suspense of a boss fight in full. A new checkbox toggles the abbreviation of health points to the thousands. Have to wonder if we'll get imperial values some day...

What a unit

Gitlab: !4736

Upgrading Kira

Marking another notch on the dependency doorway, @DaforLynx and @NeuralModder help Kira grow up:

We upgraded the version of Kira (the new audio framework) to 0.10. This may help with performance in some cases, thanks to newly using sample buffers, but let us know if you experience performance problems that were not present in the past month.

Gitlab: !4727 + !4740

Paint the town in sprites

@Supa has been crafting up some more additions to our palette of town sprites.

Look into the mirror to complete the headshot hat-trick

Small, medium, and large. The lesser known Three Basketeers

It was an open and shut chest

Plenty of seats at the table

They can all hold water, one just not as long

@Supa stays warm by the bonfire

Gitlab: !4751

Digging up the past

@Synis has completed the excavation of code for the old cave system. To remember times gone by, we go on a nostalgic delve through a cave in the old eastern forests, known as 'Miist Tunnel'.

🔊 Green is good

🔊 Dances with giants

The adventurous reader can explore the old world at commit 61573a7800.

Gitlab: !4742

More changes:

  • capitalised sentence beginning for directional hint from NPC - @steanne - !4724
  • minor potion, velorite fragment, plain cloth glider, and black lantern all moved to default recipes - @unii - !4720
  • plugging up a drip in the security pipeline - @NeuralModder - !4726
  • stun resilience/resistance info in UI updated to use entity stats - @do-no-van - !4725
  • terracotta statue's blast attack made more manageable - @horblegorble - !4728
  • poise bar is now shown by default - @horblegorble - !4732
  • bloodmoon relic rotation fixed to face forward - @horblegorble - !4733
  • purple geode returns to the loot tables, now from basilisks - @horblegorble - !4730
  • toolchain update (happy valentine's day edition) - @xMAC94x - !4737
  • a series of fixes for airship dock signs - @isse + @floppy + @horblegorble - !4663
  • matching up pub const DIAGONALS ordering with similar enums - @horblegorble - !4741
  • subtraction overflow fixed in network code - @xMAC94x - !4746
  • velorite and velorite fragment models updated to match multi-hit mining - @Supa + @horblegorble - !4735
  • standalone code for researching better movement algorithms - @xMAC94x - !4756

Ongoing unmerged work

(Blood)steeling a look at armour models

The crackling whoosh of a bellow-fed flame, heavy clangs of a striking hammer, and what witnesses swear were intermittent screams of agony. These were the sounds of @Gemu's voxel armoury as he forged the first of a new set of metal armours.

Forged to preserve life, at the cost of another.

Discussions

Fire it up!

Time to rekindle those brainstorming circuits - @Sam has put out the call to share your burning desires:

With bow soon approaching completion, we can begin thinking about the fire staff rework. Fire staffs are intended to be themed around fire (obviously), heat, smoke, and other related things. It's primary niche will be a weapon with medium range that has high burst potential, though potentially with some consequences from extended use. The rework of fire staff will also come with the introduction of a temperature system, where higher temperatures (and lower temperatures, though fire staff won't help you get there) will have various effects on you. Suggestions for fire staff abilities can be made in the form here:

Once your own fire is burning, you can check out some of the discussion so far.

Quest objective: speak to the manager

@zesterer and @Pfau have been mulling over the concept of an 'architect' that handles the surfacing, progression, and completion of quests. Rather than a classic mix of static roles and objectives, these quests would emerge from ongoing dynamics between entities and their alliances in the game world. This would build upon the RTSim (real-time simulation) system's ability to handle a lot of moving pieces, to being able to move the big picture as well. The devil will be in the details of course, particularly with avoiding loose ends being scattered about.

As done before, many ideas here are gratefully borrowed from work done on Dwarf Fortress.

A casual talk on emergent narrative dynamics in a game world

It's all in the grip

Jack of all trades. Counter attack specialist. Mobility maximiser. What do you see as the role of the versatile sword in Veloren's combat? @UncomfySilence spelled out some of their thoughts in a discussion with @Gemu, wondering how to have all the ingredients of its skill tree work better together. Complicating factors included dual-wielding, finding the right place alongside axe and hammer, and the differences between PvP and PvE. An important point was made that the sword was first of the melee weapons to be reworked, during a time of multiple significant changes to rolling mechanics.

Community showcase

Veloren's first public transport map

Taking @Tarhun up on their invitation, @Froggy ferried himself all over the world to map out the new airship routes on the official server. To save himself some jet lag, a few of the routes were taken by other players that phoned in their findings. Getting the route colours to behave themselves was another matter.

Now we just need a trip planner app — by @Froggy

The Veloren Daily

The printing press winds down as @phoenix13032005 sends out the last issue of The Veloren Daily for this season. We wish them all the best on their journeys, and hope to read more headlines about their own endeavours in the future.

A farewell concert and underground marvels

There's Waldo

As promised, here we deliver the solutions to last issue's search party. If you didn't find all these characters, feel free to have another crack at it before uncovering them.

Click to see original puzzles

You can click on each image to view it in full.

Savannah swim day

Desert denizens

Waldo reunion

Click to reveal solutions

You can click on each image to view it in full.

Desert denizens discovered

Savannah swim day secrets surfaced

Concept art

First-hand accounts of various explorations in voxel space. A mix of things intended for use in-game, and more experimental ideations.

Lovely lily pads in bloom, grown by @Supa

A few species of ideas were planted by @unii: (left to right) | Rafflesia | Passiflora | Jungle reeds | Modular moss

Orange leafy plants from @FBI873, to sprout in the jungle sprite overhaul

@Sam113 got into the woodworks, with a new bookcase and updated shading for hanging signs

Mahjong fans @Hrom and @unii prepare a sales pitch for tavern owners

Veloren's armoury didn't have quite the right aesthetic, so @unii maid his own

Screenshots

Not that kind of red light district — by @Necti

Myrmidons amidst mist — by @unii

A 'scuba stag' waits for an unsuspecting traveller — @horblegorble

The many colours of erosion — by @James

Playing it cool — by @Alley_Oop

A rowdy upstairs housemate — by @unii

The chosen goblin — @horblegorble

Roleplaying as a crystal — by @FBI873

They always were inclined towards farming — by @DaforLynx

Yes, we have an opening for you — by @isse

They say holding grudges will bring you down — by @Sam113

Brain freeze — by @Alley_Oop

Now this is a captain with an upwards attitude — by @isse

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.

@Gemu came across a very lost legoom. Maybe they'll find us in the next devblog :)