---
# System prepended metadata

title: RustConf Draft

---

# RustConf Draft

## Titles

- The Gifts Rust Gives
- Secrets of Rust Game Development
- Rust at Game-scale

## Abstract

Veloren is a game built in Rust. It makes use of many features unique to Rust to allow for rapid community development. In this talk, we'll examine techniques and architectures used in the game.

## Talk Layout

30 minute slot
Single speaker

5 mins: Intro about speaker and project
10 mins: How we use the ecosystem
10 mins: How we [ab]use Rust
5 mins: Community

## Topics

- What we're able to do because of Rust
    - Zero sized structs as markers
    - Parallelization strategy (+ borrow check)
      - Parallelism within systems via rayon/parallel iterators
      - Specs automatic parallelization of systems that have disjoint sets of mutable component access declared
    - serde + match exhaustivity checking for netcode
    - Hot reloading?
    - Christof
        - some containers use interned indices (which can only be constructed from valid entries, e.g. SiteId, GoodIndex), this is not Rust specific, but Rust encourages this
          - Specifically, `Store<T>` being indexed by `Id<T>`?
        - General: I don't think we would be able to maintain that number of small contributors versus the stability of the game in C++,  veloren is very complex (parallel, networked, 3D)
        - rustfmt and clippy really improve the overall code quality
        - I think that loading configurations from (ron) files would be much more maintenance/care intensive if not for serde (which is Rust specific C++'s greatest weakness, I believe C# and python would work as well)
        - We could present the animation plugin mechanism and online tweaking as a very specific solution to a common problem with Rust (large turnaround times due to large compilation times)
    - The way to express algorithms is much more functional, and can often be done with iterators
- How our architecture is set up
    - Using SPECS
    - Modularity
    - Networking?
        - Serde
    - Infrastructure?
    - Telemetry?
        - Grafana/Prometheus
        - Tracy
        - Analysis of slow areas of parallelism to optimize for more cores
        - The fight to get servers to handle more players
- How we make use of the Rust ecosystem
    - wgpu/naga
        - RustGPU
    - specs
    - Work with other teams/projects/orgs
        - Rust gamedev newsletter
    - wasmer and the plugin architecture is very Rusty
        - Quite an interesting approach
    - serde, 
      - used for netcode (bincode), assets (ron), and persistence (json as sqlite fields)
- How our community works
    - Rust prioritizes community, and Veloren follows this mindset
    - (Christof) Rust is very diverse, I feel this has some influence on veloren too, especially since gaming in general shows lots of anti-diverse sentiments
    - Part of the game's appeal is the language used