Ironlark
A multiplayer game platform where the whole game is mods. Built with Rust, Bevy and WebAssembly Components.
Inspired by Garry's Mod and Roblox.
Inspired by Garry's Mod and Roblox.
A whole server half
Section titled “A whole server half”use ironlark::server::prelude::*;
// Mints `archetype::Sign` from the row declared in mod.toml.ironlark::declares!("../mod.toml");
struct Guestbook;
impl ServerMod for Guestbook { async fn on_join(_ctx: Context, player: Player) { let signed = session::participants().await.len() as f32; let at = SpawnPoint { position: Vec3::new(1.5 * signed, 2.0, 0.0), yaw: 0.0, }; if let Ok(sign) = Entity::spawn(archetype::Sign, at).await { let _ = sign.set_label(&format!("{player}")).await; } }}
ironlark::export_server!(Guestbook);A player joins. A sign appears in the world with their number on it, and every player in the session sees it. The signs stand in a row, so the row shows who joined and in what order.
The first hour
Section titled “The first hour”Install and runGet a build, log in, and know where the game puts things.
Run a serverHost a session and have somebody join it. No port to forward.
Your first modFrom an empty directory to a marker standing in the world.
Before you plan anything large
Section titled “Before you plan anything large”The boundary todayWhat the engine cannot do yet, and the shape that works instead.
RoadmapShipped, committed, intended. No dates.
The areas
Section titled “The areas”ModdingWhat a mod is, its two halves, and every page about making one.
Running a serverChoose what a session runs, grant authority, and work out why somebody cannot join.
Interface referenceEvery function the host offers a mod, and every one a mod must export.