Voice
VIMP предоставляет proximity routing и именованные channels. Сервер управляет membership и permissions canSpeak/canListen; клиент выбирает доступный active channel и отображает состояние устройств.
ts
const dispatch = vimp.voice.createChannel('dispatch', {
spatial: false,
})
vimp.on('playerConnected', (player) => {
dispatch?.addPlayer(player, { canSpeak: true, canListen: true })
})
vimp.on('playerDisconnected', (player) => {
dispatch?.removePlayer(player)
})Для radio-like channel установите spatial: false. Spatial channel может переопределить maxDistance. Удаляйте игрока из channel сразу после потери доступа.
На клиенте обрабатывайте voiceChannelsChanged, voiceChannelChanged, voiceStart, voiceStop и voiceError. Стабильный reason подходит для локализованного UI, technicalMessage — для диагностики.
Корректная конфигурация требует:
streaming_visibility_radius >= 1при включённом voice;0 <= full_volume_distance < max_distance <= shard_size;- bitrate от 6000 до 128000;
- expected packet loss от 0 до 100;
- положительные capacity limits и не менее 50 packets/second.
Локальный mute и volume другого игрока — client preferences. Server voiceMuted и voiceDeafened являются авторитетными.