Roblox Connect é uma experiência onde você pode chamar um amigo e ter uma conversa como seus avatares, juntos em um espaço imersivo compartilhado.Do ponto de vista de um desenvolvedor, é uma experiência não bloqueada de cópia que demonstra uma maneira de consumir os métodos e eventos relacionados à chamada de SocialService e PlayerViewService .Os casos de uso possíveis são ilimitados e este guia fornece exemplos de como eles são usados em Roblox Connect.
Visão geral do projeto
Os desenvolvedores podem introduzir comunicação de avatar sincrona em qualquer experiência no Roblox utilizando métodos e eventos atuais.Algumas das características notáveis do Roblox Connect são destacadas e detalhes de privacidade de chamadas são compartilhados abaixo.
Mudança de ambiente
Para fornecer uma experiência comunicativa imersiva melhor, o projeto inclui um switcher de ambiente que permite que os jogadores se movam de ambiente para ambiente.Ao se mover entre ambientes no mesmo local, os personagens dos jogadores são reposicionados via PivotTo() .Ao se mover para um ambiente em um local diferente, os jogadores são teletransportados via TeleportService para o local desejado.
Além disso, um modelo de "abraço" é implementado para garantir que ambos os jogadores no espaço privado concordem em serem realocados antes de realmente fazê-lo.Se um jogador recusar o pedido de mudança de ambiente, toda a transação é cancelada e nenhum jogador é realocado.
Em relação à chamada, o teletransporte é para um servidor reservado e todos os participantes da chamada são teletransportados juntos.Se essa condição de teletransporte não for atendida ou se o próprio teletransporte falhar, a chamada termina.

Modos de câmera
Roblox Connect introduz dois modos de câmera únicos, além do modo de câmera padrão, ambos dos quais você pode utilizar para melhorar suas próprias experiências.Além disso, ao alternar entre vários modos de câmera, um transmissor de câmera faz com que a mudança entre os modos se sinta sem problemas.

Imagem em imagem
No modo imagem em imagem , o foco da câmera está em seu parceiro de chamada e uma pequena visão de seu personagem flutua na tela.Este modo também inclui rastreamento de cabeça e o movimento do jogador local é restrito.

Cinematográfico
O modo cinematográfico tenta manter ambos os personagens do jogador dentro do campo de visão da câmera a todo momento.O movimento do jogador não é restrito e, à medida que os personagens se movem, a câmera detecta seu movimento e ajusta de acordo.

Jogo Livre
O modo freeplay gratuito usa a Câmerade personagem padrão do Roblox, permitindo que você se mova enquanto também fala com seu parceiro de chamada.O personagem do seu parceiro não necessariamente estará em ver.
Barra de emoção
A barra de emotes do projeto é uma versão clonada do módulo de desenvolvedor EmoteBar .Fora da caixa, o módulo contém muitos recursos chave, mas Roblox Connect requer algumas alterações específicas, como devolver o personagem ao estado "inativo" depois de executar o emote uma vez.

Privacidade
Se alguém que não está na chamada for adicionado ao servidor reservado ou já estiver no servidor reservado, a chamada termina.
Implementação da API
Roblox Connect aproveita novos métodos e eventos SocialService e PlayerViewService para construir uma plataforma de comunicação imersiva.
SocialService:PromptPhoneBook() está conectado ao botão de chamada no lobby inicial para que os jogadores possam olhar para a lista de contatos e iniciar uma chamada.Em tandem, o evento SocialService.PhoneBookPromptClosed é conectado a um ouvinte que restaura a visibilidade do botão e reposiciona a Câmera.
O método SocialService:CanSendCallingInviteAsync() é utilizado para verificar se um jogador tem direito de enviar convites de chamada.Se um jogador for inelegível (não 13+ e não telefone ou ID verificados ), uma mensagem de diálogo é exibida.Esta verificação deve ser feita antes de chamar PromptPhoneBook() .
O evento SocialService.CallInviteStateChanged está conectado a um ouvinte que desvia o botão de chamada, liberando espaço na tela enquanto o jogador aguarda que seu amigo responda à solicitação de solicitar / pedir.Este evento pode ser usado para mostrar um estado "conectando" se desejado.
SocialService:ShowSelfView() e SocialService:HideSelfView() estão conectados a vários modos de câmera.Especificamente, a visão do próprio chamador é mostrada em Modo de Imagem em Imagem ou Modo Cinematográfico, e escondida no modo Freeplay.
PlayerViewService:GetDeviceCameraCFrame() mapas dispositivo para orientação da câmera de espaço de trabalho no modo Imagem em Imagem, fornecendo uma experiência mais imersiva.Este método aproveita o dispositivo de câmera do jogador e só é aplicável em dispositivos móveis.