.:: Menu Rápido ::.

Linux | C/C++ | Downloads | SDL | [×]

terça-feira, 5 de maio de 2009

Apresentação da SDL na aula de P.A.

Andei trabalhando muito estes dias... Oficina sobre edição de mapas 2D e palestra sobre SDL no 1º Encontro de Desenvolvedores de Jogos do Tocantins e agora uma apresentação sobre desenvolvimento de jogos em SDL... ou desenvolvimento do jogo come poto em SDL, tanto faz ;)

» Post Completo... SDL é super indicada para programadores iniciantes no desenvolvimento de jogos, pois elá é simples e fácil de aprender. Mas é preciso estudar um pouco para isso. O site oficial pode te ajudar em seu primeiro contato com SDL.
Você pode baixar documentação de todas as funções da SDL em Downloadable (1). sdldoc-html.zip é a documentação em HTML e SDLRef.chm é a documentação no formato help do Windows.
Existe um tutorial de introdução online e em português que explica sobre SDL e detalha cada uma de suas características. Está disponível em Introduction (2).
Após a leitura do tutorial de introdução você estará ápito a compreender os exemplos de código do meu blog ou do Lazy Foo.

.:: Slides ::.
Não dá pra entender 20 slides feitos só por imagens... mas quem me viu apresentar pode lembrar de muita coisa.
» SDL.pdf

.:: Códigos de exemplo aqui do blog ::.
Cheguei a apresentar alguns bons exemplos que tenho aqui no meu blog... segue a lista.

  • cod_sdl.zip - Um exemplo de código para iniciantes. Este é o código exemplo que vem com o Dev-Cpp e que é mostrado quando se cria um novo projeto SDL. Também pode ser encontrado em: SDL - A Biblioteca dos Jogos 2D

  • cod_collide.zip - Um exemplo de código que mostra como tratar colisão. Ele quase se encaixou no trabalho do jogo come ponto. Também pode ser encontrado em: SDL_Collide - Colisão 2D para jogos

  • cod_ttf.zip - Para imprimir o placar de recordes ou qualquer tipo de texto em SDL existem duas formas: Você pode carregar uma imagem com todas as letras e números que irá utilizar... e se virar para imprimí-los ou utilizar a SDL_Ttf e carregar diretamente de um formato verdadeiro de texto. Também pode ser encontrado em: Imprimindo texto com SDL_Ttf

  • cod_sdl.zip - Para tirar todas as dúvidas a respeito da estrutura SDL_Surface é recomendado ler o post: SDL_Surface - Introdução detalhada

  • velha.zip - Jogos de tabuleiro geralmente são mais fáceis de se implementar, pois eles geralmente são mais estáticos (sem movimento ou animação). Mas este neste código as peças possuem animação em seu surgimento. Experimente criar uma IA para este jogo... será um desafio interessante (dica: use o algorítimo Minimax). Também disponível em: [Mini-curso] Programação de jogos 2D com SDL

  • cod_fps.zip - É o exemplo onde uma bolinha fica quicando e se movendo de um lado para o outro (movimento em função do tempo). Disponível em: Controle de tempo e Frame Rate

  • cod_tmx.zip - Todos os exemplos valem muito a pena conferir... mas se você está procurando por algo mais profissional você não pode deixar de ver este. Ele mostra como carregar um mapa em formato TMX e também como construí-lo em seu jogo. Disponível em: Carregando mapas 2D no formato TMX

.:: Códigos de Exemplo ::.
Estes códigos eu fiz especialmente para a apresentação ou resgatei de meus back-ups. O Mário Clone e o relevoGL são do tempo em que eu conheci a SDL.
  • drMarioClone.zip - Exemplo perfeito de como NÃO IMPLEMENTAR um jogo. Mapa da fase totalmente desprovido de sistema de tiles... no Lugar apenas uma imagem gigantesca ! Sistema de Sprite totalmente ineficiente... vários estados repetidos para animar o personagem. Colisão quase nula... um único pixel na base do personagem testando colisão na imagem máscara. A força da gravidade é a única que funciona ! Isso se você não tentar pular 2x... quando o personagem atinge a altura máxima. Eu deveria esconder este código... mas gosto dele... é muito engraçado !!!

  • superSmiley.zip - Já estou preparando a versão 2.0 do Mario Clone... Mapa de tiles editado no Tiled, sprites que funcionam, colisão por retângulos, coleta de moedas... tudo que precisar pra se tornar exemplo de COMO IMPLEMENTAR. Mandei o editor junto... abra o arquivo world.tmx pelo editor e veja toda a fase do Super Mário.

  • relevoGL.zip - Um exemplo curioso usando SDL e OpenGL onde uma esfera se move sobre uma superfície irregular formada por várias esferas. Quando se usa SDL o uso da lib GLUT é desnecessário, mas acabei usando uma função para gerar esfera. Logo tem que linkar com GLUT tbm.

  • drLib.zip - Classes como Timer, Frame, Sprite e Grid se encontram aqui. Além de encontrar o código você encontrará também a documentação destas classes no diretório html.

  • fundoDoMar.zip - Uma grande coleção de exemplos... principalmente sobre colisão de retângulos e colisão de círculos. Deve ser estudado minunciosamente. No diretório lib encontram-se vária classes que podem ser aproveitados em outros jogos. Vector2D.hpp é um desses arquivos que possuem classes milagrosas. Foi desenvolvida por ViniGodoy... que aliás tem um ótimo blog sobre SDL e OpenGL.

.:: Jogos de Exemplo ::.

.:: Conclusão ::.
Desenvolver jogos em SDL é muito fácil... mas você deve ter reparado que desenvolver jogos não é tão fácil assim. Mesmo os jogos mais simples podem exigir o domínio de diversas técnicas. Se você estiver pensando em desenvolver o seu primeiro jogo começe de vagar. Os jogos de tabuleiro geralmente são mais simples... não tem movimento, animação ou colisão... é bem mais fácil que outros como um jogo de plataforma ou de naves.

6 comentários:

Unknown disse...

Olá Diogo

Mas uma vez você disponibiliza um tutorial daqueles para os estudantes de games :-)

Gostaria de agradecer aqui pela sua participação no 1º EDJTO. Sua palestra foi muito divertidade e educativa, claro :-)

Não consegui participar da oficina mas acredito que gostaram muito.

Parabéns!

Diogo_RBG disse...

É sempre um prazer participar de um evento como o EDJTO. Espero ter uma outra palestra "tão divertida" pro evento do ano quem vem!

Obrigado.

Paulo Diogo disse...

ai man, como vc faz pra postar codigos fonte no seu blog???

Diogo_RBG disse...

Os blocos de código do meu blog não são lá essas coisas ! Eu apenas copiei a formatação do bloco de código do Wikipédia.

Primeiro é preciso criar um estilo em CSS... você vai em Layout > Editar HTML e adiciona as linhas:
.bloco_cod{
background: #F9F9F9;
border: 1px dashed #2F6FAB;
padding: 4px 4px 4px 4px;
margin: 6px 0px 6px 0px;
font-family: monospace, lucida console;
white-space: pre;
font-size: 85%;
}

Depois é só utilizar o estilo na sua postagem:
<p class="bloco_cod">git clone git://gitorious.org/tmw-eathena/mainline.git eathena
cd eathena
make</p>

Mas só será visível depois que você publicar... a visualização não mostra o estilo.

Unknown disse...

Diogo,

muito bom os seus blogs referentes a SDL, gostaria tirar uma dúvida.

A SDL é implementada baseada em qual biblioteca ? API gráfica do Windows/Linux ?

obrigado

Diogo_RBG disse...

Aí é que está o segredo. Ela abstrai o Direcx quando roda no windowns e X11 + Frame Buffer quando tá no Linux.
Não vou entrar em detalhes, mas fica como se você utilizasse a API gráfica nativa do sistema.
Isso se torna evidente quando analisamos o tamanho da DLL da SDL. É Mínima.