Explorable 3D Campus Valla (Linköping University) https://elsie.lysator.liu.se/liuverse/
  • Rust 98.9%
  • WGSL 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-25 23:00:54 +01:00
.cargo initial private repo commit 2026-10-15 15:14:28 +02:00
assets (slop) bake outdoor steps as walkable treads 2026-10-25 04:13:18 +01:00
hotpath (slop) add opt-in hotpath profiling and cut per-frame allocations 2026-10-19 13:20:18 +02:00
liuverse (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
liuverse-assets (slop) add wind streaks and a wake behind a fast player 2026-10-25 22:29:04 +01:00
liuverse-audio (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
liuverse-data (slop) trim comments and docs to their rationale 2026-10-25 04:36:38 +01:00
liuverse-fetch-map (slop) trim comments and docs to their rationale 2026-10-25 04:36:38 +01:00
liuverse-frame (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
liuverse-movie (slop) fly a drone through an authored gate course 2026-10-25 22:59:58 +01:00
liuverse-music (slop) play an emote flourish over the score 2026-10-25 05:06:51 +01:00
liuverse-protocol (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
liuverse-render (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
liuverse-scene (slop) trim frame allocations, fix the web shader build 2026-10-25 17:16:44 +01:00
liuverse-server (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
liuverse-sim (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
liuverse-voice (slop) play an emote flourish over the score 2026-10-25 05:06:51 +01:00
liuverse-world (slop) fly a drone through an authored gate course 2026-10-25 22:59:58 +01:00
screenshots take lots of new screenshots 2026-10-24 13:31:34 +02:00
.gitignore (slop) track the film catalog in git 2026-10-25 22:14:52 +01:00
_typos.toml (slop) add a radial emote wheel and drop mobile touch controls 2026-10-22 11:30:50 +02:00
AGENTS.md (slop) render films offscreen and encode them with ffmpeg 2026-10-25 22:09:51 +01:00
ARCHITECTURE.md (slop) sync drones and fly them in third person 2026-10-25 22:59:58 +01:00
Cargo.lock (slop) bump version to 7.0.0 2026-10-25 23:00:54 +01:00
Cargo.toml (slop) bump version to 7.0.0 2026-10-25 23:00:54 +01:00
deny.toml (slop) drop stale webpki-roots advisory ignore 2026-10-21 21:11:19 +02:00
justfile remove cargo doc 2026-10-24 18:45:09 +02:00
README.md (slop) fly a drone through an authored gate course 2026-10-25 22:59:58 +01:00

liuverse

Explorable 3D Campus Valla (Linköping University), in Rust. Walk or fly the campus — buildings and interiors, terrain, trees, bike paths, and the association emblems painted on Märkesbacken — with multiplayer, proximity voice, sound effects, and a fleet of scooters, skateboards, bikes, mopeds, carts and sleds. A tiny FPV drone in the inventory races a course of ring gates above the halls. It runs in a native window and in the browser.

The campus is baked from MazeMap, OpenStreetMap, elevation data and the student-life association directory. How the code works is in ARCHITECTURE.md.

Run

You need Rust, just, typos, cargo-deny, and — for the web build — trunk with the wasm32-unknown-unknown target. On Linux the audio stack needs your distro's ALSA/PipeWire development packages.

A web build talks to the server on this machine while developing and to the deployed one in release; a native build stays on this machine unless --prod.

Movies

liuverse-movie renders short films set on the same campus and encodes them with ffmpeg. You need ffmpeg on PATH.

cargo run -p liuverse-movie -- list
cargo run -p liuverse-movie -- render flyover --out movies/flyover.mp4
cargo run -p liuverse-movie -- still promenade --time 5 --out movies/still.png

liuverse-movie/README.md explains how a new film is written.

Check

just check

Rebuild the map

The campus in assets/baked/ is generated, so it is only rebuilt when the map data changes:

cargo run -p liuverse-fetch-map --bin liuverse-fetch-map
cargo run -p liuverse-fetch-map --bin liuverse-fetch-map -- --refresh

Deploy

just deploy                     # website + server

Docs

  • ARCHITECTURE.md — design decisions, how the code is put together, and the upstream sources the bake reads.
  • AGENTS.md — conventions for working in the repo.