O jogo é propositalmente simples para que o leitor com pouca experiência na linguagem e no desenvolvimento de games possa acompanhar o texto e o código o início ao fim.
Ao final de cada etapa, como de costume, estarão disponíveis para download tanto o código fonte como o executável equivalente.
Espero que apreciem.
Lazarus
Setup do Lazarus 1.5 |
Para realizar o download do instalador, visite http://www.getlazarus.org/setup/?download#windows
Depois de baixar o setup, a instalação segue o padrão next, next, finish típicos do windows. Simples e rápido!
Vamos em frente.
Vamos em frente.
SDL 2
O SDL (Simple DirectMedia Layer) é uma biblioteca multimídia livre e de código aberto, multiplataforma, escrito em C que representa uma interface simples para gráficos, som, e dispositivos de entrada de várias plataformas.Trine, exemplo de game escrito com SDL |
Para se ter uma idéia do que é possível fazer com SDL, veja o primeiro game da trilogia Trine na loja do steam ou clique na imagem ao lado para ampliá-la.
Animador, não?
Bom, por ser escrita em C e possuir bindings para várias linguagens, integrar o SDL 2 ao lazarus é uma tarefa trivial.
Primeiro precisamos baixar a biblioteca compilada para o windows ( vamos nos preocupar somente com a versão de 32 bits, por enquanto ). Acesse o endreço http://www.libsdl.org/download-2.0.php e escolha a dll adequada para seu ambiente.
Agora, para baixar os bindings ( as units com as chamadas de função, e declarações de tipos contidos na biblioteca compilada ) acesse o projeto de tradução dos headers no GitHub em e faça o download dos arquivos compactados.
Configurando o Ambiente
Neste ponto, você deve ter o Lazarus instalado, a SDL2.dll e os headers descompactados em algum lugar de sua máquia. Vamos começar.Abra o Lazarus, escolha a opção do menu
Projeto > Novo Projeto
e crie um novo projeto do tipo "Programa Simples".Salve o projeto em um diretório qualquer com o nome
space_invaders.lpi
. Para facilitar, vamos nos referir, neste texto, ao diretório em que o projeto foi salvo como PROJDIR.Agora, crie dentro de PROJDIR, uma estrutura de diretórios seguindo a tabela abaixo para mantermos os arquivos de nosso projeto organizados.
Diretório |
Descrição |
PROJDIR |
Diretório raiz do projeto. Pode ser qualquer diretório que você achar conveniente. O arquivo space_invaders.lpi deve ser posto aqui. |
PROJDIR\bin |
Conterá todos os binários necessários para que o projeto execute. A biblioteca SDL2.dll deverá ser copiada para cá |
PROJDIR\headers |
Irá conter os headers (ou bindings) das bibliotecas que utilizaremos |
PROJDIR\headers\sdl2 |
Todos os arquivos dos headers do SDL2 deverão ser copiados para cá |
PROJDIR\lib |
Aquivos .o e .ppu gerados pelo compilador |
PROJDIR\units |
Todas as units escritas por nós, serão salvas aqui. |
Opções do Compilador |
De volta ao Lázarus, abra o diálogo de opções do projeto
(Projeto > Opções de Projeto)
selecione o nó Opções do Compilador
na árvore lateral e configure-a de acordo com a imagem ao lado.Informamos no primeiro campo (
Other unit files
) que ele deverá incluir os arquivos de headers do SDL 2 que copiamos para PROJDIR\headers\sdl2 no passo anterior. Informamos também que queremos que o nosso executável seja gerado na pasta bin (Nome do arquivo alvo
).Para finalizar as configurações, vamos nos certificar de que iremos gerar (inicialmente, pelo menos) um programa de 32 bits no modo gráfico para windows.
A imagem ao lado mostra como deverão estar suas opções no nó
Configuração e Alvo
.Pronto! Nosso ambiente está configurado.
Compile o programa vazio e veja se tudo saiu como esperado. Se for preciso, volte nos passos anteriores e confira e esqueceu de algo.
Testando o Ambeinte
Para conferir se está tudo ok, compile o programa abaixo.program space_invaders; uses SDL2; begin if SDL_Init(SDL_INIT_VIDEO) = 0 then begin SDL_Delay(2000); SDL_Quit; end; end.
Iniciamos o subsistema de vídeo do SDL através da função SDL_Init e, caso não haja erros, esperamos por 2 segundos, finalizamos o SDL e fechamos o programa.
Pronto! Temos tudo preparado para começar nossa jornada.
Até a próxima.