mirror of
https://github.com/tribufu/rust-gamedig
synced 2026-05-06 15:27:28 +00:00
64 lines
2.9 KiB
Markdown
64 lines
2.9 KiB
Markdown
# rust-GameDig [](https://github.com/gamedig/rust-gamedig/actions) [](https://crates.io/crates/gamedig) [](https://crates.io/crates/gamedig) [](LICENSE.md)
|
|
|
|
**Warning**: This project goes through frequent API breaking changes and hasn't been thoroughly tested.
|
|
|
|
**rust-GameDig** is a game servers/services query library that fetches the availability and details of those, this library brings what **[node-GameDig](https://github.com/gamedig/node-gamedig)** does, to pure Rust!
|
|
|
|
Minimum Supported Rust Version is `1.56.1` and the code is cross-platform.
|
|
|
|
Check out the GameDig Community Discord Server [here](https://discord.gg/NVCMn3tnxH).
|
|
|
|
## Games/Services/Protocols List
|
|
To see the supported (or the planned to support) games/services/protocols, see [GAMES](GAMES.md), [SERVICES](SERVICES.md) and [PROTOCOLS](PROTOCOLS.md) respectively.
|
|
|
|
## Usage
|
|
Just pick a game/service/protocol, provide the ip and the port (be aware that some game servers use a separate port for the info queries, the port can also be optional if the server is running the default ports) then query on it.
|
|
[Team Fortress 2](https://store.steampowered.com/app/440/Team_Fortress_2/) query example:
|
|
```rust
|
|
use gamedig::games::tf2;
|
|
|
|
fn main() {
|
|
let response = tf2::query("127.0.0.1", None); // None is the default port (which is 27015), could also be Some(27015)
|
|
match response { // Result type, must check what it is...
|
|
Err(error) => println!("Couldn't query, error: {}", error),
|
|
Ok(r) => println!("{:#?}", r)
|
|
}
|
|
}
|
|
```
|
|
Response (note that some games have a different structure):
|
|
```json5
|
|
{
|
|
protocol: 17,
|
|
name: "Team Fortress 2 Dedicated Server.",
|
|
map: "ctf_turbine",
|
|
game: "tf2",
|
|
appid: 440,
|
|
players_online: 0,
|
|
players_details: [],
|
|
players_maximum: 69,
|
|
players_bots: 0,
|
|
server_type: Dedicated,
|
|
has_password: false,
|
|
vac_secured: true,
|
|
version: "7638371",
|
|
port: Some(27015),
|
|
steam_id: Some(69753253289735296),
|
|
tv_port: None,
|
|
tv_name: None,
|
|
keywords: Some("alltalk,nocrits"),
|
|
rules: [
|
|
"mp_autoteambalance": "1",
|
|
"mp_maxrounds": "5",
|
|
//....
|
|
]
|
|
}
|
|
```
|
|
|
|
To see more examples, see the [examples](examples) folder.
|
|
|
|
## Documentation
|
|
The documentation is available at [docs.rs](https://docs.rs/gamedig/latest/gamedig/).
|
|
Curious about the history and what changed between versions? Check out the [CHANGELOG](CHANGELOG.md) file.
|
|
|
|
## Contributing
|
|
If you want see your favorite game/service being supported here, open an issue, and I'll prioritize it (or do a pull request if you want to implement it yourself)!
|