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-copylocked que demonstra uma maneira de consumir os métodos e eventos relacionados a chamadas de SocialService e PlayerViewService. Os possíveis casos de uso 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 a comunicação de avatar síncrona em qualquer experiência no Roblox usando métodos e eventos atuais. Alguns dos destaques da função Roblox Connect e detalhes de privacidade de chamadas são compartilhados abaixo.
Interruptor de Ambiente
Para fornecer uma melhor experiência de comunicação imersiva, o projeto inclui um alterador de ambiente que permite que os jogadores se movam de ambiente em ambiente. Ao se mover entre ambientes no mesmo lugar, os personagens dos jogadores são reposicionados via PivotTo() . Ao se mover para um ambiente em um lugar diferente, os jogadores são teletransportados via TeleportService para sua localização desejada.
Além disso, um modelo de "handshake" é implementado para garantir que ambos os jogadores no espaço privado concordem em ser realojados antes de realmente fazê-lo. Se um jogador rejeitar o pedido de mudar de ambiente, toda a transação será cancelada e nenhum jogador será realojado.
No que diz respeito à chamada, o teletransporte é para um servidor reservado e todos os participantes da chamada são teletransportados juntos. Se esta condição de teletransporte não for atendida ou se o teletransporte falhar, a chamada será encerrada.
Modos de câmera
O Roblox Connect introduz dois modos de câmera únicos, além do modo de câmera padrão, que você pode usar para aprimorar suas próprias experiências. Além disso, ao alternar entre vários modos de câmera, um interruptor de câmera faz com que a troca de modos seja perfeita.
Imagem em imagem
No modo picture-in-picture , o foco da câmera está no seu parceiro de chamada e uma pequena visão do seu personagem flutua na tela. Este modo também inclui rastreamento de cabeça e o movimento do jogador local é restrito.
Cinemático
O modo cinematográfico tenta manter ambos os personagens de jogadores dentro do campo de visão da sua câmera em todos os momentos. O movimento dos jogadores não é restrito e, à medida que os personagens se movem, a câmera detecta seu movimento e ajusta em conformidade.
Jogo Livre
O modo freeplay usa a Câmerapadrão do personagem Roblox, permitindo que você se mova enquanto também fala com seu parceiro de chamada. O personagem do seu parceiro não estará necessariamente à ver.
Barra de Emoções
A barra de emotes do projeto é uma versão clonada do módulo de desenvolvedor EmoteBar. Fora da caixa, o módulo contém muitas características importantes, mas Roblox Connect requer algumas mudanças específicas, como retornar o personagem ao estado "inativo" após realizar a emotes 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 será encerrada.
Implementação de API
Roblox Connect aproveita novos SocialService e PlayerViewService métodos e eventos para construir uma plataforma de comunicação imersiva.
SocialService:PromptPhoneBook() está conectado ao botão de chamada no lobby de início para que os jogadores possam ver sua lista de contatos e iniciar uma chamada. Em tandem, o evento SocialService.PhoneBookPromptClosed está conectado a um ouvidor que restaura a visibilidade do botão e reposiciona a Câmera.
O método SocialService:CanSendCallingInviteAsync() é usado para verificar se um jogador é elegível para enviar convites de chamada. Se um jogador não é elegível (não 13+ e não telefone ou ID verificado), 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 esconde o botão de chamada, liberando espaço na tela enquanto o jogador espera que seu amigo responda ao pedido de solicitar / pedir. Este evento pode ser usado para mostrar um estado de "conectando" se desejado.
SocialService:ShowSelfView() e SocialService:HideSelfView() estão conectados a vários modos de câmera. Especificamente, a auto-visão do chamador é mostrada no modo Picture-in-Picture ou Cinematic e escondida no modo Freeplay.
PlayerViewService:GetDeviceCameraCFrame() mapeia o dispositivo para a orientação da câmera da área de trabalho no modo Picture-in-Picture, proporcionando uma experiência mais imersiva. Este método aproveita o dispositivo de câmera do jogador e só é aplicável em dispositivos móveis.