Desenvolvimento multiplataforma em ambientes de programação nativos e abstratos

11
Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC. CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923 Seminário de Integração Técnico-Científica Agosto, 2013 Desenvolvimento multiplataforma em ambientes de programação nativos e abstratos Ráfagan Sebástian de Abreu - CESI [email protected] [email protected] Resumo O objetivo deste artigo é apresentar os principais desafios e abordagens relacionados ao universo do desenvolvimento de aplicações multiplataforma, apresentando-se o contraste entre o desenvolvimento para dispositivos móveis utilizando- se APIs nativas e abstratas. Como forma de aplicação prática dos conteúdos propostos, utilizou-se como estudo de caso a implementação de um simulador visual e multiplataforma do algoritmo A*, e a programação de jogos para Android e iOS utilizando- se a API nativa. Palavras-chave: Inteligência Artificial, web, multiplataforma, mobile, pathfinding. Introdução Durante a década de 70, surgem os primeiros computadores pessoais distribuídos em larga escala. O sucesso causado por empresas como Apple e IBM nesse ramo marcaria um futuro promissor para a área, já que, até então, o principal mercado de software se restringia aos Mainframes e às corporações que os utilizavam. Nesse ponto, com a crescente demanda do mercado de software para leigos e profissionais, e com o aquecimento das gigantes produtoras de software, é possível perceber o surgimento de um futuro de aplicações visando à interoperabilidade entre os Sistemas Operacionais (SOs) e arquiteturas para vários tipos de consumidores. Atualmente, o principal foco das tecnologias multiplataforma é a geração de software para computadores pessoais (desktops e notebooks) e dispositivos portáteis (smartphones e tablets). Além disso, o desenvolvimento de páginas web também vem utilizando-se de metodologias do gênero para a obtenção de um produto que funcione em qualquer navegador. O primeiro passo a se tomar quando desenvolvemos um código multiplataforma é se este deverá ser desenvolvido através de um código portável (normalmente escrito em C/C++) ou se rodará sobre uma camada de abstração que deverá oferecer soluções de portabilidade para as plataformas desejadas (é o caso dos ambientes Java, .NET e os

Transcript of Desenvolvimento multiplataforma em ambientes de programação nativos e abstratos

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

Seminário de Integração Técnico-Científica

Agosto, 2013

Desenvolvimento multiplataforma em ambientes de programação nativos e abstratos

Ráfagan Sebástian de Abreu - CESI [email protected]

[email protected] Resumo

O objetivo deste artigo é apresentar os principais desafios e abordagens relacionados ao universo do desenvolvimento de aplicações multiplataforma, apresentando-se o contraste entre o desenvolvimento para dispositivos móveis utilizando-se APIs nativas e abstratas. Como forma de aplicação prática dos conteúdos propostos, utilizou-se como estudo de caso a implementação de um simulador visual e multiplataforma do algoritmo A*, e a programação de jogos para Android e iOS utilizando-se a API nativa.

Palavras-chave: Inteligência Artificial, web, multiplataforma, mobile, pathfinding.

Introdução

Durante a década de 70, surgem os primeiros computadores pessoais distribuídos em larga escala. O sucesso causado por empresas como Apple e IBM nesse ramo marcaria um futuro promissor para a área, já que, até então, o principal mercado de software se restringia aos Mainframes e às corporações que os utilizavam.

Nesse ponto, com a crescente demanda do mercado de software para leigos e profissionais, e com o aquecimento das gigantes produtoras de software, é possível perceber o surgimento de um futuro de aplicações visando à interoperabilidade entre os Sistemas Operacionais (SOs) e arquiteturas para vários tipos de consumidores.

Atualmente, o principal foco das tecnologias multiplataforma é a geração de software para computadores pessoais (desktops e notebooks) e dispositivos portáteis (smartphones e tablets). Além disso, o desenvolvimento de páginas web também vem utilizando-se de metodologias do gênero para a obtenção de um produto que funcione em qualquer navegador.

O primeiro passo a se tomar quando desenvolvemos um código multiplataforma é se este deverá ser desenvolvido através de um código portável (normalmente escrito em C/C++) ou se rodará sobre uma camada de abstração que deverá oferecer soluções de portabilidade para as plataformas desejadas (é o caso dos ambientes Java, .NET e os

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

navegadores web). Ambas as abordagens são amplamente utilizadas e cada uma delas possuem vantagens e desvantagens características.

Observando-se os eventos apresentados, associa-se o conceito de software multiplataforma com o processo de engenharia de um produto com alta interoperabilidade e compatibilidade entre arquiteturas e Sistemas Operacionais que, para tal, necessita seguir rigorosamente os padrões regulamentados por uma instituição que dite regras e convenções para um desenvolvimento padronizado e colaborativo entre os profissionais da área. É o caso de instituições como a W3C, ANSI e ISO.

Assim, o objetivo deste artigo é colocar em discussão os principais questionamentos relacionados ao desenvolvimento multiplataforma, apresentando como estudo de caso a programação de jogos para as plataformas de dispositivos móveis iOS e Android, visando demonstrar as características de produção de um software utilizando as APIs nativas oferecidas pelo fabricante, em contraste com a produção de um simulador visual e multiplataforma do A*, utilizando-se de recursos de abstração do código para que o mesmo seja compilado em diversas plataformas.

Na próxima sessão, apresentam-se os conceitos iniciais para o entendimento dos principais problemas relacionados à produção de um código multiplataforma, identificando também algumas diferenças entre código multiplataforma e código portável.

Descrição do Problema

Durante a pesquisa, foi constatado (ENTREVISTA COM DESENVOLVEDORES, 2013) que muitos desenvolvedores fazem confusão entre código estritamente multiplataforma e código multiplataforma portável.

No primeiro caso, envolve-se algum tipo de máquina virtual e uma linguagem híbrida, bastando à ferramenta de desenvolvimento gerar um arquivo intermediário denominado bytecode, o qual será convertido pela máquina virtual para o código final no sistema operacional específico do usuário. É o caso do ambiente de desenvolvimento Java e .NET, além dos navegadores web.

Já o código portável deve ser compilado individualmente em cada plataforma. É o que ocorre com programas multiplataforma desenvolvidos utilizando-se o C/C++ (OBILTSCHNIG, 2013). Nesse caso, o programador deverá se preocupar com detalhes mais específicos, como endianess (BETTER EXPLAINED, 2013) ou undefined behaviors (REGEHR, 2013).

Algumas soluções multiplataforma (BANERJEE, 2013) surgem como uma forma interessante de se aumentarem os lucros de uma empresa de software sobre um de seus produtos, já que traz soluções fáceis e rápidas de se colocar o software no mercado em pouco tempo e com o maior índice de rentabilidade possível.

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

Podemos destacar também que um ambiente de produção multiplataforma reduz a quantidade de profissionais especialistas necessários para cada plataforma, facilitando o esforço da equipe e o orçamento nas funcionalidades ao invés de na criação de uma base comum para as tecnologias, evitando o risco do investimento em tecnologias duvidosas, ou até mesmo naquelas em que as mudanças são constantes, como acontece em programação para dispositivos móveis (GHATOL, PATEL, 2012).

Porém, ao mesmo tempo em que estes ambientes oferecem soluções rápidas para resolução de problemas, também possuem uma série de limitações e normalmente não suportam as novas ou exclusivas funcionalidades do equipamento.

Entendido quais são os problemas e situações que envolvem o desenvolvimento multiplataforma, vamos nos concentrar em visualizar a metodologia de pesquisa utilizada para o entendimento das dificuldades encontradas no desenvolvimento nativo e utilizando-se uma camada de abstração das plataformas alvo.

Metodologia

O interesse pelas tecnologias com geração multiplataforma pelo autor surgiu em 2011, quando este iniciou uma pesquisa sobre as engines de prototipação rápida - EPR (ABREU, 2012). Nessa pesquisa, explorou-se qual era o suporte que diversas EPR possuíam sobre as plataformas de desenvolvimento mais comuns, destacando-se os Sistemas Operacionais para desktop, dispositivos móveis e web. O fruto da pesquisa foi o jogo educativo Muulti-Muu (figura 1).

Figura 1 - Muulti-Muu.

O trabalho com as EPR também foi utilizado mais tarde em uma pesquisa do autor com o objetivo de demonstrar a possibilidade de utilização das mesmas como estratégia de ensino em sala de aula através da programação de Jogos Digitais (PAULA, 2013).

O processo de pesquisa sobre desenvolvimento multiplataforma dividiu-se em duas etapas: A fase de estudo e programação para as principais plataformas, e a produção de um simulador visual do algoritmo A* para web e mobile. Observe o cronograma (figura 2):

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

Figura 2: Cronograma geral.

Em primeiro lugar, buscou-se obter uma visão geral sobre as tecnologias multiplataforma de maior utilização no mercado: Java e .NET. Em seguida, trabalhou-se durante três meses com a programação nativa para dispositivos móveis, em especial com Android e iOS, tendo como resultado gerado um jogo completo e dois protótipos. Todo o processo de desenvolvimento foi registrado em um blog (PROJETO MOBILE, 2013).

Na segunda etapa, foi iniciado o estudo do algoritmo A* (LESTER, 2013). Primeiramente, foram dedicados dois meses para a programação de estruturas de dados em C++, mais tarde reproduzidas também em script lua.

Após o processo de entendimento e implementação do algoritmo, o último passo necessário para a conclusão da pesquisa resumiu-se na produção de uma simulação visual do A* para web e dispositivos móveis. Para tal, foram dedicados dois meses para o entendimento e estudo das tecnologias de desenvolvimento web, com foco principal em HTML, CSS e JavaScript; e, por fim, um mês para a produção do simulador. Para a versão mobile, foi utilizado o Phonegap (GHATOL, ET AL, 2012) como meio de conversão do código web em aplicativo nativo.

Seguindo a linha de raciocínio, na próxima seção serão abordados quais são os aspectos gerais envolvidos no processo de desenvolvimento nativo para dispositivos móveis, destacando-se os pontos da metodologia relacionados ao tema e descritos nessa seção.

Desenvolvimento nativo para dispositivos móveis

Dentre as áreas de desenvolvimento multiplataforma atuais, a que mais se destaca é a focada em smartphones e tablets. Iniciada em 2007 pela Apple com o lançamento do iPhone, esse mercado vem crescendo de forma exponencial. A principal característica desses produtos é a sua interface multitouch.

Atualmente, os principais Sistemas Operacionais mobile são o Android e iOS. Observe as principais características deles a seguir:

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

iOS

Desenvolvido pela Apple, iOS é o Sistema Operacional mobile mais vendido (WWDC, 2013). Os principais produtos que o utilizam são o iPhone, iPad e iPod Touch. Uma das principais características do iOS é a sua grande semelhança com o Mac OS X, tendo como diferença significativa apenas o fato de que trabalha com a arquitetura ARM, normalmente utilizada em sistemas embarcados, em contraste com a arquitetura x86 e x64 suportada pelas versões mais novas do Mac OS X.

Como estudo de caso, foram desenvolvidos dois protótipos de jogo. O primeiro, denominado Crazy Race, é basicamente um jogo de apenas um botão em que o objetivo é pular os obstáculos que aparecem no caminho (figura 3). No outro protótipo, o objetivo é destruir as naves inimigas que se aproximam da nave central, pontuando-se para cada nave atingida (figura 4).

Para desenvolver os protótipos, foi necessário o estudo da linguagem Objective-C e a utilização do Xcode 4, além de um Mac com a versão 10.8 do Sistema Operacional. Um ponto interessante a se destacar é que o Crazy Race foi codificado utilizando-se o sistema automático de gerenciamento de memória, suportado apenas pelas duas últimas versões do iOS, cuja sigla é ARC (Automatic Reference Counting), enquanto que o outro jogo utiliza o gerenciamento manual.

Figura 3: Crazy Race. Figura 4: Jogo de Nave.

Atualmente, com a chegada do iOS 7 e mais de 85% dos usuários utilizando o iOS 6 (WWDC, 2013), é mais interessante investir no ARC do que no gerenciamento manual de memória.

Em geral, a tecnologia pareceu mais consolidada que o Android. A principal dificuldade foi o aprendizado da linguagem Objective-C, por ser diferente das linguagens de programação mais comuns. O emulador do sistema no Mac, comparado ao do

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

ambiente de desenvolvimento Android, é excelente. Para mais informações, consulte o blog (PROJETO MOBILE, 2013).

Android

Criado pela Google como concorrente do iOS, o Android é um Sistema Operacional Open Source baseado em Linux e desenvolvido para suportar uma grande quantidade de tipos de celulares e tablets. A principal vantagem do Android com relação ao iOS é o preço, já que o sistema é grátis e disponível para qualquer hardware.

Infelizmente, devido ao fato do Android possuir código aberto, este sistema é alvo de diversos malwares e vírus. Além disso, a sua loja virtual (Google Play) possui políticas menos severas do que a Apple Store, o que torna possível a publicação de aplicativos com uma grande quantidade de propagandas inclusas, fato este que incomoda muito os consumidores.

No caso do Android, o estudo de caso gerado foi um jogo completo: O Learning Exploder (figura 5). O objetivo do jogo é coletar letras espalhadas pelo cenário em ordem para formar uma palavra. Utilizando o acelerômetro, o usuário movimenta o peão pelo labirinto e deve completar o desafio antes que o tempo acabe, caso contrário todo o cenário explode.

Figura 5: Learning Exploder.

O jogo foi desenvolvido com um proposta educativa, pois antes do usuário iniciar a fase, uma tela contextualizando a palavra a ser descoberta descreve algumas informações a respeito do tema. Essas informações podem ser imagens, sons ou um texto. Assim, o jogo pode ser utilizado, por exemplo, como forma de ensino de inglês nas escolas, possibilitando ao aluno um ambiente interessante de memorização.

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

A versão atual do jogo contém cinco desafios relacionados à Cultura Religiosa. Ou seja, pelos sons, imagens e texto, o aluno deve descobrir qual é a religião relacionada, percorrendo o mapa para coletar as letras em ordem.

Para desenvolver o jogo, utilizou-se a IDE Eclipse para a programação em Java, o Android SDK e um Mac com a versão 10.8 do sistema. Foi construída uma framework própria sobre a SDK, com compatibilidade da versão Froyo em diante. Os dispositivos utilizados para teste foram dois celulares (Samsung Galaxi Mini e Sony Ericsson Xperia ST21i2) e um Tablet (Genesis GT-7220). Em geral, o ambiente de desenvolvimento Eclipse é muito produtivo e a linguagem Java é mais fácil com relação ao Objective-C.

A principal dificuldade foi trabalhar em compatibilidade com as versões mais antigas do Android e o emulador do sistema no Mac e PC é consideravelmente lento. Outra dificuldade foi a ausência de aceleração por hardware, pois limitamos o escopo do projeto aos recursos da SDK (em contraste com a NDK, que possibilita acesso ao OpenGL).

Contextualizado o desenvolvimento utilizando-se os métodos de programação nativos, na próxima seção, concentremo-nos em entender as facilidades e desafios no processo de produção quando utilizamos uma interface de programação abstrata, partindo-se pelo estudo de caso do simulador A* gerado.

Simulador A* multiplataforma

Como proposta de software multiplataforma, foi desenvolvido um simulador visual do algoritmo de busca A* (lê-se “a estrela”). O algoritmo representa uma das melhores soluções utilizadas para encontro do menor caminho entre dois nós de um grafo (LESTER, 2013). Na prática, isso permite que qualquer entidade de um jogo possa se deslocar de um ponto a outro, desviando de obstáculos e encontrando o menor caminho.

A principal diferença entre o A* e os demais algoritmos de busca de caminhos envolve o fato de que ele calcula a complexidade do caminho (F) com base na distância da origem (G) e do destino (H). O cálculo da distância é feito de acordo com a representação do mundo realizada, sendo normalmente aplicada a divisão do espaço em um grid, pois esta representação possibilita a utilização de heurísticas conhecidas, como a distância euclidiana ou Manhattan.

A interface do simulador pode ser vista na figura 6. Observe, na direita, os passos lógicos necessários para que o menor caminho entre a origem e o destino seja encontrado. Acima dos passos, é possível selecionar outros mapas para teste e visualização do processo de busca do menor caminho. A região inferior do simulador exibe a saída das informações mais importantes para o entendimento do algoritmo.

Os botões continuar e reiniciar controlam o fluxo iterativo do algoritmo. A cada clique no botão continuar, o mapa central exibe o processo de forma visual ao mesmo tempo em que o passo atual do algoritmo na direita muda de cor. Assim, o aluno pode

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

entender de que forma e quais são os problemas que o A* busca resolver a cada passo. Os mapas possuem os principais exemplos de caso, como, por exemplo, situações em que o algoritmo precisa desviar de obstáculos ou até mesmo em que não há caminho possível entre dois pontos.

Figura 6: Interface do simulador vista em todas as plataformas.

A produção do simulador foi realizada utilizando-se as tecnologias web estudadas ao longo do processo de pesquisa. A principal dificuldade nesse caso foi a produção de um layout que fosse exibido de forma equivalente em todos os navegadores (GOMES, 2013), em especial o Internet Explorer (IE). A versão do simulador foi produzida e testada utilizando-se cinco navegadores diferentes (Opera, Safari, IE, Firefox e Chrome).

Como estudo de portabilidade, foram geradas versões do simulador para o iOS, Android e Windows Phone utilizando-se uma API de abstração conhecida como Phonegap (GHATOL, ET AL, 2012). A principal dificuldade nesse caso foi a integração do ambiente de cada plataforma com o Phonegap, sendo que cada um dos sistemas necessitou de configurações iniciais peculiares e um código de inicialização exclusivo.

Feita a integração, o próprio Phonegap tratou de converter automaticamente as opções de input e layout normalmente utilizadas nas interfaces web por uma alternativa comum da interface do dispositivo. Por exemplo, os cliques do mouse esperado pelos botões no navegador foram substituídos pelo touch screen.

Um exemplo comparativo de interface pode ser visto no figura 7. Aqui, podemos visualizar os resultados gerados por cada plataforma quando clicamos na lista de mapas:

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

Figura 7: Display exibido ao se clicar na guia de mapas (Android, iOS, Windows Phone e Safari).

Visualizado os resultados do simulador nas diferentes plataformas, iniciemos a discussão a respeito dos produtos de pesquisa gerados.

Resultados e discussão

Observou-se ao longo do artigo como funciona o processo de produção de um software multiplataforma, destacando-se o simulador A* gerado e os estudos de caso com as plataformas nativas. Em geral, é possível perceber que a produção do software diretamente nas plataformas nativas é um trabalho árduo que requer conhecimentos peculiares de cada plataforma.

Esses resultados podem ser analisados na figura 2, onde a programação dos games diretamente para Android e iOS demorou mais tempo (três meses) do que a produção do simulador para web e mobile (dois meses). Assim, fica claro que as ferramentas abstratas de geração multiplataforma buscam facilitar o processo não somente oferecendo opções de portabilidade, mas também mecanismos mais simples de programação.

Em geral, as dificuldades da programação nativa para dispositivos móveis se resumem no aprendizado de várias linguagens de programação e rápido depreciamento das APIs, já que a cada ano surgem novas versões dos sistemas operacionais e hardwares. Esses fatores criam prazo de validade nos conhecimentos adquiridos pelo profissional da área, fazendo com que o profissional qualificado se torne mais caro e raro.

Prever o status de uma tecnologia uma década adiante normalmente é difícil, mas, por outro lado, os processos de programação serão cada vez mais automatizados por métodos ágeis de produção, como, por exemplo, as Engines de Prototipação Rápida (ABREU, 2012). Mesmo assim, ainda seremos dependentes do suporte nativo para acesso às funcionalidades mais recentes da plataforma no mercado. Outras considerações a respeito do tema podem ser vistos em (PIERRES, 2013) e (TOMAZ, 2013).

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

Discutidos os resultados a respeito da pesquisa produzida, segue adiante a conclusão do trabalho.

Conclusões

Durante o artigo, vimos que o desenvolvimento multiplataforma um processo desafiador devido aos diversos ambientes de programação envolvidos no processo de produção, sendo necessário trabalhar-se com diversas linguagens de programação, sistemas operacionais e múltiplos equipamentos para teste do software.

Para contextualizar esse processo, observamos as características do desenvolvimento para dispositivos móveis com um estudo de caso envolvendo a programação de um jogo para duas plataformas: Android e iOS.

No caso do Android, vimos claramente as dificuldades do processo de desenvolvimento multiplataforma, devido à tecnologia possuir um número considerável de usuários utilizando versões mais antigas do sistema operacional, além da maior gama de arquiteturas diferentes suportadas, cada uma com suas peculiaridades de desempenho e input. Vimos também que esses problemas são sensivelmente minimizados no iOS, devido ao fato da Apple apoiar um sistema de arquitetura fechada, com politicas que facilitam o upgrade pelo usuário do sistema para as versões mais recentes.

Foi observado também que o uso de ferramentas como o Phonegap criou o mercado de web apps em contraste com o mercado dos desenvolvedores de native apps (TOMAZ, 2013), concluindo-se que a ferramenta deve ser utilizada em projetos que não requerem acesso aos recursos exclusivos ou muito recentes da plataforma alvo.

Como aplicação prática, foi proposto a criação de um simulador visual do Algoritmo A* para web e dispositivos móveis, obtendo-se resultados satisfatórios para o nível atual da pesquisa. O simulador ainda não se encontra na versão final, sendo ainda necessário um maior tempo de aplicação do mesmo em sala de aula a fim de testar sua eficácia quanto ferramenta didática. Também é necessário a produção de uma versão com layouts mais acessíveis aos usuários de dispositivos móveis.

Concluindo, a área de desenvolvimento multiplataforma deve ser do interesse de todos os profissionais relacionados à Computação que visem o aumento de seus lucros e a produtividade da sua equipe.

Agradecimentos

Agradeço ao Instituto de Tecnologia do Paraná e à Fundação Araucária pela oportunidade. Também agradeço à minha sempre presente amiga Keli Leal da Cruz pelo apoio em todos os projetos que já trabalhamos juntos. Aos colegas de setor do CESI, em especial ao meu orientador Bruno Campagnolo de Paula, ofereço um sincero abraço pelo constante apoio na realização destes projetos. Também agradeço à bolsista Mariana Prendin pela produção do layout utilizado no simulador.

Instituto de Tecnologia do Paraná, Rua Prof. Algacyr Munhoz Mader, nº 3775, CIC.

CEP 81350-010 Curitiba, Paraná, Brasil. Telefone (041) 3316-3000, Fax (041) 3576-1923

Referências bibliográficas

ABREU, R. S. Pesquisando a viabilidade de utilização de engines de prototipação rápida na geração de jogos sérios. Trabalho apresentado no seminário de integração Técnico-Científica, Curitiba, 2012. BANERJEE, U. Cross-Platform Mobile Game Development – a Tool Comparison. [Consulta 07-07-2013]. Disponível na www: <URL: http://setandbma.wordpress.com/2012/03/19/mobile-game-development-tool-comparison>.

BETTER EXPLAINED. Understanding big and little endian byte order. [Consulta 03-07-2013]. Disponível na www: <URL: http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order>. ENTREVISTA COM DESENVOLVEDORES. [Consulta 26-07-2013]. Disponível na www: <http://www.4shared.com/office/_hmynDBB/Entrevistas.html>. GHATOL, R, PATEL, Y. Beginning PhoneGap Mobile Web Framework for JavaScript and HTML5. Apress, 2012. GOMES, A. C. Os desafios do design para web multiplataforma. [Consulta 07-07-2013]. Disponível na www: <URL: http://www.agenciaopen.com/blog/os-desafios-do-design-para-web-multiplataforma>. LESTER, P. A * Pathfinding para Iniciantes. [Consulta 07-07-2013]. Disponível na www: <URL: http://www.policyalmanac.org/games/aStarTutorial_port.htm>. OBILTSCHNIG, G. Designing and Building Portable Systems in C++. Applied Informatics. [Consulta 07-07-2013]. Disponível na www: <URL: http://www.appinf.com/download/PortableSystems.pdf>. PAULA, B. C, ABREU, R. S. Contextualizando o desenvolvimento de jogos digitais como estratégia de ensino e aprendizagem. Trabalho apresentado no IX seminário de jogos eletrônicos, educação e comunicação, Bahia, 2013. [Consulta 07-07-2013]. Disponível na www: <URL: http://www.comunidadesvirtuais.pro.br/seminario-jogos/2013/trabalhos-aprovados>. PIERRES, A. Cross-Platform Development Considerations. Mobile Tuts, 2011. [Consulta 07-07-2013]. Disponível na www: <URL: http://mobile.tutsplus.com/articles/theory/cross-platform-development-considerations>. PROJETO MOBILE. [Consulta 07-07-2013]. Disponível na www: <URL: http://letsgotothemobile.blogspot.com.br>. REGEHR, J. A Guide to Undefined Behavior in C and C++. [Consulta 08-07-2013]. Disponível na www: <URL: http://blog.regehr.org/archives/213>. TOMAZ, D. Na crista da onda: Web Mobile Apps ou Native Apps? [Consulta 07-07-2013]. Disponível na www: <URL: http://debulhado.wordpress.com/2012/05/01/na-crista-da-onda-web-mobile-apps-ou-native-apps>. WWDC. Keynote. [Consulta 07-07-2013]. Disponível na www: <URL: https://developer.apple.com/wwdc/videos/index.php?id=100>.