VoidDrift

Mining simulation set at the edge of a black hole

Rust Bevy bevy_egui Android

The Problem

The asteroid fields are debris from what the black hole eats. You mine them. The station has been here longer than you. It should have been consumed. It has not been. You don't know why. Factions send bottles across the event horizon. You don't know how. Resources deduct. Upgrades apply. What happens in between is outside the frame. There is no win condition. There is no escape. The horizon is a one-way membrane.

My Approach

  • Bevy engine with bevy_egui for all HUD (Mali GPU stabilization)
  • Built specifically for Moto G 2025 (720×1604, Mali-G57 GPU)
  • System partitioning respecting Bevy's 20-tuple schedule limit
  • Universal Disjointness — Without<T> filter standard for all &mut Transform queries
  • ADR-governed architecture (11 Architecture Decision Records)

Key Highlights

  • Targeted hardware optimization for specific Android device
  • ADR-driven development process
  • Narrative scope — what gets explained and what stays unexplained
  • No win condition, no escape — the loop continues

How It Works

VoidDrift is a mining simulation set at the edge of a black hole. The asteroid fields are debris from what the black hole eats. You mine them. The station has been here longer than you. It should have been consumed. It has not been. You don’t know why.

The Game

The Loop:

  • Drones mine asteroids autonomously
  • Ore refines and forges into components
  • Bottles arrive — you collect them, read the signal, fulfill requests
  • Upgrades accelerate the loop
  • The loop continues

There is no win condition. There is no escape. The horizon is a one-way membrane.

Technical Architecture

Built for the Moto G 2025 (720×1604, Mali-G57 GPU). Every architectural decision is made for that specific device.

Key ADRs (Architecture Decision Records):

  • ADR-003: bevy_egui for all HUD (Mali GPU stabilization)
  • ADR-007: System partitioning (Bevy’s 20-tuple schedule limit)
  • ADR-008: Universal Disjointness — Without filter standard for all &mut Transform queries
  • ADR-010: Narrative scope — what gets explained and what stays unexplained

Design Philosophy

The game embraces ambiguity. Factions send bottles across the event horizon — you don’t know how. Resources deduct. Upgrades apply. What happens in between is outside the frame.

This is a game about the loop, not the destination. The station has been here longer than you. It should have been consumed. It has not been. You don’t know why.

Technical Decisions

Why Bevy? Rust-based ECS engine with strong performance characteristics and compile-time safety. The ecosystem is growing rapidly, and the architecture aligns well with complex simulation needs.

Why bevy_egui for all HUD? Mali GPU stabilization. The immediate mode GUI approach reduces draw call complexity compared to traditional retained-mode UI frameworks, critical for the target hardware.

Why ADR-governed development? 11 Architecture Decision Records govern the project. This ensures architectural decisions are documented, justified, and reversible when needed.

Lessons Learned

Targeting specific hardware forces architectural clarity. When every decision must justify itself against the constraints of a Moto G 2025, you cut away abstractions that don’t pull their weight.

Also: Some questions shouldn’t be answered. The narrative embraces what stays unexplained. The station should have been consumed. It has not been. You don’t know why.


GitHub: VoidDrift


Built with Bevy (Rust). Targeted for Android Moto G 2025. ADR-governed development.

Explore