SlideShare uma empresa Scribd logo
Iniciar Fechar
}
Quem sou eu? (){
Instrutor: Leinylson Fontinele Pereira
Bacharel em Ciência da Computação (em
conclusão)
Universidade Estadual do Piauí (UESPI)
Título: Utilização de Heurísticas
Bioinspiradas em Sistemas de Inteligência
Coletiva para Otimização de Roteamento de
Pacotes em Redes Mesh
}
O que veremos?
Bom minicurso a todos!
 Introdução: O que são jogos ?
 Evolução Histórica
 Mercado Nacional
 Etapas de Desenvolvimento de Jogos
 Dicas
}
O que faremos? (){
 Trabalho com animações;
Noções de temporização e simulação;
Desenho e utilização de imagens vetoriais (sprites) e som digitais (MID, samples);
Programação de efeitos gráficos;
Criação e manipulação de formas primitivas;
Realização de testes de detecção de colisões, bem com todos os passos para produzir
um jogo, da elaboração do enredo ao protótipo.
}
Atividade Multidisciplinar
. : : Pré-requisitos : : .
 Programação (estrutura de dados, IA, Manipulação de
ponteiros; Laços de repetição);
 Engenharia de Software;
 Computação Gráfica;
 Música;
 Matemática;
 Física;
 IHC;
 Educação e Psicologia.
}
Do que é feito um jogo?(){
. : : O Jogo : : .
 O jogo no nosso contexto é o jogo eletrônico, uma simulação visual e interativa exibida
numa tela.
 A interação é tal que o jogador deve ter algum objetivo específico como ir ou sair para
algum lugar , destruir algo, resolver um problema, etc.
Um jogo nos dá um controle sobre um personagem ou um objeto virtual, de modo que
possamos ter um controle e uma imersão no ambiente virtual que se aproxime do nosso
controle e imersão no ambiente real só que com regras e motivações diferentes.
. : : Gameficação : : .
 Termo muito utilizado por empresas que buscam difundir seus produtos através de
jogos/animações.
}
Do que é feito um jogo?(){
}
. : : O Jogador : : .
 Jogador é um participante do jogo.
 Um jogador pode ser uma pessoa real ou um jogador
controlado pelo próprio jogo. Sempre que nós nos
referirmos à um jogador , estaremos nos referindo a um
jogador real.
 A interação do jogo com o jogador é feito com
dispositivos de entrada e saída do jogo, geralmente a
tela e um controle.
 Na maioria das vezes, o jogador controla o
personagem central do jogo.
Do que é feito um jogo?(){
}
. : : Personagem : : .
 O personagem de um jogo de vídeo-game é
personagem fictício para que o jogador controle.
 Nos primeiros jogos o personagem era apenas uma
figura sem expressão, dotada de alguma característica
especial (andar , pular) e não possuíam uma história ou
motivação.
 O primeiro personagem de vídeo-game foi o Mario,
criado por Shigeru Miyamoto para a Nintendo.
 Com o tempo, os personagens de vídeo-game foram
incorporados à cultura-pop. Com mário surgiu o conceito
de mascote do jogo. Esse tipo de personagem carismático
agrega um grande valor por sua importância publicitária
graças a sua identificação com o público.
Do que é feito um jogo?(){
}
. : : Menus : : .
 Os menus são interfaces de texto e/ou imagens
onde o jogador deve fazer escolhas e ajustes.
Antes do jogo começar os menus servem para
fazer ajuste de preferenciais do jogo, escolha do tipo
de jogo, performance do hardware, etc.
 Dentro do jogo eles servem para fazer escolhas e
ajustes mais complexos.
Nem todo jogo precisa de menus dentro do jogo,
mas certamente vai precisar de um menu antes do
jogo começar .
Do que é feito um jogo?(){
}
Do que é feito um jogo?(){
}
. : : HUD : : .
 Sigla para Head Up Display. É um método de
representação visual de informações importantes para
o jogador. São como menus não interativos.
 Em geral eles exibem informações como munição,
life, arma selecionada, pontuação, dinheiro ou ítens.
 O HUD é desenhado por último na tela, de modo
que ele fique sempre visível para o jogador. Ele não
deve se mover muito ou conter palavras para que não
distraia o jogador .
 Ele deve ser sempre que possível iconográfico, ou
seja, usando imagens que representem a informação.
Do que é feito um jogo?(){
}
Do que é feito um jogo?(){
}
. : : Sprites : : .
O Desafio:
 Como causar a impresão de movimento dos personagens?
A Solução:
 Utilizaremos sprite, ou seja, um conjunto de dados que definem determinado objeto ou
personagem num jogo. Para uma pessoa, por exemplo, podemos ter um sprite que contenha as
posições vertical e horizontal dela no mundo, a direção para onde ela está virada e os bitmaps
que podem representá-la durante o jogo.
Do que é feito um jogo? (){
}
Do que é feito um jogo?(){
}
Do que é feito um jogo?(){
}
. : : Tileset: : .
 Consiste em agrupar várias imagens pequenas a fim de montar uma imagem grande.
Do que é feito um jogo?(){
}
. : : Som : : .
 Embora não sejam fundamentais no jogo, os sons existem nos jogos desde o primeiro jogo.
Os sons ajudam a caracterizar certas ações, aumentar o nível de imersão do jogador e deixa-lo
mais concentrado no jogo.
 Os sons podem ser construídos por sonoplastia. Deve-se ter em mente que diferentes sons
provocam diferentes efeitos sobre sensorialidade do jogador. Os sons ligados a uma ação ou
personagem não precisam ser os mesmos sons ligados a estes no mundo real. Pose-se usar
sons diversos afim de obter efeitos cômicos, criar tensões, força ou simplesmente obter
sensações agradáveis.
Do que é feito um jogo?(){
}
. : : Música : : .
 A música serve para se criar uma base para as imagens e os outros sons.
 Com a construção da música certa pode-se criar ambientes agradáveis, tensos, pode-se
deixar o jogador mais nervoso com uma música mais rápida e pode-se até usar o recurso do
silêncio para criar um clima de suspense.
 É sempre bom ter algum repertório de músicas no jogo, e ter músicas de duração
razoável, caso contrário as músicas podem ficar chatas e repetitivas.
 As músicas de jogos também criam um lembrança especial do jogo nos jogadores e cria
um sensação agradável ao se jogar .
Do que é feito um jogo?(){
}
. : : Física : : .
 Um jogo é uma simulação. Essa simulação é, na maioria das vezes, uma representação do
mundo em que vivemos. Essa representação, seja por limitações de software e hardware ou por
escolha estética, não contem todos os aspectos do mundo real. Porém um aspecto que quase
sempre está presente é o físico.
 Esse aspecto se manifesta principalmente na detecção de colisão.
 Se o objeto A depois que ele se mover colide em algo então faz alguma coisa.
 Essa alguma coisa pode variar de jogo para jogo. Pode ser que o objeto A seja um personagem
e o algo seja uma parede. Então o "faz alguma coisa” pode ser nada, ele bate na parede portanto
não anda, mas pode ser que o personagem tenho batido em algo que o machuque como o fogo,
então o "faz alguma coisa" pode ser tirar vida do jogador .
 Uma técnica de colisão bem simples e que vamo usar aqui é verificar se o retângulo que
envolve o sprite toca o retângulo que envolve o outro sprite:
Do que é feito um jogo?(){
}
Do que é feito um jogo?(){
}
Do que é feito um jogo?(){
. : : Finite State Machines : : .
}
Quem participa da criação? (){
Game Designer
Elabora os elementos do jogo bem como sua mecânica. Os elementos são
os personagens e o cenário e a mecânica são as possibilidades que o
jogador tem de interagir com o jogo. Empresas que elaboram jogos de
ponta modernos dividem as responsabilidades do game designer com
outros profissionais relacionados, sendo os principais, o combat designer
e o level designer.
Roteirista
Descreve como é a trama do jogo, o perfil psicológico dos personagens e
a interação entre eles, sendo a interação do tipo social e/ou psicológica, a
qual não necessariamente corresponde àquela entre o jogador e os
personagens do jogo.
Tester
Trabalha na equipe de Q&A (Quality Assurance - Controle de
qualidade). Testa diversos aspectos do jogo e relata os pontos falhos ou a
serem melhorados.
}
Quem participa da criação? (){
Programador
Elabora a programação do jogo. Desenvolve códigos para lidar com
AI, música, interação, etc. Com exceção de jogos independentes uma
empresa tem diversos programadores em seu elenco, sendo que cada
um é especializado numa área (rendering, ai, rede, etc…).
Engenheiro de software
Projeta os componentes de software do jogo envolvendo diversos
aspectos como a composição dos objetos, a interface deles, a
interrelação existente entre eles, etc.
Programador Web && Programador de redes = ¬¬ aff
Programador de AI
Responsável por programar os algoritmos de Inteligência Artificial
usados no jogo. Dentre estes algoritmos estão o de planejamento
estratégico de grupo num atirador de primeira pessoa, a montagem da
estratégia do time controlado pela CPU num jogo de esportes, o
planejamento de caminho para levar um personagem NPC de um
local ao outro, etc.
}
Quem participa da criação? (){
Engenheiro de som
Produz os efeitos sonoros e a música tema.
Level designer
Faz o projeto da fase em que o jogador se encontra. Quais
elementos compõem a fase, há a presença de alguma característica
distintiva no terreno como aclives, declives, montanhas, etc.
Combat Designer
Projeta como será o combate entre o jogador e o computador.
Quais são os elementos que devem estar presentes no combate,
qual o papel destes elementos (dano, cobertura, etc).
}
Equipe de desenvolvimento de jogos
}
Como é feito um jogo 2D? (){
. : : Plano Cartesiano (x,y): : .
}
Como é feito um jogo 2D? (){
}
Jogos 2D
}
Jogos 3D
}
Os bastidores de um jogo(){
Preparar os elementos. Nessa parte, o programa irá carregar o
necessário para sua execução (como imagens e sons), bem
como preparar as estruturas de dados usadas pelo mesmo.
Montar a primeira tela. Aqui o programa coloca cada elemento
em seu lugar inicial, de acordo com a vontade do
desenvolvedor.
Checar a situação atual do jogo, e aí criar uma nova
tela. Agora o programa deve preparar uma nova tela, levando
em conta a situação anterior do jogo e a(s) entrada(s) do
jogador. É aqui, por exemplo, que o programa checaria se o
quadrado que representa a cabeça da cobrinha está contido na
lista de quadrados que representam seu corpo, ou de forma
mais simples, se a cobrinha bateu nela mesma.
Repetir... Agora tudo o que resta é continuar esse processo de
calcular uma nova tela e mostra-la até que o jogo acabe.
}
Os bastidores de um jogo(){
}
O que são engines? (){
Definição: “É a ferramenta que se encarregará por entender como o hardware gráfico, irá
controlar os modelos para serem renderizados, tratará das entradas de dados do jogador,
tratará de todo o processamento de baixo nível e outras coisas que o desenvolvedor de jogos
normalmente não deseja fazer ou não tem tempo para se preocupar . ”
}
Engines (){
}
PyGame (){
 Você que sempre gostou de jogar e decidiu cursar Ciência da Computação para aprender
como é que aqueles games são feitos e logo se viu travando uma batalha para passar em Cálculo,
Álgebra Linear e Geometria Analítica.
 Certo, primeiro é preciso ficar claro que não estamos falando de um programinha a lá RPG
Maker no qual você "pinta" os mapinhas na tela e arrasta personagens pré-feitos para o jogo.
 O Pygame é um conjunto de módulos que você importa num código em Python, os quais lhe
disponibilizam uma série de funcionalidades auxiliares para criação de aplicativos multimídia
e games.
}
PyGame (){
Vários processadores podem ser usados facilmente.
O uso de vários núcleos adiciona um desempenho muito maior ao seu jogo.
As funções internas são implementadas em C e Assembly.
Código em C costuma ser de 10 a 20 vezes mais rápido que Python. Já Assembly tem uma
performance de mais de 100 vezes maior que Python.
Portátil mesmo.
Aplicativos programados em Pygame podem rodar tanto em plataformas Windows
quanto em Linux, Solaris, FreeBSD, Mac OS, Android, entre outros. O código ainda dá
suporte a Dreamcast e também pode ser usado em dispositivos móveis.
Simples!
O Pygame é usado no projeto OLPC para ensinar programação a crianças. Ao mesmo
tempo, também é a preferência de programadores experientes.
}
PyGame (){
}
Engines (){
}
Allegro (){
Allegro é uma biblioteca de funções para jogos 2D feita em C.
Apesar de ter algumas funções para jogos 3D ela não é indicada para isso, sendo no lugar
dela uma API3d como OpenGL ou DirectX
De acordo com a Companhia Oxford de Música, Allegro é o italiano para "rápido, vivo e
brilhante".
Ele também é um acrônimo recursivo que representa "Allegro Low Level Game Routines"
}
Cores (){
}
Allegro (){
int allegro_init()
Esta é a principal função, e deve obrigatoriamente ser chamada para uma aplicação
Allegro funcionar, lembre-se que a chamada desta função deve ser a primeira a ser feita,
antes de qualquer outra função Allegro.
Exemplo de uso: allegro_init();
PyGame: import pygame
from pygame.locals import*
int makecol( int iRed, int iGreen, int iBlue );
Passando-se os valores dos tons (que variam de 0 a 255), de vermelho, verde e azul, esta
função retorna o código da cor.
Exemplo de uso: makecol (255, 0, 0 );
PyGame: Realizada de forma similar
}
Allegro (){
void rest(unsigned int uiTime)
Interrompe a execução do programa durante um intervalo de tempo igual ao passado
como parâmetro, em milisegundos.
Exemplo de uso: rest (1000);
PyGame: Clock = pygame.time.Clock()
Clock.tick(int Time)
void textprintf_ex(BITMAP *bmp, FONT font, int iX, int iY, int iColor, int iCorDeFundo, char sTexto, ... );
Função para exibir um texto na tela, o sexto parâmetro deve ser -1 para um fundo transparente.
Exemplo de uso: textprintf_ex(screen, font, 10, 20, makecol(200, 200, 20), -1, "X vale : %d", 10 );
PyGame: Font = pygame.font.Font("font.ttf",128)
}
Allegro (){
void putpixel(BITMAP *bmp, int iX, int iY, int iColor)
Colore um pixel do bitmap, nas coordenadas especificadas no segundo parâmetro e terceiro
parâmetro, na cor passada no quarto parâmetro.
Exemplo de uso: putpixel(screen, 20, 300, makecol(0, 200, 30));
void getpixel(BITMAP *bmp, int iX, int iY, int iColor)
Recupera o valor da cor de um pixel do bitmap, nas coordenadas especificadas no segundo
parâmetro e terceiro parâmetro, na cor passada no quarto parâmetro.
Exemplo de uso: int iPixelColor = getpixel(screen, 20, 300, makecol(0, 200, 30 ));
void floodfill(BITMAP *bmp, int iX, int iY, int iColor);
Preenche um bitmap com a cor especificada, em um espaço fechado, a partir do ponto X e Y.
Exemplo de uso: floodfill (screen, 20, 30, makecol(20, 60, 300));
}
Allegro (){
void vline(BITMAP *bmp, int iX, int iY1, int iY2, int iColor);
void hline(BITMAP *bmp, int iX1, int iY, int iX2, int iColor);
void line(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);
A primeira função desenha uma linha vertical, a segunda função desenha uma linha horizontal e
a ultima função desenha uma linha entre 2 pontos quaisquer.
Exemplo de uso: line (screen, 20, 300, 400, 500, makecol(20, 60, 300));
void rect(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);
void rectfill(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);
A primeira função desenha um retângulo sem preenchimento, com o contorno colorido, enquanto
a segunda função desenha um retângulo com preenchimento.
Exemplo de uso: rectfill (screen, 20, 300, 400, 500, makecol(20, 60, 300));
}
Allegro (){
void circle(BITMAP *bmp, int iX, int iY, int iRaio, int iColor);
void circlefill(BITMAP *bmp, int iX, int iY, int iRaio, int iColor);
A primeira função desenha um círculo sem preenchimento, com o contorno colorido, enquanto a
segunda função desenha um círculo com preenchimento.
Exemplo de uso: circlefill (screen, 20, 300, 10, makecol(20, 60, 300));
void ellipse(BITMAP *bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor);
void ellipsefill(BITMAP *bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor);
A primeira função desenha uma elipse sem preenchimento, com o contorno colorido, enquanto a
segunda função desenha uma elipse com preenchimento.
Exemplo de uso: ellipsefill (screen, 20, 300, 5, 10, makecol(20, 60, 300));
 Biblioteca para construção de jogos e aplicações multimídia em geral
 Free Source
 Voltada mais especialmente para jogos 2D
 Conhecida pela facilidade de adicionar entrada de dados via teclado, mouse e joystick.
 Suporta arquivos de configuração e de dados comprimidos
 Temporizadores
 Grande comunidade de desenvolvedores
Allegro (){
 Multi-plataforma
 DOS
 Windows
 Linux
 Mac (OS X)
 BeOS
 QNX
 Primitivas Gráficas
 Rectas, círculos, elipses
 Polígonos (sólidos, texturados, transparentes)
 Texto em modo gráfico
 Animações
Allegro (){
 Incluir <allegro.h> depois de todos os demais includes
 Deve sempre aparecer uma chamada à função allegro_init() o mais perto possível do início
do programa.
 Da mesma forma devem ser chamadas, a seguir, as funções install_keyboard(),
install_mouse() e install_timer().
 A função allegro_exit() deve ser chamada no final do programa.
 Colocar a macro END_OF_MAIN() logo após a chave final da rotina main()
 Ao compilar, incluir a biblioteca alleg:
 gcc -o test test.c –lalleg
Allegro (){
 Especificado antes de começar a desenhar:
int set_gfx_mode (int card, int w, int h, int v_w, int v_h);
 Onde:
 card é usualmente GFX_AUTODETECT, GFX_AUTODETECT_FULLSCREEN ou
GFX_AUTODETECT_WINDOWED
 w , h largura e altura
 v_w , v_h largura e altura virtual (normalmente, 0)
Allegro (){
 Bitmaps são matrizes de pixels, em que cada valor indica uma cor
 Tela é um BITMAP especial chamado screen
 BITMAPs adicionais podem ser criados com:
 BITMAP *bmp = create_bitmap(int width, int height);
Allegro (){
. : : Periféricos de Entrada – Teclado : : .
 Teclado
 install_keyboard()
 /* Para inicializar as rotinas do teclado */
KEY_ALTGRAlt Direito
KEY_ALTAlt esquerdo
KEY_RCONTROLControl Direito
KEY_LCONTROLControl Esquerdo
KEY_RSHIFTShift Direito
KEY_LSHIFTShitf Esquerdo
KEY_PRTSCRPrint Screen
KEY_SPACEBarra de Espaço
KEY_PAUSEPause
KEY_DOWNSeta para Baixo
KEY_UPSeta para Cima
KEY_LEFTSeta para a Esquerda
KEY_RIGHTSeta para a Direita
KEY_ENTEREnter
KEY_ESCEsc
KEY_0 ... KEY_9Teclado Normal 0 a 9
KEY_0_PAD ... KEY_9_PADTeclado Numérico 0 a 9
KEY_A, KEY_B...KEY_ZA, B ... Z
Código na ArrayTecla
 Váriável global int key[]
 permite ver quais teclas estão
pressionadas.
 constantes definidas para identificar
cada tecla
Allegro (){
 install_mouse() /* Para inicializar as rotinas do mouse */
 Retorna -1 em caso de falha ou o número de botões que o mouse tem em caso de sucesso
. : : Periféricos de Entrada – Mouse : : .
 Usa-se a função show_mouse para que o cursor do mouse seja mostrado no bitmap especificado
 Passando NULL como parâmetro esconde o cursor do mouse
 Deve-se ter cuidado ao desenhar algo na tela pois o cursor do mouse pode passar por cima e
estragar o desenho, por isso é sempre bom escondê-lo antes de desenhar qualquer coisa

Allegro (){
 As variáveis mouse_x e mouse_y contêm a posição do cursor do mouse na tela.
 A variável mouse_b contém o estado dos botões.
 (mouse_b & 1) é verdadeiro se o botão esquerdo estiver pressionado.
 (mouse_b & 2) é verdadeiro se o botão direito estiver pressionado.
 Som digital: WAV. Música: MID.
 Antes de se tocar um som digital ou música deve-se carregá-los da seguinte forma:
/* declaração das variáveis que guardarão sons e músicas */
SAMPLE *som1; /* SAMPLE = arquivos de som digital */
MIDI *musica; /* MIDI = arquivos de música */
/* carrega os arquivos usando-se as respectivas funções */
som1 = load_wav(“arquivo.wav”); /* para arquivos wav */
musica = load_midi(“arquivo.mid”); /* para arquivos mid */
 Ponteiro nulo -> arquivo não encontrado.
Allegro - Som (){
 Para tocar uma música usa-se a função play_midi. O primeiro parâmetro é o arquivo
MIDI carregado, o segundo indica se ele tocará em loop ou não.
/* Exemplo para tocar um arquivo MIDI */
MIDI *musica; /* declaração da variável a ser usada */
musica = load_midi(“musica.mid”); /* carrega arquivo */
play_midi(musica,TRUE); /* toca a música em loop */
 Para parar de tocar uma música usa-se a função stop_midi().
Som – MIDI’s (){
 Para tocar um som digital usa-se a função play_sample. Os cinco parâmetros indicam:
arquivo carregado, volume (0 a 255), equilíbrio entre as caixas (0 a 255, 128 é meio a meio),
freqüência (1000 usa a frequência original, 500 usa a metade da freqüência original etc.) e se
vai ser tocado em loop
 Função stop_sample() pára de tocar
/* Exemplo para tocar um arquivo de som WAV */
SAMPLE *som; /* declaração da variável a ser usada */
som = load_wav(“som.wav”); /* carrega arquivo */
play_midi(musica,255,128,1000,FALSE); /* toca som */
Som - Samples (){
 Executar pedaço de código em velocidades diferentes
Para isso, colocar cada um dos trechos de código numa função diferente
 Allegro só permite o uso de 16 timers
 int install_int(void (*proc)(), int speed) /* cria timer */
 install_timer(); /*inicializa timer, opcional */
 void remove_int(void (*proc)()) /* remove função da lista */
 Notas:
 Todas variáveis globais acessadas nos timers devem ser trancadas com a macro
LOCK_VARIABLE()
 Todas as funções de "timer" devem ser trancadas com
 LOCK_FUNCTION()
 speed representa milésimos de segundo
Timming no Allegro (){
}
Etapas de elaboração de um jogo (){
 Idéia
 Rascunho do jogo
 Detalhamento do jogo
 Game Design Document (GDD)
 Produção de áudio e imagens 2D
 Desenv. de artefatos computacionais
(engines)
 Integração (arte e computação)
}
Idéia (){
 Muitas idéias vem dos sonhos.
 Surgem de pequenos conceitos expandidos em Brainstorm.
 Grandes idéias poder parecer ridículas no começo.
}
Rascunho do jogo (){
 Personagens, fases, itens com pequenas descrições.
 Fluxo das telas do jogo e menus.
}
Detalhamento do jogo (){
 O que o jogador fará no jogo ?
 Quantos inimigos o herói vai enfrentar ? Como eles são ?
 Quais as armas disponíveis que o jogador poderá usar ?
 Como será o sistema de vida do jogador ?
 Qual o objetivo do jogo ? Quantas fases terá ? Como elas
serão (cenário, inimigos, dificuldade, etc) ?
 Quantos jogadores poderão jogar o jogo ?
 Qual o tipo de visualização gráfica ?
 Qual o tipo de trilha sonora ?
}
Game Design Document (GDD){
 Conceito:
– Nome do jogo, público alvo, história, regras...
 Especificações técnicas:
– Hardware, sistema operacional...
 Especificações do jogo:
– Número de fases, personagens, itens, cenários...
 Dispositivo de entrada:
– Mouse, teclado...
 Design gráfico e arte:
– Abertura, layout de menus e telas, final do jogo...
 Sonorização:
– Músicas nos menus, músicas nas fases...
 Desenvolvimento:
– Tempo de desenvolvimento, alocação de pessoas...
}
Programação de Jogos (){
. : : Algumas Técnicas : : .
 Animação com Double Buffering
 Scrolling
 Sprites
 Detecção de Colisão
 Dar a impressão de que coisas se movem
 Pode significar mover um pixel ao longo da tela mas, geralmente, significa uma
mudança repetitiva da apresentação de algo para que dê a ideia de que se move.
 Qual a técnica mais simples?
 limpamos a tela, desenhamos os objetos, limpamos a tela novamente, desenhamos
os objetos nas novas posições.
Animação (){
}
Double Buffering (){
O Problema:
 Quando vamos fazer animações usando o Allegro, surgem alguns problemas relacionados
aos vários métodos que podem ser utilizados. O método mais simples que podemos imaginar é
aquele em que limpamos a tela, desenhamos os objetos, limpamos a tela novamente,
desenhamos os objetos nas novas posições, e assim por diante. Este método, porém, tem um
grave problema: a tela pisca a cada limpeza.
A Solução:
 Dispomos de um bitmap auxiliar (chamado de buffer) que, normalmente, possui o tamanho
da tela (ou o tamanho da região onde ocorre a animação). Desenhamos, neste buffer, os objetos
que devem ser apresentados na tela. Após isso, desenhamos o conteúdo do buffer na tela,
fazendo com que os objetos apareçam. Limpamos, então, o buffer, desenhamos os objetos
novamente em suas novas posições, passamos o conteúdo do buffer para a tela, e assim por
diante.
 Qual o problema desta técnica?
Efeito Flicker - efeito de cintilação ou vibração de uma imagem na tela do computador
Instante 1 Instante 2: Limpar a tela Instante 3
Double Buffering (){
 Qual a solução?
Instante 2: Limpar a telaInstante 1 Instante 3
Buffer
Instante 1 Instante 3
Tela
Instante 2
Efeito Flicker (){
}
Scrolling (){
O Problema:
 Como dar movimento ao personagem e aos objetos envolvidos?
A Solução:
 Movimento de cenário. O scrolling consiste em movimentar o fundo do cenário e,
normalmente, deixar o personagem controlado parado, o que causa uma sensação de
movimento. O scrolling pode ser horizontal, vertical ou em ambas as direções.
 O exemplo demonstra como utilizar o scrolling, desenhado um boneco (parado) no meio da
tela, enquanto o fundo se move de baixo para cima, fazendo com que tenhamos a sensação de
que o boneco está caindo.
}
Parallax Scrolling (){
O Problema:
 Como causar a sensação de profundidade presente em jogos 3D?
A Solução:
 Utilizar vários fundos que se movimentam em velocidades diferentes.
O exemplo demonstrará um parallax scrolling horizontal.
}
Detecção de Colisão (){
O Problema:
 Como verificar se dois sprites estão sobrepostos, ou seja, se houve uma colisão?
A Solução:
 Existe o método que chamamos de força bruta (checar cada ponto de um sprite com cada
ponto de outro sprite) qué é ineficiente, a maior parte dos outros métodos são aproximativos.
Veremos o principal deles, que consiste em dividir os sprites em retângulos, de forma que
possamos verificar se cada retângulo está ou não sobreposto a outro.
Fazer com que o sprite tenha sua movimentação limitada às bordas do nosso jogo não deixa
de ser uma forma de detecção de colisão, bem simples, é verdade. Porém, em jogos 2D,
geralmente se deseja realizar detecção de colisão entre dois ou mais sprites no jogo.
}
Detecção de Colisão (){
. : : Colisão entre Esferas : : .
Contudo, apesar do sistema de detecção de colisões estar utilizando o algoritmo do bouncing
box, depois de alguns testes você perceberá um problema. Se os sprites colidirem
diagonalmente, eles irão colidir antes de atingirem um ao outro de verdade. Isso está ocorrendo
justamente por utilizarmos caixas para representar a forma geométrica das esferas.
Quando queremos testar colisões entre esferas, teremos que verificar se a distância entre os
centros delas são menores que a soma dos seus raios. Em caso positivo, então uma colisão
ocorreu. Essa é a forma mais eficiente de detectar colisões entre duas esferas.
Para detectar a colisão entre duas formas circulares, usamos o teorema de Pitágoras:
(r2 = x2 + y2)
}
Detecção de Colisão (){
. : : Colisão entre Esferas : : .
A soma dos quadrados dos dois lados (hipotenusa
ao quadrado) é menor ou igual que o quadrado da
soma dos raios das duas formas (que no fundo, é
como se fosse o quadrado de um dos lados), mais o
quadrado da soma dos raios das duas formas (que
no fundo, é como se fosse o quadrado do lado
restante. Esta "grande" soma, é como se fosse uma
segunda hipotenusa ao quadrado.). Básicamente,
quando a distância entre as duas formas (ao
quadrado) for igual ou menor que a soma dos dois
raios (ao quadrado), dá-se a colisão..
}
Detecção de Colisão (){
. : : Colisão entre Esferas : : .
If ((formx*formx + formy*formy) <= ((rad1 + rad2)*(rad1 + rad2)) + ((rad1 + rad2)*(rad1 + rad2)))
"/:collission" = "Sim"
Else "/:collission" = "Não"
End If
}
Mercado Nacional
}
Dicas – Produção & Pesquisa (){
 Som
– Sound Forge: produção de trilhas e efeitos sonoros.
– Cubase: mixagem de canais MIDI
– Audacity: permitir criar áudio, inclusive combinar diferentes canais de som.
 Imagens 2D
– Tiles
– Bricks
– Layers
– Sprites
}
Dicas – O que fazer ? (){
 Estudar muito !
 Conhecer as novidades no mundo dos jogos
 Jogar bastante e diferentes tipos de jogos
 Buscar fazer contatos
 Participar de eventos relacionados
 Começar a desenvolver jogos fáceis:
– Pong, Arkanoid, Space Invaders, Tetris, Pacman...
}
Dicas – Livros Nacional (){
}
Dicas – Livros Internacionais (){
}
Dicas – Sites (){
 Abragames
– http://www.abragames.org/
 BRGames
– http://www.brgames2009.com.br/
 PDJ
– http://www.programadoresdejogos.com/
 UNIDEV
– http://www.unidev.com.br/
 GameDevBr
– http://www.gamedevbr.com/
 Gamasutra
– http://www.gamasutra.com
 SharpGames
– http://www.sharpgames.net/
 Ponto V
– http://vinigodoy.wordpress.com/
}
Dicas – Eventos (){
 SBGames – (Simpósio Brasileiro de Jogos e Entretenimento Digital)
 SCGames – (Simpósio Santa Catarina Games)
 IGN - (Independent Game Festival)
– http://www.igf.com/
 Campus Party
– http://campus-party.com.br/
}
Dicas – Competições (){
XNA Game Challenge
– http://www.xnachallenge.com.br/
 Dream Build Play
– http://www.dreambuildplay.com
 Imagine cup
– http://imaginecup.com/
 Maratona de Programação
– http://maratona.ime.usp.br/
}
Dicas – Links interessantes (){
Gráficos:
– http://www.tilemap.co.uk/
– http://reinerstileset.4players.de/
– http://www.hippydrome.com/
 Músicas e Efeitos sonoros:
– http://www.flashkit.com/soundfx/
– http://www.findsounds.com/
 Fonts:
– http://www.1001freefonts.com/
 The game loop:
– http://dewitters.koonsolo.com/gameloop.html
 Game Engines:
– http://www.devmaster.net/engines/
}
Isso é tudo, pessoal! (){
eof 
}
Referências (){
Introdução ao Desenvolvimento de Jogos, Kleber de Oliveira Andrade.
Game Level Design, disponível em: http://www.gamasutra.com/view/feature/175950/the_fundamental_pillars_of_a_.php
McGugan, Will, “Beginning Game Development with Python and Pygame”, 2007.
“PyGameLib”, http://www.pygame.org/, Outubro.

Mais conteúdo relacionado

PDF
Desenvolvimento de Jogos - Mercado Parte 1
Fabio Moura Pereira
 
PPTX
Aplicações web parte 1
Elaine Cecília Gatto
 
PDF
Aula 2 - Processos de Software
Rudson Kiyoshi Souza Carvalho
 
PPTX
Modelagem de dados
Fabrício Lopes Sanchez
 
PDF
Sistemas operacionais
vini_campos
 
PPTX
Bios
Lina Kelly
 
PPTX
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Williams Gomes da Silva
 
PPT
Aula1 e aula2 - Analise e Projeto de Sistemas
Gustavo Gonzalez
 
Desenvolvimento de Jogos - Mercado Parte 1
Fabio Moura Pereira
 
Aplicações web parte 1
Elaine Cecília Gatto
 
Aula 2 - Processos de Software
Rudson Kiyoshi Souza Carvalho
 
Modelagem de dados
Fabrício Lopes Sanchez
 
Sistemas operacionais
vini_campos
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Williams Gomes da Silva
 
Aula1 e aula2 - Analise e Projeto de Sistemas
Gustavo Gonzalez
 

Mais procurados (20)

PPT
Sistemas operacionais
Abnel Junior
 
PPT
Interação Humano Computador Capítulo 8 - Antecipação
Wellington Oliveira
 
PPTX
Exercício - Adição de números Binários
Suzana Viana Mota
 
PPTX
Segurança informática: contexto, conceitos e desafios
Luis Borges Gouveia
 
PPTX
História da computação
Bruno Ramalho
 
PPTX
Estrutura e funcionamento de um sistema informático
Susana Oliveira
 
PPTX
Unidades de medida do sistema binário dos computadores
mariliacherry
 
PDF
Princípios da engenharia de software (marcello thiry)
Marcello Thiry
 
PDF
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Leinylson Fontinele
 
PDF
Aula 6 - Design e Processo de Design de Interfaces de Usuário
André Constantino da Silva
 
PDF
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Leinylson Fontinele
 
PPTX
Aula 2.sistema digestório
Alpha Colégio e Vestibulares
 
PDF
Desenhando Componentes de Software com UML
Rildo (@rildosan) Santos
 
PPTX
Sistemas Operativos
Pmpc10
 
PPT
Estrutura básica de um computador
Ana Covas Grilo
 
PDF
10 perguntas que precisam ser respondidas antes de você iniciar o próximo pro...
Marcelo Neves
 
PPTX
Engenharia De Software
Felipe Goulart
 
ODP
Aula 04: Meios de transmissão
Nilson Mori
 
PPTX
LAFS Game Mechanics - Randomness and Risk
David Mullich
 
PDF
Desafios da cibersegurança - ontem, hoje e amanhã
Luiz Arthur
 
Sistemas operacionais
Abnel Junior
 
Interação Humano Computador Capítulo 8 - Antecipação
Wellington Oliveira
 
Exercício - Adição de números Binários
Suzana Viana Mota
 
Segurança informática: contexto, conceitos e desafios
Luis Borges Gouveia
 
História da computação
Bruno Ramalho
 
Estrutura e funcionamento de um sistema informático
Susana Oliveira
 
Unidades de medida do sistema binário dos computadores
mariliacherry
 
Princípios da engenharia de software (marcello thiry)
Marcello Thiry
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Leinylson Fontinele
 
Aula 6 - Design e Processo de Design de Interfaces de Usuário
André Constantino da Silva
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Leinylson Fontinele
 
Aula 2.sistema digestório
Alpha Colégio e Vestibulares
 
Desenhando Componentes de Software com UML
Rildo (@rildosan) Santos
 
Sistemas Operativos
Pmpc10
 
Estrutura básica de um computador
Ana Covas Grilo
 
10 perguntas que precisam ser respondidas antes de você iniciar o próximo pro...
Marcelo Neves
 
Engenharia De Software
Felipe Goulart
 
Aula 04: Meios de transmissão
Nilson Mori
 
LAFS Game Mechanics - Randomness and Risk
David Mullich
 
Desafios da cibersegurança - ontem, hoje e amanhã
Luiz Arthur
 
Anúncio

Destaque (20)

PDF
Jogos, Computação e Robótica
Kleber de Oliveira Andrade
 
PDF
Lua para Jogos
David Ruiz
 
PPT
Paradigmas de Linguagens de Programacao - Aula #6
Ismar Silveira
 
PPT
Paradigmas de Linguagens de Programacao - Aula #7
Ismar Silveira
 
PPT
Paradigmas de Linguagens de Programacao - Aula #5
Ismar Silveira
 
PPT
Paradigmas de Linguagens de Programacao - Aula #4
Ismar Silveira
 
PPT
Paradigmas de Linguagens de Programacao - Aula #3
Ismar Silveira
 
PDF
Paradigmas de Linguagens de Programação
Fabio Spanhol
 
ODP
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Tony Alexander Hild
 
PPT
Paradigmas de Linguagens de Programacao- Aula #8
Ismar Silveira
 
PPT
Paradigmas de linguagens de programacao - aula#9
Ismar Silveira
 
PPT
E:\Plp 2009 2\Plp 9
Ismar Silveira
 
PPT
Paradigmas de linguagens de programacao - aula#10
Ismar Silveira
 
PDF
Apostila sistema operacional cor capa ficha 2011 02 04
MatheusRpz
 
PDF
A Internet das Coisas
Leinylson Fontinele
 
PPT
Paradigmas de Linguagens de Programacao - Aula #1
Ismar Silveira
 
PDF
Introdução à Computação Aula 01 - Apresentação
Leinylson Fontinele
 
PDF
Introducao ambiente windows
MatheusRpz
 
PPT
Paradigmas de Linguagens de programacao - Aula #2
Ismar Silveira
 
PPT
A Linguagem Lua e suas Aplicações em Jogos
elliando dias
 
Jogos, Computação e Robótica
Kleber de Oliveira Andrade
 
Lua para Jogos
David Ruiz
 
Paradigmas de Linguagens de Programacao - Aula #6
Ismar Silveira
 
Paradigmas de Linguagens de Programacao - Aula #7
Ismar Silveira
 
Paradigmas de Linguagens de Programacao - Aula #5
Ismar Silveira
 
Paradigmas de Linguagens de Programacao - Aula #4
Ismar Silveira
 
Paradigmas de Linguagens de Programacao - Aula #3
Ismar Silveira
 
Paradigmas de Linguagens de Programação
Fabio Spanhol
 
Computação Gráfica - Transformações Geométricas no Plano e no Espaço
Tony Alexander Hild
 
Paradigmas de Linguagens de Programacao- Aula #8
Ismar Silveira
 
Paradigmas de linguagens de programacao - aula#9
Ismar Silveira
 
E:\Plp 2009 2\Plp 9
Ismar Silveira
 
Paradigmas de linguagens de programacao - aula#10
Ismar Silveira
 
Apostila sistema operacional cor capa ficha 2011 02 04
MatheusRpz
 
A Internet das Coisas
Leinylson Fontinele
 
Paradigmas de Linguagens de Programacao - Aula #1
Ismar Silveira
 
Introdução à Computação Aula 01 - Apresentação
Leinylson Fontinele
 
Introducao ambiente windows
MatheusRpz
 
Paradigmas de Linguagens de programacao - Aula #2
Ismar Silveira
 
A Linguagem Lua e suas Aplicações em Jogos
elliando dias
 
Anúncio

Semelhante a Criação de Jogos 2D com Técnicas 3D Utilizando Python e C (20)

PPT
Palestra Game Design
vincevader
 
PPT
Workshop Fischer
vincevader
 
PPT
Palestra - Introdução ao desenvolvimento de Jogos
juliocoopergames
 
PPTX
Palestra Introdução ao Game Design
Leonardo Zamprogno
 
PDF
Games e inovacao tecnologica
Alexsandro
 
PDF
Cp game design
Campus Party Brasil
 
PPTX
Criação de jogos game maker - férias
Instituto Inovar
 
PPTX
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...
Impacta Eventos
 
PPT
Curso Dia 02
cursoferias
 
PPTX
Introdução sobre desenvolvimento de games
Rodrigo Rodrigues
 
PDF
Game Design para quem não é Game Designer
André Kishimoto
 
PPT
6Game Design Process 2010 Unibero Kao Tokio Upload
Kao Tokio
 
PPT
Game Design intro kao tokio unibero 2010
Kao Tokio
 
PPT
Desenvolvimento de jogos com ogre 3D - Mini Curso Unip
jonathanblacknight
 
PPTX
Mecânica de jogos digitais: documentando com Behaviour Driven Developemnt (BD...
Potiguar Indie Games
 
PDF
Desenvolvimento e Post-mortem - "Ataque às Mulheres"
André Kishimoto
 
PDF
Frameworks Formais de Game Design.
Pedro Emil Freme
 
PPT
4 game design_atomos_do_game_unibero_2010
Kao Tokio
 
PPTX
INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS DIGITAIS.pptx
testepro286
 
Palestra Game Design
vincevader
 
Workshop Fischer
vincevader
 
Palestra - Introdução ao desenvolvimento de Jogos
juliocoopergames
 
Palestra Introdução ao Game Design
Leonardo Zamprogno
 
Games e inovacao tecnologica
Alexsandro
 
Cp game design
Campus Party Brasil
 
Criação de jogos game maker - férias
Instituto Inovar
 
Palestra “UDK no Brasil e os Caminhos para Design e Desenvolvimento de games ...
Impacta Eventos
 
Curso Dia 02
cursoferias
 
Introdução sobre desenvolvimento de games
Rodrigo Rodrigues
 
Game Design para quem não é Game Designer
André Kishimoto
 
6Game Design Process 2010 Unibero Kao Tokio Upload
Kao Tokio
 
Game Design intro kao tokio unibero 2010
Kao Tokio
 
Desenvolvimento de jogos com ogre 3D - Mini Curso Unip
jonathanblacknight
 
Mecânica de jogos digitais: documentando com Behaviour Driven Developemnt (BD...
Potiguar Indie Games
 
Desenvolvimento e Post-mortem - "Ataque às Mulheres"
André Kishimoto
 
Frameworks Formais de Game Design.
Pedro Emil Freme
 
4 game design_atomos_do_game_unibero_2010
Kao Tokio
 
INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS DIGITAIS.pptx
testepro286
 

Mais de Leinylson Fontinele (20)

PDF
Utilização do editor de texto Word
Leinylson Fontinele
 
PPTX
Prática com slide.pptx
Leinylson Fontinele
 
PPSX
A galinha carijó
Leinylson Fontinele
 
PDF
Descrição do Projeto 8 puzzle
Leinylson Fontinele
 
PDF
Aula 05 - Importância do teste, auditoria e monitoramento
Leinylson Fontinele
 
PDF
Aula 04 - Implementação efetiva da política de segurança
Leinylson Fontinele
 
PDF
Aula 02 - Agentes Inteligentes
Leinylson Fontinele
 
PDF
Aula 01 - Visão Geral da IA
Leinylson Fontinele
 
PDF
Aula 02 - Aplicação de contramedidas de segurança para mitigar ataques malici...
Leinylson Fontinele
 
PDF
Aula 03 - Controles de acesso apropriados para sistemas, aplicativos e acesso...
Leinylson Fontinele
 
PDF
Aula 01 - Fundamentos da segurança dos sistemas de informações
Leinylson Fontinele
 
PDF
A história da Segurança da Informação
Leinylson Fontinele
 
PDF
Introdução ao Prolog - Prof. Sérgio S. Costa
Leinylson Fontinele
 
PDF
Caso 1 - Boing 777
Leinylson Fontinele
 
PDF
Caso 2 - Aeroporto de Denver
Leinylson Fontinele
 
PDF
Aula 02 - Agentes e problemas de busca
Leinylson Fontinele
 
PDF
Aula 01 - Visão geral da IA
Leinylson Fontinele
 
PDF
Aula 7 - Modelagem de Software
Leinylson Fontinele
 
PDF
Aula 6 - Qualidade de Software
Leinylson Fontinele
 
PDF
Aula 07 - Diagrama de sequencia
Leinylson Fontinele
 
Utilização do editor de texto Word
Leinylson Fontinele
 
Prática com slide.pptx
Leinylson Fontinele
 
A galinha carijó
Leinylson Fontinele
 
Descrição do Projeto 8 puzzle
Leinylson Fontinele
 
Aula 05 - Importância do teste, auditoria e monitoramento
Leinylson Fontinele
 
Aula 04 - Implementação efetiva da política de segurança
Leinylson Fontinele
 
Aula 02 - Agentes Inteligentes
Leinylson Fontinele
 
Aula 01 - Visão Geral da IA
Leinylson Fontinele
 
Aula 02 - Aplicação de contramedidas de segurança para mitigar ataques malici...
Leinylson Fontinele
 
Aula 03 - Controles de acesso apropriados para sistemas, aplicativos e acesso...
Leinylson Fontinele
 
Aula 01 - Fundamentos da segurança dos sistemas de informações
Leinylson Fontinele
 
A história da Segurança da Informação
Leinylson Fontinele
 
Introdução ao Prolog - Prof. Sérgio S. Costa
Leinylson Fontinele
 
Caso 1 - Boing 777
Leinylson Fontinele
 
Caso 2 - Aeroporto de Denver
Leinylson Fontinele
 
Aula 02 - Agentes e problemas de busca
Leinylson Fontinele
 
Aula 01 - Visão geral da IA
Leinylson Fontinele
 
Aula 7 - Modelagem de Software
Leinylson Fontinele
 
Aula 6 - Qualidade de Software
Leinylson Fontinele
 
Aula 07 - Diagrama de sequencia
Leinylson Fontinele
 

Último (20)

DOCX
Mapa da Regionalização da América do Norte.docx
Doug Caesar
 
PDF
OUTONO EM VERSOS - Poesias, Poetrix e Acróstico
elvandroburity
 
PPTX
Slides Lição 6, CPAD, Uma Igreja Não Conivente Com A Mentira, 3Tr25.pptx
LuizHenriquedeAlmeid6
 
DOCX
Mapa da Nova Zelândia - Mapa dos Países do Mundo .docx
Doug Caesar
 
PPT
Ponto_5_-_Valorizacao dos profissionais da educ
mbjustus
 
PDF
4-Curriculo-no-contexto-da-Formacao.447.pdf
HelcimarSilva1
 
PPTX
slide de historia sobre o descobrimento do brasil
speedgames391
 
PDF
Antologia Verso e Prosa Departamento Cultural Clube Naval 2019.pdf
elvandroburity
 
DOCX
Mapa de Papua-Nova Guiné - Mapa dos Países do Mundo
Doug Caesar
 
DOCX
Mapa da Oceania - Países e Dependências.docx
Doug Caesar
 
PPTX
PowerPoint_24_A_defini____o_institucional_de_arte.pptx
16aliceduarte
 
PDF
A Geografia de Portugal.pdfRegiões e relevo.
biblioteca123
 
PDF
Reflexão_Uma análise às licenciaturas que permitem aceder aos mestrados de en...
Nelson Santos
 
PDF
🩺 Ser Enfermeiro.pdfou médico ou outra coisa
biblioteca123
 
DOCX
Mapa das Ilhas Salomão - Mapa dos Países do Mundo
Doug Caesar
 
PDF
Inteligência Artificial Generativa - CMMG.pdf
Ana Paula Coelho Barbosa
 
PDF
Casa2.pdf, apartamento, vivenda, moradia.moadia
biblioteca123
 
PDF
🎨 DiálogoGraça Morais.pdfartista plástica
biblioteca123
 
PDF
Lecionando Inglês com o Scratch: uma mediação da linguagem de programação .
Maria das Graças Machado Rodrigues
 
DOCX
Mapa da Austrália - Mapa dos Países do Mundo.docx
Doug Caesar
 
Mapa da Regionalização da América do Norte.docx
Doug Caesar
 
OUTONO EM VERSOS - Poesias, Poetrix e Acróstico
elvandroburity
 
Slides Lição 6, CPAD, Uma Igreja Não Conivente Com A Mentira, 3Tr25.pptx
LuizHenriquedeAlmeid6
 
Mapa da Nova Zelândia - Mapa dos Países do Mundo .docx
Doug Caesar
 
Ponto_5_-_Valorizacao dos profissionais da educ
mbjustus
 
4-Curriculo-no-contexto-da-Formacao.447.pdf
HelcimarSilva1
 
slide de historia sobre o descobrimento do brasil
speedgames391
 
Antologia Verso e Prosa Departamento Cultural Clube Naval 2019.pdf
elvandroburity
 
Mapa de Papua-Nova Guiné - Mapa dos Países do Mundo
Doug Caesar
 
Mapa da Oceania - Países e Dependências.docx
Doug Caesar
 
PowerPoint_24_A_defini____o_institucional_de_arte.pptx
16aliceduarte
 
A Geografia de Portugal.pdfRegiões e relevo.
biblioteca123
 
Reflexão_Uma análise às licenciaturas que permitem aceder aos mestrados de en...
Nelson Santos
 
🩺 Ser Enfermeiro.pdfou médico ou outra coisa
biblioteca123
 
Mapa das Ilhas Salomão - Mapa dos Países do Mundo
Doug Caesar
 
Inteligência Artificial Generativa - CMMG.pdf
Ana Paula Coelho Barbosa
 
Casa2.pdf, apartamento, vivenda, moradia.moadia
biblioteca123
 
🎨 DiálogoGraça Morais.pdfartista plástica
biblioteca123
 
Lecionando Inglês com o Scratch: uma mediação da linguagem de programação .
Maria das Graças Machado Rodrigues
 
Mapa da Austrália - Mapa dos Países do Mundo.docx
Doug Caesar
 

Criação de Jogos 2D com Técnicas 3D Utilizando Python e C

  • 2. } Quem sou eu? (){ Instrutor: Leinylson Fontinele Pereira Bacharel em Ciência da Computação (em conclusão) Universidade Estadual do Piauí (UESPI) Título: Utilização de Heurísticas Bioinspiradas em Sistemas de Inteligência Coletiva para Otimização de Roteamento de Pacotes em Redes Mesh
  • 3. } O que veremos? Bom minicurso a todos!  Introdução: O que são jogos ?  Evolução Histórica  Mercado Nacional  Etapas de Desenvolvimento de Jogos  Dicas
  • 4. } O que faremos? (){  Trabalho com animações; Noções de temporização e simulação; Desenho e utilização de imagens vetoriais (sprites) e som digitais (MID, samples); Programação de efeitos gráficos; Criação e manipulação de formas primitivas; Realização de testes de detecção de colisões, bem com todos os passos para produzir um jogo, da elaboração do enredo ao protótipo.
  • 5. } Atividade Multidisciplinar . : : Pré-requisitos : : .  Programação (estrutura de dados, IA, Manipulação de ponteiros; Laços de repetição);  Engenharia de Software;  Computação Gráfica;  Música;  Matemática;  Física;  IHC;  Educação e Psicologia.
  • 6. } Do que é feito um jogo?(){ . : : O Jogo : : .  O jogo no nosso contexto é o jogo eletrônico, uma simulação visual e interativa exibida numa tela.  A interação é tal que o jogador deve ter algum objetivo específico como ir ou sair para algum lugar , destruir algo, resolver um problema, etc. Um jogo nos dá um controle sobre um personagem ou um objeto virtual, de modo que possamos ter um controle e uma imersão no ambiente virtual que se aproxime do nosso controle e imersão no ambiente real só que com regras e motivações diferentes. . : : Gameficação : : .  Termo muito utilizado por empresas que buscam difundir seus produtos através de jogos/animações.
  • 7. } Do que é feito um jogo?(){
  • 8. } . : : O Jogador : : .  Jogador é um participante do jogo.  Um jogador pode ser uma pessoa real ou um jogador controlado pelo próprio jogo. Sempre que nós nos referirmos à um jogador , estaremos nos referindo a um jogador real.  A interação do jogo com o jogador é feito com dispositivos de entrada e saída do jogo, geralmente a tela e um controle.  Na maioria das vezes, o jogador controla o personagem central do jogo. Do que é feito um jogo?(){
  • 9. } . : : Personagem : : .  O personagem de um jogo de vídeo-game é personagem fictício para que o jogador controle.  Nos primeiros jogos o personagem era apenas uma figura sem expressão, dotada de alguma característica especial (andar , pular) e não possuíam uma história ou motivação.  O primeiro personagem de vídeo-game foi o Mario, criado por Shigeru Miyamoto para a Nintendo.  Com o tempo, os personagens de vídeo-game foram incorporados à cultura-pop. Com mário surgiu o conceito de mascote do jogo. Esse tipo de personagem carismático agrega um grande valor por sua importância publicitária graças a sua identificação com o público. Do que é feito um jogo?(){
  • 10. } . : : Menus : : .  Os menus são interfaces de texto e/ou imagens onde o jogador deve fazer escolhas e ajustes. Antes do jogo começar os menus servem para fazer ajuste de preferenciais do jogo, escolha do tipo de jogo, performance do hardware, etc.  Dentro do jogo eles servem para fazer escolhas e ajustes mais complexos. Nem todo jogo precisa de menus dentro do jogo, mas certamente vai precisar de um menu antes do jogo começar . Do que é feito um jogo?(){
  • 11. } Do que é feito um jogo?(){
  • 12. } . : : HUD : : .  Sigla para Head Up Display. É um método de representação visual de informações importantes para o jogador. São como menus não interativos.  Em geral eles exibem informações como munição, life, arma selecionada, pontuação, dinheiro ou ítens.  O HUD é desenhado por último na tela, de modo que ele fique sempre visível para o jogador. Ele não deve se mover muito ou conter palavras para que não distraia o jogador .  Ele deve ser sempre que possível iconográfico, ou seja, usando imagens que representem a informação. Do que é feito um jogo?(){
  • 13. } Do que é feito um jogo?(){
  • 14. } . : : Sprites : : . O Desafio:  Como causar a impresão de movimento dos personagens? A Solução:  Utilizaremos sprite, ou seja, um conjunto de dados que definem determinado objeto ou personagem num jogo. Para uma pessoa, por exemplo, podemos ter um sprite que contenha as posições vertical e horizontal dela no mundo, a direção para onde ela está virada e os bitmaps que podem representá-la durante o jogo. Do que é feito um jogo? (){
  • 15. } Do que é feito um jogo?(){
  • 16. } Do que é feito um jogo?(){
  • 17. } . : : Tileset: : .  Consiste em agrupar várias imagens pequenas a fim de montar uma imagem grande. Do que é feito um jogo?(){
  • 18. } . : : Som : : .  Embora não sejam fundamentais no jogo, os sons existem nos jogos desde o primeiro jogo. Os sons ajudam a caracterizar certas ações, aumentar o nível de imersão do jogador e deixa-lo mais concentrado no jogo.  Os sons podem ser construídos por sonoplastia. Deve-se ter em mente que diferentes sons provocam diferentes efeitos sobre sensorialidade do jogador. Os sons ligados a uma ação ou personagem não precisam ser os mesmos sons ligados a estes no mundo real. Pose-se usar sons diversos afim de obter efeitos cômicos, criar tensões, força ou simplesmente obter sensações agradáveis. Do que é feito um jogo?(){
  • 19. } . : : Música : : .  A música serve para se criar uma base para as imagens e os outros sons.  Com a construção da música certa pode-se criar ambientes agradáveis, tensos, pode-se deixar o jogador mais nervoso com uma música mais rápida e pode-se até usar o recurso do silêncio para criar um clima de suspense.  É sempre bom ter algum repertório de músicas no jogo, e ter músicas de duração razoável, caso contrário as músicas podem ficar chatas e repetitivas.  As músicas de jogos também criam um lembrança especial do jogo nos jogadores e cria um sensação agradável ao se jogar . Do que é feito um jogo?(){
  • 20. } . : : Física : : .  Um jogo é uma simulação. Essa simulação é, na maioria das vezes, uma representação do mundo em que vivemos. Essa representação, seja por limitações de software e hardware ou por escolha estética, não contem todos os aspectos do mundo real. Porém um aspecto que quase sempre está presente é o físico.  Esse aspecto se manifesta principalmente na detecção de colisão.  Se o objeto A depois que ele se mover colide em algo então faz alguma coisa.  Essa alguma coisa pode variar de jogo para jogo. Pode ser que o objeto A seja um personagem e o algo seja uma parede. Então o "faz alguma coisa” pode ser nada, ele bate na parede portanto não anda, mas pode ser que o personagem tenho batido em algo que o machuque como o fogo, então o "faz alguma coisa" pode ser tirar vida do jogador .  Uma técnica de colisão bem simples e que vamo usar aqui é verificar se o retângulo que envolve o sprite toca o retângulo que envolve o outro sprite: Do que é feito um jogo?(){
  • 21. } Do que é feito um jogo?(){
  • 22. } Do que é feito um jogo?(){ . : : Finite State Machines : : .
  • 23. } Quem participa da criação? (){ Game Designer Elabora os elementos do jogo bem como sua mecânica. Os elementos são os personagens e o cenário e a mecânica são as possibilidades que o jogador tem de interagir com o jogo. Empresas que elaboram jogos de ponta modernos dividem as responsabilidades do game designer com outros profissionais relacionados, sendo os principais, o combat designer e o level designer. Roteirista Descreve como é a trama do jogo, o perfil psicológico dos personagens e a interação entre eles, sendo a interação do tipo social e/ou psicológica, a qual não necessariamente corresponde àquela entre o jogador e os personagens do jogo. Tester Trabalha na equipe de Q&A (Quality Assurance - Controle de qualidade). Testa diversos aspectos do jogo e relata os pontos falhos ou a serem melhorados.
  • 24. } Quem participa da criação? (){ Programador Elabora a programação do jogo. Desenvolve códigos para lidar com AI, música, interação, etc. Com exceção de jogos independentes uma empresa tem diversos programadores em seu elenco, sendo que cada um é especializado numa área (rendering, ai, rede, etc…). Engenheiro de software Projeta os componentes de software do jogo envolvendo diversos aspectos como a composição dos objetos, a interface deles, a interrelação existente entre eles, etc. Programador Web && Programador de redes = ¬¬ aff Programador de AI Responsável por programar os algoritmos de Inteligência Artificial usados no jogo. Dentre estes algoritmos estão o de planejamento estratégico de grupo num atirador de primeira pessoa, a montagem da estratégia do time controlado pela CPU num jogo de esportes, o planejamento de caminho para levar um personagem NPC de um local ao outro, etc.
  • 25. } Quem participa da criação? (){ Engenheiro de som Produz os efeitos sonoros e a música tema. Level designer Faz o projeto da fase em que o jogador se encontra. Quais elementos compõem a fase, há a presença de alguma característica distintiva no terreno como aclives, declives, montanhas, etc. Combat Designer Projeta como será o combate entre o jogador e o computador. Quais são os elementos que devem estar presentes no combate, qual o papel destes elementos (dano, cobertura, etc).
  • 27. } Como é feito um jogo 2D? (){ . : : Plano Cartesiano (x,y): : .
  • 28. } Como é feito um jogo 2D? (){
  • 31. } Os bastidores de um jogo(){ Preparar os elementos. Nessa parte, o programa irá carregar o necessário para sua execução (como imagens e sons), bem como preparar as estruturas de dados usadas pelo mesmo. Montar a primeira tela. Aqui o programa coloca cada elemento em seu lugar inicial, de acordo com a vontade do desenvolvedor. Checar a situação atual do jogo, e aí criar uma nova tela. Agora o programa deve preparar uma nova tela, levando em conta a situação anterior do jogo e a(s) entrada(s) do jogador. É aqui, por exemplo, que o programa checaria se o quadrado que representa a cabeça da cobrinha está contido na lista de quadrados que representam seu corpo, ou de forma mais simples, se a cobrinha bateu nela mesma. Repetir... Agora tudo o que resta é continuar esse processo de calcular uma nova tela e mostra-la até que o jogo acabe.
  • 32. } Os bastidores de um jogo(){
  • 33. } O que são engines? (){ Definição: “É a ferramenta que se encarregará por entender como o hardware gráfico, irá controlar os modelos para serem renderizados, tratará das entradas de dados do jogador, tratará de todo o processamento de baixo nível e outras coisas que o desenvolvedor de jogos normalmente não deseja fazer ou não tem tempo para se preocupar . ”
  • 35. } PyGame (){  Você que sempre gostou de jogar e decidiu cursar Ciência da Computação para aprender como é que aqueles games são feitos e logo se viu travando uma batalha para passar em Cálculo, Álgebra Linear e Geometria Analítica.  Certo, primeiro é preciso ficar claro que não estamos falando de um programinha a lá RPG Maker no qual você "pinta" os mapinhas na tela e arrasta personagens pré-feitos para o jogo.  O Pygame é um conjunto de módulos que você importa num código em Python, os quais lhe disponibilizam uma série de funcionalidades auxiliares para criação de aplicativos multimídia e games.
  • 36. } PyGame (){ Vários processadores podem ser usados facilmente. O uso de vários núcleos adiciona um desempenho muito maior ao seu jogo. As funções internas são implementadas em C e Assembly. Código em C costuma ser de 10 a 20 vezes mais rápido que Python. Já Assembly tem uma performance de mais de 100 vezes maior que Python. Portátil mesmo. Aplicativos programados em Pygame podem rodar tanto em plataformas Windows quanto em Linux, Solaris, FreeBSD, Mac OS, Android, entre outros. O código ainda dá suporte a Dreamcast e também pode ser usado em dispositivos móveis. Simples! O Pygame é usado no projeto OLPC para ensinar programação a crianças. Ao mesmo tempo, também é a preferência de programadores experientes.
  • 39. } Allegro (){ Allegro é uma biblioteca de funções para jogos 2D feita em C. Apesar de ter algumas funções para jogos 3D ela não é indicada para isso, sendo no lugar dela uma API3d como OpenGL ou DirectX De acordo com a Companhia Oxford de Música, Allegro é o italiano para "rápido, vivo e brilhante". Ele também é um acrônimo recursivo que representa "Allegro Low Level Game Routines"
  • 41. } Allegro (){ int allegro_init() Esta é a principal função, e deve obrigatoriamente ser chamada para uma aplicação Allegro funcionar, lembre-se que a chamada desta função deve ser a primeira a ser feita, antes de qualquer outra função Allegro. Exemplo de uso: allegro_init(); PyGame: import pygame from pygame.locals import* int makecol( int iRed, int iGreen, int iBlue ); Passando-se os valores dos tons (que variam de 0 a 255), de vermelho, verde e azul, esta função retorna o código da cor. Exemplo de uso: makecol (255, 0, 0 ); PyGame: Realizada de forma similar
  • 42. } Allegro (){ void rest(unsigned int uiTime) Interrompe a execução do programa durante um intervalo de tempo igual ao passado como parâmetro, em milisegundos. Exemplo de uso: rest (1000); PyGame: Clock = pygame.time.Clock() Clock.tick(int Time) void textprintf_ex(BITMAP *bmp, FONT font, int iX, int iY, int iColor, int iCorDeFundo, char sTexto, ... ); Função para exibir um texto na tela, o sexto parâmetro deve ser -1 para um fundo transparente. Exemplo de uso: textprintf_ex(screen, font, 10, 20, makecol(200, 200, 20), -1, "X vale : %d", 10 ); PyGame: Font = pygame.font.Font("font.ttf",128)
  • 43. } Allegro (){ void putpixel(BITMAP *bmp, int iX, int iY, int iColor) Colore um pixel do bitmap, nas coordenadas especificadas no segundo parâmetro e terceiro parâmetro, na cor passada no quarto parâmetro. Exemplo de uso: putpixel(screen, 20, 300, makecol(0, 200, 30)); void getpixel(BITMAP *bmp, int iX, int iY, int iColor) Recupera o valor da cor de um pixel do bitmap, nas coordenadas especificadas no segundo parâmetro e terceiro parâmetro, na cor passada no quarto parâmetro. Exemplo de uso: int iPixelColor = getpixel(screen, 20, 300, makecol(0, 200, 30 )); void floodfill(BITMAP *bmp, int iX, int iY, int iColor); Preenche um bitmap com a cor especificada, em um espaço fechado, a partir do ponto X e Y. Exemplo de uso: floodfill (screen, 20, 30, makecol(20, 60, 300));
  • 44. } Allegro (){ void vline(BITMAP *bmp, int iX, int iY1, int iY2, int iColor); void hline(BITMAP *bmp, int iX1, int iY, int iX2, int iColor); void line(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor); A primeira função desenha uma linha vertical, a segunda função desenha uma linha horizontal e a ultima função desenha uma linha entre 2 pontos quaisquer. Exemplo de uso: line (screen, 20, 300, 400, 500, makecol(20, 60, 300)); void rect(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor); void rectfill(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor); A primeira função desenha um retângulo sem preenchimento, com o contorno colorido, enquanto a segunda função desenha um retângulo com preenchimento. Exemplo de uso: rectfill (screen, 20, 300, 400, 500, makecol(20, 60, 300));
  • 45. } Allegro (){ void circle(BITMAP *bmp, int iX, int iY, int iRaio, int iColor); void circlefill(BITMAP *bmp, int iX, int iY, int iRaio, int iColor); A primeira função desenha um círculo sem preenchimento, com o contorno colorido, enquanto a segunda função desenha um círculo com preenchimento. Exemplo de uso: circlefill (screen, 20, 300, 10, makecol(20, 60, 300)); void ellipse(BITMAP *bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor); void ellipsefill(BITMAP *bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor); A primeira função desenha uma elipse sem preenchimento, com o contorno colorido, enquanto a segunda função desenha uma elipse com preenchimento. Exemplo de uso: ellipsefill (screen, 20, 300, 5, 10, makecol(20, 60, 300));
  • 46.  Biblioteca para construção de jogos e aplicações multimídia em geral  Free Source  Voltada mais especialmente para jogos 2D  Conhecida pela facilidade de adicionar entrada de dados via teclado, mouse e joystick.  Suporta arquivos de configuração e de dados comprimidos  Temporizadores  Grande comunidade de desenvolvedores Allegro (){
  • 47.  Multi-plataforma  DOS  Windows  Linux  Mac (OS X)  BeOS  QNX  Primitivas Gráficas  Rectas, círculos, elipses  Polígonos (sólidos, texturados, transparentes)  Texto em modo gráfico  Animações Allegro (){
  • 48.  Incluir <allegro.h> depois de todos os demais includes  Deve sempre aparecer uma chamada à função allegro_init() o mais perto possível do início do programa.  Da mesma forma devem ser chamadas, a seguir, as funções install_keyboard(), install_mouse() e install_timer().  A função allegro_exit() deve ser chamada no final do programa.  Colocar a macro END_OF_MAIN() logo após a chave final da rotina main()  Ao compilar, incluir a biblioteca alleg:  gcc -o test test.c –lalleg Allegro (){
  • 49.  Especificado antes de começar a desenhar: int set_gfx_mode (int card, int w, int h, int v_w, int v_h);  Onde:  card é usualmente GFX_AUTODETECT, GFX_AUTODETECT_FULLSCREEN ou GFX_AUTODETECT_WINDOWED  w , h largura e altura  v_w , v_h largura e altura virtual (normalmente, 0) Allegro (){
  • 50.  Bitmaps são matrizes de pixels, em que cada valor indica uma cor  Tela é um BITMAP especial chamado screen  BITMAPs adicionais podem ser criados com:  BITMAP *bmp = create_bitmap(int width, int height); Allegro (){
  • 51. . : : Periféricos de Entrada – Teclado : : .  Teclado  install_keyboard()  /* Para inicializar as rotinas do teclado */ KEY_ALTGRAlt Direito KEY_ALTAlt esquerdo KEY_RCONTROLControl Direito KEY_LCONTROLControl Esquerdo KEY_RSHIFTShift Direito KEY_LSHIFTShitf Esquerdo KEY_PRTSCRPrint Screen KEY_SPACEBarra de Espaço KEY_PAUSEPause KEY_DOWNSeta para Baixo KEY_UPSeta para Cima KEY_LEFTSeta para a Esquerda KEY_RIGHTSeta para a Direita KEY_ENTEREnter KEY_ESCEsc KEY_0 ... KEY_9Teclado Normal 0 a 9 KEY_0_PAD ... KEY_9_PADTeclado Numérico 0 a 9 KEY_A, KEY_B...KEY_ZA, B ... Z Código na ArrayTecla  Váriável global int key[]  permite ver quais teclas estão pressionadas.  constantes definidas para identificar cada tecla Allegro (){
  • 52.  install_mouse() /* Para inicializar as rotinas do mouse */  Retorna -1 em caso de falha ou o número de botões que o mouse tem em caso de sucesso . : : Periféricos de Entrada – Mouse : : .  Usa-se a função show_mouse para que o cursor do mouse seja mostrado no bitmap especificado  Passando NULL como parâmetro esconde o cursor do mouse  Deve-se ter cuidado ao desenhar algo na tela pois o cursor do mouse pode passar por cima e estragar o desenho, por isso é sempre bom escondê-lo antes de desenhar qualquer coisa  Allegro (){  As variáveis mouse_x e mouse_y contêm a posição do cursor do mouse na tela.  A variável mouse_b contém o estado dos botões.  (mouse_b & 1) é verdadeiro se o botão esquerdo estiver pressionado.  (mouse_b & 2) é verdadeiro se o botão direito estiver pressionado.
  • 53.  Som digital: WAV. Música: MID.  Antes de se tocar um som digital ou música deve-se carregá-los da seguinte forma: /* declaração das variáveis que guardarão sons e músicas */ SAMPLE *som1; /* SAMPLE = arquivos de som digital */ MIDI *musica; /* MIDI = arquivos de música */ /* carrega os arquivos usando-se as respectivas funções */ som1 = load_wav(“arquivo.wav”); /* para arquivos wav */ musica = load_midi(“arquivo.mid”); /* para arquivos mid */  Ponteiro nulo -> arquivo não encontrado. Allegro - Som (){
  • 54.  Para tocar uma música usa-se a função play_midi. O primeiro parâmetro é o arquivo MIDI carregado, o segundo indica se ele tocará em loop ou não. /* Exemplo para tocar um arquivo MIDI */ MIDI *musica; /* declaração da variável a ser usada */ musica = load_midi(“musica.mid”); /* carrega arquivo */ play_midi(musica,TRUE); /* toca a música em loop */  Para parar de tocar uma música usa-se a função stop_midi(). Som – MIDI’s (){
  • 55.  Para tocar um som digital usa-se a função play_sample. Os cinco parâmetros indicam: arquivo carregado, volume (0 a 255), equilíbrio entre as caixas (0 a 255, 128 é meio a meio), freqüência (1000 usa a frequência original, 500 usa a metade da freqüência original etc.) e se vai ser tocado em loop  Função stop_sample() pára de tocar /* Exemplo para tocar um arquivo de som WAV */ SAMPLE *som; /* declaração da variável a ser usada */ som = load_wav(“som.wav”); /* carrega arquivo */ play_midi(musica,255,128,1000,FALSE); /* toca som */ Som - Samples (){
  • 56.  Executar pedaço de código em velocidades diferentes Para isso, colocar cada um dos trechos de código numa função diferente  Allegro só permite o uso de 16 timers  int install_int(void (*proc)(), int speed) /* cria timer */  install_timer(); /*inicializa timer, opcional */  void remove_int(void (*proc)()) /* remove função da lista */  Notas:  Todas variáveis globais acessadas nos timers devem ser trancadas com a macro LOCK_VARIABLE()  Todas as funções de "timer" devem ser trancadas com  LOCK_FUNCTION()  speed representa milésimos de segundo Timming no Allegro (){
  • 57. } Etapas de elaboração de um jogo (){  Idéia  Rascunho do jogo  Detalhamento do jogo  Game Design Document (GDD)  Produção de áudio e imagens 2D  Desenv. de artefatos computacionais (engines)  Integração (arte e computação)
  • 58. } Idéia (){  Muitas idéias vem dos sonhos.  Surgem de pequenos conceitos expandidos em Brainstorm.  Grandes idéias poder parecer ridículas no começo.
  • 59. } Rascunho do jogo (){  Personagens, fases, itens com pequenas descrições.  Fluxo das telas do jogo e menus.
  • 60. } Detalhamento do jogo (){  O que o jogador fará no jogo ?  Quantos inimigos o herói vai enfrentar ? Como eles são ?  Quais as armas disponíveis que o jogador poderá usar ?  Como será o sistema de vida do jogador ?  Qual o objetivo do jogo ? Quantas fases terá ? Como elas serão (cenário, inimigos, dificuldade, etc) ?  Quantos jogadores poderão jogar o jogo ?  Qual o tipo de visualização gráfica ?  Qual o tipo de trilha sonora ?
  • 61. } Game Design Document (GDD){  Conceito: – Nome do jogo, público alvo, história, regras...  Especificações técnicas: – Hardware, sistema operacional...  Especificações do jogo: – Número de fases, personagens, itens, cenários...  Dispositivo de entrada: – Mouse, teclado...  Design gráfico e arte: – Abertura, layout de menus e telas, final do jogo...  Sonorização: – Músicas nos menus, músicas nas fases...  Desenvolvimento: – Tempo de desenvolvimento, alocação de pessoas...
  • 62. } Programação de Jogos (){ . : : Algumas Técnicas : : .  Animação com Double Buffering  Scrolling  Sprites  Detecção de Colisão
  • 63.  Dar a impressão de que coisas se movem  Pode significar mover um pixel ao longo da tela mas, geralmente, significa uma mudança repetitiva da apresentação de algo para que dê a ideia de que se move.  Qual a técnica mais simples?  limpamos a tela, desenhamos os objetos, limpamos a tela novamente, desenhamos os objetos nas novas posições. Animação (){
  • 64. } Double Buffering (){ O Problema:  Quando vamos fazer animações usando o Allegro, surgem alguns problemas relacionados aos vários métodos que podem ser utilizados. O método mais simples que podemos imaginar é aquele em que limpamos a tela, desenhamos os objetos, limpamos a tela novamente, desenhamos os objetos nas novas posições, e assim por diante. Este método, porém, tem um grave problema: a tela pisca a cada limpeza. A Solução:  Dispomos de um bitmap auxiliar (chamado de buffer) que, normalmente, possui o tamanho da tela (ou o tamanho da região onde ocorre a animação). Desenhamos, neste buffer, os objetos que devem ser apresentados na tela. Após isso, desenhamos o conteúdo do buffer na tela, fazendo com que os objetos apareçam. Limpamos, então, o buffer, desenhamos os objetos novamente em suas novas posições, passamos o conteúdo do buffer para a tela, e assim por diante.
  • 65.  Qual o problema desta técnica? Efeito Flicker - efeito de cintilação ou vibração de uma imagem na tela do computador Instante 1 Instante 2: Limpar a tela Instante 3 Double Buffering (){
  • 66.  Qual a solução? Instante 2: Limpar a telaInstante 1 Instante 3 Buffer Instante 1 Instante 3 Tela Instante 2 Efeito Flicker (){
  • 67. } Scrolling (){ O Problema:  Como dar movimento ao personagem e aos objetos envolvidos? A Solução:  Movimento de cenário. O scrolling consiste em movimentar o fundo do cenário e, normalmente, deixar o personagem controlado parado, o que causa uma sensação de movimento. O scrolling pode ser horizontal, vertical ou em ambas as direções.  O exemplo demonstra como utilizar o scrolling, desenhado um boneco (parado) no meio da tela, enquanto o fundo se move de baixo para cima, fazendo com que tenhamos a sensação de que o boneco está caindo.
  • 68. } Parallax Scrolling (){ O Problema:  Como causar a sensação de profundidade presente em jogos 3D? A Solução:  Utilizar vários fundos que se movimentam em velocidades diferentes. O exemplo demonstrará um parallax scrolling horizontal.
  • 69. } Detecção de Colisão (){ O Problema:  Como verificar se dois sprites estão sobrepostos, ou seja, se houve uma colisão? A Solução:  Existe o método que chamamos de força bruta (checar cada ponto de um sprite com cada ponto de outro sprite) qué é ineficiente, a maior parte dos outros métodos são aproximativos. Veremos o principal deles, que consiste em dividir os sprites em retângulos, de forma que possamos verificar se cada retângulo está ou não sobreposto a outro. Fazer com que o sprite tenha sua movimentação limitada às bordas do nosso jogo não deixa de ser uma forma de detecção de colisão, bem simples, é verdade. Porém, em jogos 2D, geralmente se deseja realizar detecção de colisão entre dois ou mais sprites no jogo.
  • 70. } Detecção de Colisão (){ . : : Colisão entre Esferas : : . Contudo, apesar do sistema de detecção de colisões estar utilizando o algoritmo do bouncing box, depois de alguns testes você perceberá um problema. Se os sprites colidirem diagonalmente, eles irão colidir antes de atingirem um ao outro de verdade. Isso está ocorrendo justamente por utilizarmos caixas para representar a forma geométrica das esferas. Quando queremos testar colisões entre esferas, teremos que verificar se a distância entre os centros delas são menores que a soma dos seus raios. Em caso positivo, então uma colisão ocorreu. Essa é a forma mais eficiente de detectar colisões entre duas esferas. Para detectar a colisão entre duas formas circulares, usamos o teorema de Pitágoras: (r2 = x2 + y2)
  • 71. } Detecção de Colisão (){ . : : Colisão entre Esferas : : . A soma dos quadrados dos dois lados (hipotenusa ao quadrado) é menor ou igual que o quadrado da soma dos raios das duas formas (que no fundo, é como se fosse o quadrado de um dos lados), mais o quadrado da soma dos raios das duas formas (que no fundo, é como se fosse o quadrado do lado restante. Esta "grande" soma, é como se fosse uma segunda hipotenusa ao quadrado.). Básicamente, quando a distância entre as duas formas (ao quadrado) for igual ou menor que a soma dos dois raios (ao quadrado), dá-se a colisão..
  • 72. } Detecção de Colisão (){ . : : Colisão entre Esferas : : . If ((formx*formx + formy*formy) <= ((rad1 + rad2)*(rad1 + rad2)) + ((rad1 + rad2)*(rad1 + rad2))) "/:collission" = "Sim" Else "/:collission" = "Não" End If
  • 74. } Dicas – Produção & Pesquisa (){  Som – Sound Forge: produção de trilhas e efeitos sonoros. – Cubase: mixagem de canais MIDI – Audacity: permitir criar áudio, inclusive combinar diferentes canais de som.  Imagens 2D – Tiles – Bricks – Layers – Sprites
  • 75. } Dicas – O que fazer ? (){  Estudar muito !  Conhecer as novidades no mundo dos jogos  Jogar bastante e diferentes tipos de jogos  Buscar fazer contatos  Participar de eventos relacionados  Começar a desenvolver jogos fáceis: – Pong, Arkanoid, Space Invaders, Tetris, Pacman...
  • 76. } Dicas – Livros Nacional (){
  • 77. } Dicas – Livros Internacionais (){
  • 78. } Dicas – Sites (){  Abragames – http://www.abragames.org/  BRGames – http://www.brgames2009.com.br/  PDJ – http://www.programadoresdejogos.com/  UNIDEV – http://www.unidev.com.br/  GameDevBr – http://www.gamedevbr.com/  Gamasutra – http://www.gamasutra.com  SharpGames – http://www.sharpgames.net/  Ponto V – http://vinigodoy.wordpress.com/
  • 79. } Dicas – Eventos (){  SBGames – (Simpósio Brasileiro de Jogos e Entretenimento Digital)  SCGames – (Simpósio Santa Catarina Games)  IGN - (Independent Game Festival) – http://www.igf.com/  Campus Party – http://campus-party.com.br/
  • 80. } Dicas – Competições (){ XNA Game Challenge – http://www.xnachallenge.com.br/  Dream Build Play – http://www.dreambuildplay.com  Imagine cup – http://imaginecup.com/  Maratona de Programação – http://maratona.ime.usp.br/
  • 81. } Dicas – Links interessantes (){ Gráficos: – http://www.tilemap.co.uk/ – http://reinerstileset.4players.de/ – http://www.hippydrome.com/  Músicas e Efeitos sonoros: – http://www.flashkit.com/soundfx/ – http://www.findsounds.com/  Fonts: – http://www.1001freefonts.com/  The game loop: – http://dewitters.koonsolo.com/gameloop.html  Game Engines: – http://www.devmaster.net/engines/
  • 82. } Isso é tudo, pessoal! (){ eof 
  • 83. } Referências (){ Introdução ao Desenvolvimento de Jogos, Kleber de Oliveira Andrade. Game Level Design, disponível em: http://www.gamasutra.com/view/feature/175950/the_fundamental_pillars_of_a_.php McGugan, Will, “Beginning Game Development with Python and Pygame”, 2007. “PyGameLib”, http://www.pygame.org/, Outubro.