Jogos em Java: desenvolvendo um jogo multiplayer para Android - Parte 2
O artigo mostrará duas implementações distintas para a camada de comunicação, uma empregando Sockets e outra empregando o padrão REST para a criação de um jogo em Java na plataforma Android.
Jogos em Java: desenvolvendo um jogo multiplayer para Android – Parte 1
Na primeira parte desse artigo, apresentamos uma proposta de um jogo multiplayer constituído por uma arquitetura Cliente-Servidor que utiliza a plataforma Android para a implementação do lado Cliente. O artigo apresentou o desenvolvimento do lado Cliente através de tópicos como a escolha da versão do Android, o tratamento de eventos, a animação de imagens, entre outros.
O artigo também abordou a construção do protocolo de comunicação entre Cliente e Servidor utilizando os conceitos de separação de camadas e desenvolvimento por interfaces, com o objetivo de se construir uma solução mais robusta.
Nesta segunda parte do artigo, iremos apresentar o desenvolvimento do lado Servidor utilizando a linguagem Java e a implementação do protocolo de comunicação deste com o Cliente. Os conceitos já mencionados de separação de camadas e desenvolvimento por interfaces serão demonstrados na prática através de duas implementações distintas para o protocolo, uma utilizando Sockets e outra utilizando o padrão REST.
Servidor
Como explicamos anteriormente, para um jogo multiplayer, além da implementação do lado Cliente, é necessário implementar um lado Servidor para centralizar as regras do jogo e realizar a comunicação entre os diversos clientes. No caso do jogo SpaceTip, a arquitetura do lado Servidor é composta por classes básicas da Java SE. Portanto, para iniciar o projeto do Servidor, basta criar um Java Project. Nesse exemplo, o projeto criado foi chamado de “SpaceTipServer” e seu diagrama de classes está ilustrado na Figura 1.
Figura 1. Diagrama de classes do Servidor.
O Servidor funciona da seguinte forma:
1. Jogador1 entra na Partida;
2. Jogador2 entra na Partida;
3. Partida envia PedirPosicionamento aos dois jogadores;
4. Partida recebe NavesPosicionadas do Jogador1;
5. Partida recebe NavesPosicionadas do Jogador2;
6. Partida envia InicioDeJogo aos dois jogadores, identificando de qual é o turno;
7. Partida recebe Atirar do Jogador em turno;
8. Partida envia ResultadoTiro aos dois jogadores, mudando o jogador em turno;
9. O fluxo de Atirar se repete até a partida encerrar.
Comunicação entre Cliente e Servidor
Uma vez que as lógicas do Cliente e Servidor estejam implementadas, o próximo passo é implementar o protocolo de comunicação entre os dois, ou seja, implementar as interfaces ProxyCliente e ProxyServidor.
Ao implementar a comunicação, é extremamente importante manter a abstração em relação à lógica do jogo. Isso significa que as lógicas referentes ao jogo do lado Cliente e do lado Servidor não precisam e não devem ter conhecimento de como a comunicação é de fato implementada. O que deve ser feito é, na verdade, uma separação de camadas, para que uma modificação na tecnologia utilizada para comunicação não interfira na lógica do jogo e vice-versa.
No desenvolvimento de um jogo, o isolamento em camadas é fundamental para garantir a portabilidade do aplicativo entre as diferentes plataformas existentes no mercado. Ela é importante também para garantir flexibilidade para mudar de tecnologia, seja do lado Cliente ou do lado Servidor, algo muito comum em um mercado tão dinâmico, que evolui rapidamente.
Para demonstrar o isolamento entre as lógicas do jogo e da comunicação, foram implementadas duas formas de comunicação bem distintas. Uma implementação foi feita através da tecnologia Socket e a outra foi feita empregando a tecnologia REST.
"
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo