darkin.space is a cross-platform multiplayer space shooter inspired by classics like DarkOrbit, Warpfire, and Realm of the Mad God. It's a hobby project I've been working on over the years, evolving both the technology and gameplay as I learn and experiment.
The Journey
What started as a learning project has evolved through multiple complete rewrites:
Backend Evolution
- Initial version: JavaScript backend using WebSockets for real-time gameplay
- TypeScript rewrite: Added type safety and better maintainability
- Go rewrite: Complete architectural overhaul using the Actor model and ECS (Entity Component System)
The current backend architecture uses isolated actors for each game world. This means if one game crashes, the entire backend stays up - other games continue running unaffected.
Client Evolution
- Game Maker Studio 1.4: Initial prototype
- Game Maker Studio 2: Upgraded for better features
- Godot Engine: Final rewrite for its open-source nature and CI/CD support
The switch to Godot was crucial - it enabled automated builds through CI pipelines, something Game Maker Studio couldn't offer at the time.
Architecture
The game is split into two main components:
The Lobby - A web-based hub where players can:
- Join games via OAuth authentication
- View leaderboards
- Accept and track quests
- Manage their profile
The Game Server - Real-time gameplay powered by:
- WebSocket connections for low-latency communication
- Actor model for isolated, fault-tolerant game worlds
- ECS architecture for performant entity management
- RESTful API for lobby interactions
Still Evolving
darkin.space remains an active side project that I work on when inspiration strikes. It's been a fantastic learning platform for experimenting with different technologies, architectures, and game design patterns.