TuGA: Um Middleware para o Suporte ao

Propaganda
TuGA: Um Middleware para o Suporte ao Desenvolvimento de Jogos em TV
Digital Interativa
David de Almeida Ferreira
Cidcley Teixeira de Souza1
NASH – Núcleo Avançado em Engenharia de Software
Distribuído e Sistemas Hipermídia
Centro Federal de Educação Tecnológica do Ceará
{davidferreira.fz, cidcley}@gmail.com
Resumo
Com a implantação da TV Digital no Brasil, além de
uma melhoria da qualidade de aúdio e vídeo, é esperado
a introdução de um conjunto de novos serviços
relacionados à interatividade dessa tecnologia.
Argumentamos nesse trabalho que dentre essas
aplicações, os jogos digitais podem ser uma forma
atrativa de popularizar os mecanismos de interatividade
da TV Digital. Dessa forma, este artigo tem como
objetivo apresentar um middleware para dar suporte à
programação de jogos em TV Digital Interativa. Esse
middleware tem o objetivo de responder pelos requisitos
tecnológicos necessários para que a industria nacional
possa explorar o mercado de jogos digitais em TV Digital
Interativa.
1. Introdução
A TV Digital Interativa (TVDI) aberta, que está em
discussão atualmente no Brasil, já é, em parte, uma
realidade atualmente. Com essa tecnologia além de serem
disponibilizadas imagens com alta definição e som
digital, serão ofertadas diversos outros serviços, como
aplicações de interatividade, múltiplos programas
simultâneos, venda de produtos via televisão, entre
1
outros. Nesse sentido, a disseminação da televisão aberta
digital é de importância estratégica para o Brasil, uma vez
que beneficiará quase toda a população nos próximos
anos, proporcionando crescente democratização do acesso
à informação.
Dentre essas aplicações interativas, os jogos digitais se
apresentam como uma forma atrativa de popularizar a
utilização dessas aplicações na TVDI. De fato, a atração
exercida pelos jogos tem feito crescer no Brasil uma
1
Prof. do Curso de Mestrado Profissional em Computação
UECE/CEFET-CE
industria que já apresenta resultados expressivos nessa
área. Entretanto, o desenvolvimento de jogos para TVDI,
deve considerar as limitações impostas por esse ambiente,
tanto no que diz respeito à completa carência de
ferramentas de desenvolvimento, como pela própria
estratégia de projeto dos jogos, que são limitados pela
forma de interação dos usuários, normalmente utilizando
um controle remoto.
Nesse sentido, esse trabalho apresenta um middleware,
denominado TuGA, capaz de dar suporte ao
desenvolvimento de jogos em TVDI. Esse middleware,
além da estrutura de execução dos jogos, disponibiliza
também uma API de desenvolvimento de aplicações para
esse ambiente.
Para apresentar esse trabalho, mostramos na seção 2
uma descrição do ambiente de desenvolvimento de TVD
onde descrevemos o que já existe de suporte atualmente
em termos de ferramentas de desenvolvimento de
aplicações para esse ambiente. Na seção 3 apresentamos
um levantamento das ferramentas disponíveis para a
produção de jogos digitais em Java. Na seção 4
apresentamos uma discussão sobre a produção de jogos
em TVDI, na qual podem ser entendidas as motivações
principais para o nosso trabalho. Na seção 5 apresentamos
o middleware TuGA e suas ferramentas de
desenvolvimento associadas. Na seção 6 um estudo de
caso é apresentado e por fim, na seção 7, são apresentadas
as conclusões do trabalho.
2. Ambiente da TV Digital Interativa
O desenvolvimento de aplicações para TV Digital
Interativa (TVDI), tem como alicerce tecnológico a
plataforma Java, que devido a sua extrema extensibilidade
e sua grande aceitação, fez com que o Java hoje possa ser
encontrado em diversos meios, indo desde do uso
tradicional em computadores até dispositivos portáteis e
embarcados. Para atender da melhor forma todas as
necessidades dos desenvolvedores, a plataforma Java foi
construída com alta granularidade, permitindo assim que
cada nicho tecnológico venha a utilizar apenas as APIs
Sendo assim, a plataforma Java é constituída
atualmente por cinco camadas, como apresentado na
Figura 1. Como o objetivo do nosso trabalho são •
aplicações para TVDI, focaremos apenas na parte
relacionada à “Micro Edition”, em especial à subdivisão
composta pelo “CDC”, que é a camada do Java que provê
suporte para dispositivos com perfil de Set-Top-Box da
TVDI. Desse modo, podemos observar os seguintes perfis
de arquitetura para aplicaçõe Java:
•
Connected Device Configuration, ou CDC[1], é
geralmente conhecida como “Configuração”, ou seja,
é a constituição em si do ambiente, contando com
uma Java Virtual Machine (JVM) e baseado na JSE
(Java Standard Edition), sendo otimizada para micro
dispositivos, possuindo apenas a parte mais básica do
Java como os pacotes: java.lang, java.io, java.math,
java.net, java.security, java.text, java.util e
java.microedition.
realmente necessárias.
programação para Applets e a compatibilidade total
com os pacotes AWT.
Optional Packages, são pacotes que apesar de possuírem
grande possibilidade de estarem presente no micro
dispositivo, não temos esta garantia, este pacote é
composto principalmente de partes da RMI e JDBC.
Com base nesses componentes, temos uma visão
macro do que é disponibilizado pela plataforma Java para
o desenvolvimento de aplicações para a TVDI. Além
desse suporte oficial do próprio Java, contamos também
com o suporte provido por diversas empresas
desenvolvedoras de tecnologia, o que levou a
formalização e definição de alguns padrões adotados
pelos pela industria mundial, onde deram origem as APIs:
•
•
Figura 1. Plataforma Java
•
•
•
Foundation Profile, ou FP[2], é o perfil mais básico
disponível para o CDC, seu objetivo é fornecer um
suporte complementar para o CDC. Sua API é
baseada na JSE e oferece pacotes complementares,
para: java.lang, java.io, java.math, java.net,
java.security, java.text, java.util, java.microedition e
javax.security.
Personal Basis Profile, ou PBF[3], é formado pelo
“Foundation Profile”, com a adição do suporte
básico para GUI leves e o suporte ao modelo de
programação de TV (Xlet Program). Sua API além
do suporte ao FP, inclui suporte principalmente para
java.awt, java.beans, java.rmi, java.microedition.xlet.
Personal Profile, ou PP[4], é formado pelo
“Personal Basis Profile”, com a adição do suporte a
HAVi (Home Audio Video Interoperability)[5],
onde seu foco é a interoperabilidade com o
usuário por meio de um amplo suporte gráfico.
DVB-MHP (Digital Video Broadcasting Multimedia Home Platform)[6], com o foco
principal em fornecer uma abstração avançada
para acesso aos recursos de áudio e vídeo, onde
também fornece meios para controle de acesso,
protocolos de comunicação com suporte a canal
de retorno e criptografia de dados.
Com base nesse conjunto de componentes
apresentados, temos o cenário inicial para o
desenvolvimento de aplicações para TVDI. Durante a fase
inicial desse projeto, tentamos realizar algumas
implementações de jogos simples utilizando apenas as
ferramentas disponíveis atualmente para TVDI. Como
resultado esbarramos com diversas limitações dessas
ferramentas. Essas limitações vão desde a falta de suporte
a mecanismos de interação mais avançados, como o
pressionamento simultâneo de teclas do controle remoto,
até questões de desempenho na apresentação de gráficos
simples na tela da TV. Baseado nestas limitações,
iniciamos uma avaliação de outras ferramentas de
desenvolvimento Java, para verificar a possível
portabilidade dessas para ambientes de TVDI.
3. Desenvolvimento de Jogos em Java
Atualmente, a linguagem Java é uma realidade para o
desenvolvimento de jogos, permitindo a criação soluções
dos mais diversos tipos e estilos, indo dos dispositivos
mais limitantes como celulares, applets e chegando em
fim ao desktop, onde encontra acesso ao alto desempenho
dos jogos tridimensionais.
No mundo dos “micro dispositivos”, principalmente
para celulares, Java vem, ao longo dos últimos anos,
tornando-se uma poderosa plataforma. Graças a sua
grande popularização, essa linguagem vem sofrendo uma
grande evolução, acompanhando de perto os avanços dos
celulares, permitindo assim utilizar cada vez mais a
capacidade computacional desses aparelhos.
Todavia, no mundo da TVDI, o potencial de Java para
o desenvolvimento de aplicações na área de jogos ainda é
uma grande incógnita, visto que mesmo com toda a
evolução
dessa
linguagem
para
suporte
ao
desenvolvimento em celulares e no próprio desktop, Java
ainda não é compatível com o modelo de
desenvolvimento para TVDI, o que na verdade chega a
ser irônico, visto que a estrutura de hardware dos SetTop-Boxes, são provavelmente superiores em termos
computacionais à grande maioria dos celulares, porém
inferior ao dos desktops atuais. Além disso, por conta da
interface singular da TVDI, esse ambiente acaba sendo
relegado pela falta de suporte avançado de Java.
4. Jogos na TV Digital
A TVD disponível hoje no Brasil, por meio de
operadoras de canais privados (tv-a-cabo, satélite e
similares), já oferece a anos dispositivos digitais e
interativos. Apesar do acesso a tais dispositivos, podemos
observar que quando uma operadora de TV privada
fornece algum tipo de entretenimento baseado em jogos
eletrônicos, esses possuem características bem marcantes,
como:
• São desenvolvidos para crianças de 3 a 7 anos;
• Possuem baixa interatividade ou apresentam uma
interface gráfica de pouca assimilação;
• São cópias de jogos de tabuleiro, cartas, palavras
cruzadas e forcas;
• Não são capazes de manter ou chamar a atenção
do jogador ou potenciais jogadores;
Explorando a Internet nos mais diversos meios,
observamos que a indústria de jogos para computadores,
celulares e consoles, além das pessoas ao redor dessas
industrias, ou seja, as comunidades de desenvolvedores e
jogadores, apresentam de fato muitas informações a
respeito das mais diversas tecnologias empregadas, porém
quando se trata de jogos para TVDI, pouca coisa é
disponibilizada, e quando encontramos, na verdade não
passam de inúmeras questões do tipo “Como começar?”,
“Por onde começar?”, “Onde achar informações?” e afins,
ou seja, praticamente não existe informação sobre o
desenvolvimento de jogos para este nicho tecnológico,
levando-nos a seguinte suposição: A tecnologia
encontrada na grande maioria dos dispositivos ou é
inadequada para os jogos, ou esse é um mercado muito
promissor e inusitado onde apenas um seleto grupo de
empresas possui conhecimento especifico.
Entretanto, diferente do que ocorre na TV privada no
Brasil, é possível encontrar em outros países, jogos mais
avançados tecnologicamente, muitos dos quais similares
aos jogos encontrados nos consoles da geração de 16 bits
e nos celulares de hoje.
Desse modo, temos neste cenário, a oportunidade de
explorar e de desenvolver uma tecnologia nacional que
possa suprir a lacuna existente neste mercado, inclusive
elevando as experiências encontradas hoje a outros níveis
que proporcionem de fato o interesse e a imersão desejada
pelos mais diversos grupos de jogadores. Assim, o nosso
objetivo nesse trabalho, é atacar diversos tipos de jogos, e
não apenas os jogos esporádicos de palavras, mas sim
estilos mais clássicos que venham a fomentar de fato o
interesse dos jogadores, tais como adventures, arcades,
puzzles, entre outros.
5. O Middleware TuGA
Um jogo eletrônico necessita de uma série de recursos
computacionais para que esse possa transmitir as mais
diversas experiências para seu usuário, em especial para
TVDI o grande potencial primário são de jogadores do
tipo casual, ou seja, jogadores que se utilizam jogos
eletrônicos algumas poucas horas por semana.
Tendo em vista este cenário inicial, estamos propondo
nesse trabalho o middleware TuGA (Figura 2). Esse
middleware oferece suporte aos seguintes sistemas:
•
•
•
Sistema Gráfico;
Sistema Sonoro;
Sistema de Entrada;
Adicionalmente, sabemos que cada grupo de sistema
citado acima, deve prover uma série de capacidades
mínimas para que possa cumprir sua missão, sendo assim,
podemos considerar as seguintes funcionalidades para
cada um desses sistemas:
Figura 2. Arquitetura do Middleware TuGA.
Sistema Gráfico, é o responsável por permitir a
integração com o vídeo, ou seja, por permitir que as
imagens e as primitivas gráficas sejam apresentadas no
monitor de TV/PC, dando um feedback visual ao jogador.
Este sistema deve oferecer:
• Carregamento de imagens e sua manipulação
em memória;
• Suporte a transparências;
• Funções de desenho (blit e clip);
• Suporte ao gerenciamento de vídeo otimizado
com uso de backbuffer;
Sistema Sonoro, é o responsável por permitir o efeito
de imersão, com o suporte a uma boa ambientação sonora
durante a atividade interativa imersiva, este sistema deve
oferecer:
• Carregamento de sons e sua manipulação em
memória;
• Suporte a músicas de fundo;
• Suporte a efeitos sonoros;
• Suporte a execução de sons simultâneos;
Sistema de Entrada, é o responsável por permitir a
interação do jogador com o dispositivo, dando assim
inicio ao processo de interação, este sistema deve
oferecer:
• Suporte otimização para comunicação entre
os dispositivos;
• Suporte a dispositivos anexados como
controles e joysticks;
• Suporte a múltiplos comandos;
Adicionalmente, sabemos que para o real
desenvolvimento de jogos eletrônicos uma simples
camada de abstração com o hardware não é suficiente, ela
é apenas a base inicial para a construção de outros
softwares que realmente permitiram o desenvolvimento
de softwares mais elaborados. Sendo assim a camada base
do middleware deve permitir que outras camadas de
software possam ser acopladas. No caso de jogos
eletrônicos surgem neste cenário os frameworks e as
engines, as quais na grande maioria dos cenários fazem
uso do middleware para abstrair detalhes do hardware e
de fato concentrar-se nas suas necessidades como por
exemplo: controle de animações, menus, recordes, GUI e
outros acessórios para que de fato possa chegar ao
produto final, ou seja, o jogo.
Tendo em vista este cenário, além das características
iniciais do middleware é necessário uma nova camada de
software que possa de fato cumprir com os novos
requisitos sendo assim, desenvolvemos uma nova camada
que chamamos de framework GBF.Tv, que fornece os
seguintes recursos:
•
•
•
•
•
•
Gerenciador de Sprites;
Gerenciador de Fontes;
Gerenciador de Personagens;
Gerenciador de Sons;
Gerenciador de Interface
Usuário;
Gerenciador de Tempo;
Gráfica
com
Com essa camada adicional de software, começa a
surgir o cenário ideal para as primeiras aplicações
interativas com foco no entretenimento para TVDI, ou
seja, jogos eletrônicos que de fato podem permitir uma
boa interação com os jogadores.
Como nosso ambiente de desenvolvimento é o
computador, precisamos de componentes que possam
permitir a simulação do ambiente de um set-top-box.
Como para realizar essa tarefa de simulação, os
desenvolvedores de aplicações de TVDI utilizam
emuladores de TV, no nosso caso, escolhemos o
XleTView[8], que é um emulador do middleware MHPDVB.
É válido ressaltar que não utilizamos nada que seja
relacionado ao MHP no nosso middleware. De fato, o que
utilizamos do XleTView foi apenas o suporte básico de
Java, que é comum a qualquer middleware de TVDI,
inclusive o middleware Brasileiro Ginga [11], o qual
segundo as especificações deve apresentar as mesma
limitações referentes ao suporte à jogos encontradas nos
middlewares procedurais para TVDI. Um ponto que deve
ficar claro, é que o TuGA não é um substituto para o
Ginga-J, e sim um middleware complementar focado em
jogos, pois o jogo em si, necessitará tanto do middleware
Ginga para todo o suporte operacional do hardware, como
do TuGA abstraindo as questões de infraestrutura dos
jogos.
Com o desenvolvimento de todas essas camadas,
temos um ambiente apto para execução e
desenvolvimento de jogos em TVDI, de modo a produzir
jogos com recursos realmente atrativos para os jogadores.
É importante lembrar que a camada de emulação de TV é
utilizada apenas para simular o ambiente encontrado nos
set-top box, os mesmo são supridos pelo contêiner
fornecido pela Java Virtual Machine dos dispositivos.
6. Estudo de Caso
Para ilustrar a aplicação do middleware TuGA no
suporte ao desenvolvimento de jogos digitais em TVDI,
apresentamos nessa seção um estudo de caso simples.
Nesse estudo de caso, aplicamos o middleware TuGA no
desenvolvimento do jogo FZPong [9]. Esse jogo foi
originalmente escrito na linguagem C++ em ambiente de
PCs (Figura 3) utilizando como base o framework
GBF[10] – Gamework's Brazilian Framework.
Figura 3. FZ Pong, jogo para PC.
Como mencionado anteriormente necessitamos de uma
camada que pudesse fazer a ligação entre as
funcionalidades de baixo nível requeridas pelos jogos e o
dispositivo do set-top-box, sendo assim começamos o
trabalho do desenvolvimento da API.
Inicialmente apareceram diversos problemas como por
exemplo o gerenciamento de entrada de dados, o qual
deveria suportar o pressionamento de múltiplas teclas, o
carregamento de imagens, a definição de transparências,
a forma de desenhar uma imagem na tela, dentre outros
casos. Problemas estes que não eram resolvidos pela API
padrão da TVDI, e que necessitavam de fato de
conhecimentos técnicos altamente especializados, porém
podemos agora por meio do middleware TuGA, fazer uso
de tais recursos de forma transparente em nossas
aplicações.
oferecer uma ampla compatibilidade com o a idéia
original do framework GBF.
Durante a transformação do modelo de jogos de PC
para TV, optamos inicialmente por um framework que
mantivesse as características e as familiaridades
encontradas no desenvolvimento de jogos para PC, onde
haveria também a possibilidade do desenvolvimento de
um framework para TVDI que mantivesse tais
características encontradas na programação JavaME, o
qual poderá em breve ser o foco de uma outra camada
externa ao GBF.Tv ou até mesmo de um outro
framework.
Como o intuito inicial desse trabalho é validarmos a
possibilidade do desenvolvimento de jogos para TVDI,
focamos nas questões de interatividade com a máquina,
no caso o jogador humano e o jogador set-top-box, além
da contagem de pontos e uma simples elevação de nível
de acordo com algumas características de duração da
partida. Neste momento os controles mais avançados
disponíveis no jogo como menus, controle de estados,
telas informativas e afins, ficaram de fora do nosso foco.
Conforme comentando a criação do jogo e do
middleware TuGA se deu de forma paralela, sendo que
quando alguma característica particular do ambiente
deveria ser solucionada, estas eram avaliadas se deveriam
ou não constar fora do escopo do jogo, onde eram
novamente avaliadas para verificar se pertenciam de fato
ao escopo do framework ou do middleware.
Adicionalmente, ter apenas uma abstração dos
recursos de hardware não era suficiente para o
desenvolvimento de jogos, mesmo porque ainda restava
uma série de componentes que deveriam ser criados para
reutilização de diversos jogos, com este intuito aliamos o
desenvolvimento (porte) do framework com o do jogo em
si, porém estipulamos que daríamos prioridade
inicialmente as funcionalidades vitais para o jogo em
TVDI, sendo assim iniciamos o trabalho com o porte de
parte do framework GBF, que denominamos de GBF.Tv.
Esse framework implementa os seguintes subsistemas:
•
•
•
•
•
•
•
Definição de Tipos básicos e auxiliares;
Sistema de Gráficos Base;
Sistema de Sprites e Tilemap;
Sistema de Personagem;
Sistema de Som;
Sistema de Temporização;
Sistema de Escrita;
Devemos ressaltar que alguns desses subsistemas
encontram-se parcialmente suportados, com o intuito de
Figura 4. Classes e Pacotes do XletPong.
Observando a Figura 4, que é uma tela capturada do
Eclipse [7], podemos comprovar que o jogo apresenta
neste estágio poucas classes, onde temos os pacotes:
• default - com a classe contendo o ponto de
entrada, ou seja, o Xlet em si;
•
•
•
jogo.controller – com alguns controles do jogo,
focado no funcionamento do jogo em si;
jogo.entidade – a representação dos componentes
visíveis no jogo como bola e as raquetes;
jogo – onde podemos encontrar a classe Game que
é responsável por fazer a integração e instanciação
do framework GBF.Tv além de prover o
carregamento de recursos necessários para a
execução do jogo.
Figura 5. XletPong rodando no emulador XleTView.
Observando a Figura 5, que apresenta o jogo
executado no XleTView, e a comparando com a Figura 3,
podemos observar a similaridade visual entre as duas
versões, a qual só não é idêntica quando a comparação é
realizado com o jogo em execução, pois apesar de ambos
estarem configurados para execução em 30 frames por
segundo (o framework provê uma série de controles
relacionado ao frames), notamos que a noção de espaço e
tempo neste ambiente deve ser cuidadosamente repensada
pois enquanto temos dispositivos com alta precisão no
PC, para a TVDI em ambiente de simulação percebemos
que existem pequenas, mas sutis diferenças quando se
trata com os temporizadores, talvez possa nem ser uma
questão dos ambientes e sim de performance das
linguagens C++ e Java ou das plataformas de integração
com as bibliotecas e o hardware.
No final desta primeira fase de conversão do jogo,
chegamos a resultados impressionantes pois a facilidade
encontrada para portar a lógica do jogo entre duas
plataformas e linguagens distintas foi altamente rápida,
produtiva, ou seja, ultrapassou as nossas expectativas.
7. Conclusão
A principal motivação para a realização desse trabalho
era, inicialmente, a avaliação das ferramentas para a
produção de jogos digitais em TVDI. Contudo, a baixa
disponibilidade de recursos tecnológicos no suporte a esse
tipo de aplicação nos fez direcionar o trabalho para a
produção de um conjunto de ferramentas que
possibilitasse a exploração de jogos digitais nesse
ambiente tão promissor. Nesse sentido, iniciamos o
desenvolvimento do middleware TuGA.
Esse middleware, oferece além de um ambiente de
simulação de jogos, um conjunto de ferramentas que
auxiliam o tratamento de diversos aspectos peculiares à
TVDI, o que permite que o desenvolvedor possa
direcionar o seu trabalho para à lógica do jogo , e esteja
apto a explorar de forma produtiva o ambiente de TVDI.
Esperamos que com o conhecimento fornecido neste
trabalho, possamos auxiliar no direcionamento dos
interessados, em especial, os desenvolvedores de jogos,
onde esta nova, inexplorada e promissora plataforma,
constitui um cenário único para nossa industria, pois
como sabemos nosso sistema de TVDI é altamente
peculiar e encontra-se neste momento disponível apenas
em nosso país, o que permite que possa haver uma grande
corrida para exploração deste novo campo do
entretenimento nacional.
Com base nestas idéias focamos os requisitos dos
middleware e framework para trabalhar em conjunto com
essas novas possibilidades, inclusive permitindo que o
conhecimento adquirido pelos profissionais da plataforma
PC, os quais hoje são maioria no cenário de
desenvolvimento de jogos no Brasil, possam utilizar seus
conhecimentos para a produção de jogos eletrônicos para
TVDI.
Referências
[1] Java CDC, http://java.sun.com/products/cdc/overview.html ,
acesso em: 10/12/2007.
[2] Java Foundation Profile,
http://java.sun.com/products/foundation/overview.html ,
acesso em: 10/12/2007.
[3] Java Personal Basis Profile,
http://java.sun.com/products/personalbasis/overview.html ,
acesso em: 10/12/2007.
[4] Java Personal Profile,
http://java.sun.com/products/personalprofile/overview.html ,
acesso em: 10/12/2007.
[5] HAVi, http://www.havi.org , acesso em: 17/12/2007.
[6] DVB Wikipedia, http://en.wikipedia.org/wiki/DVB , acesso
em: 17/12/2007.
[7] Eclipse IDE, http://www.eclipse.org, acesso em: 22/12/2007
[8] XleTView, http://xletview.sourceforge.net , acesso em:
02/03/2008.
[9] FZPong, http://pjmoo.wiki.sourceforge.net/FZPong , acesso
em: 02/03/2008.
[10] GBF, http://pjmoo.wiki.sourceforge.net/GBF , acesso em:
02/03/2008.
[11] GINGA, http://www.ginga.org.br , acesso em 15/02/2008.
Download