A biblioteca SDL foi criada para facilitar a criação de jogos em Linux, *BSD, MacOS, Win32 e BeOS. Por ser uma biblioteca multi-plataforma, você terá um único código de seu jogo para diferentes sistemas operacionais. Neste artigo abordarei o básico sobre o uso dessa poderosa biblioteca.
Abordarei apenas a manipulação de eventos do teclado, mas a
biblioteca SDL suporta a manipulação de eventos do mouse e de
joysticks.
Creio eu que é mais fácil ver um código bem comentado do que
várias linhas sobre teoria. Segue um exemplo com comentários.
/* Cria um manipulador de eventos, usado tanto para
teclado/*ouse/joystick */
SDL_Event event;
/* Inicia SDL */
....
/* Muda o Vídeo */
....
/* Principal Loop do jogo */
while (1) {
/* Se algum evento for registrado */
while (SDL_PollEvent(&event)) {
/* Que tipo de evento foi registrado? */
switch (event.type) {
/* Pressionou tecla */
case SDL_KEYDOWN:
/* Qual tecla pressionada? */
switch (event.key.keysym.sym) {
case SDLK_ESCAPE:
printf("ESC pressionado.\n");
break;
case SDLK_UP:
printf("Seta para cima pressionada.\n");
break;
case SDLK_a:
printf("A pressionado.\n");
break;
}
}
}
}
Simples, não? Aqui segue uma lista com todos eventos
disponíveis no teclado (copiado do site SDLdoc):
[1] Comentário enviado por Oki em 13/01/2005 - 00:12h
hunz,
Excelente artigo. Acho que o SDL está para o Linux assim como o directX está para o Windows. É uma pena que não exista uma biblioteca compatível com o directX, isso facilitaria muito a portabilidade de aplicativos.
Não sei se você sabe me responder, mas é possível trabalhar com diversas "surfaces" com SDL, ou seja, utilizar o processo de blit em surfaces diferentes, para ganhar velocidade da mesma forma que se faz com o directX?
[]'s
Celso Goya
PS: Se aceita a sugestão, um tutorial sobre sprites e sdl cairía como uma luva. :-)
[3] Comentário enviado por alsimoes em 13/01/2005 - 08:34h
O DirectX é um pacote composto pelo DirectDraw e Direct3D, um para gráficos 2D e outro 3D respectivamente. A SDL seria o DirectDraw do Linux enquando o Direct3D o OpenGL.
[4] Comentário enviado por alsimoes em 13/01/2005 - 08:45h
Complementando o meu comentário enterior...
É possivel criar jogos 3D usando a SDL da mesma forma que é possível criar jogos 2D com OpenGL, porém eu acredito que a diferença é a performace.
O jogo Super Tux por exemplo, é um jogo 2D mas há a opção de se jogar com OpenGL porém neste cado é preciso ter uma placa aceleradora de vídeo.
Já Quake 2 para jogar com aceleração de vídeo é preciso ter uma placa 3D e usar a renderização por OpenGL, quem não tem placa 3D pode jogar utilizando rendereização por software que neste caso usa a SDL.
[6] Comentário enviado por alvinlee em 13/01/2005 - 16:30h
Com relação aos games...Eu tenho um AMD K6-2 500Mhz placa de video SIS530 8Mb( não suporta 3d ) e 192Mb de RAM. Como eu faço pra jogar games 3d? Como o quake por exemplo.
[7] Comentário enviado por jose_maria em 13/01/2005 - 20:54h
Fico muito feliz por você ter feito esse artigo Thiago Negri. Parabéns.
Eu acho que eu posso responder algumas perguntas.
O SDL é uma biblioteca que ajuda o desenvolvedor a mexer com recursos multimídias (imagens, sons), trabalhar com os dispositivos de E/S (joystick, teclado, mouse),manipular erros e eventos, criar janelas etc.
Por isso tudo o SDL é muito bom para jogos. E uma coisa muito interessante é que ele é multiplataforma. Você pode programar e compilar seus programas tanto no Windows quanto no Linux. Então você não é dependente de DirectX no Windows.
O OpenGL pode/deve ser usado junto com o SDL por uma questão de facilidade (o SDL cria a janela, te ajuda com o teclado, joystick). Então para simplificar: jogos 2D = SDL. jogos 3D = SDL+OpenGL.
Para quem quer aprender SDL tem dois bons caminhos:
1) O livro "Programing Linux Games" do San Lantiga que você pode baixar em http://www.overcode.net/~overcode/writing/plg/
2) Estudar o código fonte aberto e livre de outros jogos.
[10] Comentário enviado por hunz em 16/01/2005 - 10:50h
Fala ai pessoal!
Tava na praia curtindo minhas férias, hehehe.
Agora ficarei feliz se puder ajudar vocês com as dúvidas. :)
Criei um jogo em 2D usando SDL. Na verdade o jogo era pra ser 3D, mas infelizmente eu tive que formatar meu HD e acabei perdendo todo o código fonte dele e decidi fazer ele em 2D primeiro. Não sei onde hospeda-lo, se alguém souber, porfavor me diga! :)
[11] Comentário enviado por jose_maria em 16/01/2005 - 12:16h
Sem dúvida o melhor lugar é o codigolivre.org.br.
Eu tenho 3 projetos hospedados lá e não tenho do que reclamar.
Ele oferece suporte a CVS, Fórums, BugTracker, MySQL e várias outras coisas.
E também ofecerece espaço na WEB e acesso via ftp. Além disso um nome como seu_projeto.codigolivre.org.br. E tudo isso de graça (para projetos de software livre é claro :D).
Mas tem também o gna.org e sourceforge.net.
[13] Comentário enviado por utikawa em 03/05/2005 - 19:34h
Olá redstyle...
Você tem que instalar o SDL. Mas tem que ser a versão de desenvolvimento.
Na realidade, todas as bibliotecas que você for usar tem que ser instaladas as versões de desenvolvimento. Ela normalmente tem o nome libxyz-dev, onde xyz é o nome da biblioteca em questão...
Espero ter ajudado!