Tutorial Multiplayer 3: pong

1
  • 1 favourites

Index

Tagged

Stats

9,955 visits, 17,188 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.

Grupo Peer

Como com o exemplo de chat, o grupo de eventos Peer é um pouco mais simples do que o do "host". Lembre-se que Sync object cria, move e destrói objetos automaticamente para os clientes, dependendo do que acontece no "host", por isso, não precisamos nos preocupar com isso aqui. O grupo Host entretanto, terá que lidar com a lógica de como os objetos se movem e interagem, o que neste caso é principalmente detectar o ricocheteio da bola nos "paddles", e manter a contagem.

No entanto, há uma coisa que precisamos fazer ao criar objetos como um cliente. Sync object automaticamente criará e destruirá objetos, mas quando eles são criados precisamos definir sua variável de instância peerid para que possamos mais tarde saber qual cliente o objeto representa. Quando Sync object cria um objeto, os eventos do objeto On created disparam e a expressão Multiplayer.PeerID é definida para o ID do cliente para o qual o objeto está sendo criado. Isto permite-nos lembrar quem o cliente é. Além disso, como com todos os objetos que representam clientes, usamos a ação Associate object with peer para indicar que este objeto representa um cliente conectado (Isso deve ser sempre feito em ambos os lados, tanto do "host" quanto dos clientes.).

Em seguida, o cliente precisa enviar suas entradas para o "host". On client update dispara para os clientes quando o "engine multiplayer" está prestes a enviar as entradas para o "host", por isso, devemos dizer ao objeto Multiplayer os valores mais recentes. Tudo o que precisamos fazer é dizer ao "host" a coordenada Y do nosso "paddle". O "paddle" é movido pelo nosso cursor do mouse, por isso apenas definimos o valor de entrada "y" (que nós adicionamos no início do layout) para a posição Y do mouse.

Finalmente, o "host" está no controle do jogo, e decide quando passamos do "get ready" para "go!". A fim de manter o nossa variável global GameState sincronizada com o "host", sempre que recebermos uma mensagem "gamestate-changed" nós atualizamos esta variável global.

Isso é tudo para os eventos específicos de clientes!

  • 0 Comments

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