clique para adicionar texto netgamesnrt leonardo de souza brasil orientador: ricardo pereira e...
TRANSCRIPT
![Page 1: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/1.jpg)
NetGamesNRT
Leonardo de Souza BrasilOrientador: Ricardo Pereira e Silva, Dr
![Page 2: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/2.jpg)
Tópicos Introdução Os artefatos
NetGamesServer NetGamesFramework O Portal do Desenvolvedor
Adaptando um jogo (*) Considerações finais
![Page 3: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/3.jpg)
Introdução
Jogos possibilitam diversão, educação, etc...
Com o surgimento dos computadores e as primeiras redes surgem também os jogos multi-player on-line.
Nessa aula vocês irão construir um jogo.
Esses jogos se caracterizam pela não exigência de tempo real.
![Page 4: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/4.jpg)
Introdução Problema: Como jogar jogos multi-
player? Mesmo PC?
Fácil implementação Necessidade dos jogadores no mesmo lugar. Mais entediante.
Conectar os jogos em rede? Difícil implementação. Jogadores podem estar em qualquer parte do
mundo, desde que conectados através da mesma rede.
Mais divertido. Mais trabalho para o desenvolvedor do jogo. Conhecimento de uma tecnologia que possibite
essa conexão.
![Page 5: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/5.jpg)
Introdução Como possibilitar a conexão, de
um jogo multi-player, em rede, de maneira simples?
NetGamesNRT (NG) Conjunto de artefatos desenvolvido para
facilitar aos desenvolvedores a adaptação de seus jogos ao modo multi-jogador.
NetGamesNRTServer e NetGamesNRTFramework.
NetGamesNRTServer possibilita a intereção de diferentes jogadores e possui a capacidade de manipular mais de um jogo
NetGamesNRTFramework facilita a programação do desenvolvedor de jogos abstraindo todos os detalhes da comunicação via rede.
![Page 6: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/6.jpg)
Introdução
![Page 7: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/7.jpg)
Introdução Arquitetura cliente
servidor Dois papéis distintos: cliente
e servidor; São processos rodando
normalmente em máquinas separadas;
Cliente é um ator ativo enquanto servidor é passivo na conversação;
Conversação realizada através da troca de mensagens;
![Page 8: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/8.jpg)
Os artefatos Que informações devem ser trocadas entre
jogo e servidor? Protocolo
![Page 9: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/9.jpg)
NGServer
Características Conexão de diferentes jogos (sem
exigência de tempo real), ao mesmo tempo.
Desconhecimento da lógica dos jogos tratados.
Possibilitar comunicação entre jogadores desses jogos através de partidas.
![Page 10: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/10.jpg)
NGServer
Jogos
![Page 11: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/11.jpg)
NGServer
Partidas
![Page 12: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/12.jpg)
NGServer
Colocando o NGServer no ar: 1 – Download do arquivo
servidor.jar. 2 – Executando:
Linha de comando “java –jar servidor.jar”
Detalhes Protocolo TCP/IP Usa por default a porta 1099 Configurações podem ser realizadas
através do arquivo servidor.properties.
![Page 13: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/13.jpg)
NGFramework
Framework “Abstração de um domínio de
aplicações, adequada a ser especializada em aplicações deste domínio” [SILVA, 2000].
![Page 14: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/14.jpg)
NGFramework
NetGamesNRTFramework Domínio: Computação Distribuída. Aplicações: Jogos digitais sem
exigência de tempo real.
![Page 15: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/15.jpg)
NGFramework Proxy e Ouvintes
Desenvolvedor Como enviar mensagens e conectar-se?
Através de uma instância de Proxy (um Singleton)
Possui métodos para: o jogador se conectar no servidor, iniciar partida com outro(s) jogador(es), finalizar partida, desconectar, etc...
Como receber notificações do servidor? Interface OuvidorProxy (padrão de
projeto Observer) Possui métodos invocados pelo servidor.
Métodos para finalizar uma partida com erro, receber jogada, tratar conexão perdida, etc...
![Page 16: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/16.jpg)
NGFramework
Estados do Proxy
![Page 17: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/17.jpg)
Adaptando um jogo
Primeiros passos: 1 - Download do framework. 2 - Download do arquivo de
configuração no portal. Conexão:
Proxy.getInstance().conectar(ipServidor, nome); Ip padrão: 150.162.60.33
(saturno.inf.ufsc.br). Exceções: ArquivoNaoExisteException,
JahConectadoException, NaoPossivelConectarException;
![Page 18: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/18.jpg)
Adaptando um jogo
Iniciar Partida: Proxy.getInstance().iniciarPartida(numJogadores
); Implementar no OuvidorProxy:
iniciarNovaPartida(posicao);
Exceções: NaoConectadoException Para uma classe se tornar uma “ouvidora" de
Proxy é necessário, além de implementar a interface OuvidorProxy, chamar o método:
Proxy.getInstance().addOuvinte(this); Se uma partida não for iniciada o
método tratarPartidaNaoIniciada é chamado nos Ouvidores;
![Page 19: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/19.jpg)
Adaptando um jogo
Enviar Jogada: Proxy.getInstance().enviaJogada(jogad
a); jogada pode ser qualquer objeto
que implemente a interface Jogada.
![Page 20: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/20.jpg)
Adaptando um jogo
Receber Jogada: Implementar método do
OuvidorProxy public void receberJogada(Jogada jogada);
Desconexão: Proxy.getInstance().desconectar();
![Page 21: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/21.jpg)
Adaptando um jogo
Alem disso existem métodos para:
Proxy: Enviar mensagens texto (String); Reiniciar uma partida; Obter lista ordenada com nome dos
jogadores de uma partida Ouvidor Proxy:
Finalizar partida com erro; Tratar conexão perdida;
![Page 22: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/22.jpg)
Jogo da velha Jogo criado pelo professor Ricardo
para as aulas de análise e projetos.
![Page 23: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/23.jpg)
Jogo da velha
Jogo adaptado:
![Page 24: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/24.jpg)
O Portal do desenvolvedor
Permitir download do arquivo de configuração.
Acesso aos artefatos (servidor e framework).
http://java.inf.ufsc.br/netgames
![Page 25: Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr](https://reader030.vdocuments.pub/reader030/viewer/2022013111/552fc15e497959413d8e5a6e/html5/thumbnails/25.jpg)
Considerações finais Resumindo
Para adaptar um jogo é necessário: Invocar a instância de Proxy para
enviar as jogadas; Implementar a interface OuvidorProxy
para receber as jogadas; Não esquecer de adicionar no Proxy
(design pattern Observer) Implementar as jogadas com a
interface Jogada; Tratar as Exceções.