No description
Find a file
Tom 0c7dbe76d7
ci: Update node coverage badge to work without games.txt (#156)
* ci: Update node coverage badge to work without games.txt

Fixes #155 using a new node script that should be more robust than the
old shell script.

* ci: Change badge cron time to less common time

By doing at a less common time we should reduce action time usage as
the runners will be under less load.

* Add/Update badge

* ci: Improve node-badge script

Co-Authored-By: CosminPerRam <cosmin.p@live.com>

* ci: Run node badge action if script changes

* ci: Update node badge path for workspaces

* ci: Revert loading games from index in node badge script

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: CosminPerRam <cosmin.p@live.com>
2023-11-23 11:48:24 +02:00
.github ci: Update node coverage badge to work without games.txt (#156) 2023-11-23 11:48:24 +02:00
crates feat: Add connect timeout to TimeoutSettings (#158) 2023-11-22 12:40:22 +02:00
.actrc [CI] Improve checks (#71) 2023-07-12 23:40:10 +03:00
.gitignore [Crate] Add formatting (#22) 2023-03-14 10:31:37 +02:00
.pre-commit-config.yaml [CI] Update CI to work with workspaces 2023-10-18 00:29:21 +01:00
.rustfmt.toml [Crate] Bump rustfmt version to 1.6.0 (#69) 2023-07-10 18:32:17 +03:00
Cargo.toml chore: add release opts 2023-11-08 21:11:25 +00:00
CHANGELOG.md feat: Add connect timeout to TimeoutSettings (#158) 2023-11-22 12:40:22 +02:00
CONTRIBUTING.md docs: Add info about commits to CONTRIBUTING (#157) 2023-11-22 13:48:01 +02:00
GAMES.md feat: Add the unreal2 protocol (#124) 2023-10-30 13:37:15 +02:00
LICENSE.md [Crate] Update LICENSE.md to specify GameDig organization 2023-08-23 21:24:25 +03:00
PROTOCOLS.md feat: Add the unreal2 protocol (#124) 2023-10-30 13:37:15 +02:00
README.md [Repo] Link to CONTRIBUTING.md in README 2023-10-17 13:37:48 +01:00
RESPONSES.md feat: Add the unreal2 protocol (#124) 2023-10-30 13:37:15 +02:00
SERVICES.md [Service] Add valve master server query service (#34) 2023-04-28 18:00:04 +03:00
VERSIONS.md [Crate] Add rich error type (#80) 2023-08-05 12:36:48 +03:00

rust-GameDig

The fast library for querying game servers/services.
This library brings what node-GameDig does (and not only), to pure Rust!

Warning: This project goes through frequent API breaking changes and hasn't been thoroughly tested.

Community

Checkout the GameDig Community Discord Server here.
Note that it isn't be a replacement for GitHub issues, if you have found a problem within the library or want to request a feature, it's better to do so here rather than on Discord.

Usage

Minimum Supported Rust Version is 1.65.0 and the code is cross-platform.

Pick a game/service/protocol (check the GAMES, SERVICES and PROTOCOLS files to see the currently supported ones), 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 query example:

use gamedig::games::teamfortress2;

fn main() {
    let response = teamfortress2::query(&"127.0.0.1".parse().unwrap(), 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):

{
  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",
    //....
  ]
}

Want to see more examples? Checkout the examples folder.

Documentation

The documentation is available at docs.rs.
Curious about the history and what changed between versions? Everything is in the CHANGELOG file.

Contributing

If you want to 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)!

Before contributing please read CONTRIBUTING.