Arquiteturas de jogos e Animação 2D baseada em Sprites

Slides:



Advertisements
Apresentações semelhantes
IA Importância da IA em jogos Aplicações.
Advertisements

Inteligência Artificial
Conceitos de Programação Paralela
Planejamento Viviane Torres da Silva
Monitoria de Matemática Discreta
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Introdução à Hierarquia de Memória
Lógica de programação de jogos
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Introdução à Programação Exercício F13 - Minigame - Interação - Imagens 1º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
Recursividade Prof. Rosana Palazon.
Rational Unified Process(RUP)
MULTIMÍDIA Mídia, Multimídia e Sistema Multimídia (Slide - 2)
IA em jogos modelagem de comportamento de personagens
Gestão de telas e ambientes em jogos 2D
Modelos Baseados em Agentes
Avaliação de Desempenho Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Marcos José
Avaliação de Desempenho
Estudo da aplicação “jogos” em sistemas embarcados
Modelos Fundamentais -> Interação Falhas Segurança.
Prof. MSc Sofia Mara de Souza AULA6
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA8.
Arquitetura de Computadores
Robson Godoi / Sandra Siebra
Prof. Edison Oliveira de Jesus
Threads.
TOMADA DE DECISÃO E RACIONALIDADE ADEQUAR OS MEIOS AOS FINS DESEJADOS
Escalonamento de Tempo Real Introdução
Paradigmas de programação
Sistemas Operacionais I
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Futebol: uma questão de tempo real? Sistemas de Tempo Real Hugo Santos (27621) Pedro Mónica (25330)
Disciplina: Multimídia Prof a. Leila Jane Brum Lage Sena Guimarães Transparências: Wilson de Pádua Paula Filho.
Componentes de um jogo, desenvolvimentoComponentes de um jogo, desenvolvimento.
Computação Gráfica: Aula10: Sistemas de Partículas
Introdução à Programação
Linguagem de Programação II Parte IX
Erivelto TSchoeke 1/12. Cenário Definição de tarefas Processamento em sistemas mono-tarefas Sistemas multi-tarefas Sistemas multi-tarefas com time-sharing.
INTELIGÊNCIA ARTIFICIAL
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 05 Aquiles Burlamaqui UERN
Lógica de Programação de Jogos
Estruturas de Dados Módulo 3 – Controle de Fluxo
Controle de acesso ao Ambiente – floor control. Controle de acesso ao ambiente Introdução.
PSBD II Projeto de Sistemas de Banco de Dados II
BOTs Multiplayer Thiago Jamir e Silva – 20/07/2007.
Sistemas Operacionais
Sistemas Operacionais
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Introdução à Linguagem C
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
Processos.
Computação Gráfica – Animação
Games House Lamberto Augusto (laon) Millena de Andrade (maag) Sylvia Campos (scls) Pedro Lages (plm)
Troca de Mensagens Programação concorrente
Agentes Inteligentes Vicente Vieira Filho. Conversa de Hoje Introdução Objetivos (Benchmarks em SMA) Trabalhos Relacionados Solução Conclusão Trabalhos.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Subsistema de Entrada e Saída do Kernel
Capítulo 4: Processos.
Computação Gráfica – Animação
O que é multimídia.
Gerenciamento de Memória Sistemas Recentes
Algoritmo É uma descrição seqüencial ordenada dos passos que devem ser executados de forma lógica e clara, com a finalidade de facilitar a resolução de.
‘’Digital-3D’’ ‘’Trabalho realizado no âmbito de Aplicações Informáticas B’’ Trabalho realizado por: Diogo Matheus Félix Alves nº11 12º2.
Sistemas Operacionais Multimídia. Sistemas de Arquivos Multimídia Duas abordagens para tratar mídias contínuas em sistemas de arquivos: –1a.: organização.
Soluções de Arquitetura para o MultiBatt Parte 0: Idéias gerais e problemas encontrados Parte I: Entidades e colaborações Parte II: Diagrama de relacionamento.
Troca de Mensagens Síncronas n Consequências do uso de comunicação assíncrona:  Um processo pode se adiantar muito em relação aos outros. Para sincronizar.
Sincronização Em multimídia: relações temporais entre objetos de mídias Objetos dependentes de tempo: –apresentados como um feixe de mídia –relações temporais.
Sincronização Lip Sync Sincronização cursor-voz Entre outras mídias.
Programação Gráfica em Java Tela Cheia Aula Na aula passada vimos: Java 2D.
Transcrição da apresentação:

Arquiteturas de jogos e Animação 2D baseada em Sprites Prof. André Campos 30/04/2004

Arquitetura e características de jogos

Características dos jogos Jogos  Aplicações em tempo-real Aplicações cujo tempo de resposta é crítico Possuem condições de restrições de tempo Ex: Monitoramento de vôos em um aeroporto Jogos  Aplicações Interativas Aplicações cujo tempo de resposta das interações do usuário também é crítico Ex: Controle de tráfego aéreo Jogos  Simulações Sincronização de Tempo real vs. Tempo virtual Eventos simulados

Jogos = simulações interativas em tempo real Tarefas concorrentes Apresentação (síncrona) Captura de eventos externos, ex. do usuário (assíncrona) Atualização do estado do “mundo simulado” (discreta) Eventos do usuário Apresentação Mundo simulado Atualização do estado

Módulos gerais Multi-threading? Apresentação (visual,áudio,...) Interação com o usuário Lógica do jogo Rede Multi-threading?

Módulos sincronizados Abordagens Seja Interação, Lógica e Rede = Atualização Atualização Atualização Atualização Apresentação Apresentação Apresentação Único thread Vários threads Módulos sincronizados

Módulos sincronizados Estratégia mais amplamente utilizada Idéia Executar as rotinas de atualização e apresentação seqüencialmente (único thread) em loop. Descartar as atualizações de forma a deixar um intervalo de tempo fixo de chamada às atualizações. Atualizações Apresentações Tick time

Exemplo básico de loop int TICK_TIME = 1000/frequency; long timeLastCall = getTime(); while(!end) { elapsedTime = getTime() – timeLastCall; if (elapsedTime > TICK_TIME) { gameUpdate(); timeLastCall = getTime(); } gamePresentation(elapsedTime);

Passos na fase de atualização Atualização do usuário Captura eventos Calcula restrições Atualiza o estado do jogador Atualização do mundo Elementos passivos Seleciona elementos relevantes para a engine Elementos dinâmicos básicos Ordena por relevância Executa mecanismos de controle Atualiza estado Elementos inteligentes (agentes) Tomada de decisão de acordo com objetivos e restrições

Passos na fase de apresentação Apresentação do mundo Seleciona elementos visíveis Seleciona resolução dos elementos (nível de detalhe) Empacota geometria Apresenta Seleciona e toca fontes de som Apresentação de personagens (NPC) Seleciona personagens visíveis Anima personagem Apresentação do jogador (avatar) Anima avatar

Animação 2D baseada em Sprites

O que é um Sprite? “Cel animation”: técnica utilizada no início da indústria de animação (Walt Disney) Desenho em folhas transparentes sobre imagem de fundo A ilusão de movimento é dada a partir de uma seqüência de desenhos sobre o mesmo fundo. Em animação 2D, o processo é similar Personagens são representados por várias imagens com partes transparentes A animação é o resultado da apresentação de uma seqüência de imagens (sprite) do personagem.

Animação baseada em sprite Conjunto de sprites de um elemento Imagem de fundo + sprite Loop da animação (do próprio jogo) Ilusão de movimento

Loop da animação Cada sprite pode ter seu próprio tempo de apresentação Importância a “elapsedTime” do loop do jogo gamePresentation(elapsedTime); 40ms 20ms 20ms 20ms

Exemplo de atualização void spriteUpdate(long elapsedTime) { animTime += elapsedTime; if (animTime >= totalDuration) { animTime = animTime % totalDuration; currImageIndex = 0; } while (animTime > image[i].endTime) { currFrameIndex++; } currFrameIndex 0ms 40ms 60ms 80ms 100ms animTime_0 animTime_1

Area de memória DoubleDuffer Double buffering Animação piscando Seqüência repetida de desenhar na tela a imagem de fundo e depois o sprite Solução Desenhar a imagem de fundo e o sprite em uma área de memória temporária (imagem) e depois transferir esta imagem para a tela Area de memória DoubleDuffer Tela

Page flipping Modo “full-screen” Solução Copiar toda uma área de memória para a memória de tela é custoso (tempo) Solução Redirecionar o ponteiro da área de memória da tela para o doublebuffer e utilizar um segundo buffer para desenhar o próximo frame. Ponteiro da tela Display buffer Back buffer Tela

Efeito Tearing Monitores possuem taxa de refresh Ex: 75MHz  monitor é atualizado 75 vezes/s Tearing ocorre quando um page flipping é feito durante a atualização do monitor. Solução Sincronizar o page flipping com a taxa de refresh do monitor Antigo frame Novo frame

Exercício Implementar o loop de um jogo, onde o usuário controla o andar de seu avatar para a direita e para a esquerda