Prerequisite
Thank you for your interest in contributing! Make sure to read the Introduction section and if you want the section For Developers. Otherwise feel free to jump around as you need.
Introduction
FAQ
Start contributing!
There are various ways to contribute to Veloren's development, no matter if you got a degree or taught yourself. Shall it be code, assets, creatures, bug fixes, the book donation or the wiki itself!
Embrace the wiki
We are glad that you want to participate in the collaborative process of cataloging and recording everything about the game.
Extend the book
You can find the source for this book at our GitLab, feel free to make changes, correct errors and add more content.
Translation
There are different ways to contribute translations, but the most straightforward way is using git and Rust.
Extinguish bugs
You found a bug and want to report it. Here is how!
The voxel art
We use MagicaVoxel to create Veloren's assets and some sprites for smaller object that don't render well in voxel
The music and SFX
You love working on the ambiance, creating some sound that immerse us to its universe ? Welcome!
Tracking issues
See what progress needs to be made an figure out what you'd like to work on!
DevOps
The DevOps methodologies used in the project.
Developers
The language of gods. There is few tutorials for learning Rust. We all started somewhere. ;)
Hosting a server
You may want to add a new Veloren server. We will guide you!
Work in progress
Artist
Voxel Model
https://book.veloren.net/contributors/artists/voxel-models.html
ArtChanny has the most up to date tutorials so they are strongly recommended. How does MagicaVoxel work with Veloren? Usually, 1 voxel in MagicaVoxel is 1 voxel in Veloren. However, this does not apply to all Veloren assets. We have something called sprites, made to represent smaller objects that wouldn’t look good in a 1 for 1 voxel conversion. That’s why they use a 1 for 11 blocks conversion, that’s to say that 1 block in Veloren will be 11 blocks in MagicaVoxel.

Recommended videos to learn more about MagicaVoxel:
Basics:
- https://youtu.be/BxuY48y6JEM
- https://youtu.be/z-ONzlJdaTg
- https://youtu.be/OmNt4dwqi30
- https://youtu.be/vEcXEFqjoXM
- https://youtu.be/LLnqFMN5DS4
- https://youtu.be/U1nSNjoT6xs
Hotkeys and shortcuts:
More advanced:
For big projects:
Audio
https://book.veloren.net/contributors/artists/audio.html
The best way to contribute audio is to first visit the Discord , ask for a contributor role in the #new-contributors channel, and start a conversation in the #audio channel.
All sound files should be in .ogg format, exported at Variable Bit Rate level 5. The quick and easy way to do this is to export as a .wav, open it in Audacity, and export it again as a .ogg at compression level "5".
Translator
https://book.veloren.net/contributors/translators/game.html
There are different ways to contribute translations, but the most straightforward way is using git and Rust. You do not need to compile the game, although debug builds have useful features like hot-reloading for translations, that allow you to translate the game while running it. Tooling to check the status of your translations doesn't require compiling the full game, but it still requires the Rust toolchain. Read this guide on basic tooling (git lfs is important), working with git (git is not most user friendly thing, ask if you don't understand something), compile instructions, and contribution instructions (most important).
Alternatively, you can just work on directly on assets shipped by Airshipper. Beware that updating your game will purge all your work, so think about using the VELOREN_ASSETS_OVERRIDE environment variable.
Developers
You can learn Rust while contributing! There are a lot of resources to learn Rust, the Rust book is great https://doc.rust-lang.org/book/. You can also check out our book for how to set up the environment https://book.veloren.net/contributors/index.html.
And also if you have any question about Rust or programming in general you are free to ask in #learning
- The first step is to download and compile the game from source.
- Then find an issue in the issue tracker, or create an issue for something small that you would like to change, add or remove.
- Create a branch.
- Make the changes.
- Test your changes work as intended in game, and that no bugs have been unintentionally added.
- Create a merge request with your changes.
- Post your merge request in the development channel.
- Someone will review your changes, and they might propose some more changes.
- Once everything is good, the changes can be merged into the official builds when appropriate.
- If you have some changes that might be controversial, be sure to discuss the design before hand and get consensus from the core development team, to avoid risking having your changes rejected.
- You can still always experiment on your own branch/fork, just the changes might not be merged into the official builds. Also ask for GitLab and the Discord contributor (developer) role, to gain access to more channels and to CI.
Conference about game development in Rust:
https://www.youtube.com/watch?v=aKLntZcp27M
This is useful for anybody with some basic knowledge of OpenGL or DirectX wanting to start working on Voxygen, the 3D frontend: http://gfx-rs.github.io/2016/09/14/programming-model.html