Trabalho de formatura supervisionado - MAC0499

Implementação de um módulo de rede P2P em C# para Unity 3D

Resumo:

Quando se pensa em arquitetura de redes para jogos em geral considera-se a estrutura de cliente-servidor, por funcionar melhor quando se trata de uma jogo via internet e facilitar o suporte a mais jogadores conectados, uma vez que uma máquina da rede alocará recursos apenas para cuidar de dados comuns a todos os jogadores. Isso, porém, exige que uma máquina disponibilize recursos para esse fim, o que para o jogador representa uma preocupação desnecessária. Para eliminar essa preocupação do lado jogador muitas vezes implementa-se uma solução Peer-to-peer na qual todo jogador representa cliente e servidor, ou seja, todo jogador guardar informações próprias e também dos demais. Nesse trabalho pretendo propor uma solução P2P e implementar um módulo em C#/Mono para uso com a popular engine para jogos Unity 3D, uma vez que o módulo de rede implementado na mesma não apresenta suporte a uma solução P2P.

Objetivos:

arrow Desenvolvimento de um protocolo de rede que utilize a idéia de uma rede P2P para jogo multijogador
arrow Definir como os jogadores descobrirão uns aos outros
arrow Definir o que configura o estado de um jogador (quantas vidas tem ou quantos pontos fez ou posição na tela, etc) e como guardá-lo, bem como outras informações dos hosts que o jogador está usando.
arrow Definir como os jogadores poderão saber se um usuário não está mais conectado à rede.
arrow Possibilitar ao usuário jogar partidas com um conjunto determinado de jogadores conectados à rede.

arrow Desenvolvimento de um módulo em C# para Unity 3D implementando o protocolo proposto.

arrow Desenvolvimento de uma aplicação teste que utilize o módulo em questão. A idéia inicial é um jogo de nave onde todos os jogadores estarão jogando de forma cooperativa contra inimigos controlados pelo PC que aparecerão na tela, estilo space invaders. Essa idéia utilizará como base o jogo Space Destroyers (nome provisório) feito por mim no ano de 2013. O código do mesmo será incluso no repositório em breve.

Trabalho já realizado:

arrow Pequenos testes de implementação de módulos de rede que abrem simples conexões para troca de informação entre duas máquinas numa mesma rede local dado um IP informado pelo usuário, tanto em UDP quanto em TCP.
arrow Definição de uma estrutura básica do protocolo (disponível neste documento, na seção 3 )

Cronograma:

Atividade MarAbrMaiJunJulAgoSetOutNovDez
Estudo sobre C#/Mono e comunicação de rede
Estudo sobre redes P2P em jogos
Desenvolvimento do protocolo
Implementação do protocolo
Implementação da aplicação de teste
Monografia e apresentação


Responsáveis pelo projeto