Tr1g0
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

criar um jogo para linux

Ir para baixo

criar um jogo para linux Empty criar um jogo para linux

Mensagem por Convidad Qua Abr 20, 2011 11:21 pm

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.

Inicializando o uso do SDL em seu código
Primeiramente temos que incluir a biblioteca em nosso código, da seguinte maneira (todos os aplicativos SDL precisam dessa linha):

#include <SDL/SDL.h>

SDL é composto de 8 subsistemas. Neste artigo abordaremos 3 deles, os quais eu julgo serem os principais para o desenvolvimento de um jogo de pequeno porte:

* Manipulação de eventos;
* Entrada/Saída de dados;
* Vídeo.


Cada um desses subsistemas é inicializado através da função SDL_Init, também pode ser usada a função SDL_InitSubSystem, mas a função SDL_Init tem que ser usada antes de qualquer outra função SDL e ela inicializa automaticamente alguns subsistemas, como Entrada/Saída de dados e Manipulação de eventos.

Para iniciar o subsistema de Vídeo e os outros subsistemas padrões, devemos usar a função:

SDL_Init( SDL_INIT_VIDEO );

A função SDL_Init é completada com a função SDL_Quit, que deve ser usada quando terminada o uso da biblioteca SDL, esta função fecha todos os subsistemas inicializados.

Já sabemos como iniciar e como finalizar o uso da biblioteca SDL, o que nos permite criar a aplicação mais básica em SDL, mas de qualquer modo, precisamos aprender a manipular erros. Muitas funções SDL retornam um valor e indicam onde a função teve sucesso e onde ela falhou. Por exemplo, SDL_Init retorna -1 caso não seja possível iniciar um subsistema. SDL possui uma função muito prática para saber no que ocorreu o erro, sempre após ocorrer algum erro este erro é armazenado e podemos recorrer a ele usando a função SDL_GetError. Sempre use isso com freqüência, creio que você não pode ter muito conhecimento sobre um erro sem usar essa função.

Agora que já sabemos o básico, vamos ao primeiro exemplo:

#include <SDL/SDL.h>
#include <stdio.h>

int main()
{
printf("Iniciando SDL...\n");

if ( SDL_Init(SDL_INIT_VIDEO) == -1) {
printf("Impossível iniciar SDL.. %s\n", GetError());
exit(-1);
}

printf("SDL iniciado...\n");

printf("Fechando SDL...\n");

SDL_Quit();

printf("Fechando o aplicativo...\n");

exit(0);
}



Para compilar:

$ gcc teste.c -o teste -lSDL

[color:0e82=\"Red\"]Vídeo e gráficos
Vamos falar primeiramente sobre o vídeo, praticamente é para isso que o SDL é usado. Todos os programas em SDL tem que usar essa função de qualquer maneira.

Aqui vai um exemplo com comentários:

/* Cria uma surface SDL */
SDL_Surface *screen;

/* Inicia o vídeo */
if (SDL_Init(SDL_INIT_VIDEO) == -1) {
printf("Impossível iniciar SDL %s",SDL_GetError());
exit(-1);
}

/* Usando esta função não precisamos usar a SDL_Quit antes de
usar a função exit */*
atexit(SDL_Quit);

/* Aqui iremos iniciar o vídeo em resolução 640x480 com 16
bits-per- pixel, usando o Hardware */*
screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE);

/* Caso ele não consiga usar este modo de vídeo */
if (screen == NULL) {
printf("Impossível trocar modo de vídeo. %s", SDL_GetError());
exit(-1);
}

Agora que iniciamos o vídeo, não queremos que a nossa janela fique vazia, né? Então vamos carregar um BMP e colocá-lo no vídeo usando uma função.

void mostrar_bmp(char *arquivo)
{
SDL_Surface *imagem;

/* Carrega o Bitmap na surface criada */
imagem = SDL_LoadBMP(arquivo);
if (imagem == NULL) {
printf("Impossível carregar o arquivo %s: %s", arquivo, SDL_GetError());
exit(-1);
}

/* Coloca a imagem na tela */
if (SDL_BlitSurface(imagem, NULL, screen, NULL) < 0) {
printf("Erro no BlitSurface: %s", SDL_GetError());
exit(-1);
}

/* Atualiza toda a tela */
SDL_UpdateRect(screen, 0,0,0,0);

/* Desaloca a imagem */
SDL_FreeSurface(imagem);
}

[color:0e82=\"Red\"]Manipulação de eventos do teclado
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):

Links
Site oficial do SDL:

* http://www.libsdl.org/index.php


SDL Library Documentation - Um pouco desatualizado, porém útil:

* http://sdldoc.csn.ul.ie/index.php

PS: Eu tou a Fazer a versao linux do WOT (World of Tanks), apos, ter estado a copiar informação de .dll e .exe e depois compilar a informacao, descobri, e agora, so falta fazer um FTP e um VPN para fazer o download das actualizacoes Officiais do site e compilalas para SDL.

Informações:

VPN: Rede Privada Virtual ou Virtual Private Network é uma rede de comunicações privada normalmente utilizada por uma empresa ou um conjunto de empresas e/ou instituições, construída em cima de uma rede de comunicações pública (como por exemplo, a Internet). O tráfego de dados é levado pela rede pública utilizando protocolos padrão, não necessariamente seguros.

VPNs seguras usam protocolos de criptografia por tunelamento que fornecem a confidencialidade, autenticação e integridade necessárias para garantir a privacidade das comunicações requeridas. Quando adequadamente implementados, estes protocolos podem assegurar comunicações seguras através de redes inseguras.

Deve ser notado que a escolha, implementação e uso destes protocolos não é algo trivial, e várias soluções de VPN inseguras são distribuídas no mercado. Adverte-se os usuários para que investiguem com cuidado os produtos que fornecem VPNs. Por si só, o rótulo VPN é apenas uma ferramenta de marketing. By Wikipedia

FTP: File Tranfer Protocol (Protocolo de Transferência de Arquivos), e é uma forma bastante rápida e versátil de transferir arquivos (também conhecidos como ficheiros), sendo uma das mais usadas na internet.

Pode referir-se tanto ao protocolo quanto ao programa que implementa este protocolo (Servidor FTP, neste caso, tradicionalmente aparece em letras minúsculas, por influência do programa de transferência de arquivos do Unix / Linux).

A transferência de dados em redes de computadores envolve normalmente transferência de arquivos e acesso a sistemas de arquivos remotos (com a mesma interface usada nos arquivos locais). O FTP (RFC 959) é baseado no TCP, mas é anterior à pilha de protocolos TCP/IP, sendo posteriormente adaptado para o TCP/IP. É o padrão da pilha TCP/IP para transferir arquivos, é um protocolo genérico independente de hardware e do sistema operacional e transfere arquivos por livre arbítrio, tendo em conta restrições de acesso e propriedades dos mesmos. By Wikipedia e Editado por Tmnovo (Algumas das informaçoes estavam erradas)

avatar
Convidad
Convidado


Ir para o topo Ir para baixo

criar um jogo para linux Empty Re: criar um jogo para linux

Mensagem por Convidad Qui Abr 21, 2011 4:10 am

interessante, nao conhecia. Sou capaz de a usar se algum dia me der ao trabalho de programar pa linux/BSD/mac.

Contudo nao acho que os do WoT achem muita graça tu andares a fazer reverse engineering e a recompilar o jogo deles Muito Contente

Podias tambem ter dito que linguagem de programacao usaste ai nos exemplos (C?) e que linguagens essa library suporta Blink Devil
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

criar um jogo para linux Empty Re: criar um jogo para linux

Mensagem por Convidad Sex Abr 22, 2011 1:02 pm

Vou exprimentar no Ubuntu quando o meu PC vier e estiver operacional.

Depois digo algo.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

criar um jogo para linux Empty Re: criar um jogo para linux

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos