Files
moonwell-client-core/graphify-out
sindoring 8389b08d31 MoonWell voice: in-game voice chat through a relay
Three channels: near (the speaker's own faction within /say's 25 yards,
heard from where the speaker stands), group/raid and guild (any
distance). Voice never rides the world socket: clients send 20 ms Opus
frames over UDP to moonwell-voice-relay, which forwards each one only
to whoever may hear it, from the state the core feeds it (faction,
map, instance, position, group, guild), so no client can claim a place
or a group of its own. The core vouches for a client with a signed
ticket (`.mwvoice`).

- crates/moonwell-voice: the ticket and feed formats (byte-checked
  against the core's own C++ output), the client-relay wire, routing,
  the relay binary; with `client`, the microphone and voice output on
  their own cpal streams, Opus through the vendored libopus (no cmake),
  per-speaker playout queues and the UDP session.
- crates/moonwell/src/voice.rs: the game side: push-to-talk (Mouse4 by
  default) or voice activation, near speakers placed by distance and
  side, Lua MoonWell_Voice*, settings in moonwell-voice.toml, and the
  MoonWellVoice addon (voice.lua): the ticket, /voice and its settings
  window (devices by id with their Windows names, activation, key,
  threshold and meter, talk channel, channels heard, volumes, echo test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:29:20 +04:00
..
2026-10-25 16:02:07 +04:00
2026-10-27 14:05:28 +04:00
2026-10-25 16:02:07 +04:00
2026-10-25 16:02:07 +04:00