game making circle // dev portal

ACTIVE PROJECTS

miris-engine

2D game engine written in Rust, targeting WebAssembly. ECS architecture with hot-reloadable systems. 60fps locked with adaptive quality scaling.

lang: rust + wasm status: active

miris-editor

Visual level editor with real-time preview. Node-based scripting interface. Custom asset pipeline with GPU-accelerated texture compression.

lang: typescript + webgpu status: in dev

miris-audio

Spatial audio engine with HRTF processing. Adaptive music system that responds to game state. Zero-allocation mixing in the hot path.

lang: rust status: active
engine/core/ecs.rs rust
pub struct World {
    entities: Vec<Entity>,
    components: ComponentStore,
    systems: Vec<Box<dyn System>>,
}

impl World {
    pub fn tick(&mut self, dt: f64) {
        for system in &mut self.systems {
            system.update(
                &self.entities,
                &mut self.components,
                dt,
            );
        }
    }

    pub fn spawn(&mut self) -> Entity {
        let id = self.entities.len();
        let entity = Entity::new(id);
        self.entities.push(entity);
        entity
    }
}

ABOUT MIRIS

MiRiS is a small game-making circle building tools and games at the intersection of art and engineering. We write our own engines, design our own tools, and ship games that run everywhere — from browsers to dedicated hardware.

Our stack is built on Rust for performance-critical code, WebAssembly for cross-platform deployment, and TypeScript for tooling. Everything we build is open-source, documented, and designed to be extended.

rust wasm webgpu typescript ecs open-source
config/manifest.toml toml
[circle]
name = "MiRiS"
formed = "2024"
focus = "game engines + tools"

[stack]
core = "rust"
target = "wasm32-unknown-unknown"
graphics = "webgpu"
tooling = "typescript"

[principles]
open_source = true
zero_alloc_hot_path = true
ship_everywhere = true