A native Plex client for the WarcraftXL 3.3.5a build-12340 client. Its Plex browser and playback controls render in the in-game Azeroth Plex panel. A hidden Win32 worker handles libmpv playback and mirrors the current video onto a client-local, movable world-space screen.
- Use a WarcraftXL-enabled 32-bit build-12340 client.
- Install the release containing
wxl-azeroth-plex.dll,wxl-video-host.exe,libmpv-2.dll,wxl.json, and this documentation. - Restart the client when WarcraftXL requests it.
- Press Insert, open Video Cinema, and choose Open Plex player inside WoW.
No Microsoft Edge WebView2 runtime is required.
- Choose Open Plex sign-in in the in-game Azeroth Plex panel.
- Complete Plex PIN authorization in the system browser.
- Select a reachable Plex server and library.
- Choose a movie, show, season, or episode and press Play.
- Use the in-game panel for browsing, search, playback, tracks, and subtitles. Hiding the panel leaves playback and audio running.
- Watchlist appears above the Plex library list on the Home screen;
- selecting a show opens its seasons, and selecting a season opens its episodes;
- large movie, show, and child-item lists expose Previous page and Next page;
- movies, episodes, tracks, playlists, and other media leaves open their metadata view before playback when supported.
Poster paths are retained from Plex while navigating. WarcraftXL ABI 1.1 does not expose an in-game image control, so live poster rendering requires a future core UI image service; playback remains visible on the placed world-space screen.
The pinned x86 libmpv build includes the normal FFmpeg audio/video decoders; separate codec DLLs are not required. If a direct stream ends early, the worker reports the mpv error and retries through Plex transcoding when possible.
AzerothPlex includes a state-only Watch Together relay. Every viewer streams the media directly from their own Plex server; Plex credentials, authenticated media URLs, decoded frames, and media files are never sent through the relay.
For local development, start the relay from relay/ and leave the default
ws://127.0.0.1:17777/ws endpoint in place. In the in-game Plex panel, open
Watch Together, create a private room, then share its short AZ-.... code.
Guests resolve the host's media against their own Plex library and follow the
relay's authoritative playback state.
Watch Together currently includes host/shared/request-control modes, optional semantic audio/subtitle matching, a shared queue with independent Host managed and Everyone may add policies, all-ready synchronized starts, host migration, reconnect grace, disconnect policies, shared cinema layout, relay RTT/drift diagnostics, and a compact mini-player. The mini-player includes 10-second seek controls and its enabled state is saved locally.
Public room discovery is implemented but intentionally disabled by default. The
roadmap requires authentication plus abuse/moderation controls before public
rooms are considered production-ready. See relay/README.md for the explicit
development opt-in.
The Plex token is protected with Windows DPAPI under
%LOCALAPPDATA%\WarcraftXL\plex-player. The account password is never entered
into AzerothPlex and tokens are not sent through WarcraftXL shared memory.
The screen is client-local and is not a server GameObject or multiplayer object. In the in-game Video Cinema panel:
- choose Place / move screen in front of me;
- change Screen width to resize the 16:9 screen;
- rotate, raise, lower, hide, or show the screen;
- enable character/world depth occlusion and adjust depth offset;
- enable distance-based audio and tune its range.
- enable Pin Plex screen to display to keep the video fixed in the top-right of the game viewport while the character moves; use Pinned size, Pinned X, and Pinned Y to reposition or resize it. Dragging the video and its lower-right corner is also supported when the game cursor is available.
Placement is saved to
Extensions/wxl-azeroth-plex/world-screen.tsv and restored per client.
- WarcraftXL ABI 1.1 and the 32-bit build-12340 client;
- internet access for Plex authorization and server metadata;
- a Plex account with access to at least one reachable server;
- server-side Plex transcoding may be used when direct play is unavailable.
Media is played from Plex. AzerothPlex does not download, cache, locally transcode, or redistribute media. The world-space screen is client-local.
For Plex *.plex.direct connections, login and metadata remain HTTPS, but the
native media stream uses the server's standard HTTP port to avoid a known
32-bit libmpv/OpenSSL crash while opening HTTPS media. This fallback is limited
to Plex direct-host names.
The hidden playback worker is a Win32 C++20 target. The pinned x86 libmpv
development package must be supplied through MPV_ROOT; the build dynamically
loads libmpv-2.dll and does not require an MSVC import library.
cmake -S host -B host/build -A Win32 `
-DMPV_ROOT='C:/path/to/mpv-dev-i686-20260608-git-6444c05'
cmake --build host/build --config Release
ctest --test-dir host/build -C Release --output-on-failureThe current verified x86 runtime is mpv v0.41.0-734-g6444c0505, built from
the 20260608 Windows package. Newer i686 packages must be tested before
replacement because one newer package reproduced an upstream 32-bit OpenSSL
assertion during libmpv initialization.