clique para adicionar texto netgamesnrt leonardo de souza brasil orientador: ricardo pereira e...

Post on 07-Apr-2016

224 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

NetGamesNRTNetGamesNRT

Leonardo de Souza Brasil Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Orientador: Ricardo Pereira e Silva,

DrDr

Modelagem do framework Netgames

TópicosTópicos• IntroduçãoIntrodução• Net games frameworkNet games framework• Adaptando um jogo (cookbook)Adaptando um jogo (cookbook)• Modelagem de aplicaçõesModelagem de aplicações• Considerações finaisConsiderações finais

IntroduçãoIntrodução• Jogos possibilitam diversão, Jogos possibilitam diversão,

educação, etc...educação, etc...• Com o surgimento dos computadores Com o surgimento dos computadores

e as primeiras redes surgem também e as primeiras redes surgem também os jogos multi-player on-line.os jogos multi-player on-line.

IntroduçãoIntrodução• Problema: Como jogar jogos multi-player?Problema: Como jogar jogos multi-player?

– Mesmo PC?Mesmo PC?• Fácil implementaçãoFácil implementação• Necessidade dos jogadores no mesmo lugar.Necessidade dos jogadores no mesmo lugar.• Mais entediante.Mais entediante.

– Conectar os jogos em rede?Conectar os jogos em rede?• Difícil implementação.Difícil implementação.• Jogadores podem estar em qualquer parte do mundo, desde Jogadores podem estar em qualquer parte do mundo, desde

que conectados através da mesma rede.que conectados através da mesma rede.• Mais divertido.Mais divertido.• Mais trabalho para o desenvolvedor do jogo.Mais trabalho para o desenvolvedor do jogo.• Conhecimento de uma tecnologia que possibite essa Conhecimento de uma tecnologia que possibite essa

conexão.conexão.

IntroduçãoIntrodução– Como possibilitar a conexão, de um jogo Como possibilitar a conexão, de um jogo

multi-player, em rede, de maneira simples?multi-player, em rede, de maneira simples?•NetGamesNRT (NG)NetGamesNRT (NG)

– Conjunto de artefatos desenvolvido para facilitar aos Conjunto de artefatos desenvolvido para facilitar aos desenvolvedores a adaptação de seus jogos ao modo desenvolvedores a adaptação de seus jogos ao modo multi-jogador. multi-jogador.

– NetGamesNRTServer e NetGamesNRTFramework.NetGamesNRTServer e NetGamesNRTFramework.– NetGamesNRTServer possibilita a intereção de NetGamesNRTServer possibilita a intereção de

diferentes jogadores e possui a capacidade de diferentes jogadores e possui a capacidade de manipular mais de um jogomanipular mais de um jogo

– NetGamesNRTFramework facilita a programação do NetGamesNRTFramework facilita a programação do desenvolvedor de jogos abstraindo todos os detalhes desenvolvedor de jogos abstraindo todos os detalhes da comunicação via rede. da comunicação via rede.

IntroduçãoIntrodução

Os artefatosOs artefatos

NGServerNGServer• CaracterísticasCaracterísticas

– Conexão de diferentes jogos (sem Conexão de diferentes jogos (sem exigência de tempo real), ao mesmo exigência de tempo real), ao mesmo tempo.tempo.

– Desconhecimento da lógica dos jogos Desconhecimento da lógica dos jogos tratados.tratados.

– Possibilitar comunicação entre jogadores Possibilitar comunicação entre jogadores desses jogos através de partidas.desses jogos através de partidas.

NGServerNGServer• JogosJogos

NGServerNGServer• PartidasPartidas

NGFrameworkNGFramework• NetGamesNRTFrameworkNetGamesNRTFramework

– Domínio: Computação Distribuída.Domínio: Computação Distribuída.– Aplicações: Jogos digitais sem exigência Aplicações: Jogos digitais sem exigência

de tempo real.de tempo real.– Benefícios:Benefícios:

•Facilitar implementação de rede para Facilitar implementação de rede para desenvolvedores de jogos (NRT).desenvolvedores de jogos (NRT).

•Economia de mensagens de rede (trata um Economia de mensagens de rede (trata um conjunto de regras de comunicação, e.g. conjunto de regras de comunicação, e.g. tentar conectar duas vezes, desconectar tentar conectar duas vezes, desconectar sem estar conectado).sem estar conectado).

NGFramework – Casos de NGFramework – Casos de UsoUso

NGFramework – Diagrama de NGFramework – Diagrama de interaçãointeração

NGFramework – Diagrama de NGFramework – Diagrama de classesclasses

NGFramework – Máquina de NGFramework – Máquina de estados do Proxyestados do Proxy

NGFramework – Estado NGFramework – Estado JogandoJogando

NGFramework – Sequência NGFramework – Sequência conectarconectar

NGFramework – Sequência NGFramework – Sequência desconectardesconectar

NGFramework – Sequência NGFramework – Sequência receber jogadareceber jogada

NGFramework – Enviando NGFramework – Enviando JogadasJogadas

NGFramework – Enviando NGFramework – Enviando JogadasJogadas

Proxy• Classe que o jogo invoca sempre que desejar uma comunicação com o servidor.• Classe fachada do framework.• É possível obter apenas uma instancia (Singleton).

Jogada• Interface que deve ser implementada pelos objetos trocados entre aplicações.• Sem métodos

NGFramework – Recebendo NGFramework – Recebendo JogadasJogadas

NGFramework – Recebendo NGFramework – Recebendo jogadasjogadas

OuvidorProxy• Classe implementada para receber as mensagens vindas do servidor.• É necessário se cadastrar no proxy (Observer).• Todos seus métodos são abstratos.• É possível existirem mais de uma por aplicação.

NGFramework - DeployNGFramework - Deploy

NGFramework - DeployNGFramework - Deploy

NGFramework - DeployNGFramework - Deploy

Adaptando um jogoAdaptando um jogo• Primeiros passos:Primeiros passos:

– 1 - Download do framework.1 - Download do framework.– 2 - Download do arquivo de configuração no 2 - Download do arquivo de configuração no

portal.portal.• Conexão:Conexão:

– Proxy.Proxy.getInstancegetInstance().conectar(ipServidor, nome);().conectar(ipServidor, nome);– Ip padrão: “Ip padrão: “venus.inf.ufsc.br”venus.inf.ufsc.br”– Exceções: Exceções: ArquivoNaoExisteException, ArquivoNaoExisteException,

JahConectadoException, JahConectadoException, NaoPossivelConectarException;NaoPossivelConectarException;

Adaptando um jogoAdaptando um jogo• Iniciar Partida:Iniciar Partida:

– Proxy.Proxy.getInstancegetInstance().().iniciarPartida(numJogadoresiniciarPartida(numJogadores););– Implementar no OuvidorProxy:Implementar no OuvidorProxy:

• iniciarNovaPartida(posicao);iniciarNovaPartida(posicao);

– Exceções: NaoConectadoExceptionExceções: NaoConectadoException• Para uma classe se tornar uma “ouvidora" de Proxy é Para uma classe se tornar uma “ouvidora" de Proxy é

necessário, além de implementar a interface necessário, além de implementar a interface OuvidorProxy, chamar o método:OuvidorProxy, chamar o método:

•Proxy.getInstance().addOuvinte(Proxy.getInstance().addOuvinte(thisthis););• Se uma partida não for iniciada o método Se uma partida não for iniciada o método

tratarPartidaNaoIniciada é chamado nos Ouvidores;tratarPartidaNaoIniciada é chamado nos Ouvidores;

Adaptando um jogoAdaptando um jogo

•Enviar Jogada:Enviar Jogada:– Proxy.Proxy.getInstancegetInstance().enviaJogada(jogada);().enviaJogada(jogada);– jogadajogada pode ser qualquer objeto que pode ser qualquer objeto que

implemente a interface Jogada.implemente a interface Jogada.

Adaptando um jogoAdaptando um jogo• Receber Jogada:Receber Jogada:

– Implementar método do OuvidorProxy Implementar método do OuvidorProxy public void receberJogada(Jogada jogada);public void receberJogada(Jogada jogada);

• Desconexão:Desconexão:– Proxy.Proxy.getInstancegetInstance().desconectar();().desconectar();

Adaptando um jogoAdaptando um jogo• Alem disso existem métodos para:Alem disso existem métodos para:

– Proxy:Proxy:• Enviar mensagens texto (String);Enviar mensagens texto (String);• Reiniciar uma partida;Reiniciar uma partida;• Obter lista ordenada com nome dos Obter lista ordenada com nome dos

jogadores de uma partidajogadores de uma partida– Ouvidor Proxy:Ouvidor Proxy:

• Finalizar partida com erro;Finalizar partida com erro;• Tratar conexão perdida;Tratar conexão perdida;

Jogo da velhaJogo da velha• Jogo criado pelo professor Ricardo para as Jogo criado pelo professor Ricardo para as

aulas de análise e projetos.aulas de análise e projetos.

Jogo da velhaJogo da velha• Jogo adaptado:Jogo adaptado:

Considerações finaisConsiderações finais• ResumindoResumindo

– Para adaptar um jogo é necessário:Para adaptar um jogo é necessário:• Configurar ambiente (arquivo configuração).Configurar ambiente (arquivo configuração).• Invocar a instância de Proxy para se conectar Invocar a instância de Proxy para se conectar

no servidor, desconectar, iniciar partidas, no servidor, desconectar, iniciar partidas, enviar e receber jogadas;enviar e receber jogadas;

• Implementar a interface OuvidorProxy para Implementar a interface OuvidorProxy para receber as jogadas, solicitação de inicio de receber as jogadas, solicitação de inicio de partida, possíveis erros*;partida, possíveis erros*;

– Não esquecer de adicionar no Proxy (design Não esquecer de adicionar no Proxy (design pattern Observer)pattern Observer)

• Implementar os objetos trocados entre as Implementar os objetos trocados entre as aplicações com a interface Jogada;aplicações com a interface Jogada;

• Tratar as Exceções.Tratar as Exceções.

FIMFIM

leobr@inf.ufsc.brleobr@inf.ufsc.brleodemorgan@gmail.comleodemorgan@gmail.com

top related