MiRiS
Developer Portal

The technical heart of the MiRiS game-making circle. Code, craft, and create together.

Active Projects 12
{ ; | } ()
// vertex shader
uniform mat4 modelView;
uniform mat4 projection;

void main() {
  vec4 pos = modelView * vec4(position, 1.0);
  gl_Position = projection * pos;
}

Game Engine Core

A modular ECS architecture built for performance. Every system is composable, every component is data-driven.

Commits This Month 847
// entity component system
struct Entity {
  id: u64,
  components: HashMap<TypeId, Box<dyn Component>>,
}

impl Entity {
  fn add_component<T: Component>(
    &mut self,
    component: T
  ) {
    self.components.insert(
      TypeId::of::<T>(),
      Box::new(component)
    );
  }
}

Rendering Pipeline

Forward+ rendering with clustered light culling. Supports PBR materials, volumetric fog, and real-time GI through screen-space probes.

Draw Calls / Frame <200
fn() => ::
// fragment shader
in vec3 vNormal;
in vec2 vUV;

vec3 light = normalize(
  vec3(0.5, 1.0, 0.3)
);
float diff = max(
  dot(vNormal, light),
  0.0
);

Audio System

Spatial audio with HRTF. Dynamic mixing, real-time reverb convolution, and procedural sound generation for environmental ambience.

Developer Tools

Custom-built toolchain for rapid iteration. Hot-reload everything: shaders, scripts, assets, UI layouts. Edit while the game runs.

Hot Reload <50ms
// scripting API
class PlayerController extends Script {
  on_update(dt: f32) {
    let vel = self.input().axis(
      "move_x", "move_y"
    );
    self.transform().translate(
      vel * speed * dt
    );
  }
}
let mut -> ;
# build pipeline
target "game" {
  src: ["src/**/*.rs"],
  assets: ["res/**/*"],
  shaders: ["shaders/*.glsl"],
  optimize: true,
  hot_reload: true,
}

Asset Pipeline

Automatic texture compression, mesh optimization, and atlas generation. Import from Blender, Aseprite, and Tiled with zero configuration.

Supported Formats 40+

About MiRiS

A small, dedicated circle of game developers pushing the boundaries of indie game technology. We build our tools from scratch because we believe the best games come from the deepest understanding of the medium.

Founded 2019
pub fn game ()
// philosophy.rs
const PRINCIPLES: [&str; 4] = [
  "Own your tools",
  "Ship with pride",
  "Code is craft",
  "Play every day",
];

Open Source

Our engine core, tooling, and shader libraries are open source. We build in public because great tools make great games.

GitHub Stars 2.4k