Passer au contenu principal
Version: bleeding-edge 🩸

Voix sur IP (VOIP)

Comment fonctionne la VOIP dans nanos world et comment l'utiliser.

nanos world propose un système de voix sur IP (VOIP) intégré, basé sur l'implémentation native de Steam, qui permet aux joueurs de se parler en jeu. Le système VOIP est très personnalisable : il peut utiliser un chat local/de proximité, des canaux globaux, ou les deux.

Types d'audio VOIP​

Le système VOIP repose sur deux types principaux : local/proximité et global.

Local/proximité​

La VOIP locale utilise un audio spatialisé en 3D pour diffuser la voix du joueur. En général, elle est attachée au Character contrôlé par le joueur et simule un environnement sonore réaliste où les joueurs ne s'entendent que s'ils sont proches.

Vous pouvez activer ou désactiver le chat local d'un joueur avec Player:SetVOIPLocalSetting(). Le volume du chat local se règle avec Player:SetVOIPLocalVolume(), et la distance à laquelle la voix porte avec Player:SetVOIPLocalMaxDistance().

Global​

La VOIP globale permet aux joueurs de communiquer où qu'ils soient dans le monde du jeu. 63 canaux globaux sont disponibles (1 à 63). On peut configurer les joueurs pour qu'ils écoutent ou parlent sur des canaux précis.

Vous pouvez configurer les réglages d'un joueur pour un canal global précis avec Player:SetVOIPGlobalChannelSetting(), ou pour tous les canaux d'un coup avec Player:SetVOIPGlobalAllChannelsSetting(). Le volume du chat global se règle aussi avec Player:SetVOIPGlobalVolume().

Vous pouvez vérifier sur quels canaux un joueur écoute ou parle avec Player:GetVOIPListeningChannels() et Player:GetVOIPSpeakingChannels().

Server/Index.lua
-- Creates a "team radio": players of each team speak and listen only in their team channel
function SetPlayerTeamRadio(player, team)
-- Stops listening and speaking in all global channels
player:SetVOIPGlobalAllChannelsSetting(VOIPSetting.None)

-- Speaks and listens in the team channel (team 1 uses channel 1, and so on)
player:SetVOIPGlobalChannelSetting(team, VOIPSetting.Both)
end

Filtres passe-haut/passe-bas​

Sur les canaux globaux, on peut appliquer des filtres à l'audio avec les méthodes Player:SetVOIPGlobalHighPassFilter() et Player:SetVOIPGlobalLowPassFilter().

On peut simuler un effet radio avec un filtre passe-haut, par exemple player:SetVOIPGlobalHighPassFilter(8000).

note

Les filtres passe-haut/passe-bas ne sont disponibles que sur les canaux globaux.

Réglages VOIP​

Les réglages VOIP des canaux locaux et globaux se configurent avec l'enum VOIPSetting. On peut définir si le joueur va seulement écouter, seulement parler, ou les deux, sur le canal local et sur chaque canal global !

Savoir qui parle​

L'événement VOIP se déclenche quand un joueur commence ou arrête de parler, pratique pour afficher un indicateur « en train de parler » dans votre interface :

Client/Index.lua
Player.Subscribe("VOIP", function(player, is_talking)
Console.Log("%s is %s", player:GetName(), is_talking and "talking" or "silent")
end)

Rendre muet​

Un joueur peut être rendu muet de deux façons indépendantes.

Muet via les scripts : on peut rendre un joueur muet avec la méthode Player:SetVOIPMuted(). Appelée côté serveur, elle rend le joueur muet pour tout le monde (et son jeu arrête d'envoyer sa voix), mais elle peut aussi être appelée côté client pour un mute local.

Muet par le joueur : les joueurs peuvent couper leur propre micro avec le bouton Mute du menu Échap, ou en appuyant sur la touche VOIP en mode Open Mic. Ce mute appartient au joueur : les scripts ne peuvent pas le modifier, mais peuvent le lire avec Client.IsVOIPSelfMuted() et écouter l'événement VOIPSelfMuteChange, par exemple pour afficher une icône de micro coupé dans votre interface :

Client/Index.lua
Client.Subscribe("VOIPSelfMuteChange", function(is_muted)
MyHUD:CallEvent("SetMicMuted", is_muted)
end)

Le mute du joueur est conservé tant que le jeu est ouvert, même en changeant de serveur, mais il n'est pas sauvegardé.

Push to Talk et Open Mic​

Chaque joueur choisit dans les paramètres Audio le fonctionnement de son micro :

  • Push to Talk (par défaut) : la voix n'est envoyée que lorsque le joueur maintient la touche VOIP.
  • Open Mic : la voix est toujours envoyée, sauf si le joueur s'est rendu muet. Dans ce mode, la touche VOIP active ou désactive le mute du joueur.

C'est une préférence du joueur que les scripts ne peuvent pas modifier, mais vous pouvez la lire via Client.GetSettings() avec la clé VoicePushToTalk, par exemple pour afficher la bonne indication dans votre interface.

Configurer le micro​

Comme nous utilisons l'implémentation de Steam, vous pouvez configurer votre micro dans les paramètres de Steam, accessibles depuis le client Steam ou l'overlay Maj+Tab. Vous pourrez y régler le volume de votre micro, le tester et définir d'autres préférences audio.

Steam voice settings