quarta-feira, 11 de maio de 2011

Algumas novidades.

Olá futuros Shigeru Miyamotos e Hideo Kojimas! Primeiramente queria pedir desculpas pelas poucas atualizações nesses últimos dias, mas quero adiantar que não deixei de trabalhar no blog, pelo contrário, estou trabalhando em mais conteúdo para ele e dando continuidade a minhas vídeo aulas. O motivo pela pouca atualização é que estou repartindo o tempo que dedico a produzir conteúdo para o blog com o de melhorar o Blog.

Nas últimas semanas passei a estudar como funciona os blogs, desde sua estrutura até ferramentas para aperfeiçoar. O intuito disso é que quero melhorar o blog, a começar por retirar esse Template default e criar um personalizado, o blog ta crescendo e precisa ganhar uma cara, concordam. Por isso o tempo dedicado ao conteúdo em si ta menor. Alguns já podem até ter notado a barra abaixo do logotipo que adicionei, para ser sincero eu não sabia trabalhar com categorias no blog quando comecei, somente agora descobri para que serve os marcadores e como utilizá-los.

Além da novidade do designer novo que to desenvolvendo, já vou adiantar que a próxima vídeo aula que estou trabalhando é a continuação de RPG em flash, assim que terminar estarei colocando aqui. Além disso, estou produzindo mais um exemplo que acredito que vai agradar a muitos. E também estou pensando de além dos exemplos, fazer um jogo Open Source, um jogo mais completo que os exemplos e com código aberto para quem quiser criar seus próprios jogos, possa modificá-lo ao seu gosto.

Bem, enquanto isso peço a compreensão de todos e que continuem acessando o blog, pois logo após arrumar a casa eu pretendo voltar a rotina de postagens normais.

sexta-feira, 6 de maio de 2011

Dicas: Site - BDJ, Biblioteca dos desenvolvedores de Jogos

Todos nós que desenvolvemos jogos sabemos o quanto é difícil achar sites dedicados a falar desse assunto que acredito ser de interesse de muitos, porém logo esses muitos se desanimam por falta de conteúdo. Mas temos boas iniciativas nacionais, e venho apresentar mais um deles, o BDJ, Biblioteca dos desenvolvedores de Jogos.
O BDJ, assim como uma biblioteca mesmo, está recheado de artigos originais sobre desenvolvimento de jogos, de Allegro a Z (piadinha ruim). Seus artigos não se focam em somente ensinar as funções de uma linguagem, e sim ensinar todos os conceitos por trás dos jogos, sempre se referenciando a exemplo conhecidos como Mario ou Megaman. 
Conheci o site quando estava começando a estudar OpenGL, então encontrei o site que além do OpenGL me ensinou outros conceitos interessantes que me foram muito úteis e são até hoje quando faço as vídeo aulas ou um jogo. 

O site anda meio desatualizado, mas faz pouco tempo desde a última atualização, e talvez com mais incentivo logo o autor volte a publicar mais artigos. Mas o site contém um fórum ativo, que você pode trocar idéias com os outros desenvolvedores, o que torna o site mais atrativo além dos ótimos artigos. 
Enfim, é uma ótima forma de estudo para aqueles que não têm muito conhecimento de inglês, com certeza será uma mão na roda para aqueles que estão iniciando na área mais ainda estão desnorteados por não terem o que estudar.  

Fica a dica dada então, Fui!

quinta-feira, 5 de maio de 2011

Termos Técnicos: Shaders, Vertex Shader, Pixel Shader e Geometry Shader

Prontos para enriquecer mais um pouco o vocabulário de desenvolvedores de jogos, então vamos para mais um Tete, ou Termos Técnicos para o menos íntimos. Nesse post vamos falar de um termo que foi introduzido a muito pouco tempo nos games, mas que já faz parte da linguagem de muitos aficionados por games, então vamos entender melhor o que significa os Shaders.
Se você, por ser muito jovem ou por viver na lua nos últimos 15 anos, não tenha jogado nenhum jogo da geração do Playstation 1 e Nintendo Sixty-FOOOUR, peço que jogue e preste atenção nos gráficos, não no numero reduzido de polígonos, mas sim nos efeitos que o jogo apresenta. Mas se você viveu essa época, sabe dos jogos que estou falando vai se recordar, os gráficos daquela época eram o mais cru possível em termos de jogos 3D, basicamente tínhamos os polígonos, as texturas o cálculo de suas respectivas posições na tela, nada mais, de forma simples, um jogo 3D até o começo dos anos 2000 eram isso.

Os Shaders são recentes para o mundo dos games, isso porque para que os cálculos que seus efeitos exigem sejam feitos rapidamente, é necessário muito poder de processamento, e até aquela época tudo ficava ao cargo do processador, já não bastava ele cuidar da lógica do jogo ele tinha que calcular todas as coordenadas de cada vértice e das texturas. O principal fato para que os Shaders entrarem no mundo dos games, ou seja, pudessem ser aplicados em tempo real nos modelos, foi a popularização das placas gráficas. Com a popularização delas, foi aliviado o lado do processador que agora só tratava da lógica do jogo, e as placas gráficas se dedicava exclusivamente aos cálculos gráficos. A evolução das placas gráficas seguiu em paralelo a dos processadores, resultando em tornar realidade os Shaders para os jogos.

Mas afinal o que representa realmente os Shaders nos games? Primeiramente não temos uma tradução em português para esse termo, e com o atual nível que a globalização, certamente nunca vai haver um. Mas poderíamos comparar os Shaders aos efeitos especiais computadorizados do cinema. Antigamente víamos um filme e tudo que tinha era o ator na cena no mais natural possível, e os efeitos especiais se resumiam a truques de cena, nos jogos também eram assim, antes dos anos 2000 tínhamos apenas modelos 3D crus assim como os atores do cinema, nenhum retoque ou efeito especial computadorizado era aplicado sobre os modelos, dessa forma víamos apenas o modelo 3D e nada mais.

Então, o Shaders trabalham como os efeitos especiais do cinema, pegam aqueles modelos 3D, que antes eram mostrados diretamente, e aplicam efeitos diversos sobre eles, iluminação, distorções, sombras, entre outros diversos efeitos que nem imaginávamos antes dos anos 2000. Por termos vários efeitos de Shaders é que foi subdividimos os Shaders em categorias, cada um é aplicado sobre um elemento diferente na renderização da cena. Esses Shaders são:

Vertex Shader: São basicamente os efeitos aplicados diretamente sobre os vértices do modelo 3D, que são os pontos que formam os polígonos, podendo distorcer a forma do modelo em tempo real do jogo. A distorção mais comum é as usadas nos efeitos de água dos jogos atuais, onde é pego um modelo plano em 3D e é aplicado algoritmos que fazem os vértices se moverem e simularem ondas, fazendo ele ficar mais parecido com a água. Há uma infinidade de outras aplicações, como amasso nos carros de GTA 4, a retaliação de partes modelos de personagens simulando decepação em jogos mais violentos, enfim uma variedade de efeitos.

Pixel Shader: Depois que a cena é renderizada ela é uma imagem em Pixels assim como qualquer foto que você tira com sua câmera digital, o Pixel Shader trabalha com essa imagem, aplicando efeitos sobre ela e modificando o resultado que seria já o resultado final antes da adoção dos Shader. Podemos comparar esse Shader com um Photoshop em tempo real na renderização dos jogos, o que de fato não deixa de ser, pois encontramos aqui a maioria dos algoritmos que são usados no Photoshop, exemplo, desfoque, distorção de cores, iluminação, sobras, brilhos, etc. O Pixel Shader, por trabalhar essencialmente com pixel, também pode ser aplicado nas texturas dos jogos, desde desfocar a textura para que não possamos notar os pixels quando no aproximamos dos modelos, até aplicar um efeito de sombreamento de acordo com os outros elementos da cena. Esse Shader normalmente exige mais poder de processamento que o Vertex Shader, por isso as placas de vídeos dedicam mais poder de processamento a esse shader.


Geometry Shader: Esse Shader trabalha com os modelos 3D, ele tem a capacidade de gerar novos vértices ou remover eles, podendo deixar um modelo 3d muito mais detalhado que o modelo concebido pelo artista 3D, ou menos dependendo do caso. A função dele basicamente é essa criar novos vértices, então se ele for usado de forma desinibida, um jogo pode ficar pesado rapidamente e criando os já citados Slowdowns. Os desenvolvedores de jogos ainda preferem fazer os modelos já detalhados em softwares de modelagem 3D, e não deixar esses detalhes por conta da programação, tornando essa técnica pouco usual nos jogos. Mas ela é bastante comum nos programas de modelagem 3D, praticamente todos os programas do mercado trabalham com esse Shader para ajudar na modelagem em tempo real.


Os Shaders podem ser apontados como os principais responsáveis por tornas os jogos cada dia mais realistas em termos gráficos, e pelo andar da carruagem eles ainda tem muito para nos oferecer e nos surpreender como jogadores. É o que podemos ver no ainda em desenvolvimento, mas já pode ser considerado o novo passo da computação gráfica de jogos, o Unreal Engine 3. No vídeo de demonstração podemos ver o patamar que os Shaders estão. O vídeo abaixo fala por si só.


Conhecimento passado para frente, minha missão está cumprida por hora, assim, termino este post com um simples FUI!!!

segunda-feira, 2 de maio de 2011

Exemplos: Flash - Jogo de Plataforma com física básica

Eis que inauguro mais uma série de post, que acho que vai agradar muitos que acompanham meu blog. Nós tópicos de exemplos eu vou expor para download para quem quiser usar o código-fonte de jogos em aberto, para que vocês possam usar como referencia ou mesmo usar parte ou todo o código em seus jogos.

Para iniciar, vou colocar um código que eu fiz a algum tempo já, antes mesmo de começar esse blog, era o código fonte que eu pretendia usar para fazer um jogo de plataforma em Flash, acabei abandonando o projeto mas mantive guardado o código fonte até agora, então passo a vocês para que façam bom uso.

O jogo é simples, lembra muito a mecânica de jogos como Super Mario, porém tem alguns pontos interessantes que são difíceis de encontrar em tutoriais a fora e que eu aplique nesse jogo, é o caso do pulo duplo. Em muitos tutoriais e vídeo aulas a fora, ensinam códigos onde o jogador consegue dar pulos no ar, eu não me lembro se tirei da mente a solução ou se eu achei em um site em inglês a solução, porém achei e inclui nesse código fonte. Além de também ter programado um efeito câmera simples de jogos 2D que também não me lembro de ter achado em nenhum tutorial e de ter achado a solução sozinho também. O código todo está comentado, para vocês acompanharem a lógica.
Enfim, fiquem a vontade para usar o código-fonte em seus projetos. E caso tenham alguma sugestão de jogo simples para eu postar no próximo post de exemplos é só usar os comentários do blog, do YouTube, msn, etc. Mas não abusem pedindo um MMORPG completo com conexão com servidor e tudo, mas sim códigos simples e pouco difundidos afora como esse, ai com certeza eu ajudarei e trarei no próximo post de exemplos.
Por hora fiquem com esse, flws!