This week we take a look at Airshipper's progress and potential future concepts. We also have a new section, the Contributor Spotlight where we learn more about Veloren's contributors. @Silentium gives us a run-down on the state of design, and we hear about some SFX with @Shandley.

- AngelOnFira, TWiV Editor

Contributor Work

Thanks to this week's contributors, @imbris, @xMAC94x, @Pfau, @Songtronix, @Adam, @AngelOnFira, and @Shandley!

@Pfaunauge has fixed fire-rate issues with the bow. He also worked on the minimap, adding scalability and zooming. @imbris fixed the minimization overflow and messed around with Iced, a UI library.

Discussions are happening about potential networking changes, but it is very much in a concept phase. The RFC can be found here.

Contributor Spotlight: AngelOnFira

The contributor spotlight is a new section of TWiV. With so many people working on Veloren from around the world, the contributor spotlight will try to capture some of the personality behind the development.

Hey! I'm a student in my 4th (5th) year at Carleton University in Ottawa, Canada. I'm studying computer science, with honours in game development. On the Veloren project, I'm the meta lead. I do things like write this blog, and work on the CI/CD pipeline. I'm also exploring cross-platform builds for Mac, and compiler/development optimizations.

Other than school and Veloren, I work at a startup called Timsle, where I'm a backend/security web developer. I also run a security competition called Hack All The Things, and I love participating in others, like NorthSec and BSides. Game jams are also super cool, check out the Global Game Jam that is coming up at the end of January!

At the beginning of 2019, I had a semester off school. I wanted to start a new project in my spare time. I was interested in creating a game similar to Cube World. I wanted to learn procedural generation, lower-level graphics APIs, and Rust. As I was doing my research, I stumbled across Veloren. It was eerily odd how many of their values and goals were the same as mine.

I wanted to contribute to Veloren, but I had only used Rust for simple problems, and I hadn't yet read the Rust book. I wanted to contribute in any way I could, so I picked up the blog, which only contained one post. Every week since then I've written a little about the progress of Veloren.

My vision for Veloren is to create a game that can achieve what larger games cannot. Games that are trying to sell copies are produced with limited resources that dictate deadlines. It is difficult to find pure motivation for these projects, as there is always a financial aspect at the end of the tunnel.

Veloren is built without these restrictions. Veloren only progresses with motivation from volunteers that want to make something neat. We are free to explore concepts that other games would have to cut due to time constraints and research capacity. We can try and fail and try again. We are the creators, we are the players, and we are the community. And I like being a part of it.

If you're interested in having your own contributor spotlight, keep an eye out on the Discord! Also, feedback on this format is always appreciated.

While Airshipper can't be considered stable yet, a lot of progress has been made. A progress bar has been added if the game is being downloaded/extracted and as such you don't have to wonder if it's still doing something.

Nice little quality of life improvements in the launcher

However, note that these changes right now aren't available yet due to the code being a mess and the need for elaborate testing. On the topic of availability, Airshipper can be downloaded already but remember that the launcher right now is in an unstable state and many things will change.

One of the biggest changes will be a beautiful looking UI, thanks to this concept from @SrMizuki! As you can see the launcher has a section for the news and a changelog which we seriously need for releases! :D

The launcher provides profile support to encourage the use of the latest and greatest version of Veloren while easily being able to switch to a stable version for serious gameplay. This will be similar to Overwatch PTR, or Factorio's beta versions. While not noticeable in the UI concept, this is implemented but not exposed to the user yet.

Dreaming big is one part but the other part is making it real! That's why the UI design concept will be realized with Iced, a very promising GUI library, and I'm excited to start working on it.

Your browser does not support the video tag. A very impressive tour on what Iced is capable of

SFX with @Shandley

It's been challenging to add sound effects to the game. This is because there are so many areas being developed at once. We’ve added an event-dispatcher based SFX system, which allows us to decouple the SFX implementation from the development of new features. Here is a rundown on how this is achieved:

The EventBus is registered during initialization of the specs::World, and holds a VecDeque to which we push and read a Struct containing a sound effect constant (which references the SFX file to be played) as well as a position in the world from where it should be emitted. During gameplay, the event queue is consumed by the audio system, which locates the correct audio file from configuration and emits it at the specified position.

An interesting cave

We can then construct small ‘mappers’ which watch specific resources and entities in the world and emit events based on changes in state. For example, a simple inventory SFX ‘mapper’ watches the player entity's inventory, and dispatches a ‘ConsumeItem(Apple)’ event at the player position when the relevant change in the player's inventory state happens.

We have access to the player/world state through Veloren's Entity Component System. Without needing to know about the specifics of any particular system, we can watch the state of entities during movement or combat, and "match" that entity's state to sound effects.

This is also good news for non-coding sound designers since we configure a catalog of these states as constants in a .ron configuration file, they only need to update the config to attach a sound effect file to a specific state to add it to the game.

So far we’ve implemented movement states such as running. gliding and basic attacks, but we’re also working on other systems in-game:

Combat: including blocked/special attacks and support for special weapons with specific sounds.

Inventory: adding and consuming items.

Modifying SFX based on the player's environment, such as the surface they are standing on, or echoes created when the player is near a cliff.

This SFX system is in its early days, and we still need to create a lot of new sounds as the combat team evolves their systems. However, having SFX already adds a lot of atmosphere to the gameplay.

Over the past six weeks, the game design group has gotten through quite a bit of the high-level combat mechanics. With new people joining the discussion every so often, the team has laid down a solid foundation for the future of Veloren's design. However, now we are getting into a bit more detail with some of our design choices. Topics that were once designed in a single two-hour session at a high level are now requiring multiple meetings to get through on a detailed level. This was expected, but the change in pace is noticeable.

Our master document with all the things we have officially designed is in this document, but all of it is subject to re-examination and re-design if need be. There are also a few other documents that serve as "idea dumps" where everyone involved in the design process will place their ideas during the week leading up to the weekly meeting.

I have also made a flowchart that represents our current understanding of the order in which design topics can be approached. Each color represents a game system, and the topics are differentiated by that system, so don’t worry if you see two of the same topics in the chart.

The current design flowchart

Since our understanding widens with each topic we design, this chart expands and changes to fit the new model, but for now, it does a good job of showing a few of the game systems we plan to address. This chart does not show everything we plan on designing, but a fair chunk of it for sure. For right now combat seems to be our focus, but that will change once we get most of it finished up. I’m not the only one who’s excited to move on to magic and crafting :)

Overall we’ve been making steady progress with our efforts, and we already have some dedicated programmers putting our designs into the game! If anyone has any questions about the process or anything we have written up, shoot me a message!