The MiRiS.TECH Cabinet of Curiosities

Game-Making Circle — Technical Showcase

Exhibits & Showcases

Game Engine Core

Custom ECS architecture powering real-time simulations with deterministic frame stepping and parallel system scheduling.

Rust ECS WASM

Game Engine Core

Input Systems Render Entity Component Store Scheduler (Parallel)

The MiRiS game engine uses a custom Entity Component System built in Rust, compiled to WebAssembly for browser deployment. The architecture provides deterministic frame stepping crucial for multiplayer synchronization.

struct World { entities: SparseSet<Entity>, components: AnyMap, scheduler: ParallelScheduler, }

Rendering Pipeline

WebGPU-powered deferred rendering with PBR materials, screen-space reflections, and dynamic global illumination.

WebGPU WGSL PBR

Rendering Pipeline

Geometry Pass (G-Buffer) Lighting Pass Shadow Maps Post-Processing (Bloom, SSR, Tonemapping) Composite & Present

Our rendering pipeline implements a modern deferred shading architecture using WebGPU. The G-Buffer stores albedo, normals, metallic-roughness, and depth, enabling efficient per-pixel lighting calculations with hundreds of dynamic lights.

@fragment fn fs_main(in: VertexOutput) -> GBufferOutput { var out: GBufferOutput; out.albedo = textureSample(t_diffuse, s_diffuse, in.uv); out.normal = vec4f(encodeNormal(in.normal), 1.0); return out; }

Network Layer

Rollback-based netcode with client-side prediction, server reconciliation, and adaptive jitter buffering.

WebRTC UDP Rollback

Network Layer

Client A Server Input + Frame# State Snapshot Reconcile Rollback Window

MiRiS netcode implements GGPO-style rollback networking over WebRTC data channels. Client-side prediction runs game logic ahead while the server validates inputs, rolling back and resimulating on misprediction.

fn reconcile( predicted: &GameState, authoritative: &GameState, frame_delta: u32 ) -> GameState { if predicted != authoritative { rollback_and_resimulate(frame_delta) } }

Spatial Audio

3D positional audio with HRTF-based binaural rendering, dynamic reverb zones, and procedural sound generation.

Web Audio HRTF DSP

Spatial Audio

Listener SFX A SFX B Music Reverb Zone

The spatial audio engine uses Web Audio API with custom HRTF convolution for realistic 3D sound positioning. Dynamic reverb zones model different acoustic environments as the listener moves through the game world.

const panner = ctx.createPanner(); panner.panningModel = 'HRTF'; panner.distanceModel = 'inverse'; panner.setPosition(x, y, z); convolver.buffer = reverbIR;

Physics System

Continuous collision detection with GJK/EPA algorithms, constraint solvers, and soft-body dynamics for cloth simulation.

GJK Verlet XPBD

Physics System

Collision Pipeline Broad Phase (Spatial Hash) Narrow Phase (GJK + EPA) Contact Generation Constraint Solver (XPBD)

Our physics engine uses a two-phase collision detection approach. Spatial hashing quickly identifies potential collision pairs, then GJK/EPA computes exact contact points. The XPBD solver handles both rigid and soft-body constraints.

fn solve_constraints( bodies: &mut [RigidBody], constraints: &[Constraint], dt: f32, iterations: u32 ) { for _ in 0..iterations { for c in constraints { c.project(bodies, dt); } } }

Asset Pipeline

Incremental asset compilation with dependency tracking, hot-reloading, and streaming LOD for seamless iteration.

glTF Streaming LOD

Asset Pipeline

Source Parse Transform Dependency Graph Packed Output (LOD 0-3) Hot-Reload Watcher

The asset pipeline processes glTF models, textures, audio, and shaders through a dependency-aware build graph. Incremental compilation ensures only changed assets are reprocessed, while LOD streaming loads detail levels on demand.

struct AssetGraph { nodes: HashMap<AssetId, AssetNode>, edges: Vec<(AssetId, AssetId)>, dirty: HashSet<AssetId>, } impl AssetGraph { fn rebuild_dirty(&mut self) { ... } }

The Workshop

Philosophy

MiRiS approaches game technology as craft — each system built with meticulous attention to architectural elegance and performance. We believe the best game experiences emerge from deeply considered technical foundations.

Approach

Our stack is intentionally focused: Rust for systems programming, WebAssembly for universal deployment, and modern GPU APIs for rendering. This allows us to target the web without compromising on performance or capability.

Circle

MiRiS is a game-making circle — a collaborative workshop where technical exploration and creative expression meet. Every exhibit in this cabinet represents a piece of our shared journey in building interactive worlds.