• Save
Network com XNA
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Network com XNA

on

  • 950 views

 

Statistics

Views

Total Views
950
Views on SlideShare
933
Embed Views
17

Actions

Likes
1
Downloads
0
Comments
0

3 Embeds 17

http://programadoriniciante.blogspot.com.br 12
http://www.programadoriniciante.blogspot.com.br 4
http://us-w1.rockmelt.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08
  • 02/03/12 22:08

Network com XNA Presentation Transcript

  • 1.  
  • 2. Jogos em Rede com XNA José Antonio “jalf” Leal de Farias Sharpgames
  • 3. Objetivos
    • Habilitar jogos multiplayer em rede
    • Fácil de usar
    • Para Xbox LIVE e Games for Windows – LIVE
    • Desenvolver com apenas um PC e um Xbox 360
    • Não é necessário servidores dedicados
  • 4. Características
    • Criação de Partidas online
      • LIVE e System Link
    • Partidas
      • Simples de criar e descobrir
      • Gerencia jogadores e fluxo do jogo
    • Mensageria simples
    • Voz é automaticamente suportado
    • Embutido um sistema de simulação de latência e perda de pacotes
  • 5. Tarefas Típicas
    • Criando uma sessão
    • Encontrando e entrando em uma sessão
    • Gerenciando os jogadores
    • Do Lobby até o Jogo
    • Enviar e receber dados
    • Terminar o jogo
  • 6.
    • demo
  • 7. Nem tudo é tão simples...
    • Programas em rede só são determinísticos se você ignorar o tempo!
    • A largura da banda está longe do infinito
    • A velocidade da luz é muito baixa!
  • 8. Os Cinco Estágios dos Jogos em Rede
    • Negação
    • Raiva
    • Barganha
    • Depressão
    • Aceitação
  • 9. NEGAÇÃO
  • 10. A Técnica do Avestruz
    • Meu jogo é pequeno e simples
    • 8 Jogadores
    • 30 fps
    • Em cada frame é enviado:
      • Posição : Vector3
      • Velocidade : Vector3
      • flagAtirando: bool
    • 7 x
    • 30 x
    • (
      • 12 +
      • 12 +
      • 1
    • )
    • = 5.1 k
  • 11. Custo do Pacote (Header)
    • IP header: 20 bytes
    • UDP header: 8 bytes
    • LIVE: 16 bytes
    • XNA Framework: ~7 bytes
    • = ~51 bytes
  • 12. Dados do Jogo + Headers
    • 8 Jogadores
    • 30 fps
    • Em cada frame é enviado:
      • Posição : Vector3
      • Velocidade : Vector3
      • flagAtirando: bool
      • Header do pacote
    • 7 x
    • 30 x
    • (
      • 12 +
      • 12 +
      • 1 +
      • 51
    • )
    • = 15.6 k
  • 13. Banda de Voz
    • Dados de voz é ~500 bytes por segundo
    • Por default, todos os jogadores podem falar entre si
  • 14. Dados + Headers + Voice
    • 8 players
    • 30 fps
    • Em cada frame é enviado:
      • Posição : Vector3
      • Velocidade : Vector3
      • flagAtirando: bool
      • Header do pacote
    • Dados de voz
    • O limite recomendado é 8Kb por minuto
    • 7 x
    • ( 30 x
    • (
      • 12 +
      • 12 +
      • 1 +
      • 51
    • ) + 500 )
    • = 19 k
  • 15. RAIVA
  • 16. PUTZ!
    • Porque tão pouca banda?
    • Meu provedor diz que eu tenho bem mais do que isso!
    • Outras aplicações funcionam com bem mais do que isso
  • 17. Jogos Não Perdoam
    • A Internet é altamente variável
    • Os provedores divulgam o melhor caso
    • Os Webbrowses se encarregam do fluxo
      • Lentidões ocasionais não são problema
    • Jogos são limitados pelo pior caso
      • Um atraso de 30 segundos arrasa um jogo
  • 18. BARGANHA
  • 19. Banda na Xbox LIVE Dados da Bungie Studios coletados durante o beta do Halo 3, em 2007 * A banda é medida em Kilobytes por segundo % de consoles com essa banda ou menor Banda de download (*) Banda de upload (*) 0.1% 2.5 3 0.5% 5 5.5 1% 8 8 2% 9 10 5% 13 15 10% 18 22 30% 25 32 50% 42 (média) 44 (média) 70% 113 115 90% 648 693
  • 20. Latência na Xbox LIVE Dados da Bungie Studios coletados durante o beta do Halo 3, em 2007 % de consoles com essa latência ou menor Latência entre consoles(ms) 10% 32 30% 57 50% 84 (média) 70% 130 90% 250 95% 320 97% 380 98% 430 99% 540 99.9% 770
  • 21. DEPRESSÃO
  • 22. Perda de Pacotes
    • SendDataOptions.None
      • Pacotes podem não chegar nunca, ou chegar em uma ordem aleatória
    • SendDataOptions.InOrder
      • Barato
    • SendDataOptions.Reliable
      • Caro
    • Reliable + InOrder
      • Aumento de banda e latência
  • 23. ACEITAÇÃO
  • 24. Conheça Seus Limites
    • Banda(kilobytes por segundo)
      • Típico: 12 até 250
      • Pior caso: 8
    • Latência (one-way)
      • Típica: 25 até 250 ms
      • Pior caso: 270 ms
    • Perda de pacotes
      • Típica: 2%
      • Pior caso: 10%
  • 25. Viva Dentro de Seus Limites
    • Propriedades do NetworkSession
      • BytesPerSecondSent
      • BytesPerSecondReceived
      • SimulatedLatency
      • SimulatedPacketLoss
  • 26. Envie Menos Pacotes
    • Negocie a banda para diminuir a latência
    • Envie menos dados por tempo
      • Tipicamente 10 a 20 vezes por segundo
    • É melhor poucos grande pacotes do que muitos pequenos
    • Junção de pacotes automática
      • Múltiplos envions após NetworkSession.Update
      • Combine em um único pacote
  • 27. Envie Pacotes Menores
    • Algorítimos de compressão genéricos não são muito bons
    • Envie tipos de dados menores
      • int -> byte
      • Bitfields
      • Microsoft.Xna.Framework.Graphics.PackedVector
      • Matrix -> Quaternion + Vector3
      • Evite strings!
  • 28. Envie Menos Dados de Voz
    • LocalNetworkGamer.EnableSendVoice
    • Fale apenas com jogadores do seu time
    • Fale apenas com jogadores próximos a você
  • 29. Saiba o que Interessa
    • Algumas coisas importam MUITO
      • Morri?
      • Quem pegou o Mega-Blaster?
      • Quem ganhou?
    • Algumas coisas imporam AS VEZES
      • Onde eu estou?
      • Para onde estou indo?
    • Algumas coisas NÃO importam
      • Para que lado está indo a fumaça?
  • 30. Distribua a Carga
    • Jogos para PC são normalmente cliente-servidor
      • Reduz o “cheating”
      • Concentra a carga na máquina “servidora”
    • Xbox LIVE é mais segura
    • Peer-to-peer é uma opção viável
      • Reduz a latência
      • É mais diícil de manter o contexo
  • 31. Topologias Híbridas
    • Servidor toma importantes decisões
    • Peers controlam a parte do movimento
    • Mútiplos autorizadores especializados
      • Uma máquina controla os powerups
      • Outra cuida do score
  • 32. Convivendo com a Latência
    • Assuma a incerteza
      • Você nunca saberá onde um objeto está
      • Apenas quando ele for usado
      • ... e nunca o quão rápido ele se move
    • O estado do jogo é apenas uma probabilidade
      • O gato está morto ou vivo?
    • Cada jogador tem seu próprio universo paralelo
    • A meta é manter os universos semelhantes
      • Sem pílula vermelha!
  • 33. Previsão
    • http://creators.xna.com/en-us/sample/networkprediction
  • 34.
    • Questões?
  • 35. Obrigado! Contato: [email_address]
  • 36. http://www.gamefestbrasil.net/ © 2008 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.