Mostrando postagens com marcador útil. Mostrar todas as postagens
Mostrando postagens com marcador útil. Mostrar todas as postagens

quinta-feira, 7 de abril de 2011

Usando e Brincando com a GS2D.



Resolvi estudar a GS2D feita por André Santee, e gostei bastante dos resultados. Aí resolvi escrever um pequeno tutorial e colocar aqui no Ponto V.

Os três únicos pré-requisitos são:

- Ter lido o primeiro post sobre a GS2D;
- Ter realizado todos os passos do post;
- Ser familiar com as sintaxes do C++.

Bom, vamos ao que interessa.

1- Criando efeitos sonoros:

As seguinte linha tem como finalidade criar um smartpointer para o sistema de audio e inicializá-lo.

AudioPtr audio = CreateAudio(0);

As seguintes linhas tem como finalidade criar um smartpointer para o seu efeito sonoro ou música, e carrega-lo no sistema da GS2D para ser usado.
A constante GSST_SOUND_EFFECT é uma constante que diz que o sample carregado é um efeito sonoro.
Você tem outras opções de constante, para música por exemplo você usaria: GSST_MUSIC
Para efeitos sonoros de ambiente você usaria GSST_AMBIENT_SFX e assim por diante.

AudioSamplePtr asp;
asp = audio->LoadSampleFromFile(L"pastaOndeEstaoOsRecursos/efeitoSonoro.formato", GSST_SOUND_EFFECT);

As seguintes linhas, você deve colocar dentro do seu loop de jogo.
while(true){
asp->Play();
}

Provavelmente você vai querer toca-lo quando objetos colidirem, ou quando você realizar alguma ação com seu ator de jogo, por exemplo. O que cria a necessidade de você saber ler inputs.

2- Lendo inputs:

Primeiro você precisa de um InputPtr

InputPtr input = CreateInput(0,true);

A cada iteração do loop de jogo você precisa chamar o Update para atualizar o estado de todas as teclas do teclado.

input->Update();

Para checar o estado de uma tecla:

if (input->GetKeyState(GSK_ESC == GSKS_DOWN)){
//fazer algo
}

Você pode perceber que são bem intuitivos os prefíxos da GS2D. GSK_ é um prefixo para constantes de teclas (GameSpaceKey) e GSKS_ para estado de teclas (GameSpaceKeyState).

Você pode checar outros valores possíveis pelo recurso auto completar na sua IDE, caso ela tenha esse recurso disponível.

3- Desenhando Texto

video = CreateVideo(larguraTela,alturaTela, L"Titulo",ehWindowed,permitirvsync,L"pastaOndeEstaoSeusArquivosFnt/",GSPF_UNKNOWN,ehMaximizavel);

Para poder desenhar texto com a GS2D tem um detalhe importante que você precisa prestar atenção ao inicializar a engine. Você precisa passar o nome da pasta onde estão seus arquivos .FNT. Você também precisará de um arquivo .bmp com a fonte "BitMapizada" (se me permite o neologismo). Você pode criar esses dois arquivos usando o programa: AngelCode Bitmap Font generator

Para desenhar texto, dentro do seu loop onde você desenha as coisas na tela:

video->DrawBitmapText(Vector2(cordenadax,cordenaday), L"textoQueDesejaEscrever", L"nomeDaFonte.fnt",gs2d::GS_WHITE);

4- Desenhando Sprites animadas:

Primeiro você precisa de um SpritePtr, que deve ser criado pelo seu sistema de video (VideoPtr)

SpritePtr suaSprite = video->CreateSprite(L"suaPastaDeRecursos/nomeDaSprite.png");

Para ela ser uma sprite animada, você precisa que a sua imagem com a spritesheet seja dividida em frames, e que cada frame tenha exatamente o mesmo tamanho.

A propósito, isso geralmente é padrão nas engines.

Entretanto, o seu arquivo onde está a spritesheet, difícilmente seguirá um padrão. Já vi spritesheets de vários tamanhos com mais ou menos frames.

Para usar sprites animadas, você deve configurar o número de retangulos de sprite pela linha:

suaSprite->SetupSpriteRects(colunas,linhas);

Segue a sprite sheet que usei como exemplo:


Em seguida dentro do seu loop onde está a lógica de desenho você precisa dizer qual é o retangulo atual pela linha:

suaSprite->SetRect(coluna,linha);

Você precisa montar a sua lógica de animação tendo em vista como cada engine de jogos acessa e trata as spritesheets.

Por exemplo, em uma spritesheet como essa que mostrei: a animação do personagem andando para baixo está na primeira linha, para esquerda na segunda, e assim por diante.

Você poderia criar um enumerador que diz qual é a animação, e um array que diz a ordem dos frames:

O enumerador seria por exemplo:

enum {ANIM_ANDABAIXO = 0, ANIM_ANDAESQUERDA, ANIM_ANDADIREITA,ANIM_ANDACIMA}

E o array da ordem dos frames poderia ficar assim:

short frames[4] = {0,1,2,1};
short frameAtual = 0;
short animAtual = 0;

Em seguida dentro do seu loop de desenho você precisaria usar isso tudo da seguinte forma:

if (frameAtual == 4) frameAtual = 0; //4 porque o vetor vai da posição 0 a 3 portanto 4 é uma posição inválida.
suaSprite->SetRect(animAtual,frames[frameAtual]);
frameAtual++;

Você precisa tratar esses valores na lógica de jogo, como no exemplo:

if (input->getKeyState(GSK_W) == GSKS_HIT) animAtual = ANIM_ANDACIMA;
if (input->getKeyState(GSK_A) == GSKS_HIT) animAtual = ANIM_ANDAESQUERDA;
if (input->getKeyState(GSK_S) == GSKS_HIT) animAtual = ANIM_ANDABAIXO;
if (input->getKeyState(GSK_D) == GSKS_HIT) animAtual = ANIM_ANDADIREITA;

Nesse exemplo usei ao invés das setas, as teclas w,a,s,d comumente usada nos jogos.

Bom, isso foi tudo que eu estudei, da GS2D.

Os meu próximo passo é tentar Integrar a Box2D ou alguma outra engine de física com a GS2D. Porém, destruir um planeta com uma pedrada é infinitamente mais fácil do que usar a Box2D com C++.

Espero que tenham gostado deste post!

Agradecimentos especiais a @tifaucz por ajudar a pesquisar algumas funcionalidades da GS2D :D

FoxT out.

PS: Não deixe de conferir o post do próprio autor no pontoV :)

sexta-feira, 18 de março de 2011

URL Shorteners

URL Shorteners

Mais uma vez o Google me surpreende: desta vez com um serviço que já existia: o Encurtador de URLs.

Geralmente quando você quer mandar um link pelo twitter, como você faz? Se a url couber, você simplesmente cola ela alí e pronto. Agora, e quando você pega aqueles links que vem com infinitos parâmetros vindos de outras páginas/serviços, que quando colados em um notepad, ainda ativam a barra de rolagem?

Resposta: Encurtador de URL.

Básicamente, o que ele faz é o seguinte: Ele pega a url digitada, mapeia em um banco de dados (talvez), e gera uma chave para o mapeamento. É exatamente o conceito da estrutura de dados Map.

Quando você digita a url encurtada, a requisição passa por um serviço que recebe a url, pega o valor correspondente da url, e troca.

Bem simples, e útil.

Acredito que um dos primeiros (se não o primeiro) serviço de encurtamento de URL disponível foi o migre.me, e veja você! foi feito por um tupiniquim!

O Google URL Shortener, tem uma pequena vantagem: Ele armazena uma lista de todos os seus links encurtados, na sua Google Account, assim, toda vez que você quiser encurtar algo que já encurtou, bazinga, você não precisa faze-lo, porque tá lá no seu perfil.

Fantástico né?

quarta-feira, 1 de dezembro de 2010

Google e a sua incrível capacidade de organizar Informações

Um post por mês! é o mínimo que gostaria de manter esse blog cheio de poeira, atualizado.

Século 21, Era da informação. E quanta informação!

É tanta informação que não dá nem tempo de criticar e filtrar aquilo que se vê por aí!

Informação é poder.

Hoje em dia quando se fala em informação, só um nome vem na cabeça das pessoas: Google.

Não só pela capacidade que ele possui de procurar por alguma informação nos confins mais obscuros da internet, mas também pela incrível gama de recursos que ele oferece para você adquirir/classificar/organizar informações.

A algum tempo, vinha procurando comunidades, blogs, ou qualquer cacarico sobre jogos, desenvolvimento de jogos, ou qualquer outro assunto que me interessasse. Você até acha, um aqui, ou ali, salva nos favoritos e assim vai.

O problema é que as vezes, antes de formatar o seu computador, você esquece de fazer backup dos seus favoritos... e isso realmente se torna um problema :(

Perdi ótimos links em uma formatação ou outra. Hoje é um hábito fazer backup dos favoritos.

Mas quando o assunto é organizar notícias que te interessam. O Google me impressionou com os recursos do Google Reader.

*INFORMACÃO* Esse post não tem nenhum intúito de fazer propaganda não. É mais informativo mesmo.

Continuando.

O google reader é um serviço onde você pode sair coletando links de vários blogs. Tendo em mente que blogs já são a algum tempo a nova forma de mídia, e que eles são ótimas fontes de informação (claro, muitas vezes não são muito confiáveis, mas em fim), as coisas meio que se encaixam perfeitamente.

Se você parar pra pensar nos infinitos blogs sobre milhares de assuntos que existem por aí, você pode meio que "construir a sua biblioteca de informações" com esse serviço.

Por exemplo: Recentemente um amigo compartilhou uma lista dele no google reader. São mais de 1000 updates! não dá nem tempo de ler tudo!

Aí pensei, "putz, não preciso de tantos blogs assim, não tem um jeito de eu descobrir quais são os que eu mais leio?"

E BOOM! HEADSHOT!, mais uma vez o reader me surpreendeu com a opção "TENDÊNCIAS"

Lá eu pude visualizar QUANTO POR CENTO DE CADA BLOG DAS MINHAS INSCRIÇÕES eu tinha lido!

Isso me deixou assustado. Tava tudo alí organizado. E não foi só uma vez, várias outras que eu me fiz na instancia de leitor de blogs foi sendo respondida conforme eu fui explorando o reader. Era quase como se ele estivesse lendo a minha mente!

É impressionante o jeito que as informações estão organizadas. Como foi que eles chegaram nessas conclusões? digo, no sentido de saber exatamente qual informação eu preciso em determinado momento? É maravilhoso.

Hoje me pergunto se preciso realmente visitar a página dos blogs, se é muito mais fácil eu ter tudo ali, centralizado e bem organizado!

E tem outra, Pra que assistir TV? não assisto mais tv nem visito sites de jornais, que muitas vezes só te fornecem notícias irrelevantes.

Vamos falar a verdade, qual a relevância tem uma notícia dessas por exemplo: "Cidadão japonês comete suicídio usando um wii mote na torre eifeel enquanto bebe coca-cola". O que vem na sua cabeça quando você lê um headline desses? "E O KIKO?" certo?

Pois é, se eu fosse você faria o mesmo, desligue a tv, e vá para a internet, ler somente o que te interessa :)

Afinal de contas, informação é poder certo?

quarta-feira, 27 de maio de 2009

Procurando plug in para o Eclipse ??

Fala galera + - !
Para o pessoal que curte usar o ECLIPSE, vai ai um site com uma lista de plug ins ! Escolha o seu (até parece propaganda do polishop) !

Eclipse plug in

quinta-feira, 30 de abril de 2009

Protega o seu PenDrive [Dicas]

Hoje em dia o numero de pendrives tende ao mol e consequentemente os vírus pra eles, e um jeito simples e muito eficiente de protegê-los é criando um pasta com o nome "autorun.inf" (sem aspas ¬¬) , agora o porque disso, todos os vírus se criam um arquivo com o nome de autorun.inf que é automaticamente executado pelo windows fazendo com que todos os virus que estejam no pen drive passem para o pc e todos os que tem no pc também vão para o pen drive. O que é resolvido cirando a pasta já que não se podem ter dois arquivos com o mesmo nome ela não vai permitir que o vírus penetre no pen drive.
Por um mundo com pen drive mais saudáveis!
Fikdik

segunda-feira, 13 de abril de 2009

Links úteis [1]

Aí vão alguns links interessantes que podem salvar vidas!

http://www.4shared.com/ , pra quem não conhece esse é um bom lugar para encontrar livros em formato pdf e de graça! , sabe como é...aqui é tudo pobre hahaha, alem dos pdfs ele tem muito mais coisa que você pode encontrar, afinal é a galera que vai compartilhando, então tem muita coisa! vale a pena dar uma olhada, principalmente livros de faculdade, já salvou muita gente por aqui.

http://www.mathdaily.com/ , ótimo site de matemática, bem fácil de usar e esse sim, salva muitas vidas hahahah, ótimo mesmo, pra quem tá preso aos calculos ainda é uma maravilha!

http://www.physicsdaily.com/ , assim como o mathdaily é bem útil, só que para física (jura???). Vale a pena dar uma lida e sair fazendo graça fingindo que sabe alguma coisa hehehe.

http://books.google.ca/books , não podemos esquecer do google!! aí vai o google books....não mexi ainda, mas tá aí pra quem não conhece e quiser dar uma testada (lembrem-se de dar uma passada aqui e falar se é bom ou não!).

http://www.nr.com/ , esse já é um pouco mais tenso, tenho certeza de que ninguém vai entrar, mas como estava nos favoritos por aqui..... bom, o nome do site é: Numerical Recipes :The Art of Scientific Computing. Dá pra imaginar, digamos que você pode deixar seu MATLAB muito mais rápido (certo sou uma fraude, li isso na pagina principal, não tive coragem de me aventurar pelo site AINDA!).

http://www.wolframalpha.com/
, simplesmente fantástico, prefiro que entre nele para ver! Nem vou dizer nada por aqui....

Aí estão alguns sites, espero que ajude, se nao ajudar......pelo menos você fez alguma coisa diferente de ficar atualizando o orkut hehehe

domingo, 12 de abril de 2009

MIT!!

Enquanto nao convenco o Mário de participar do blog vou postando por ele, está aí o site que ele descobriu fazendo desta talvez a primeira postagem útil!!!

http://ocw.mit.edu/OcwWeb/web/home/home/index.htm

Nada mais é do que o site com as aulas em video de todos os cursos de todas as matérias do MIT, supremo não. Dêem uma conferida como são as aulas por aqueles cantos!!

Certo, videos de todas é exagero, mas da grande maioria!!! e você pode baixar os materiais!!!!