Multiplayer Tutorial 2: Sala de Chat (Chat Room)

1

Index

Tagged

Stats

9,597 visits, 14,185 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 5 Aug, 2015. Last updated 25 Feb, 2019

Grupo Signalling (Sinalização)

Este grupo lida com o servidor de sinalização. Devemos conectar o sinalizador para descobrir quem mais está na sala, ser capaz de se conectar a eles, e descobrir se nós é que fizemos o host. Primeiramente, devemos nos conectar ao servidor de sinalização, que é o servidor oficial hospedado pela Scirra em wss: //multiplayer.scirra.com. (Cada passo é registrado no log de bate-papo, assim o usuário pode ver o progresso em andamento.)

Em seguida, supondo que tudo tenha corrido bem é ativado On signalling connected. No entanto, o servidor de sinalização não permitirá que nos conectemos em nenhum jogo até que ingressemos com nosso nome de usuário (chamado de alias pelo servidor de sinalização). Por isso, no momento da conexão, também fazemos a requisição de acesso com o nome de usuário da tela Login.

Assumindo que nossa solicitação de login seja bem-sucedida, encadeamos On signalling logged in. Agora estamos prontos para participar de um jogo. Note que se o apelido (alias) solicitado já estiver em uso no servidor de sinalização, ele simplesmente lhe atribui um novo alias. Por exemplo, se duas pessoas logarem como "Joe", a segunda pessoa receberá o pseudônimo de "Joe2". Para evitar confusão, é uma boa idéia exibir para o usuário o seu "alias" (a partir da expressão Multiplayer.MyAlias) para que ele possa ver qual nome lhe foi atribuído. Agora que estamos conectados, podemos também pedir para entrar na sala (usando nossas constantes globais para os nomes do jogo, da instância e da sala).

Ao entrarmos numa sala, primeiramente descobriremos se somos o "host" ou não. O servidor de sinalização tornará a primeira pessoa a entrar numa sala, em "host". Os dados de jogo atualizados são transferidos através da conexão dessa pessoa (ela agirá como o servidor para o jogo). Testamos se somos o "host" usando a condição Is host em um sub-evento da "trigger" On signalling joined room. Uma vez que tanto o "host" (atuando como o servidor) quanto às demais "peers" (as demais conexões atuando como clientes para o servidor) rodam o jogo a partir de um mesmo e único projeto, é sensato organizar os eventos em dois procedimentos diferentes, Host e Peer. Ambos estão desativados inicialmente, mas ao entrarmos na sala, ativamos o apropriado. Isso significa que temos um lugar conveniente para colocar eventos que só se deve aplicar ao host ou aos clientes. Também acrescentamos nosso próprio nome à lista de clientes (PeerList), uma vez que não receberemos uma notificação de "peer joined" de nós mesmos.

Os últimos três eventos neste grupo são, basicamente, apenas para o tratamento de erros. Na grande maioria dos casos todos os eventos acima devem funcionar bem. No entanto, se sairmos da sala, ficarmos desconectado ou encontrarmos um erro no servidor de sinalização, nós adicionamos uma mensagem no log de bate-papo para que possamos ver o que aconteceu.

Este grupo nos levou através da conexão, login em uma sala do servidor de sinalização e ativação do procedimento apropriado para ser o "host" ou o cliente. Uma vez que entramos, os dados do jogo serão transmitidos apenas através do "host". Os eventos restantes lidarão com a sala de bate-papo em si. São eles os três seguintes grupos Common, Peer e Host, pertencentes ao grupo principal Chat.

  • 0 Comments

Want to leave a comment? Login or Register an account!