No Gravity

No Graviti

Simplesmente impressionante!!!

Foi o que eu disse ao ver esse jogo rodar no psp, é um jogo no estilo arcade space shooter.

O jogo foi criado pela empresa realtech-vr que a princípio fez o jogo cross-plataform, rodando em Windows, Macintosh e Linux, e agora acabaram de portar o jogo para PSP.

A qualidade de efeitos no jogo impressiona, mesmo para quem não curte space shooter (eu), mas foi muito legal ver parte do potencial do PSP sendo usado por um Homebrew.

ScreenShots : Screens
Video : video
Download p/ PSP: demo
Download Linux/Mac/Win : Game

Angel – PopCap

Abertura Angel

Depois de muito tempo sem postar, estou de volta.

Fiz mais um joguinho utilizando o framework PopCap , é um jogo bem simples, o tema é meio bonitinho(lê se gay), mas foi feito para minha namorada, então está valendo, pelo menos ela gostou bastante.

O jogo é bem simples, você é um anjo e tem que coletar os corações rosas, de tempos em tempos aparece um dourado que vale mais pontos, os roxos causam perda de 10 pontos e 1 vida.

O jogo possui apenas 1 fase, por enquanto, assim que tiver tempo irei implementar mais algumas.

Ainda estou devendo alguns tutoriais de popcap no blog, estou estudando a biblioteca mais a fundo para entender o máximo possível, mas em breve colocarei alguns tutoriais simples de como utilizar a TDJD extensions por exemplo, ou como carregar uma imagem, fonte, etc, criar uma animação, tocar um som.

Bem para quem quiser ver o joguinho do anjo o link está abaixo:

http://www.badongo.com/file/2373977

Tiled Game

Tiles

Antigamente para se programar jogos para video games ou até mesmo aqueles pcs antigos (Amiga, etc) era preciso economizar no tamanho das imagens, pois as mesmas poderiam deixar o jogo muito lento a ponto de travar.
Foi pensando nisso que inventaram os tiled game, nada mais são do que pedaços a serem utilizados para montar um cenário, como por exemplo Sonic, Super Mario Bros, entre outros.
Tutoriais sobre o assunto são muito raros, na maioria das engines o pessoal procura deixar um programinha pronto para pegar sua imagem inteira e gerar apenas os pedaços e a matriz da imagem final.
Pensando nisso Tony decidiu fazer um site explicando sobre o assunto, embora seja voltado para Flash + actionScript é possível se ter uma idéia de como funciona e aplicar para outras linguagens, segue o link abaixo e bom estudo:

http://www.tonypa.pri.ee/tbw/start.html

O brasileiro Orlando Leite resolveu traduzir esta documentação para o portugues-br, mas a mesma ainda não está completa, caso você prefira aqui está o link:

http://orlleite.googlepages.com/start

Criando Menu com OSLib

Hoje mostrarei com criar um menu simples utilizando a biblioteca OSLib.

O resultado final que teremos é este:
Menu OSLib

Entendo este fonte você estará apto a trabalhar com imagens, texto em console, movimentação de imagem, controles.
Eis o codigo fonte:

main.c

/*
Exemplo de menu utilizando OSLib
Autor : Ney Estrabelli
Data  : 10/02/07
*/

#include 

PSP_MODULE_INFO("Tutorial Menu by Old!", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

void menu();

int main()
{
oslInit(0);  //inicia a biblioteca
oslInitGfx(OSL_PF_8888, 1); // seta o tipo de grafico
oslSetTransparentColor(RGB(255,0,255)); // seta a cor transparente
oslInitConsole();  // inicia o texto em console
menu();            // chama a função menu
oslEndGfx();      // finaliza os gráficos
oslQuit();       //  finaliza a biblioteca
return 0;
}

void menu(){
OSL_IMAGE  *textos, *bg; //definimos os ponteiros para imagens
//carregamos as imagens
textos   = oslLoadImageFile("./imagens/textos.png", OSL_IN_RAM, OSL_PF_5551);
bg       = oslLoadImageFile("./imagens/bg.png", OSL_IN_RAM, OSL_PF_5551);
textos->x = 260;     //definimos a posição x da imagem de textos
textos->y = 100;     //definimos a posição y da imagem de textos
bg->x = 252;         //definimos a posição x da imagem bg
bg->y = 72;          //definimos a posição y da imagem bg
int posMenu = 0;     //variavel de posição do menu
while (!osl_quit)
{
oslStartDrawing(); //iniciamos o desenho em tela
oslDrawGradientRect(0,0,480,272,RGB(0,0,0),RGB(255,255,255),RGB(255,255,255),RGB(0,0,0)); //desenha o fundo com gradiente preto e branco
oslDrawImage(bg);       //desenhamos o bg
oslDrawImage(textos);   //desenhamos os textos
oslReadKeys();            //inciamos os botoes
oslPrintf_xy(0, 0, "y = %i", bg->y);           //escrevemos a posição y da imagem bg
oslPrintf_xy(0, 20, "posMenu = %i", posMenu); //escrevemos a posição do menu
if (osl_keys->pressed.down) { //se for pressionado para baixo
switch(posMenu) { //verficamos a posição do menu
case 0:
bg->y = 115;  //desenhamos bg embaixo de instrucoes
posMenu = 1;  //setamos  a posição do posMenu para 1
break;
case 1:
bg->y = 155;  //desenhamos bg embaixo de opcoes
posMenu = 2;  //setamos  a posição do posMenu para 2
break;
case 2:
bg->y = 198;  //desenhamos bg embaixo de creditos
posMenu = 3; //setamos  a posição do posMenu para 3
break;
case 3:
bg->y = 198;  // mantemos o bg desenhado em creditos / aqui poderia voltar para 72
posMenu = 3; //mantemos o valor / aqui poderia voltar para 0
break;
}
}
if (osl_keys->pressed.up) { //se for pressionado para cima
switch(posMenu) { //mesma checagem anterior, porém ao apertar para cima
case 0:
bg->y = 72;
posMenu = 0;
break;
case 1:
bg->y = 72;
posMenu = 0;
break;
case 2:
bg->y = 115;
posMenu = 1;
break;
case 3:
bg->y = 155;
posMenu = 2;
break;
}
}
if (osl_keys->pressed.select) {       //se for pressionado select, tira uma screenshot
oslWriteImageFile(OSL_SECONDARY_BUFFER, "screenshot.png", 0); //grava a screenshot
}
if (osl_keys->pressed.start) oslQuit();    //se for pressionado start sai do programa, voltando pro XMB
oslEndDrawing(); //finaliza a função de desenhar na tela
oslSyncFrame(); //sincroniza os frames
}

}

o makefile:

TARGET = main
OBJS = main.o

INCDIR =
CFLAGS = -G4 -Wall -O2
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LDFLAGS =
STDLIBS= -losl -lpng -lz \
-lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm
LIBS=$(STDLIBS)$(YOURLIBS)


EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = "Exemplo Menu"


PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

Como de costume, não irei explicar passo a passo pois o código fonte já está muito bem comentado, caso você tenha alguma dúvida, não deixe de perguntar, mais info sobre a biblioteca consulte : Documentação OSLib-pt-BR

Para baixar os arquivos de exemplo(source) + versão para rodar no psp com firmware custom OE****

Menu OSLib by Old!

Procurando algum livro específico??

Bem vindo a internet!!!

Estava procurando algum livro que tivesse boas noções de J2ME, e graças a nossa boa internet descobri 2 super sites que tem de tudo, desde centenas de livros específicos para game programming a linux, windows, samba, etc.

Eis aqui as 2 bibliotecas:
http://www.flazx.com/

http://www.itebookhome.com/

Para a área de games tem um acervo bem grande, verifique estes links:

http://www.itebookhome.com/gameGeneral.asp

http://www.flazx.com/category36.php

Destaque para os livros :

AI for Game Developers     ótimo livro sobre Inteligência Artificial
Creating Games in C++ : A Step-by-Step Guide     Livro muito bom, primeiro que fiz o download tem ótimos exemplos para se começar a programar

Game Design Um ótimo livro sobre game design, não sou muito chegado nesta área, mas pelo que li gostei um pouco

E para j2me fica a sua escolha, veja o acervo :

J2me

World Domination Battle

World Domination Battle

Estava um pouco cansado hoje e decidi ler algumas matérias….
E Passando pelo blog da Cuba Games vi este jogo World Domination Battle muito bom por sinal.

O objetivo do jogo é dominar o mundo com um dos “maiores lideres”, entre a seleção de personagens é possivel selecionar Fidel Castro, Bill Gates, Bush, Osama Bin Laden, Hitler, entre outros, todos com golpes relativos a suas caracteristicas, como por exemplo:

Fidel Castro : atira garrafas
Osama Bin Laden : atira avioes
Bill Gates : (não faz nada, rs) controla apenas seus robos “Windows”
Bush : age com um macaco e ainda tem auxilio de seu pai para matar o oponente.

Este jogo foi bem criativo, e você se diverte bastante com as comemorações.
Parabéns ao criador.
.

Biblioteca OSLib

OSLib Logo

Como comentei anteriormente a OSLib é uma biblioteca que facilita o desenvolvimento de jogos para psp.

Para instalar aconselho a baixar o pack completo já com o cygwin segue os links:

Parte 1 Parte 2

Mas caso você queira instalar do 0 (zero), você pode fazer o download em:

OSLib

Os passos da instalação você pode acompanhar no forum francês playeradvance:
http://www.playeradvance.org/forum/showthread.php?t=2172

Embora o texto esteja em francês com as imagens é fácil identificar, inclusive ensina como utilizar o visual C++ para compilar os projetos.

A OSLib possui alguns exemplos que te ensinam a manipular imagens, utilizar tiles, tocar sons, escrever textos, etc.
Como a biblioteca tem funções diferentes das padrões do PSPSDK, irei postar um novo HelloWorld, comentando apenas o que mudou (quase tudo):

Começando pelo Makefile :

TARGET = test
OBJS = main.o

INCDIR =
CFLAGS = -G4 -Wall -O2
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LDFLAGS =
STDLIBS= -losl -lpng -lz
-lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm
LIBS=$(STDLIBS)$(YOURLIBS)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = test
PSP_EBOOT_ICON = ICON0.png

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

No makefile a unica mudança radical está em STDLIBS , que agora tem todas as bibliotecas utilizada pela OSLib.

Vamos ao novo Hello World:

//include da biblioteca
#include

//os callbacks (lembram do tanto de linhas no anterior???)
PSP_MODULE_INFO("HelloWorld", 0, 1, 1); // titulo do seu programa
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int main()
{
//iniciamos a biblioteca
oslInit(0);

//iniciamos o modulo gráfico
oslInitGfx(OSL_PF_8888, 0);

//iniciamos o console de texto
oslInitConsole();

//escrevemos hello world na tela
oslPrintf("Hello World");

//aguardamos algum botão ser pressionado
oslWaitKey();

//encerramos o aplicativo
oslEndGfx();
oslQuit();
return 0;
}

Deu para notar a diferença de tamanho do Hello World??
O código ficou bem mais limpo, porém tem a mesma funcionalidade do primeiro Hello World .
Se você quiser entender mais sobre a OSLib eu disponibilizei a documentação, parcialmente em Português-BR (quem quiser ajudar a traduzir, dá um toque).

Caso você tenha alguma dúvida, entre em contato comigo ou utilize o forum da PlayerAdvance embora esteja em francês tem um pessoal lá que fala inglês e estão prontos para responder suas dúvidas.

Boa sorte e até o próximo.

Créditos ao Yodajr da playeradvance pelo exemplo.

Mario Coins to PSP v.2.0 + OSLib

Andei procurando alguma biblioteca que ajudasse no desenvolvimento de jogos para PSP, e acabei por encontrar a Oldschool Library (para os mais chegados OSLib), é uma biblioteca fantástica que abstrai bastante coisa em que não se precisa mexer, além de facilitar o desenvolvimento com suas funções bem feitas.
Bem não vou ficar falando muito da biblioteca, pretendo postar alguns exemplos, quem quiser se arriscar a utilizá-la você pode baixar aqui, eu comecei a traduzir a documentação (quem quiser ajudar entre em contato), e você pode checá-la em OSLib-PT_BR .

Voltando ao Mario Coins, para testar a biblioteca resolvi codificar novamente utilizando a mesma, no inicio foi meio estranho, mas logo me acostumei, foi uma maravilha não ter que lembrar dos CALLBACK (threads do PSP), na OSLib basta colocar um comando e pronto, não precisa daquelas 20 linhas de código..rs.

Melhorias da Versão 2.0:

– as sprites do Mario agora estão em uma sheet (1 unica imagem) não separadas como antes
– O menu foi modificado com som de seleção (achei mais bonito agora)
– O Loop do som foi corrigido, agora quando a musica termina, já começa a tocar novamente (nem parece que acaba)
– Na tela de game over agora é possível tirar screenshot, apertando SELECT, a mesma será gravada na pasta screenshots.
– Alterei os créditos
– agora tem splash screen (tanto meu, quanto da OSLib)

Bem é isso, espero que vocês gostem, segue abaixo mais algumas screens, agora com qualidade (rs):

Menu - Mario Coins 2
Novo Menu
Leia Mais

Tutorial PSPSDK – Movimentação de Sprites

Hoje iremos aprender como trabalhar com SpriteSheets (folha de sprites) no PSPSDK como esta abaixo:

SpriteSheet Ryu

O PSPSDK possui um biblioteca gráfica que trabalha com imagens png com canais alpha.
Baixe esta classe de graphics :

Graphics

O que vamos utilizar da Graphics?

– Image*
– blitAlphaImageToScreen(int sx, int sy, int width, int height, Image* source, int dx, int dy);

Apenas isto, sendo o Image* (ponteiro para o arquivo de imagem), e o blitAlphaImageToScreen (função que irá desenhar na tela a imagem)

Leia Mais

Mario Coins to PSP + Source

Mario Coins

Liberei a versão 1.0 não consegui fazer tudo o que eu queria, espero que alguém interessado consiga.
Junto com o jogo está disponível o source, caso alguém venha fazer melhorias, me avise para que eu possa atualizar os outros sites onde divulguei.
Por favor considerem os créditos,  o arquivo de licença está junto ao download.

Não consegui fazer a animação de morte, e também não consegui inserir o som de perda de vidas (começou a travar, então deixei quieto).

Bem no mais, o jogo está bacana, foi uma conquista tremenda para mim, ficou muito melhor que a versão para PC.

Talvez irei fazer as mesmas implementações na versão de PC também.

Boa sorte para quem for se arriscar a mexer nele, qualquer dúvida, estou a disposição.

caso deseje compilá-lo em seu ambiente, será necessário as seguintes bibliotecas:

– mikmodlib ( sons wav)
– libmad ( necessário para sons)
– freetype ( fontes true type)
– libpng ( imagens)

E aqui o download da versão 1.0 + src:

Para custom Firmwares:

http://www.badongo.com/file/2078046

Para Firmware 1.50:

http://www.badongo.com/file/2078039

Caso eu faça atualizações estarei postando aqui.