Lucas Euzébio Machado. Jogos Multijogador em Massa DISSERTAÇÃO DE MESTRADO. Informática DEPARTAMENTO DE INFORMÁTICA



Documentos relacionados
Francisco Eduardo Torres Cursino de Moura. Uma proposta para Rendering Baseado em Imagens em celulares

Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado

QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas

Renato Figueiró Maia. Um Framework para Sistemas Baseados em Componentes Distribuídos. Informática DEPARTAMENTO DE INFORMÁTICA

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO

Pedro Tiago Barbosa do Couto. Resolução de problemas de transporte rodoviário de cargas utilizando programação inteira DISSERTAÇÃO DE MESTRADO

Previsão da Produção Industrial do Brasil: Uma Aplicação do Modelo de Índice de Difusão Linear

Uma Proposta de Sistema de Dependência a Distância Usando a Plataforma Moodle

Bernard Herskovic EFEITOS DE BUSCA EM CONLUIO. Dissertação de Mestrado

Criação Automática de Visões Materializadas em SGBDs Relacionais

Ricardo Fukasawa. Resolução de problemas de logística ferroviária utilizando programação inteira DISSERTAÇÃO DE MESTRADO

Vanessa Ribeiro Ferreira. Mongólia: uma narrativa caótica? Dissertação de Mestrado

Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave

Um Estudo Sobre Middlewares Adaptáveis

Avaliação Preliminar dos Movimentos Aéreos no Aeroporto Internacional Antônio Carlos Jobim Galeão

Um Framework de Jogos Sérios para Mercado de Informações com Aplicação em Ética Empresarial

Mauricio Kreczmarsky Guimarães Meinicke. Opacidade 3D na Visualização Volumétrica de Dados Sísmicos

Cálculo de Índices de Segurança em Sistemas de Energia Elétrica Baseado em Simulação no Domínio do Tempo

A importância da dívida cambial no endividamento público brasileiro

Educação a Distância nas Universidades Corporativas:

Uma abordagem baseada em SPH para animação interativa de águas rasas em jogos

Luzia da Costa Tonon. O Teorema de Cramér-Lundberg via martingais DISSERTAÇÃO DE MESTRADO. Programa de Pós Graduação em Matemática

Victor Kraemer Wermelinger Sancho Araujo. Avaliação de custos para a produção de biodiesel a partir de óleos residuais fritura

Matchmaking Uma infraestrutura para alinhamento de esquemas

Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes

Bruno Baère Pederassi Lomba de Araujo. Um estudo sobre adaptatividade dinâmica de dificuldade em jogos. Dissertação de Mestrado

Integração de Ontologia com Modelagem de Processo: Um Método para Facilitar a Elicitação de Requisitos

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado

Bruno Siqueira Silva. Workflows dinâmicos em gerência de projetos ágeis. Dissertação de Mestrado

Experimentos de Previsão da Estrutura a Termo da Taxa de Juros Americana: Reversão à Media, Inércia e Influência de Variáveis Macroeconômicas

João Paulo de Freitas Araujo. Algoritmos para acelerar a computação de Árvores de corte de Gomory e Hu. Dissertação de Mestrado

SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina

Utilização de uma estratégia para identificação de fontes de informação na fase de elicitação

Memes: Conceito de Conteúdo de Informação Como Alternativa de Pesquisa de Posicionamento de Marca

OPERADORES LOGÍSTICOS E SEUS CLIENTES: UM ESTUDO EMPÍRICO

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão

Comparação de estratégias de construção de poços marítimos incorporando incertezas

Análise e Avaliação do Equity Premium Puzzle no Mercado Acionário Brasileiro sob diferentes Contextos Econômicos

Elicitação de requisitos de software através da utilização de questionários

Iam Vita Jabour. O Impacto de Atributos Estruturais na Identificação de Tabelas e Listas em Documentos HTML. Dissertação de Mestrado

UMA IMPLEMENTAÇÃO DO SERVIÇO WMS SOBRE A BIBLIOTECA TERRALIB

A Organização dos Estados Americanos e o compromisso coletivo com a democracia representativa

Gingando em Português: como os aspectos culturais presentes na Capoeira auxiliam o estrangeiro na aquisição de competência intercultural

Davi Romero de Vasconcelos. Análise de Estratégias Utilizando Verificação Formal de Modelos. Dissertação de Mestrado

Ana Beatriz Frischgesell Fonseca. O Simbolismo Alquímico na Obra de C. G. Jung DISSERTAÇÃO DE MESTRADO

Rodrigo Pereira David. Técnica de Estimação de Canal Utilizando Símbolos Pilotos em Sistemas OFDM. Dissertação de Mestrado

Estudo Comparativo de Estratégias de Classificação de Páginas Web

Marcelo Ribeiro de Carvalho. Modelagem da Operação de um Recinto Especial para Despacho Aduaneiro de Exportação (Redex) Dissertação de Mestrado

Carlos Roberto da Costa Ferreira. Interpolação Modificada de LSF's. Dissertação de Mestrado

Jessica Quintanilha Kubrusly. Métodos Estatísticos para Cálculo de Reservas DEPARTAMENTO DE MATEMÁTICA

Gustavo Simão Rodrigues

Daniel Ribeiro Trindade. Técnicas de Navegação 3D Usando o Cubo de Distâncias DISSERTAÇÃO DE MESTRADO. Programa de Pós graduação em Informática

Heidegger e a relação homem-técnica-natureza na crise ambiental contemporânea

Theo Cotrim Martins. Leis de dividendo mínimo obrigatório protegem acionistas minoritários? Dissertação de Mestrado

Considerações sobre a terceirização da logística e uma metodologia de classificação para os Party Logistics

Cláudia Assumpção Gonzaga. Paulo Coelho em cena: a construção do escritor pop star. Dissertação de Mestrado

Estudo de Viabilidade da Implementação de Software de Roteamento para Transporte de Funcionários de Refinaria da Petrobras

Alexandra de Gouvêa Vianna. Mais além dos paraísos artificiais: a identidade das toxicomanias na sociedade contemporânea. Dissertação de Mestrado

Thomas de Campos Tsuchida. Modelagem da localização de pólos de venda de derivados de petróleo. Dissertação de Mestrado (Opção Profissional)

Natália Moreira Félix

Aparelhos ideológicos, narrativas do poder

A Individuação Como Fenômeno Estético: Arte, Corpo e Linguagem no Jovem Nietzsche

Juliano Diniz de Oliveira

O conceito de terrorismo nos jornais americanos

Uma meta-ferramenta de geração de diagramas utilizada na engenharia reversa de sistemas legados.

Thatty de Aguiar Castello Branco. O Maravilhoso e o Fantástico na Literatura Infantil de Monteiro Lobato. Dissertação de Mestrado

Marcos Vidal Costa. A escrita diarística de José Gomes Ferreira: a iluminação por dentro das palavras de todos os dias.

Capital Requerido via Simulação Estocástica aplicado ao Seguro de Vida e Fundo de Pensão

Uma Aplicação de Algoritmos de Colônias de Formigas em Problemas de Roteirização de Veículos com Janelas de Tempo

Pontifícia Universidade Católica do Rio de Janeiro

Carla Jardim Dias. Um modelo estocástico para o fluxo de caixa de um plano de previdência de um indivíduo. Dissertação de Mestrado

Alexandra de Almeida. A noção de sublime em Kant e a questão da comoção na arte. Dissertação de Mestrado

As notícias sobre crime e a construção da realidade:

Usando a abordagem MDA no desenvolvimento de sistemas multi-agentes

Política Monetária e Investimento no Brasil

Isabela Maria Lyra Zyro

Efeito do erro de apontamento de antenas fixadas em plataformas móveis no desempenho de sistemas de comunicação digital por satélite

Proposta de um sistema de suporte à decisão para programação de navios baseado em otimização: um caso prático

O Design de Sinalização no Brasil: a introdução de novos conceitos de 1970 a 2000

Alberto Santos Junqueira de Oliveira. Essa vez que não chega: fila e drama social no Brasil. Dissertação de Mestrado

Pontifícia Universidade Católica do Rio de Janeiro

Carlos Raoni de Alencar Mendes. Códigos de Cobertura: Limites e Heurísticas. Dissertação de Mestrado

O desejo de transformação em Casa na Duna, de Carlos de Oliveira

Cala a boca já morreu. Quem manda aqui sou eu? Uma reflexão sobre a produção cultural da juventude contemporânea no universo das novas mídias

Remo Mannarino Filho. O método das divisões: a última proposta dialética de Platão. Dissertação de mestrado

Gláucia Curtinaz Centeno de Rezende. O Brasil na moda: Novas representações do consumo e promoção da brasilidade. Dissertação de Mestrado

Certeza não é verdade Romance policial e experiência urbana

Bernardo de Mendonça G. Ferreira. Valoração de uma opção sobre um contrato futuro. Dissertação de Mestrado

Marcos Antonio da Silva Filho

Entropia de Rényi e Informação Mútua de Cauchy-Schwartz Aplicadas ao Algoritmo de Seleção de Variáveis MIFS-U: Um Estudo Comparativo

Realce de Imagens no Domínio da Transformada

MAURICIO LANE ESCOAMENTO DE FLUIDOS NÃO NEWTONIANOS ATRAVÉS DE CANAIS CONVERGENTES-DIVERGENTES DISSERTAÇÃO DE MESTRADO

Tatiana Waintraub. Modelagem da calçada de Copacabana. Dissertação de Mestrado

Emanuel Mello Mattos de Castro. O Perspectivismo em Deleuze. Dissertação de Mestrado

Bruno de Figueiredo Melo e Souza. Modelos de fatoração matricial para recomendação de vídeos. Dissertação de Mestrado

Considerações sobre o Afeto em Psicanálise

As diversas formas do pronome interrogativo que:

Debora Carvalho Capella. Um estudo descritivo do vocativo em linguagem oral para Português L2. Dissertação de Mestrado

Transcrição:

Lucas Euzébio Machado Técnicas de Distribuição para Jogos Multijogador em Massa DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós graduação em Informática Rio de Janeiro Agosto de 2005

Lucas Euzébio Machado Técnicas de Distribuição para Jogos Multijogador em Massa Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do grau de Mestre pelo Programa de Pós graduação em Informática do Departamento de Informática da PUC Rio Orientador: Prof. Bruno Feijó Co Orientador: Prof. Lauro Eduardo Kozovits Rio de Janeiro Agosto de 2005

Lucas Euzébio Machado Técnicas de Distribuição para Jogos Multijogador em Massa Dissertação apresentada como requisito parcial para obtenção do grau de Mestre pelo Programa de Pós graduação em Informática do Departamento de Informática do Centro Técnico Científico da PUC Rio.Aprovada pela Comissão Examinadora abaixo assinada. Prof. Bruno Feijó Orientador Departamento de Informática PUC Rio Prof. Lauro Eduardo Kozovits Co Orientador Departamento de Informática PUC Rio Prof. Renato Fontoura de Gusmão Cerqueira Departamento de Informática PUC Rio Prof. Alexandre Sztajnberg Departamento de Informática e Ciências da Computação UERJ Prof. José Eugenio Leal Coordenador Setorial do Centro Técnico Científico PUC Rio Rio de Janeiro, 12 de Agosto de 2005

Todos os direitos reservados. É proibida a reprodução total ou parcial do trabalho sem autorização da universidade, do autor e do orientador. Lucas Euzébio Machado Graduou se em Informática na PUC - Rio. Durante o Mestrado foi bolsista da CAPES, desenvolvendo trabalho aplicado na área de distribuição para ambientes virtuais. Atualmente trabalha desenvolvendo jogos eletrônicos. Machado Lucas Ficha Catalográfica Técnicas de Distribuição para Jogos Multijogador em Massa/ Lucas Euzébio Machado; orientador: Bruno Feijó; co orientador: Lauro Eduardo Kozovits. Rio de Janeiro : PUC Rio, Departamento de Informática, 2005. v., 80 f: il. ; 29,7 cm 1. Dissertação (mestrado) - Pontifícia Universidade Católica do Rio de Janeiro, Departamento de Informática. Inclui referências bibliográficas. 1. Informática Dissertações. 2. Distribuição. 3. Técnicas para Ambientes Virtuais Distribuídos I. Feijó, Bruno. II. Kozovits, Lauro Eduardo. III. Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. IV. Título. CDD: 004

Dedicado ao meu pai, que me ensinou sobre o amor. Dedicado à minha mãe, que me ensinou sobre a compaixão. Dedicado à galera do Icad, que me ensinou sobre a amizade.

Agradecimentos Ao meu orientador Bruno Feijó pelo exemplo, pela confiança e pelos ensinamentos. Ao meu co-orientador Lauro Eduardo Kozovits por toda a ajuda e dedicação. A toda a galera do ICAD (Esteban, Pozzer, Rodrigo, Borje, Fabio, Cristina, Ruben, Raul, Chico e Gilliard) pela amizade. Aos funcionários do Departamento de Informática, especialmente a Deborah, pelo bom trabalho. À CAPES pelo apoio financeiro.

Resumo Machado Lucas; Feijó, Bruno; Kozovits, Lauro Eduardo. Técnicas de Distribuição para Jogos Multijogador em Massa. Rio de Janeiro, 2005. 80p. Dissertação de Mestrado Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. Essa dissertação apresenta diversas técnicas e tecnologias úteis na criação de ambientes virtuais distribuídos com milhares de jogadores conectados. Explicações sobre o uso adequado de TCP e UDP são fornecidas. São mostradas algumas técnicas de otimização no uso de sockets. São explicadas tecnologias que permitem tratar de muitos sockets ao mesmo tempo como a poll e a kqueue do Unix e o IO Completion Ports do Windows. Técnicas específicas de ambientes virtuais distribuídos são mostradas. Uma ferramenta que faz uso de várias das técnicas apresentadas é proposta. Palavras chave Ambientes Virtuais Distribuídos, Ambientes Virtuais em Rede, Jogos Multijogadores em Massa

Abstract Machado Lucas; Feijó, Bruno; Kozovits, Lauro Eduardo. Distributed Techniques for Massively Multiplayer Games. Rio de Janeiro, 2005. 80p. MSc. Dissertation Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. This dissertation presents several techniques and technologies that are helpfull in the creation of distributed virtual environments with thousands of connected players. Explanations about the proper use of TCP and UDP are given. Some optimization techniques in the use of sockets are also given. Technologies that allow many sockets to be handled at once are explained, such as poll and kqueue from Unix and IO Completion Ports from Windows. Specific techniques for distributed virtual environments are presented. A tool that uses many of these techniques is proposed. Keywords Distributed Virtual Environments, Networked Virtual Environments, Massive Multiplayer Games

Conteúdo 1 Introdução 11 2 Técnicas usando TCP,UDP e Sockets 17 2.1 Quando usar TCP e UDP 17 2.2 O Algoritmo de Naggle e o Ack Atrasado 18 2.3 Reduzindo cópias de buffer em WinSock 19 2.4 Usando sockets UDP conectados 21 2.5 Enviando múltiplos buffers em Sockets 22 2.6 Implementando Garantia de chegada em UDP 26 3 Técnicas para processamento de Sockets em servidores 30 3.1 Processando múltiplos clientes ao mesmo tempo 30 3.2 Usando verificação constante em sockets não bloqueantes 33 3.3 Usando IO Completion Ports de Windows 35 3.4 Usando kqueue em Unix 42 4 Técnicas para Ambientes Virtuais Distribuídos 45 4.1 Dead-Reckoning 46 4.2 Sincronização baseada em tempo de comando 47 4.3 Eliminando informações desnecessárias 48 4.4 Balanceamento 51 4.5 Nível de detalhe 54 4.6 Agregação de Mensagens 55 5 Ferramenta Proposta e Resultados 56 5.1 Objetivo 56 5.2 Servidor genérico 57 5.3 Servidor de RPG 66 5.4 Movimentação 70 5.5 Cliente 72 5.6 Resultados 73 6 Conclusões 75 6.1 Contribuições e Deficiências 75 6.2 Trabalhos Futuros 76 7 Bibliografia 78

Lista de Figuras 1.1 Imagem do jogo Everquest 11 1.2 Imagem do jogo Lineage 12 1.3 Imagem do jogo World of Warcraft 12 1.4 Imagem do jogo Erinia 13 2.1 Comparação de sendto bloqueante com WSASendTo assíncrono usando buffer da aplicação 21 2.2 Comparação de sendto bloqueante com WSASendTo assíncrono usando buffer do WinSock 22 2.3 Comparação de envio de mensagens usando sockets UDP normais com sendto() e conectados com send() 23 2.4 Comparação de envio de mensagens usando sendto() e WSASendTo() usando 2 buffers 25 3.1 Performance de um servidor usando múltiplas threads 40 3.2 Performance de um servidor usando select 40 3.3 Performance de um servidor usando IOCP 41 3.4 Comparação de performance entre servidores usando múltiplas threads, select e IOCP 41 4.1 Tempo 0 segundos. O Cliente 1 começa a se mover na velocidade 10 m/s 48 4.2 Tempo 1 segundo. O Servidor começa a se mover. O Cliente 1 já se moveu 10 metros. 48 4.3 Tempo 2 segundos. O Cliente 1 reduz a velocidade para 5 m/s. O Cliente 2 coloca a velocidade 15 m/s 49 4.4 Os círculos preenchidos são os personagens que estão na área de interesse do jogador. O círculos não preenchidos são os personagens fora da área de interesse do jogador.o jogador recebe informações de todos os personagens em sua área de interesse. 50 4.5 Quando um jogador passa de um retângulo para outro, ele se conecta à um novo servidor 51 4.6 Retângulos e suas fronteiras. Quando um jogador cruza uma fronteira ele já se conecta ao novo servidor. 52 4.7 Jogador se aproximando de dois servidores em mundo dividido em hexágonos. 53 4.8 Jogador se aproximando de três servidores em mundo dividido em retângulos. 53 5.1 Início da comunicação de um servidor com o servidor mestre e com os outros servidores da rede. 58 5.2 A figura mostra uma possível organização para uma rede de servidores. 58 5.3 O processo de login de um cliente. 59

5.4 A figura mostra as classes da ferramenta implementada. 60 5.5 Como calcular uma posição de destino usando shorts ou chars. 71 5.6 A figura mostra um servidor e um cliente que fazem uso da ferramenta proposta nesta dissertação. 74