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

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos Baseados em Objetos
Advertisements

A Interface entre Processadores e Periféricos
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Tecnologia de Banco de Dados Grupo 3: Diógenes LíbanoElton S. Vianna Euglen AssisLisa Hayashida Marcelo da Cruz SalvadorRicardo Takemura Gerenciador de.
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
UML Material retirado da apostila do Professor Cesar Augusto Tacla
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Comunicação Distribuída
Interação Cliente Servidor
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Introdução ao paradigma de programação: Orientado a Objetos
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Diagrama de Classes.
Objetos Distribuídos Padrão CORBA
DAS Sistemas Distribuídos para Automação Industrial
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Classes e objetos P. O. O. Prof. Grace.
Sistemas Distribuídos
Introdução a Arquitetura Orientada a serviços
Introdução à Programação Distribuída em Java
Software de Rede Willamys Araújo.
Aula 9 - Camada de aplicação
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
Linguagem de Programação JAVA
Protocolo SMTP e POP O que é SMTP?
Java Avançado Luiz Carlos d´Oleron SJCP Java Sockets.
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 05.
Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr.
Luiz Antonio Torres, Maio/2014
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Membro Static.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
SISTEMAS DISTRIBUIDOS Aula 4
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
SISTEMAS OPERACIONAIS I
CORBA Apresentação do Padrão CORBA Maurício Maron Mendes Ramiro Pereira de Magalhães
Java RMI João Gabriel (jggxm).
RMI - JAVA.
Comunicação.
REDES DE COMPUTADORES CONCEITOS E TÓPICOS RELACIONADOS A REDES DE COMPUTADORES ________________________________________________ Redes – Prof. Roni Márcio.
Troca de Mensagens Programação concorrente
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Aguilar Figueira Dias Orientador Prof. Dr. João Bosco da Mota Alves
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução a Aplicações Web.
Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr Modelagem do framework Netgames.
Disciplina: Comunicação de Dados Ricardo Bento 12ºL nº11.
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Java – Remote Method Invocation (RMI)
Programação Distribuída em Java Aula Na aula passada vimos: I/O Streams Filtros Readers and Writers.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
1 Programação Distribuída em Java Aula Na aula de hoje veremos: Introdução Conceito de Rede Protocolos Modelo ISO/OSI Modelo TCP/IP Modelo Cliente/Servidor.
Objetos Distribuídos Frameworks Orientados a Objetos.
RMI Remote Method Invocation
Introdução a Orientação a Objetos
Infraestrutura de Redes
Serviços de rede e internet Jackson Eduardo da Silva.
IP-INTERNET PROTOCOLO. EQUIPE: Aline Helena de Oliveira Dione de Souza Neves Jefferson Dalla Lasta Johnathan Maurício Silva Galvão Mario Fernando Pioski.
TÉCNICAS DE ESTIMATIVAS
Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr NetGamesNRT Como utilizar o netgames para adaptar um jogo Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr

Tópicos Introdução Os artefatos Adaptando um jogo (*) NetGamesServer NetGamesFramework O Portal do Desenvolvedor Adaptando um jogo (*) Deploy do Netgames Considerações finais

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: Doom, CS, etc... Além de serem extremamente divertidos, esses jogos possuem algumas características em comum, como por exemplo, a conexão com um servidor.

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;

Introdução Nas aulas de Análise e Projeto um dos requisitos é a construção de um jogo. Observando os jogos dos semestres passados, algumas características foram observadas, e a principal delas é: Não possuem exigência de tempo real.

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, porém mais divertidos. Jogadores podem estar em qualquer parte do mundo, desde que conectados através da mesma rede. Mais trabalho para o desenvolvedor do jogo. Conhecimento de uma tecnologia que possibite essa conexão: CORBA, COM, Sockets Java, RMI, DualRPC.

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 interaçã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.

Introdução

Os artefatos Que informações devem ser trocadas entre jogo e servidor? Protocolo

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.

NGServer Jogos

NGServer Partidas

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.

NGFramework Framework “Abstração de um domínio de aplicações, adequada a ser especializada em aplicações deste domínio” [SILVA, 2000].

NGFramework NetGamesNRTFramework Domínio: Computação Distribuída. Aplicações: Jogos digitais sem exigência de tempo real. Benefícios: Facilitar implementação de rede para desenvolvedores de jogos (NRT). Economia de mensagens de rede (trata um conjunto de regras de comunicação, e.g. tentar conectar duas vezes, desconectar sem estar conectado).

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...

NGFramework Estados do Proxy

Adaptando um jogo Primeiros passos: Conexão: 1 - Download do framework. 2 - Download do arquivo de configuração no portal. Conexão: Proxy.getInstance().conectar(ipServidor, nome); Ip padrão: “venus.inf.ufsc.br” Exceções: ArquivoNaoExisteException, JahConectadoException, NaoPossivelConectarException;

Adaptando um jogo Iniciar Partida: Exceções: NaoConectadoException 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;

Adaptando um jogo Enviar Jogada: Proxy.getInstance().enviaJogada(jogada); jogada pode ser qualquer objeto que implemente a interface Jogada.

Adaptando um jogo Receber Jogada: Desconexão: Implementar método do OuvidorProxy public void receberJogada(Jogada jogada); Desconexão: Proxy.getInstance().desconectar();

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;

Jogo da velha Jogo criado pelo professor Ricardo para as aulas de análise e projetos.

Jogo da velha Jogo adaptado:

O Portal do desenvolvedor http://java.inf.ufsc.br/games Permitir download do arquivo de configuração (jogoMultiPlayer.properties). Acesso a (link “Documentos”): Documentos (TCC, Apresentações). Acesso a código fonte e executável de: NGServer, NGFramework e Jogos. Tutoriais.

Deploy do NetGames Servidor e Jogo(s) na mesma máquina

Deploy do NetGames Servidor e Jogo(s) em máquinas distintas

Deploy do NetGames Servidor e Jogo(s) em máquinas distintas

Considerações finais Resumindo Para adaptar um jogo é necessário: Configurar ambiente (arquivo configuração). Invocar a instância de Proxy para se conectar no servidor, desconectar, iniciar partidas, enviar e receber jogadas; Implementar a interface OuvidorProxy para receber as jogadas, solicitação de inicio de partida, possíveis erros*; Não esquecer de adicionar no Proxy (design pattern Observer) Implementar os objetos trocados entre as aplicações com a interface Jogada; Tratar as Exceções.

Considerações finais Dúvidas ??? Algumas: Mas nosso jogo não é multi-player, então nós não precisamos fazer nada disso? Simples, um lado joga e o outro observa essas jogadas. O nosso jogo envolve uma “pequena” noção de tempo real. Ver o jogo “Corrida” no portal.

FIM ???  http://java.inf.ufsc.br/games http://www.inf.ufsc.br/netgames netgames@inf.ufsc.br leobr@inf.ufsc.br leodemorgan@gmail.com