Serviços de Middleware para Jogos Multiplataforma Pervasivos
7.2 Projeto do Jogo Pervasive Wizards
7.3.3 Implementação dos clientes de acesso ao Jogo
Para acesso dos jogadores nos diferentes contextos contemplados no jogo, foram implementa- das três aplicações-clientes. Seguindo a arquitetura PM2G, estes clientes servem como portais de interação para o jogo, onde nenhum processamento local em relação ao estado do jogo é feito. O jogo repassa a informação da área de interesse do jogador, de acordo com o formato
7.3 PROTOTIPAÇÃO 140
Tabela 7.2 Estrutura de Dados da Representação de uma área de interesse no Jogo Pervasive Wizards
Tipo Descrição
inteiro Número de Atores presentes na região Estrutura[inteiro] Informação de cada ator presente na região – inteiro ID do ator
– byte Tipo do ator
– inteiro Coordenada X do ator no mundo global – inteiro Coordenada Y do ator no mundo global – inteiro Pontos de vida do ator
– inteiro Pontos de mana do ator
– inteiro Velocidade de deslocamento do ator – Estrutura Informações da ação atual do ator
– byte Quantidade de objetos carregados pelo ator – - Estrutura[byte] Informações sobre cada objeto do ator – inteiro ID do objeto
– byte Tipo do Objeto
inteiro Número de NPCs presentes na região Estrutura[inteiro] Informação de cada NPC presente na região – inteiro ID do NPC
– byte Tipo do NPC
– inteiro Coordenada X do NPC no mundo global – inteiro Coordenada Y do NPC no mundo global – inteiro Velocidade de deslocamento do NPC
inteiro Número de itens coletáveis presentes da região Estrutura[inteiro] Informação de cada item presente na região – inteiro ID do item
– byte Tipo do Item
– inteiro Coordenada X do item no mundo global – inteiro Coordenada Y do item no mundo global
definido pela estratégia de adaptação associada ao seu contexto. A aplicação-cliente apresenta ao jogador a percepção desta área de interesse, bem como outras informações relativas à inte- ração do mesmo.
7.3.3.1 Clientes para computadores pessoais de mesa
A classe PervasiveClient é utilizada para acesso ao jogo via computadores pessoais de mesa, representada pela Figura 7.3. Esta classe estende a classe GameClient, definindo ações para os eventos recebidos da simulação, ao mesmo tempo que utiliza a classe ContextServiceClient,
7.3 PROTOTIPAÇÃO 141
para envio de informações para o Serviço de Gerenciamento de Contexto. Sua execução é feita através do disparo via linha de comando, onde é passado como parâmetro, o IP do servidor do jogo.
Figura 7.3 Diagrama de Classes – Aplicação-cliente para computadores pessoais.
No caso do cliente para computadores pessoais, operações adicionais foram implementadas de modo a permitir que o usuário possa criar novas contas de acesso. Embora estes mesmos procedimentos também fossem possíveis para dispositivos móveis, estes não foram implemen- tados devido a dificuldade para entrada de dados alfanuméricos necessários para a criação das contas. Portanto, para a participação do jogador via dispositivo móvel, espera-se que o primeiro acesso do jogador seja feito via computador pessoal de mesa, onde sua primeira tarefa é o ca- dastro de sua conta. Os procedimentos são realizados de acordo com comandos fornecidos pelo jogador na aplicação-cliente. A Tabela 7.3 apresenta a lista dos possíveis comandos realizados por um jogador, a lista de parâmetros de cada comando e a descrição de sua funcionalidade.
A partir da conexão do jogador e inserção de seu avatar no jogo, este passa a receber conti- nuamente as informações do segmento do mundo virtual onde o avatar tenha sido posto, através do comando spawn. Para renderizar a área de interesse do usuário, a aplicação-cliente para computadores pessoais utiliza também classes do framework Golden T Engine[GTS06], um
7.3 PROTOTIPAÇÃO 142
Tabela 7.3 Lista de Comandos disponíveis para um jogador, via cliente para computadores pessoais.
Comando Parâmetros Funcionalidade realizada /sign nickname, senha,
e-mail, número telefonico para SMS
Caso não haja nenhum usuário com o nickname desejado, o servidor cria uma nova conta, e retorna com ID do jogador /login nickname, senha Caso exista uma conta com o nickname
passado, e cuja senha seja igual a passada pelo comando, o servidor retorna o ID do jogador, e estabelece o estado do jogador no
servidor como logado
/spawn posição X, posição Y Caso o jogador esteja logado, o servidor insere o avatar do jogador na posição (X,Y)
do mundo
/logout - Desconecta o jogador, retirando seu avatar o mundo
motor para o desenvolvimento de jogos em Java, que facilita o tratamento de questões como animações.
7.3.3.2 Clientes para dispositivos móveis
As aplicações-cliente para o contexto móvel foram projetadas para também receber as infor- mações sobre o estado do jogo, bem como sobre as ações de alto nível que o jogador móvel poderá realizar, fornecidas pelo Serviço de Adaptação de Interação. O usuário pode se conectar no jogo usando a tupla (usuário/senha), da mesma forma que o cliente para computadores pes- soais. No caso de uma conexão válida de um jogador móvel, o avatar do jogador é colocado na mesma posição em que este se encontrava na última sessão de acesso. A Figura 7.4 apresenta as principais classes desta aplicação.
Sendo desenvolvidas usando o perfil MIDP 2.0, a classe MobileGameMidlet representa a classe principal da aplicação. Esta possui referências para duas classes: (i) a classe Mobile- GameCanvas é utilizada por dispositivos móveis com interface gráfica, enquanto a (ii) classe MobileGameForm é utilizada para a apresentação da mensagem textual em dispositivos móveis mais simples. As classes NetworkFacade e MessageDispatcher tratam das questões relaciona- das às conexões via HTTP com o servidor do jogo e com o serviço de adaptação de contexto.
7.3 PROTOTIPAÇÃO 143
Figura 7.4 Diagrama de Classes – Aplicação-cliente para dispositivos móveis.
7.3.3.3 Envio de informações de contexto
Para os dispositivos contemplados no protótipo, foi simulada a mudança de informação de contexto, porém limitada a mudança do estado do jogador. As informações sobre o dispositivo utilizado são imutáveis para uma mesma aplicação-cliente, fazendo com o mesmo código do dispositivo seja repassado quando da mudança de estado pelo jogador. Neste protótipo, não foram utilizadas informações sobre a localização do jogador. A mudança de contexto para o cliente de computadores pessoais segue o mesmo padrão de disparo de comandos. O comando /context faz com que a aplicação-cliente simule a mudança de contexto, através da API do middleware. No caso, das aplicações móveis, não foi utilizada nenhuma classe extra, e sim feita uma chamada HTTP ao serviço de contexto, onde são repassadas diretamente via fluxo de dados, as informações sobre o dispositivo e o novo estado.
7.3 PROTOTIPAÇÃO 144