VoidDrift
Mining simulation set at the edge of a black hole
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.