Skip to content

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 являются авторитетными.

VIMP developer documentation