Feature Plan: Voice Chat Integration โ
Summary โ
- Owner: Freddi
- Status: Delivery
- Target Release: Rolling
- Backlog Entry: Projects/Uebliche/agendas.md โธ ๐ฆ Backlog โธ Voice chat workflows
Goals โ
- Provide proximity and party-based voice communication through SimpleVoiceChat.
- Allow staff to create, manage, and moderate speaker channels dynamically.
- Ensure the voice system respects auth tokens and player permissions.
Scope โ
- Maintain SimpleVoiceChat bridge under
features/mods/simplevoicechat. - Manage speaker channels (
ChannelCreate,ChannelDelete,SpeakerPacketflows) perspeaker/README.md. - Sync with player party data and permissions modules.
- Exclude custom codecs or external VoIP services.
Implementation Outline โ
- Handle channel lifecycle packets per existing protocol specification (
speaker/README.md). - Bind voice state updates to Mongo persistence via
VoiceStateand related classes. - Integrate with player/session lifecycle in
platform/minestom/ConnectionManager. - Expose admin commands or UI hooks for moderation.
- Mirror protocol updates here and inside
/Projects/Uebliche/docs/gameserver/features/voicechat/plan.md.
Dependencies โ
- SimpleVoiceChat mod on clients and servers.
- Player/party services for access control.
- Monitoring feature for tracking voice latency and errors.
Risks & Mitigations โ
- Desync between mod versions: document supported versions; add compatibility checks at connect time.
- Abuse/misuse: integrate moderation commands and logging.
- Performance impact: profile packet handling; offload heavy tasks to async executors.
Validation Plan โ
- Manual QA: establish channels on dev server and verify creation/deletion flow.
- Automated tests: serialize/deserialize voice packets where feasible.
- Monitor voice metrics for errors or disconnect spikes.
Notes & Decisions โ
- Track decisions about channel policies (auto-cleanup, limits) under agenda
โ๏ธ Decisions.
References โ
services/gameserver/src/main/java/net/uebliche/features/mods/simplevoicechatservices/gameserver/src/main/java/net/uebliche/features/mods/simplevoicechat/data/VoiceState.javaservices/gameserver/src/main/java/net/uebliche/features/mods/simplevoicechat/network/minecraft/clientbound/GroupChangedPacket.java- Protocol outline in
services/gameserver/src/main/java/net/uebliche/features/mods/speaker/README.md