Coder Social home page Coder Social logo

mindstorm38 / wg-toolkit-rs Goto Github PK

View Code? Open in Web Editor NEW
11.0 3.0 3.0 461 KB

Toolkit crate providing various implementations for codecs distributed by Wargaming.net (BigWorld & Core engine, World of Tanks). Network protocol is W.I.P.

Home Page: https://crates.io/crates/wg-toolkit

License: MIT License

Rust 100.00%
toolkit world-of-tanks wargaming network protocol wot bigworld core-engine

wg-toolkit-rs's Introduction

WG Toolkit

Toolkit crate providing various implementations for codecs distributed by 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
  • Crate documentation
  • 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
  • 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 python library, which directly inspired this crate.

Thanks to SkaceKamen for wot-model-converter python library, for its open-source work on processed model file format.

wg-toolkit-rs's People

Contributors

mindstorm38 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

wg-toolkit-rs's Issues

Development

Hello dear mindstorm38,

i want to join your project, please.

Sincerly Chris

[Feature Request] Broader Spaces viewer

I regret to inform you I have searched the internet for at least a year trying to find a way to view levels from another game.
I am requesting this feature in your software because I am unable to figure out how to do it on my own.

If you're uninterested in this request I would understand if you marked this request as closed and moved on.
Thank you for your time.
~Shadpw

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.