{\rtf1\ansi\deff1 {\fonttbl{\f0\froman\fprq2\fcharset0 Times;}{\f1\froman\fprq0\fcharset0 Times New Roman;}} {\colortbl\red0\green0\blue0;\red255\green255\blue255;\red128\green128\blue128;} {\stylesheet{\s1\snext1 Padr\'e3o;} } {\info{\comment StarWriter}{\vern5690}}\deftab708 {\*\pgdsctbl {\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Padr\'e3o;}} \paperh15840\paperw12240\margl1800\margr1800\margt1440\margb1440\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc \pard\plain \s1\lang2070 \par \par \pard\plain \s1{\lang2070 \tab {\fs28 \tab T\'f3picos de O.O. - Design Fest - Grupo M-2}} \par \pard\plain \s1\lang2070 \par Algumas considera\'e7\'f5es e problemas levantados pelo grupo : \par \par \pard\plain \s1\fs28\lang2070 Problemas: \par \par \pard\plain \s1\li708\ri0\fi0\lang2070 Usar MVC, e atualizar as paginas por padr\'e3o Observer? \par \tab -Manter um estado central no servidor e usar MVC, atualizando os clientes atrav\'e9s do padr\'e3o Observer? \par \tab - Ou manter v\'e1rios estados, um em cada cliente, sendo que cada estado \'e9 atualizado pelo servidor e tamb\'e9m atualiza o estado central? \par \par Controle das naves : \par \tab Como o controle das naves dever\'e1 ser feito? No cliente ou no servidor? Em outras palavras, o cliente s\'f3 envia as teclas apertadas e o servidor atualiza a situa\'e7\'e3o da nave, ou o cliente trata o pressionamento de teclas alterando ele a situa\'e7\'e3o da nave no servidor.\tab \par \par Problema de sincronia nos clientes. \par \tab Como manter todos os clientes sincronizados? \par \par Tipo de informa\'e7\'f5es que deveriam ser passadas aos clientes: \par \tab _ o que a nave fez? \par \tab _ estado geral da nave? \par \tab _ ou os dois? \par \par Manter os torpedos no modelo do jogo ou no Servidor? \par \tab Esta duvida foi levantada porque a trajet\'f3ria do torpedo \'e9 facilmente determinada. \par \par Aster\'f3ides: Lugar fixo ou aparecer aleatoriamente em qualquer lugar? \par \par Explos\'f5es: Quando ocorrem? Devem ser consideradas como mais uma classe que herde de Elemento ou apenas um estado de cada objeto que possa explodir? E quando morrem devem receber todas as pontua\'e7\'f5es? \par \par Pontua\'e7\'e3o: qual pontua\'e7\'e3o o cliente deve ver em sua tela durante o jogo? A de todos os jogadores ou apenas a sua? \par \par Chat como implementar: \par \tab _Mensagens com Id e o cliente decide quais ele j\'e1 mostrou e quais n\'e3o mostrou, para ent\'e3o mostrar ? \par \tab _ O servidor decide quais e quantas mensagens ser\'e3o colocadas na tela? \par \par Tipos de jogos: \par _ Como seria feita a entrada dos jogadores em uma sess\'e3o de jogo? Teria-se um tempo limite para a entrada apos a sess\'e3o ser criada, ou se poderia entrar a qualquer hora. \par _ E a contagem dos pontos de cada jogador? \par _ Foi levantada a hip\'f3tese de extens\'e3o do jogo para um modo de times, como um policia e ladr\'e3o, assim o jogo acaba quando um time \'e9 morto por completo. \par \par Tecnologia de comunica\'e7\'e3o: \par _Qual tecnologia ser\'e1 usada na comunica\'e7\'e3o cliente - servidor ? \par _O desacoplamento do sistema deve ser total, como uma nova classe na UML que represente a \ldblquote camada rede\rdblquote ? \par _ Ou devemos explicitar quais objetos ser\'e3o disponibilizados remotamente, como em JAVA-RMI ou CORBA? \par \pard\plain \s1\lang2070 \par \pard\plain \s1\fs28\lang2070 Decis\'f5es: \par \pard\plain \s1\lang2070 \par \pard\plain \s1\li708\ri0\fi0\lang2070 Todo processo ocorre no servidor e o cliente tem apenas as camadas view e controler. Seria mais f\'e1cil controlar a intera\'e7\'e3o entre as naves, e seria passado ao cliente, a cada intervalo controlado pelo servidor, n\'e3o s\'f3 o estado da nave, mas tanb\'e9m uma foto geral da situa\'e7\'e3o, com o estado de cada nave e dos elementos, tais como torpedo, aster\'f3ides, etc...Este tipo de atualiza\'e7\'e3o foi escolhido porque o jogo \'e9 pequeno e muito din\'e2mico. Essa solu\'e7\'e3o seria mais vi\'e1vel em redes locais, porque no caso da Inter net haveria sobrecarga e maior incid\'eancia de perda de pacotes. \par \par Os aster\'f3ides ser\'e3o controlados por um m\'f3dulo do sistema a fim de permitir facilmente a mudan\'e7a de algoritmo que controla sua apari\'e7\'e3o: onde e em que quantidade. \par \par As explos\'f5es acontecer\'e3o entre quaisquer dois tipos de elementos do sistema: nave com nave, nave com aster\'f3ide, torpedo com torpedo, etc... Essas explos\'f5es ser\'e3o tratadas de forma padr\'e3o como um estado de cada elemento, estado esse que antecipa sua morte. A explos\'e3o n\'e3o \'e9 tratada como elemento do estado. \par \par \pard\plain \s1\li708\ri0\fi0{\lang2070 O servidor ent\'e3o ir\'e1 receber os sinais das teclas pressionadas, repassadas pelos clientes, para todo tipo de comando: mudan\'e7a na dire\'e7\'e3o, velocidade ou disparo de torpedos. Ent\'e3o o servidor devolve um objeto mapa para que o cliente o interprete e desenhe n a tela o estado do jogo. Esse envio de atu}aliza\'e7\'e3o \'e9 realizado para todos os clientes indiscriminadamente. \par \par \pard\plain \s1\li708\ri0\fi0\lang2070 O servidor tamb\'e9m ter\'e1 a lista de clientes conectados a ele, esta lista ser\'e1 usada para atualizar mensagens aos clientes como as pontua\'e7\'f5es e tamb\'e9m para que o servidor de partidas possa controlar qual jogador est\'e1 em qual sess\'e3o e por conseq\'fc\'eancia atualiz ar tais jogos. \par \par A pontua\'e7\'e3o de cada jogador \'e9 constantemente enviada ao seu dono durante o jogo todo. S\'f3 esta pontua\'e7\'e3o lhe ser\'e1 enviada, pois as n maiores pontua\'e7\'f5es da sess\'e3o s\'f3 estar\'e3o dispon\'edveis assim que o jogador morrer. \par \pard\plain \s1\lang2070 \par \pard\plain \s1\li708\ri0\fi0\lang2070 Sobre a jogabilidade, decidiu-se por deixar a sess\'e3o aberta enquanto houver algu\'e9m l\'e1 dentro e todos poderiam entrar e sair quando quisessem, assim os pontos do jogo seriam computados levando-se em considera\'e7\'e3o o tempo de perman\'eancia e n\'famero de mortos por cada jogador. \par \par Sobre o chat decidiu-se que o servidor manter\'e1 uma fila de mensagens e as enviar\'e1 aos clientes. Al\'e9m disso, haver\'e1 um numero nmax de mensagens a serem enviadas ao cliente por vez. \par \par \pard\plain \s1\li0\ri0\fi708\lang2070 A tecnologia da comunica\'e7\'e3o cliente servidor ser\'e1 a de JAVA - RMI. \par \pard\plain \s1\lang2070 \par \pard\plain \s1\fs28\lang2070 Divis\'e3o do Jogo: \par \pard\plain \s1\lang2070 \par \pard\plain \s1\li708\ri0\fi0\lang2070 Partes: Sess\'e3o de jogo, estado do jogo, algoritmo de intelig\'eancia. \par \par Sess\'e3o de jogo: poder\'e1 haver uma ou mais \ldblquote salas\rdblquote de jogos no servidor, ao entrar no jogo o cliente ter\'e1 uma tela de capa onde ele poder\'e1 optar por criar uma nova sala ou entrar em uma existente e que n\'e3o tenha estourado o limite m\'e1ximo de jogadores. \par Estado do jogo: guarda constantemente o estado de todos os elementos do jogo, sendo atualizados pelo algoritmo de intelig\'eancia. De tempos em tempos, tira-se uma foto deste estado e envia-se ao cliente. \par L\'f3gica do jogo(algoritmo de intelig\'eancia): usa uma classe s\'f3 (um m\'f3dulo) bem organiza da em m\'e9todos ou funcionalidades. \par \pard\plain \s1\lang2070 \par }