Uma Plataforma para Jogos Móveis Massivamente Multiusuário
CARLOS EDUARDO SILVA1
DANIEL ARRAES2
DAVI PEDROSA1
FERNANDO TRINTA1
ISABEL WANDERLEY2
MARCELO PITA2
MARCIO PORTELA1
MARCUS MACHADO2
RAFAEL BORGES2
GEBER RAMALHO1
1
Universidade Federal de Pernambuco – Centro de Informática
{cesps,dvp,famt,mpl,glr}@cin.ufpe.br
2
Centro de Estudos e Sistemas Avançados do Recife
{dap,iws,mrsp,mvlm,rmb}@cesar.org.br
__________________________________________________________________________________________
Resumo
Jogos móveis massivamente multiusuário representam um nicho importante a ser
explorado. Neste artigo, apresentamos os pré-requisitos, a arquitetura e o
protótipo de uma plataforma open-source extensível que ofereça serviços de
suporte ao desenvolvimento e à execução deste tipo de jogo, ocultando alguns dos
problemas comuns neste cenário.
Palavras Chave: Jogos Móveis Massivamente Multiusuário, Plataforma, MMMOG.
__________________________________________________________________________________________
1 Introdução
No modelo de jogos multiusuário, os jogadores
interagem através da troca de mensagens em
uma rede. Inicialmente, devido a restrições de
largura de banda e latência, estes jogos
limitavam-se a um pequeno número de usuários
situados na mesma rede local. Entretanto, com o
avanço das tecnologias de comunicação e o
sucesso da Internet, foi possível criar jogos nos
quais milhares de jogadores interagem
simultânea e continuamente num mundo virtual
persistente. Graças a isso, estes jogos foram
classificados como massivamente multiusuário
(MMOG).
Em uma linha paralela, a melhoria da
capacidade de processamento e de comunicação
dos dispositivos móveis permite a criação de
jogos móveis cada vez mais elaborados.
Da convergência entre a computação móvel
e os jogos massivamente multiusuário, ambos
bastante populares, nascem os jogos móveis
massivamente multiusuário (MMMOGs). Estes
têm um grande poder de entretenimento e apelo
comercial, haja vista que a maioria dos jogos
disponíveis hoje para celulares é monousuário e
off-line.
Neste nicho, as primeiras experiências já
foram realizadas em jogos como TibiaME [1] e
Era of Eidolon [2], lançados na Europa, e
Samurai Romanesque [3], no Japão. Entretanto,
ainda não há um consenso sobre a arquitetura de
uma plataforma para MMMOGs.
Diante deste contexto e da somente
existência de soluções proprietárias (e.g., Snap
Mobile [4] e TerraPlay MOVE [5]), a nossa
proposta é, com o apoio da FINEP1 [6] e da
parceria entre o C.E.S.A.R [7], a Meantime [8],
a UFPE [9] e a Unicamp [10], criar uma
plataforma open-source extensível que ofereça
serviços de suporte ao desenvolvimento e à
execução de jogos móveis, multiusuário e
massivos.
2 Pré-requisitos
A plataforma deve assumir o papel de um
middleware [11] especializado que se baseia na
topologia cliente/servidor, onde o acesso dos
jogadores dar-se-á através da infra-estrutura
formada por vários servidores. Esta topologia foi
a escolhida dadas as restrições tecnológicas
(como a latência e o baixo poder de
processamento) para a construção de jogos
massivos via rede ponto a ponto em dispositivos
móveis.
Este middleware deve fornecer os principais
serviços necessários e comuns a jogos móveis,
multiusuário e massivos, atuando como elo entre
os jogadores e a infra-estrutura de servidores.
Além
disso,
deve
transparecer
aos
desenvolvedores problemas recorrentes nestas
aplicações como, por exemplo, a troca de
mensagens e a persistência das informações.
Os principais serviços disponibilizados pela
plataforma serão: Gerência de Contas,
Pontuação, Chat, Download de Conteúdo,
Notícias, Tarifação e Monitoramento do
Servidor. Para viabilizar o acesso a estes
serviços, deve existir uma infra-estrutura que
trata as questões relacionadas à comunicação
entre os serviços, à persistência, ao
escalonamento e à tolerância a falhas.
3 Plataforma
A plataforma é dividida em dois módulos:
cliente e servidor. O módulo cliente é composto
por uma Application Programming Interface
(API) que provê abstrações e acesso aos serviços
implementados no servidor da plataforma. Já o
módulo servidor é composto pela infra-estrutura
1
O projeto Plataforma para Jogos Móveis
Massivamente Multiusuário. Aprovado pela FINEP, edital
número 0104097300, assinado em 15/12/2004.
Anais do SBgames, novembro de 2005
(middleware) e pelos serviços disponibilizados.
A
infra-estrutura
é
responsável
pelo
balanceamento, escalonamento e monitoramento
das chamadas aos serviços e pela alocação e
desalocação destes.
Os serviços são entidades autocontidas
responsáveis por prover funcionalidades
específicas. Os mesmos podem se comunicar e
serem coordenados por outros serviços providos
pelos desenvolvedores (third-parties). Por sua
vez, o jogo residente no cliente comunica-se
com um dispatcher capaz de entender suas
solicitações e encaminhá-las para os reais
executores.
No módulo servidor também é oferecido um
console web para o monitoramento da
plataforma (como alocar e desalocar serviços), a
gerência de usuários (bloqueio e desbloqueio de
contas de jogadores, remoção de jogadores), o
envio de notícias, dentre outras atividades
pertinentes à administração.
A parte necessária para o funcionamento da
plataforma em um servidor é chamada Platform
Runtime. Ela contém os agentes monitores do
estado da máquina (processamento e memória),
as entidades, os utilitários necessários e as
interfaces de acesso aos serviços. A Figura 1
representa a macro visão da arquitetura da
plataforma.
Figura 1: Macro Visão da Plataforma
Várias instâncias de um mesmo serviço
podem estar em execução num dado instante;
podem ser distribuídas e cabe a elas manter a
consistência de seu estado (seja via
UMA PLATAFORMA PARA JOGOS MÓVEIS MASSIVAMENTE MULTIUSUÁRIO
sincronização, particionamento do estado ou
compartilhamento de dados).
4 Arquitetura
A visão da plataforma mais detalhada,
especificando as entidades e como elas estão
relacionadas é ilustrada na Figura 2. É
importante destacar que a figura apresenta a
infra-estrutura necessária para a execução da
plataforma. Os detalhes funcionais de cada
serviço não estão aqui especificados, uma vez
que a intenção é prover um arcabouço nos quais
os serviços são adicionados, contanto que
implementem uma interface previamente
acordada.
Figura 2: Entidades e relacionamentos da Plataforma
Abaixo, segue a descrição destas entidades
com suas respectivas funcionalidades:
Session Dispatcher: responsável pela
comunicação inicial do jogador. É o ponto de
acesso externo (via URL) e sua função é
direcionar a conexão do jogo para uma das
possíveis instâncias de Session Manager.
Session Manager: representa o jogo na
requisição das tarefas na plataforma. Possui uma
conexão com o mesmo (via HTTP) e tem como
função repassar suas solicitações para a melhor2
instância de um determinado tipo de serviço.
Service Balancer: responsável pelo
balanceamento da carga dos servidores. Sua
referência é conhecida por todas as outras
entidades e é requisitada sempre que for
necessário solicitar um serviço. Esta entidade
está intrinsecamente relacionada a outras duas, o
Directory Service e o Monitor, e também
representa um ponto de acesso às mesmas. Esta
entidade constitui ponto crítico para a
plataforma.
Directory Service: constitui um serviço de
diretórios semelhante a serviços de nomes
tradicionais em sistemas distribuídos orientados
a objetos, possuindo informações acerca dos
serviços disponíveis no momento. Qualquer
serviço da plataforma deve se registrar no
Directory Service (através do Service Balancer)
para então receber solicitações do Session
Manager e/ou de outros serviços.
Monitor: coleta informações sobre o estado
(como o nível de processamento ou consumo de
memória) dos servidores. Esses dados são
utilizados pelo Service Balancer para decidir
qual serviço é mais apropriado para atender a
uma solicitação.
Service Manager: responsável pela alocação
e desalocação de serviços. Esta entidade se
comunica com o Platform Runtime de cada
servidor para realizar tais operações.
Platform Runtime: constitui o conjunto de
serviços básicos oferecidos pela plataforma aos
serviços instalados em um determinado servidor.
Possui uma instância por servidor e
disponibiliza funcionalidades como persistência,
alocação local de serviços e monitoramento
local.
Scheduler: responsável por automatizar a
alocação e desalocação dos serviços baseado em
políticas pré-definidas. É um componente
fundamental para aspectos como tolerância a
falhas e escalabilidade.
2
Entende-se aqui por melhor instância aquela que,
sob a avaliação critérios pré-definidos de desempenho,
possui a melhor classificação.
5 Protótipo
Desenvolvemos um protótipo para validação da
arquitetura utilizando a linguagem Java (J2SE
[12] no servidor e J2ME [13] no cliente). Neste
protótipo, três serviços foram implementados
(Gerência de contas, Notícias e Chat), além de
autenticação e autorização dos jogadores e parte
da infra-estrutura.
Para garantir a segurança em nível de
autenticação e autorização dos usuários,
utilizamos a API Java Authentication and
Authorization Service (JAAS) [14]. Esta API
provê
uma
interface
de
autenticação
independente de mecanismo e oferece acesso
aos papéis desempenhados pelos usuários e
verificação das respectivas permissões. A
segurança dos dados transmitidos pela rede e
persistidos na base de dados é garantida através
da utilização de algoritmos de criptografia.
As entidades da plataforma, sejam elas
sobre o estado do jogo ou informações de contas
de usuários, utilizam a especificação Java
Persistence API [15] implementada pelo projeto
Hibernate [16], cuja tecnologia serviu de base
para a especificação.
A comunicação entre o cliente e o servidor
da plataforma é via HTTP, uma vez que a
plataforma deve abarcar a maior variedade de
dispositivos móveis. Em conseqüência disto, a
comunicação acontece através de mensagens
que obedecem a um protocolo bem definido.
Por fim, a comunicação inter-serviços
utiliza Remote Method Invocation (RMI) [17].
6 Conclusão
Neste artigo, apresentamos os pré-requisitos, a
arquitetura e o protótipo de uma plataforma para
jogos móveis massivamente multiusuário. Esta
reflexão é de suma importância, haja vista que
se trata de uma nova tendência, sem literatura
suficiente sobre o tema.
É importante ressaltar que este projeto de
pesquisa ainda está em andamento. A
implementação de outros serviços bem como o
suporte a variados tipos de jogos (como os
baseados em turnos e os massivos) serão nossos
próximos passos; em paralelo, estamos
Anais do SBgames, novembro de 2005
desenvolvendo um jogo para efetuar a validação
da plataforma (o Mobies Multiplayer).
7 Referências
[1] CipSoft. Tíbia ME, http://www.tibiame.com/
(29/04/05).
[2] Watagame. Era of Eidolon,
http://www.eraofeidolon.com/ (29/04/05).
[3] Krikke, J. Samurai Romanesque, J2ME, and the
Battle for Mobile Cyberspace. IEEE Computer
Graphics and Applications, 2003.
[4] Nokia. Snap Mobile, http://snapmobile.nokia.com/
(18/07/05).
[5] Terraplay Systems. TerraPlay MOVE,
http://www.terraplay.com/ (14/06/05).
[6] FINEP. Financiadora de Estudos e Projetos,
http://www.finep.gov.br.
[7] C.E.S.A.R. Centro de Estudos e sistemas Avançados
do Recife, http://www.cesar.org.br.
[8] Meantime Mobile Creations.
http://www.meantime.com.br.
[9] Cin-UFPE. Centro de Informática da Universidade
Federal de Pernambuco, http://www.cin.ufpe.br.
[10] Unicamp. Universidade de Campinas,
http://www.unicamp.br.
[11] Emmerich, W. Software Engineering and
Middleware: A Roadmap. In Proceedings of the
Conference on the Future of Software Engineering,
pp. 117-129, June 2000.
[12] Sun Microsystems. Java 2 Platform, Standard
Edition, http://java.sun.com/j2se/index.jsp (25/04/05).
[13] Sun Microsystems. Java 2 Platform, Micro Edition,
http://java.sun.com/j2me/index.jsp (25/04/05).
[14] Sun Microsystems. Java Authentication and
Authorization Service (JAAS),
http://java.sun.com/products/jaas/ (26/08/05).
[15] Sun Microsystems. JSR 220: Enterprise JavaBeans
3.0, http://www.jcp.org/en/jsr/detail?id=220
(20/07/05).
[16] JBoss Inc. Hibernate, http://www.hibernate.org
(22/07/05).
[17] Sun Microsystems. Java Remote Method Invocation
(RMI), http://java.sun.com/products/jaas/ (26/08/05).
Download

Uma Plataforma para Jogos Móveis Massivamente Multiusuário