Tutorial Multiplayer 3: pong

1

Index

Taggé

Statistiques

11,043 visites, 19,243 vues

Outils

Partager

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 13 Aug, 2015. Last updated 25 Feb, 2019

Grupo Host

O "host" é responsável por realmente executar o jogo. Sync Object faz a maioria do trabalho mantendo os clientes atualizados. O "host" lida com a lógica real do jogo, então os eventos do Host são um pouco mais complicados do que para os clientes.

Primeiramente, quando formos o "host", estaremos apenas à espera que outro jogador se junte. Portanto, na primeira vez que On peer connected disparar, podemos começar o jogo. Quando um cliente conecta, primeiro criamos um "paddle" para ele à direita da tela e o associamos ao cliente que está entrando. O jogo deve dizer "Get ready...", aguardar 3 segundos, dizer "Go!" durante 1 segundo, em seguida, mudar para a visualização do resultado (que é o estado do jogo "started"). Quando o jogo começa também habilitamos o movimento de bala da bola e o definimos em um ângulo randômico. Lembre-se que apenas o "host" realmente move o objeto; Sync object acompanha-o e atualiza-o para os clientes, e o comportamento também só deve ser habilitado no "host", pois caso contrário, poderá entrar em conflito com Sync object no cliente.

O "host" utiliza uma função para definir o estado do jogo. Isso ocorre porque mudando simplesmente a variável GameState afetaria apenas o "host", e os cientes nunca descobririam. Esta função permite-nos tanto mudar a variável quanto enviar uma mensagem para o cliente indicando que o estado do jogo mudou. O cliente recebe isto e atualiza sua própria variável GameState. Isso mantém a variável atualizada para todos no jogo.

Cada variável peerid dos "paddles" é definida para o ID do jogador correspondente, e podemos usar isso para separar o objeto dos jogadores individualmente. Uma vez que este é um jogo para dois jogadores, o ID dos clientes ou é MyID e é nosso próprio "paddle", ou é diferente e é o "paddle" do outro jogador. Precisamos avançar o "paddle" do outro jogador para onde eles o posicionam, portanto, escolhemos seu "paddle" e definimos para seu valor "y" de entrada. O valor de entrada mais recente para um cliente é obtido com a expressão PeerState.

Apenas o "host" cuida da lógica do jogo, como lidar com colisões. Neste caso, o "host" é responsável pelo rebate da bola pelos "paddles"; isso acontece automaticamente porque os "paddles" são sólidos e o comportamento Bala está definido para ricochetear em sólidos (lembre-se o cliente tem o comportamento de bala desativado então isso acontece somente no host). Cada vez que ela ricocheteia, nós também aumentamos sua velocidade, assim o jogo fica mais difícil.

Eventos 29 e 30 rastreiam o placar. Se a bola vai para fora do lado esquerdo da tela (X <0), adiciona 1 a pontuação do cliente (o jogador à direita), e repõe a bola. Se a bola vai para fora da direita da tela (X> LayoutWidth), adicionar 1 a pontuação do "host" (o jogador à esquerda), e repõe a bola.

Isso é tudo para os eventos específicos do "host".

  • 0 Comments

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