No description
Find a file
CosminPerRam 786da81ea5
[Protocol] Add GameSpy 3 support. (#25)
* [Protocol] Gamespy3 initial code

* [Protocol] Add rest of challenge solving

* [Protocol] Remove unused stuff

* [Protocol] Remove adding unused bytes

* [Protocol] Clean up code

* [Protocol] Make gs3 a struct

* [Protocol] Add initial key-value parsing

* [Protocol] Manage multiple packets

* [Protocol] Split server vars and other vars

* Revert "[Protocol] Split server vars and other vars"

This reverts commit 9a930aeb68802fcf3d0908a2e031dfea054d37d0.

* [Protocol] Proper packet management and initial response struct

* [Protocol] Fix players_minimum

* [Protocol] Fix server vars to parse only the first packet

* [Protocol] Update CHANGELOG.md

* [Protocol] Initial player parsing

* [Protocol] Split GS one and three

* [Protocol] Add common code file

* [Protocol] Change static to const

* [Protocol] Fix players_online and break on data to map on empty key

* [Protocol] Remove unused types and printlns

* [Protocol] Add teams parsing

* [Protocol] Split key_values and parsing data

* [Crate] Update PROTOCOLS.md
2023-04-17 15:10:51 +03:00
.github/workflows Changed name of the CI file 2022-11-25 19:56:43 +02:00
examples [Protocol] Add GameSpy 3 support. (#25) 2023-04-17 15:10:51 +03:00
src [Protocol] Add GameSpy 3 support. (#25) 2023-04-17 15:10:51 +03:00
.gitignore [Crate] Add formatting (#22) 2023-03-14 10:31:37 +02:00
.rustfmt.toml [Crate] Add formatting (#22) 2023-03-14 10:31:37 +02:00
Cargo.toml [Crate] Add feature: serde (#21) 2023-03-13 16:51:33 +02:00
CHANGELOG.md [Protocol] Add GameSpy 3 support. (#25) 2023-04-17 15:10:51 +03:00
GAMES.md [Games] Serious Sam support. 2023-03-04 21:36:01 +02:00
LICENSE.md [Crate] Bump version to 0.2.1. 2023-03-03 18:09:17 +02:00
PROTOCOLS.md [Protocol] Add GameSpy 3 support. (#25) 2023-04-17 15:10:51 +03:00
README.md [Crate] Reorganize README. 2023-03-13 00:43:03 +02:00
SERVICES.md 7 Days To Die support. 2022-11-25 20:10:16 +02:00

rust-GameDig CI Latest Version Crates.io License:MIT

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 does, to pure Rust!

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.56.1 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::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):

{
  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 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)!