Expand description

§wow_world_messages

Implementation of the network protocol used between World of Warcraft game servers and clients for game versions 1.12.x (Vanilla), 2.4.3 (The Burning Crusade), and 3.3.5 (Wrath of the Lich King). See the WoWDev Login page for details on getting to this message exchange.

§Usage

Remove the expansions you don’t need from the following command:

cargo add wow_world_messages --features 'vanilla tbc wrath sync tokio async-std flate2 chrono'

The library is split into the top level modules:

  • vanilla for items valid for version 1.12.x.
  • tbc for items valid for version 2.4.3.8606.
  • wrath for items valid for version 3.3.5.12340.
  • shared for items that are valid for multiple versions. These are also exported through the regular modules, so for example if you are working with vanilla it is only necessary to export items from vanilla.

§Features/Serde support

This crate has the following features:

  • vanilla, for client version 1.12.x.
  • tbc, for client version 2.4.3.8606.
  • wrath, for client version 3.3.5.x.
  • encryption, for functions that take automatically encrypt/decrypt the header.
  • chrono, for support for adding a TryFrom chrono::prelude::TimeZone to DateTime.
  • flate2, for supporting compressed messages.
  • tokio, for tokio async support.
  • async-std for async-std async support.

§Design Decisions

Types have been named the ugly CMD_SCREAMING_SNAKE_CASE way because that’s what other (mostly C++) emulators call them. This makes it significantly easier to search through other emulators or other documentation.

§Examples

The wow_messages repo has a few example applications that showcase the library.

§Auto Generation

This crate is partially auto generated by the wowm files in the wow_messages repository.

§Other Work

  • vMaNGOS (C++) and MaNGOS derivatives in general have a relatively complete list of messages for popular versions, but they are not available as a library.

Re-exports§

  • pub use traits::Message;

Modules§

  • sharedvanilla or tbc or wrath
  • tbc(vanilla or tbc or wrath) and tbc
  • vanilla(vanilla or tbc or wrath) and vanilla
  • wrath(vanilla or tbc or wrath) and wrath

Structs§

Enums§

Constants§

  • Default port that is connected to whenever a port isn’t specified.