Header Ads

Como fazer jogos para o PSP com o Flash

Tá, não é exatamente o desenvolvimento de um jogo para o console, mas dá para fazer um bem bolado.
Postado: na M.Cassab
Estado: falta muito para Abril ?
Jogando: SD Gundam G Generation (PSP)

Agora que terminei de publicar as fotos dos meus SDs Gundam, fiquei essa semana com uns dois dias com a hora do almoço livre.

Felicidade de pobre dura pouco. Já começaram as aulas na UNIP e logo-logo voltarei para o ritmo alucinante de costumo, mas esses dois dias foram bem proveitosos.

Na teça-feira, estava em um momento de reflexão espiritual, debatendo questões filosóficas com meu-eu-interior... na verdade, estava no banheiro fazendo coisas que só eu poderia fazer e jogando PSP enquanto não terminava.

Enquanto jogava, pensei: "bem que poderia descobrir como fazer um jogo para o PSP".

Como já havia experimentado fazer jogos para o Nintendo Wii, sabia que todo videogame que possui um navegador para internet também tem o Flash Player instalado. Isso significa que qualquer coisa que fizer no Flash roda.

A questão era: como fazer para capturar as entradas de comandos durante o jogo?

O problema não era fazer o jogo, isso é relativamente fácil depois que se tem prática. O maior problema é identificar quando o jogador aperta um botão.

comentei que no Wii isso se tornou frustrante, pois a interação é feita como se fosse um mouse e o legal seria aproveitar as entradas de comandos do Wii-Mote.

Porém, parece que o Flash não recebe os sinais de balanço do controle. Se recebe, ninguém explicou como.

Sendo assim, aproveitei esses dois dias de vácuo mental para pesquisar um pouco sobre o assunto.

O legal é que acabei encontrando no próprio site da Adobe um artigo escrito por Jeff Nusz sobre desenvolvimento de jogos para o PSP com o Flash.

Mesmo assim, ele não explica exatamente como isso deve ser feito, mas é um texto interessante.

Para ajudar aqueles que tem interesse em criar jogos com o Flash, e organizar meu raciocínio, vou comentar os principais pontos que são precisos conhecer para iniciar o desenvolvimento.

Lembrando de que os conceitos básicos de Game Design continuam os mesmos. Por isso, só estou me preocupando com as características específicas de como fazer um jogo funcionar no PSP.

Vamos as considerações:

1 - Isso não é um jogo do PSP

Pode parecer estranho, mas você não fará um jogo para o PSP com o Flash.

Para isso, seria preciso um programa com linguagem de alta plataforma, complexo e robusto, seguindo convenções de desenvolvimento para criar classes e objetos encapsulados que serão executados pelo sistema do console.

É tudo muito complexo. Chega até ser difícil de explicar.

A diferença entre desenvolver um jogo e um programa de computador é o tipo de interação com o usuário (jogador no nosso caso).

De resto, é tudo muito parecido: ambiente controlado para testes, classes, objetos, procedures, debug, rebuid, algarítimos, etc.

O Flash, por mais que tenha evoluído, não é um programa de desenvolvimento de alta performance.

O que é possível fazer é criar um arquivo interativo limitados para a internet, exatamente como sempre fazemos.

O segredo é criá-lo de acordo com as configurações do PSP, permitindo utilizar os recursos de seu navegador.

Resumindo: é um jogo para internet que roda em um aparelho móvel.

Como o PSP tem um navegador decente, vai dar um pouco menos de dor de cabeça fazer jogos para ele do que para celulares.


2 - Design

A primeira coisa que deve saber é que a tela do PSP mede 480 x 272 pixels.

Porém, assim como no monitor de qualquer aparelho (incluindo a TV), a posição do cursor e o plástico da estrutura externa do console come uns 5 pixels.

Por isso, aconselho a configurar o palco com 475 x 265 pixels para evitar que o cursor vá parar em um ponto que não fique visível.

Além disso, temos a questão da velocidade, um problema latente no Flash.

O PSP (pelo menos o N-3000 series) tem uma freqüência de 333MHz e uma memória interna de 64MB.

Para os jogos desenvolvidos especificamente para o console, isso é perfeito. Porém, não se esqueça de que o jogo não será executado diretamente pelo sistema do PSP, mas sim por seu navegador.

Isso significa que não podemos deixar o arquivo muito pesado.

Ainda precisamos tomar cuidado com os degrades e arquivos de imagem e som anexados.

Por isso, dê preferência a cores chapadas, ilustrações vetorizadas, som apenas em MP3 e, se precisar utilizar imagens, dê preferência ao JPG e PNG (esse apenas se precisar de transparência).

Assim, evitamos forçar o processador e causar aqueles travamentos incômodos.

3 - Navegador

Segundo o próprio site da Sony, o navegador do PSP só possui o plug-in do Flash Player 6, isso significa que você só poderá utilizar os elementos de programação do AcionScript 2.

E isso reforça ainda mais minha opinião de que o Macromedia Flash MX continua sendo a melhor versão de todas e que, apensar do AcionScript 3 ter evoluído muito no aspecto de processamento, a versão 2 ainda é melhor, pois é mais simples e roda em todos os navegadores.

Quando digo isso em minhas aulas, sempre tem um aluno que se acha mais esperto e diz que AcionScript 3 é melhor sim e começa a dizer coisas que ele só sabe porque leu em algum lugar.

É que tem gente que fica impressionada com novas tecnologias, mas é tudo complexidade barata e sem necessidade.

Trabalho com Flash desde a versão 4 e sei do que estou falando por experiência. Isso ai é só uma pequena prova disso.

O que importa é a programação não poderá utilizar elementos da linguagem mais atual, pois o console não possui recurso.

Se bem que, o AcionScript 2 não deve nada para o atual.

Portanto, se você fez bico, então larga a mão de ser folgado. Quem sabe fazer de verdade se vira com o que tem.

Na época do Atari, Nitendinho e Master System, não existiam tantas entradas de comando como há hoje e os jogos eram muito legais.

O que conta é a criatividade, não a programação.

Mudando um pouco de assunto, vale ressaltar que apenas o PSP N-3000 tem o Flash Player ativo.

Estive lendo alguns comentários em fóruns e parece que no modelo PSP N-1000 e N-2000, tanto o Fat quanto o Slim, o plug-in precisa ser habilitando em algum lugar nas configurações.

Eu tenho o PSP N-3000 Slim e funcionou automaticamente, não precisei mexer nas configurações.

Pode ser que nas versões mais antigas seu SWF não funcione. Por isso, é bom saber melhor sobre isso antes de distribuir seu jogo.

4 - Entrada de controles

O navegador do PSP tem uma característica que vai limitar um pouco seus planos: não é possível utilizar todos os botões.

O problema é que alguns botões possuem funções específicas, como fechar o navegador ou abrir as opções.

Por este motivo, só podemos contar com o botão X, o direcional e o Analog Stick.

Mas sejamos francos, só o direcional tem quatro botões, logo, teremos cinco no total.

Tudo bem, precisamos tirar o dedão do analógico para apertar o direcional e isso quebra o ritmo, mas com criatividade dá para resolver essa questão de jogabilidade.

Mas isso oferece uma outra vantagem, pois o analógico é capturado com os comandos de mouse e o botão X nada mais é do que o clique esquerdo.

Para receber os comandos dos botões direcionais, vamos utilizar o Key.getCode();, que é o mesmo elemento utilizado para capturar uma entrada do direcional no teclado do computador.

Veja os códigos de cada botão no direcional:

  • Up = 38

  • Down = 40

  • Left = 37

  • Right = 39


Sobre o analógico, ainda estou pensando como aproveitar todas as possibilidades que o Analog Stick oferece.

Na programação de um jogo de verdade para o PSP, além da posição X e Y, também é verificado quantos graus o analógico é deslocado.

Por exemplo, quando o analógico está em repouso, é indicado que sua posição está 0º. Porém, quando o jogador move para frente, seu marcador passa a indicar 90º.

Com isso, os programadores podem gerar uma interação com 360º na movimentação entre o jogador e o ambiente.

Além disso, o Analog Stick possui três pontos de pressão que indicam a intensidade que o jogador o pressiona.

Ao jogar God of War, por exemplo, se você mover bem um pouco para frente, o Kratos (personagem do jogo) andará de mansinho; se mover mais um pouco, andará normalmente; se mover o analógico até o máximo, ele correrá.

Sinceramente, não consigo pensar em alguma coisa prática para simular isso. Estou sentido que serei obrigado a recorrer a matemática e fazer umas contas bem chatas para resolver isso... adoro matemática...

5 - Teste de controles

Na época em que fiz alguns jogos para celular, também passei um tempo pesquisando sobre como receber as entradas de controle do aparelho.

Na oportunidade, descobri que cada aparelho poderia ter um tipo de código diferente para cada botão.

Isso me lembrou de uma entrevista que fiz na empresa Microways. No dia, um carinha estava desenvolvendo um jogo e testando em uns cinco celulares ao mesmo tempo. Fico imaginando o tipo de situação que essa incompatibilidade entre aparelhos de marcas diferentes impacta no dia-a-dia de quem trabalha com isso.

Quanto estava experimentando fazer jogos com o Flash Lite, criei uma programação para me ajudar a descobrir as possíveis entradas de comandos possíveis em um aparelho.

Utilizei a mesma programação no PSP e funcionou perfeitamente. Só para avisar, o código é simples e despretensioso, feito só para teste mesmo, sem me preocupar com performance ou lógica.

Configure seu palco para 480 x 272 pixels.

Eu sei que disse para deixar com 5 pixels a menos, mas isso é só para você ver no que vai dar.

Depois, coloque no palco 5 caixas de texto dinâmicas, que utilizaremos para exibir as informações de entrada.

É interessante colocar caixas de texto extáticas na frente para saber o que essas informações significam.

Na imagem abaixo, eu usei uma foto genérica do PSP que achei na internet e coloquei as caixas de texto na tela só para fazer graça.

Palco no Flash

No exemplo, eu dei os seguintes nomes para cada caixa:

  • txt_width: para receber a largura tamanho total da tela;

  • txt_height: para receber a altura tamanho total da tela;

  • txt_x: para receber a posição X do cursor;

  • txt_y: para receber a posição Y do cursor;

  • txt_code: para receber o código do botão pressionado.



Depois que fez isso, crie uma nova camada para inserir a seguinte ActionScript:

// criar um objeto para receber as entradas de comando
var verifica_entrada:Object = new Object();

//exibir as dimensões da tela em suas caixas de texto
_root.txt_width.text = Stage.width;
_root.txt_height.text = Stage.height;
_root.txt_code.text = "";

//adicionar uma função no objeto que receberá o comando assim que apertarem um botão
verifica_entrada.onKeyDown = function(){
     entrada = Key.getCode();
     _root.txt_code.text = entrada;
};

//adicionar uma função no objeto que limpará a caixa de texto assim que soltarem o botão
verifica_entrada.onKeyUp = function(){
     _root.txt_code.text = "";
};

//iniciar as funções de entrada
Key.addListener(verifica_entrada);

//forçar a exibição da posição do cursor em suas caixa de texto
_root.onEnterFrame = function(){
     _root.txt_x.text = _root._xmouse;
     _root.txt_y.text = _root._ymouse;
}


6 - Gravação do arquivo e acesso

Depois que terminou, testou e publicou, você terá que salvar o arquivo no cartão SD do seu PSP.

Não se esqueça de que precisa publicar o SWF para o Flash Player 6 e com ActionScript 2.

Normalmente, quem tem o PSP desbloqueado, costuma salvar tudo o que é tranqueira no diretório GAME, mas você pode salvar em qualquer lugar.

Para facilitar sua vida, aconselho criar uma página HTML para servir como índice de seus jogos. O navegador não lista os arquivos dentro de um diretório como acontece em um computador, o acesso é feito diretamente no arquivo.

Utilizando um índice, fica mais fácil para visualizar o conteúdo. Mesmo porque, odeio o teclado virtual do PSP.

Ligando o PSP, acesso o navegador e digite no endereço o local em que seu arquivo está gravado.

O cartão SD é acessado pelo endereço file:/. Então, basta completar com o restante.

Eu sempre gravo tudo que é porcaria no diretório GAME. Dentro, criei uma pasta chamada flash para agrupar todos os meus jogos e salvei arquivo de índice com o nome de jogos.html, portanto, o meu endereço ficou assim:

file:/PSP/GAME/flash/jogos.html

Pronto.

Agora, fique apertando os botões para ver no que dá.

Conclusão

Fazer jogos para o PSP usando o Flash é praticamente a mesma coisa do que fazer para a internet.

O desafio está em criar uma jogabilidade aproveitando os comandos de entradas possíveis.

Outra coisa que descobri é o fato de não ser possível utilizar o SharedObjects, comando que salva registros.

Isso sim eu considero um problema.

Existe uma forma para contornar isso, mas seria necessário que o PSP estivesse conectado na internet e utilizar um banco de dados.

Não vejo vantagem nisso. Se for para obrigar o jogador a usar a internet, seria mais fácil hospedar o jogo em algum provedor.

Mesmo assim, para jogos simples, utilizar o Flash ainda é interessante.

Vou continuar pesquisando formas melhores (leia mais inteligente) de fazer um jogo e salvar seu progresso.

Se descobrir, volto aqui e atualizo a postagem.

Um comentário:

  1. Sou leigo em programação para o flash, estava pensando se era possível criar emuladores para ele, mas li que não é possível usar todos os botões, sem falar que não dá para salvar registros. Uma pena. ótimo post!!!

    ResponderExcluir

Tecnologia do Blogger.