Desvendando o SDL (Simple Directmedia Layer)

Para saber o que é esse blog, leia o post Hello World.
Para ler o resumo do quarto dia, clique aqui.
Para ler a entrevista com o Rodrigo Strauss, clique aqui.

Introdução ao SDL e programação de gráficos com C++

O SDL (Simple Directmedia Layer) é uma biblioteca C/C++ Open Source multiplataforma (roda em Windows, Linux, Mac, Solaris e onde mais você quiser), que permite que você acesse diretamente funções de teclado, mouse, audio, joystick, video e hardware 3D (tando via OpenGL como também DirectX, embora para programação em DirectX seja mais recomendado usar a livraria de eventos do próprio DirectX SDK).

(Estou com pressa e quero ir diretamente para os tutoriais)

Segue abaixo os tópicos que serão abordados:

0- Introdução (é nesse post mesmo, basta rolar a tela mais para baixo)

TUTORIAIS DE PROGRAMAÇÃO C++ E SDL

1- Configurando o SDL
2- Conceitos fundamentais do SDL
3- Carregando e mostrando Surfaces (com imagens BMP)
4- Livrarias de Extensão (Carregando outros formatos de Imagem)
5- Programação Orientada a Eventos
6- Cor Transparente
7- Recortando uma imagem (para animar sprites)
8- Carregando Fontes True Type
9- Eventos do Teclado
10- Eventos do Mouse
11- Estado das Teclas
12- Tocando Sons
13- Tempo
14- Tempo Avançado (independente da velocidade do hardware)
15- Regulando o Frame Rate
16- Movimento
17- Detectando Colisões
18- Detectando Colisões por pixel
19- Detectando Colisões de Círculos
20- Animação
21- Scroll (rolagem)
22- Scrool da imagem de fundo
23- Capturando uma entrada de String
24- Salvando seu jogo
25- Joysticks
26- Eventos de Janela (e janelas redimensionáveis)
27- Alpha Blending (transparência)
28- Sistemas de Partículas
29- Tiling (mosaico de imagens)
30- Fontes em Bitmap (texto em imagens)
31- Manipulação de Pixel e Rotação de Surfaces
31.1- Hora do café: Animando Pixels
32- Movimentos Independentes dos Frames
33- Multiprocessamento
34- Semáforos
35- Condições
36- Usando OpenGL com SDL
37- Usando DirectX com SDL


TUTORIAL DE COMO FAZER UM JOGO DO ZERO

38- Programando seu primeiro jogo (e não é um Pong)
39- Fundamentos de Roteiro e Game Design
39.1- Teoria dos Jogos
39.2- Ambientação do Jogo
39.3- Criação de Personagens
39.4- Roteiro
39.5- Storyboard e Ilustração
40- Modelagem 3D e Texturização
40.1- Modelando o Cenário
40.2- Modelando um personagem
40.3- Texturizando o Cenário e o Personagem
40.4- Animando o personagem
40.5- Criando e animando Objetos do cenário
40.6- Criando efeitos especiais
40.7- Links pra quem quer se aprofundar
41- Interface
41.1- Fundamentos de Design de Interface
41.2- Desenhando e Montando a Interface
42- Trilha sonora e efeitos de som
42.1- Fundamentos de Design de Som
42.2- Criando a trilha sonora
42.3- Criando efeitos de som
43- Juntando tudo



Introdução:

Durante esse tempo que o Blog ficou parado, andei aprendendo algumas coisas sobre SDL, e agora vou passar para frente o que aprendi. Para essa série de tutoriais, vou me basear nos tutoriais do Lazy Foo, que é um dos melhores que achei entre os muitos que existem para iniciantes. Também vou usar alguma coisa do Sol::Tutorials para cobrir alguns tópicos mais avançados. Depois, vou escrever uma série de artigos ensinando como planejar, montar e programar um jogo do Zero, desde a concepção da idéia até a distribuição.

A minha série de tutoriais vai ser quase uma tradução do Lazy Foo, mas com algumas adaptações e com mais exercícios do que tem lá. A idéia é que eles façam jus ao nome desse blog: servir como um guia para quem está começando agora, talvez nunca teve contato com programação antes, cobrindo desde o bê-a-bá até programação de vetores 3D. Porém, tenho um público-alvo específico no meio desses iniciantes: aqueles que querem se aprofundar de verdade, desejem ser mais do que "o garoto dos scripts" e queiram programar seus objetos 3D no nível dos pixels, controlando via código cada uma das coordenadas dos vértices.

O C e o C++ são as linguagens de mais baixo nível entre as linguagens de alto nível. Linguagens de baixo nível são a linguagem da máquina (programação bit a bit) e o Assembly, que exigem que você conheça as especificidades do hardware em que está programando. As linguagens de alto nível são independentes de Hardware. Entre as de alto nível, C++ é uma das que mais se aproxima diretamente do Hardware e é o padrão da indústria para programação de jogos.

Quando eu trabalhava na Pixel Labs (programando em JavaScript), alguns programadores mais experientes diziam por lá que quanto mais você se aproxima da máquina, ou seja, quanto mais baixo nível é a linguagem de programação, você se aproxima mais da matemática pura do que do código (e isso é particurlamente mais válido para programação de gráficos).

Se você é um dos que desejam se aprofundar, recomendo este livro de Geometria Analítica. Não precisa ler tudo, apenas use-o como consulta. Estudando os fundamentos, fica mais fácil entender o código quando precisarmos rotacionar um polígono ou fazer algo parecido.

Então, vamos aos Tutoriais?

Comentários

Priscilla disse…
preciso de ajuda, você poderia fazer um tutorial de um jogo de tower defense em c++ (é um jogo simples mesmo) que tenha a torre, os inimigos, e uma trilha a para sr percorrida, essas coisas assim, bem básico, você poderia me ajudar? fazer o tutorial e compartilhar o link aqui no seu blog, agradeço desde já, se não der também, beleza...
Rafael Beckel disse…
Oi Priscilla,

Acho que C/C++ não é a linguagem mais adequada para um tutorial simples nesse sentido, mas encontrei algumas referências interessantes em outras linguagens:

Unity 3D:
https://cgcookie.com/unity/cgc-courses/unity-tower-defense-course/

Flash:
http://www.flashgametuts.com/tutorials/advanced/how-to-create-a-tower-defense-game-in-as3-part-1/

iPhone (Cocos 2D):
http://www.raywenderlich.com/37701/how-to-make-a-tower-defense-game-tutorial

Postagens mais visitadas deste blog

Quarto, quinto... décimo sexto.

Renascendo - ou Os Desafios de aprender C e C++