Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jogi1/quakeworld
A rust library for working with quakeworld.
https://github.com/jogi1/quakeworld
quakeworld rust-lang
Last synced: 24 days ago
JSON representation
A rust library for working with quakeworld.
- Host: GitHub
- URL: https://github.com/jogi1/quakeworld
- Owner: jogi1
- License: mit
- Created: 2022-10-24T00:16:46.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-16T20:56:24.000Z (4 months ago)
- Last Synced: 2024-10-01T17:08:49.562Z (about 1 month ago)
- Topics: quakeworld, rust-lang
- Language: Rust
- Homepage:
- Size: 199 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
quakeworld
=====
A rust library for working with quakeworld.
### available features
* protocol
* [quakeworld::protocol::message::Message](./src/protocol/message/mod.rs) - reading data types from a byte array
* [quakeworld::protocol::types](./src/protocol/types.rs) - data types* network
* [quakeworld::network::channel::Channel](./src/protocol/channel.rs) - keeps track of connection sequences
* [quakeworld::network::connection::client::Client](./src/protocol/connection/client.rs) - client implementation that handles packets and provides packets that need to be send to keep up a connection with a server. See [here](./example/client.rs) for a minimal client implimentation. Only tested with `mvdsv 0.36-dev`.* mvd
* [quakeworld::mvd::Mvd](./src/mvd/mod.rs) - parsing mvd file format* state
* [quakeworld::state::State](./src/state/mod.rs) - using Message types to create a game state* utils
* [quakeworld::utils::AsciiConverter](./src/utils/ascii_converter.rs) - converting byte arrays to printable ascii
* [quakeworld::utils::Userinfo](./src/utils/userinfo.rs) - parsing userinfo strings
* [quakeworld::utils::trace](./src/utils/trace.rs) - functions to print message read traces (see [here](./examples/trace.rs) for an example* crc
* [quakeworld::crc](./src/crc/mod.rs) - checksum functions* pak
* [quakeworld::pak](./src/pak/mod.rs) - pak rading/writing* ascii_strings - when reading strings they will be converted to printable ascii, original bytes are also being kept see [here](./src/protocol/types.rs#L12)
Features that are enabled by default are "mvd", "utils", "protocol", "state", "network", "trace", "connection", "crc" and "pak"
Everything is serializable via [serde](https://github.com/serde-rs/serde) (json,...). Supports wasm as target ('it compiles' ```cargo build --target wasm32-unknown-unknown```)### Goals
probably in order of being implemented too
* qwd - qwd format parsing
* mvd - creating a mvd from states### Documentation
could be better, aka non existing at the moment### Example
* [minimal mvd parser](./examples/mvd_parser.rs)
* [minimal client](./examples/client.rs)
* [minimal pak parser](./examples/pak.rs)
* [trace feature example](./examples/trace.rs)
* [quakeworld swiss army knife](https://github.com/jogi1/qwsak)
* [more elaborate mvd parser](https://github.com/jogi1/statyr) soon™