MineWars is a competitive multiplayer real-time strategy game based on the classic Minesweeper.
The game has been in design and development on-and-off for a few years, and has gone through several design iterations, prototypes, and rewrites during that time. Those old versions are not publicly available.
This repo hosts the current version of the game, that is being developed in an effort to finally make a public alpha release of the game. :)
The current state is WIP and this version of the game is not playable yet. Stay tuned for updates.
The main body of documentation is a mdbook
, sources in doc/
.
It contains detailed game design documents and specifications.
The majority of the game code is Free, Open-Source Software. Everything in this repo is dual-licensed as MIT/Apache-2.
The game also has proprietary parts. Those are in a separate private repo. Any official builds of the game (as distributed to players via official channels) are proprietary.
You can compile an open-source build of the game using just this repo, without the proprietary parts. It will have limited functionality (notably, you will not be able to play the main multiplayer game mode). See here for more info.
cargo run --features dev
(the dev
feature enables extra functionality not present in release builds)
The minewars-proprietary-stub repo is what makes this possible, by providing open-source stubs that will be used instead of the real proprietary code.
Official builds of the game are also made from this repo, but with the real proprietary code instead of the stubs. This repo here is not just a code dump, this is where the actual development happens. If you make contributions to the open-source code here, your contributions will be included (and you will be credited for them) in official builds of the game.
The game is implemented in the Rust programming language. The client is made with the Bevy game engine, but also uses tokio in the background for networking. The servers do not use Bevy, and are pure tokio.
Given that this is a multiplayer game, and there are many parts to it (game client, servers, tooling, etc.), this repo contains many Rust crates:
- Top-level: the main game client (Bevy)
bin/
: other binaries and toolsmw_host
: the dedicated game servermw_hostrpc
: CLI tool for controlling and managing the Host servermw_auth
: server for ancillary multiplayer services (accounts, lobbies, matchmaking, etc.)mw_cert
: CLI tool for generating encryption certificatesmw_datatool
: CLI tool for working with the MineWars data format
lib/
: supporting libraries:mw_common
: common code used everywheremw_app
: supporting client-side code between open-source and proprietarymw_dataformat
: co/dec for the format used for gameplay data (both replay/scenario files and over-the-wire gameplay)mw_proto_host
: protocol between the client/player and Host servermw_proto_auth
: protocol between the client/player and Auth servermw_proto_hostrpc
: RPC protocol for the Host servermw_proto_hostauth
: protocol between Host and Authmw_game_minesweeper
: the various Minesweeper game modes (not MineWars)
cfg/
: example config files and certificates for testing/development
Needless to say, everything is very WIP. Some of those crates don't have much working code yet.