Quem sou eu? (){ Instrutor: Leinylson Fontinele Pereira. Bacharel em Ciência da Computação (em conclusão) Universidade Estadual do Piauí (UESPI)



Documentos relacionados
Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

A UTILIZAÇÃO DA BIBLIOTECA ALLEGRO PARA O DESENVOLVIMENTO DE APLICAÇÕES MULTIMÍDIA. Luana Pereira de Lima luanaelima@gmail.com

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

17:47:08. Introdução à Informática com Software Livre

Desvendando Jogos 2D. Por Marcos Romero Setembro / Cyborg Arena - RHGames

Introdução a Programação de Jogos

ENG1000 Introdução à Engenharia

PASSO A PASSO MOVIE MAKER

PROJETO INFORMÁTICA NA ESCOLA

SUMÁRIO TUTORIAL DO HQ. 2 DICAS PEDAGÓGICAS:. 2 DOWNLOAD DA INSTALAÇÃO. 2 PASSO 1 FORMULÁRIO PARA DOWNLOAD. 2 PASSO 2 ESCOLHENDO A VERSÃO.

Tutorial de Blender, Animação básica do tipo keyframe

Conhecendo o Computador

Adquirindo prática para manipular o Mouse e o Teclado

NAPNE / RENAPI. Software Educativo Smart Panda 1.0

Apostila para o 7º ano Profª Yandra

II Workshop de Sistemas de Informação

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER*

GRÁFICOS Exemplos de jogos 2D (com simulação do 3D)

Serviço Técnico de Informática. Curso Básico de PowerPoint

BREVE TUTORIAL DO PAINT PARTE I Prof. Reginaldo Brito - Informática

Tutorial Audacity. Índice

Programando Jogos com Delphi (LÓGICA, ANIMAÇÃO, CONTROLE) Autor: Antônio Sérgio de Sousa Vieira

Aula 5 Microsoft PowerPoint 2003: Criando uma Apresentação

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Table of Contents. PowerPoint XP

Microsoft Office PowerPoint 2007

Google Drive. Passos. Configurando o Google Drive

OFICINA DE POWER POINT

Orientação a Objetos

Técnicas de Detecção de Colisão para Jogos

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

MATERIAL DE APRESENTAÇÃO DO SCRATCH

COLÉGIO ESTADUAL PAULO LEMINSKI APOSTILA SOBRE O BROFFICE IMPRESS

Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos

ÍNDICE MANUAL SITE ADMINISTRÁVEL TV. 1. Introdução 2. Acessando o site administrável/webtv SITE ADMINISTRÁVEL 3. CONFIGURAÇÕES

A4 Projeto Integrador e Lista de Jogos

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Celebre este natal e ano novo junto aos seus amigos e familiares distantes.

Janelas e seus elementos

CorelDRAW UM PROGRAMA DE DESIGN

Apostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público Caderno 1.

Planejando o aplicativo

Como incluir artigos:

ÍNDICE... 2 INTRODUÇÃO... 4

Apostila para uso do Power Point

CONHECENDO A ÁREA DE TRABALHO DO WINDOWS 7

O computador. Sistema Operacional

Introdução à Informática Professor: Juliano Dornelles

Manual do Usuário Android Neocontrol

Ela funciona de um jeito parecido com as mídia de RSS próprio: o sistema acessa o feed do twitter e exibe, na tela, os últimos tweets.

CAPACITAÇÃO EM LIBREOFFICE IMPRESS

APOSTILA WORD BÁSICO

SIMULADO Windows 7 Parte V

Montar planilhas de uma forma organizada e clara.

Capítulo 2. Laboratório 2.1. Introdução ao Packet Tracer, Roteadores, Switches e Inicialização

Uruaçu Professoras Formadoras do NTE Uruaçu

GraphicsLib Biblioteca Gráfica 2D. Documentação

Google Drive: Acesse e organize seus arquivos

Universidade Federal do Mato Grosso - STI-CAE. Índice

Dicas para usar melhor o Word 2007

Treinamento T2Ti Jogos - Java Básico

Apostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público Índice

Prática 6 ActionScript

Arquitetura de Rede de Computadores


Índice: CMS 3 O que é Content Management System? Clientes 4 O que é o Cliente? 4 Configurando o i-menu/i-view para trabalhar. com o CMS.

Configurações do Windows para Leitores de Tela

LOUSA INTERATIVA. ActivPen

PowerPoint. Prof. Claudio A. B. Tiellet. Parte II

CTRL-SHIFT DOCUMENTO DE GAME DESIGN DESENVOLVIDO POR HILGAMES

Clique no menu Iniciar > Todos os Programas> Microsoft Office > Publisher 2010.

OURO MODERNO Designer Gráfico APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

SAMUEL SEAP INFORMÁTICA. Rua Lúcio José Filho, 27 Parque Anchieta Tel:

Windows 7. Professor: Jeferson Machado Cordini

Manual do Painel Administrativo

Área de Trabalho. Encontramos: Ìcones Botão Iniciar Barra de Tarefas

Sistemas Operacionais

Microsoft PowerPoint 2003

Iniciação à Informática

MICROSOFT POWER POINT

HCT Compatibilidade Manual do Usuário

Crie um novo documento de mais ou menos 300x300Selecione a ferramenta Elipse tool (elipse U)

COMPUTADOR,, que máquina é essa?

1 UNIT Universidade do Trabalhador Dr. Abel dos Santos Nunes

O que é um Objeto Educacional? página 01. Objeto Educacional passo a passo página 05

Manual da AGENDA GRACES 2011

Trabalhando com arquivos de som. Prof. César Bastos Fevereiro 2008

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

NÚCLEO DE TECNOLOGIA E EDUCAÇÃO CURSO: WINDOWS MOVIE MAKER TUTORIAL

Como fazer busca de imagem no Google?

Power Point. Autor: Paula Pedone

Internet: Site da Simonsen e Secretaria Online

Apostila: VLC Media Player

SEU SITE FUNCIONA? Teste rápido de Usabilidade e Comunicação Web

Banner Flutuante. Dreamweaver

Introdução ao Desenvolvimento de Jogos

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA TREINAMENTO EM INFORMÁTICA MÓDULO V

Criando Quiz com BrOffice.impress

Transcrição:

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? Introdução: O que são jogos? Evolução Histórica Mercado Nacional Etapas de Desenvolvimento de Jogos Dicas Bom minicurso a todos!

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?(){

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.

. : : Som : :. Do que é feito um jogo?(){ 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.

. : : 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. Do que é feito um jogo?(){ 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?(){. : : 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));

Allegro (){ 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 */ Váriável global int key[] permite ver quais teclas estão pressionadas. constantes definidas para identificar cada tecla Tecla A, B... Z Teclado Numérico 0 a 9 Teclado Normal 0 a 9 Esc Enter Seta para a Direita Seta para a Esquerda Seta para Cima Seta para Baixo Pause Barra de Espaço Print Screen Shitf Esquerdo Shift Direito Control Esquerdo Control Direito Alt esquerdo Alt Direito Código na Array KEY_A, KEY_B...KEY_Z KEY_0_PAD... KEY_9_PAD KEY_0... KEY_9 KEY_ESC KEY_ENTER KEY_RIGHT KEY_LEFT KEY_UP KEY_DOWN KEY_PAUSE KEY_SPACE KEY_PRTSCR KEY_LSHIFT KEY_RSHIFT KEY_LCONTROL KEY_RCONTROL KEY_ALT KEY_ALTGR

Allegro (){. : : Periféricos de Entrada Mouse : :. 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 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 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.

Allegro - Som (){ 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.

Som MIDI s (){ 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 - Samples (){ 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 */

Timming no Allegro (){ 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

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

Animaçã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.

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.

Double Buffering (){ Qual o problema desta técnica? Instante 1 Instante 2: Limpar a tela Instante 3 Efeito Flicker - efeito de cintilação ou vibração de uma imagem na tela do computador

Efeito Flicker (){ Qual a solução? Buffer Instante 1 Instante 2: Limpar a tela Instante 3 Tela Instante 1 Instante 2 Instante 3

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.