* WIP: Add unreal2 protocol
* Add/Update badge
* protocols/unreal2: Update doc comments and TODOs
* protocols/unreal2: Don't pre-allocate as many bot players
* protocols/unreal2: Use "encoding-rs" for decoding unreal2 strings
* Add/Update badge
* protocols/unreal2: Add constants for player pre-allocation.
Also improve some doc comments and update PACKET_SIZE.
* protocols/unreal2: Early break when enough players have been parsed
Add a fast-path to avoid waiting for packet timeout when we have parsed
as many players as specified in the server info packet.
* protocols/unreal2: Use HashSet to store mutators
* protocols/unreal2: Handle server sending multiple values for a rule
* protocols/unreal2: Add GatheringSettings to control what to query
GatheringSettings allows skipping querying rules and/or players which
can make the query return much faster. This also required moving each
individual query into its own helper.
* protocols/unreal2: Add more derives to types
* protocols/unreal2: Simplify ServerInfo::parse()
Co-Authored-By: CosminPerRam <cosmin.p@live.com>
* Docs: Add unreal2 protocol documentation
I used a website to generate the markdown RESPONSES table, the save file
from this website is included to make updating the table easier in the
future.
https://www.tablesgenerator.com/markdown_tables
* Add/Update badge
* protocols/unreal2: Use the correct encoding for UCS2 strings
* Docs: Remove unnecessary TGN file
---------
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: CosminPerRam <cosmin.p@live.com>
* Fix wrongly named game ids of l4d, l4d2 and q3a
* Specify how edition/protocol names are appended to games, rule 7
* Clarify rule 6 regarding numbers
* Add/Update badge
* Fix rule 7 misswording
* Fix 7 Days to Die
* List id changes in the changelog
* Forgot to fix test
* Apply Douile suggestion regarding rule 6
Co-authored-by: Tom <25043847+Douile@users.noreply.github.com>
* Fix typo on rule 6 and wrap text
* Clarify further rule 7
---------
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Tom <25043847+Douile@users.noreply.github.com>
* Remove the SteamApp enum.
* Further removal
* Replace SteamApp with Engine on game! usage
* Add removal of SteamApp in changelog
* docs: Update reference of SteamApp to Engine
* Update the docs of the Engine type to be more descriptive.
* [Games] Add macro to replace valve game query implementations
This somewhat reduces repeated code (#120), and also adds auto-generated
doc comments to all valve game query functions.
* [Games] Add macro to replace gamespy game query implementations
This somewhat reduces repeated code (#120), and also adds auto-generated
doc comments to all gamespy game query functions.
* [Games] Add macro to replace quake game query implementations
This somewhat reduces repeated code (#120), and also adds auto-generated
doc comments to all quake game query functions.
* [Games] Move all valve game modules into a single file using macros
Vastly reduces the number of files. However does break the game
definition-per-file test, so that was removed.
* [Games] Move all quake game modules into a single file using macros
* [Games] Move all gamespy game modules into a single file using macros
* [Docs] Update CHANGELOG
* [Docs] Improve game query function generation macro documentation
* [Games] Add missed Halo: Combat Evolved to gamespy
* Apply new id naming
* Fix failing CI on all features
* Update changelog
* Rename tf2 example to teamfortress2
* Fix typo in steamapp game names
* Rename minecraft legacy versions
* Apply CI node badge fix by Douile
* Add/Update badge
---------
Co-authored-by: GitHub Action <action@github.com>
* Add initial CONTRIBUTING.md file
* Update CONTRIBUTING.md
Co-authored-by: Tom <25043847+Douile@users.noreply.github.com>
* Specify to look whether there is an existing relevant issue first
* Specify that ids are lowercased only
* Fix tyope.
* Specify special case with multiple editions/versions
* Clarify an id already existing and fix typo
* Add new rule to specify what to do about names that being with numbers
* Simplify numbering rules
* Simplify numbering rules
* Specify on #1 unless #4 applies
* Specify naming for game names
* Add rule regarding mods that add ability for queries
* Remake rule 7 to include protocol naming
* Specify lowercase aplhanumeric
---------
Co-authored-by: Tom <25043847+Douile@users.noreply.github.com>
* [Protocol] Gamespy1 don't skip "playername" field (#88)
* [Protocol] Gamespy1 make more player fields optional (#88)
These fields seem to be missing from bf1942 queries so make them
optional.
* Add retry count to TimeoutSettings
This can be used to specify how many times to re-send requests that
fail. The default value is "1" so the if the first request fails, 1 more
attempt will be made.
* Add retries to valve queries
* [Protocol] &Optional<TimeoutSettings> add get_retries_or_default
Allow fetching the number of retries or the default retries value from a
borrowed optional TimeoutSettings.
* [Protocol] Add retries to minecraft protocol
* [Protocol] Add retries to quake
* [Protocol] Add retries to gamespy
* [Protocol] Update TimeoutSettings docs, and change default retries to 0
* Remove logging from retry_on_timeout
* [Protocol] TimeoutSettings make retries non-optional
* [Protocol] Move retry logic into lower level query functions
Retries are now implemented as wrappers on the single function that
would need to be retried on timeout.
In order to avoid cloning of TimeoutSettings, Socket::apply_timeouts()
was changed to accept a borrowed TimeoutSettings. And extra helpers were
added to the TimeoutSettings impl to reduce repetition.
* [Examples] Add retries to the generic example
* Also retry on PacketSend error
Sending packets could also timeout and until error_generic_member_access
is stable we have no way of determining the type of the underlying
`std::error::Error`.
* Add retry unit tests
* [Docs] Update changelog
* [Games] Update game definitions to match node-gamedig names
* Update game file names to match definitions
* [Games] rename minecraft definitions to better match node
* [Games] Add test that all game files match definition name
* Update SteamApp to match node names
* [Games] Update the forest to match node-GameDig#367
* Clippy fix in games test
* [Docs] Update GAMES.md with new names
* [DOCS] Update changelog