OSLib 2.0 alpha

Nosso grande amigo Brunni, desenvolvedor da OSLib lançou sua nova versão 2.0, dentre as melhorias que seguem abaixo, agora a documentação está completa (quem quiser me ajudar novamente com a tradução, entre em contato).

  • osl_keys->pressed.thing foi substituído pelo osl_pad.pressed.thing ( o método antigo as vezes não funcionava)
  • Suporte a novos tipos de audio : MOD, S3M, IT and XM! Cuidado apenas
    um tipo desses pode ser carregado. Apenas bgm e wav podem ser multiplos
  • VRAM Manager , agora você pode fazer carregar e descarregar as imagens da VRAM em qualquer ordem. E Possível desabilitar.
  • Agora você pode carregar a paleta de imagens, criar uma paleta de uma cor, e converter para outros formatos de imagem!
  • Desenhar e ler single pixel das imagens
  • Você pode dar display de uma mensagem de erro caso algum arquivo não tenha sido carregado.
  • Suporte a mapa de tile invertido
  • Otimizado a rotina de desenho de mapas.Tão rapidamente quanto o “oslDrawMapSimple” , porém com algumas limitações.
  • Novo formato de font 4-bit: Você pode indicar os caracteres que podem ser matizados.
  • Nova engine de texto, funcionando mais rapidamente, exceto se você setar uma cor de fundo não totalmente transparente.
  • Display de imagens mais rápido. Imagens rotacionadas, escaladas são desenhadas tão rapidas como o oslDrawImageSimple Agora os cálculos de coordenadas são mais precisos dando um ar de “Smooth” (liso)
  • Novo mixer de som. Ao iniciar um novo som em um canal já utilizado, o mesmo parará.
  • Novo efeito OSL_FX_TINT, serve para pintar os objetos.
  • Novas variáveis OSL_SCREEN_WIDTH / HEIGHT (depende do drawbuffer corrente)
  • Agora é possível definir o framerate
  • Dithering pode ser ligado / desligado (desligado por padrão).
  • A resolução pode ser alterada (basta chamar oslInitGfx novamente)!
  • O tamanho da lista de display pode ser redefinida (algumas instruções antes do oslSyncDrawing são necessárias)
  • oslInit possui novos argumentos para tornar a OSLib menos intrusiva
  • Novas funções de texto(GetStringWidth, …).
  • Novo file system. Agora você pode carregar um arquivo da memória ou de um dispositivo criado por você.
  • Agora é possível definir um valor alpha para setar o drawbuffer para pixels desenhados.
  • Melhora e codigo mais limpo na sincronização.
  • Você não verá mais um flicker no topo ao carrgar um som que use mais da CPU

Download : OSLib 2.0

Para instalar é bem simples, se você estiver usando o devkitpro, basta executar Install_devkitpro.bat se estiver usando Cygwin
Install_cygwin.bat , lembrando que se você instalou em diretórios diferentes é necessário alterar o .bat e informar o PSPSDKDIR.

Powered by ScribeFire.

Mario Coins 2 beta 0.01

Qto tempo hein??
Facu é muita correria, mas assim que possível consigo colocar algo neste blog paradão.
Bem como algumas pessoas pediram para eu dar um upgrade no Mario Coins, acabei criando a versão 2, ainda em beta 0.01.
Ainda vou fazer ele pular, provavelmente no beta 0.02 já esteje ok.
Por enquanto só dei uma arrumada, acabei com a miséria de objetos na tela, o maior motivo da alteração foi devido meu jogo estar no site da Unicsul, e como a primeira versão era bem toska, e não tinha nem loading, demorava um bom tempo para o jogo iniciar.

Abaixo os novos “features”:

– adicionado loading (thanks Wagner)
– adicionado cenários (procurei deixar um pouco mais parecido com a versão do PSP)
– agora o jogo tem objetivo (embora seja chato)
– corrigido a animação do personagem (mario)
– adicionado animações nos inimigos
– novos sons
– criado instalador

Em breve a versão beta 0.02 ou final (vai saber)

Abaixo segue o link para o instalador:

Mario Coins 2

Powered by ScribeFire.

Free Running

Um tempo atrás vi no blog Game Reporter o trailler do jogo Free Running fiquei interessado pelo jogo e sai procurando mais informações e se já havia sido lançado, acabei por comprar o jogo.
O jogo é muito bacana, porém a dificuldade é grande no início, o que torna o jogo pouco aceitável de começo, mas depois de umas boas jogadas você já fica pró.
O gráfico não é lá grande coisa (poderiam ter melhorado mais), existem muitas manobras, muitas delas fiéis ao esporte, porém algumas bem mentirosas.
O jogo é exclusivo para PS2 e PSP.
O site do jogo é www.freerunning.com

Powered by ScribeFire.

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.