Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mindstorm38/wg-toolkit-rs
Toolkit crate providing various implementations for codecs distributed by Wargaming.net (BigWorld & Core engine, World of Tanks). Network protocol is W.I.P.
https://github.com/mindstorm38/wg-toolkit-rs
bigworld core-engine network protocol toolkit wargaming world-of-tanks wot
Last synced: 17 days ago
JSON representation
Toolkit crate providing various implementations for codecs distributed by Wargaming.net (BigWorld & Core engine, World of Tanks). Network protocol is W.I.P.
- Host: GitHub
- URL: https://github.com/mindstorm38/wg-toolkit-rs
- Owner: mindstorm38
- License: mit
- Created: 2022-02-13T12:09:31.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-04-13T20:42:24.000Z (7 months ago)
- Last Synced: 2024-05-01T14:30:29.869Z (6 months ago)
- Topics: bigworld, core-engine, network, protocol, toolkit, wargaming, world-of-tanks, wot
- Language: Rust
- Homepage: https://crates.io/crates/wg-toolkit
- Size: 450 KB
- Stars: 10
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WG Toolkit
Toolkit crate providing various implementations for codecs distributed by [Wargaming.net](https://wargaming.net/).
These codecs are part of the Core engine *(previously known as BigWorld)* notably used by
World of Tanks. This crate also provides an implementation of the network protocol.## Library
- [Crate page](https://crates.io/crates/wg-toolkit)
- [Crate documentation](https://docs.rs/wg-toolkit)
- Packed XML codec
- Deserialization
- Serialization
- Tank model codec
- Deserialization of visual tree
- Deserialization of vertices/indices
- Compiled space codec *(WIP)*
- Deserialization of some sections
- BWTB (header table)
- BWST (string table)
- BWT2 (terrain2)
- BWSG (static geometry)
- BWCS (compiled space settings)
- BWAL (asset list)
- Resource virtual filesystem (read-only)
- Package indexing
- Reading file either from native filesystem or packages
- Reading directory entries from native filesystem and packages
- Network protocol *(WIP)*
- Packets encoding and decoding *(partial flags support)*
- Appending elements to bundles
- Assemble received packet in bundles
- Iterate elements in a bundle## CLI
- [Crate page](https://crates.io/crates/wg-toolkit-cli)
- Packed XML
- Deserialization and display
- Value editing (string, integer, boolean, float)
- Resource virtual filesystem
- Read file content and copy it to stdout
- Read directory content with possible configured recursion## WoT CLI
Not yet published, not yet working, but present in the code base, might be integrated to
CLI at some point.## Contributing guidelines
When contributing to the code base, some rules should be followed:
1. Each major feature should have its own directory module;
2. Each side-feature, used internally by core features should be located under `util` module in its own file module.
3. When working on a custom reader and/or writer, but only implement one of the two, please anticipate how your module would be built with both implemented;
4. Catch all errors and forward them toward the public interface;
5. Custom error types should all be defined using `thiserror::Error` derivation;
6. When working on a custom reader and/or writer that doesn't provide lazy read/write operations, please make simple public functions that directly output, like `from_reader(reader: impl Read)` or `to_writer(writer: impl Write)`.## Credits
Thanks to SkepticalFox for [wot-space.bin-utils](https://bitbucket.org/SkepticalFox/wot-space.bin-utils/src/master/) python library, which directly inspired this crate.Thanks to SkaceKamen for [wot-model-converter](https://github.com/SkaceKamen/wot-model-converter) python library, for its open-source work on processed model file format.