World of Warcraft authentication + game server message definitions for Rust.
Auto generated from the wowm
language found in wow_message_parser/wowm
.
The project is split into the subdirectories:
wow_login_messages
: Rust library for the authentication server. On crates.io.wow_message_parser
: The parser, codegen and definitions that creates the libraries. Used to buildwow_login_messages
,wow_world_messages
andwowm_language
.wow_world_messages
: UNRELEASED Rust library for the world server for WoW version 1.x.y.wow_world_base
: UNRELEASED Rust library that provides the basic types and enums such asClass
,Race
andGender
forwow_world_messages
and others.wow_items
: Rust library that contains an array of allItem
s. Uses theItem
type fromwow_world_base
.wowm_language
: mdbook of language specification. Hosted atwww.gtker.com/wow_messages
.intermediate_representation.json
: UNRELEASED contains a machine readable version of thewowm
files.examples
Example servers and clients that will work with 1.12, 2.4.3 and 3.3.5 clients.
Run cargo run -p wow_message_parser && cargo test
to "compile" all libraries and ensure that there are no issues.
The following environment variables can be used with the parser:
WOWM_WIRESHARK
: must point to a validpacket-woww.c
in a wireshark repo. This file will then be modified with the auto generated Wireshark messages.WOWM_SQLITE_DB_PATH
:wow_db_sqlite
directory. Writes the types and functions forwow_world_base
extended
.WOWM_PRINT_TEST_ERRORS
: when set errors testing that the application exists with a message will print error messages.WOWM_ONLY_PRINT_NAME_OF_SINGLE_MESSAGE
: when set the reporting output will be the first unimplemented message without a newline character. This is intended for quickly implementing many messages in quick succession.WOWM_OVERWRITE_ALL_TESTS
: overwrites the current regression test files with new output.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.