110 likes | 207 Views
Jogos enquanto software. Componentes de um jogo, desenvolvimento. O que é um jogo?. Ponto de vista conceitual Teoria do jogo Diversão x Desafio Regras, mecânicas, subsistemas Ponto de vista técnico Um software extremamente complexo Padrões de projeto, inteligência artificial, otimização
E N D
Jogos enquanto software Componentes de um jogo, desenvolvimento
O que é um jogo? • Ponto de vista conceitual • Teoria do jogo • Diversão x Desafio • Regras, mecânicas, subsistemas • Ponto de vista técnico • Um software extremamente complexo • Padrões de projeto, inteligência artificial, otimização • Programação criativa, porém profissional
Componentes de um jogo • Motor (game engine) game loop, renderer • Agentes máquina de estados • Fases (levels) maior parte do jogo • Inteligência Artificial (IA) complexidade • Simulação de física complexidade • Servidor (online multiplayer) • Motor vs API
Motor • Game loop - laço principal do jogo • Base para praticamente todos jogos existentes • Gera pulsos de atualização do estado do jogo functiongameloop() { while (ativo) { input(); update(); render(); } }
Motor • Game loop - controle de taxa de frames • Frames de atualização do estado (update) • Frames de atualização da tela (render) functiongameloop() { while (ativo) { input(); update(); if (renderingDone) { render(); } } } • functiongameloop() • { • while (ativo) • { • input(); • if (getTime() - t > 1000) • { • update(); • render(); • t = getTime(); • } • } • }
Motor • Jogo sem game loop • Jogos baseado inteiramente em eventos • Só possui ação em função da entrada do jogador eventonKeyPressed(key) { update(key); render(); }
Máquinas de estados • Representação de estados e transições • Autômato finito Oponente perto parado Oponente longe Oponente longe Oponente perto avançando próximo Final do cenário Oponente longe Oponente defendendo Oponente parado recuando agarrando atacando
Máquinas de estados • Exemplo:Interpretação de entrada do usuário S S 0 0 3 3 H H 1 1 2 2
Editores e outras ferramentas • Ferramentas auxiliares • Geralmente desenvolvidas apenas para um projeto • Editores de fase, de comportamento, de animação • Atualmente vários motores possuem editores embutidos • O reaproveitamento das ferramentas e padrões é um motivador para sequências e jogos baseados no mesmo motor
Desenvolvimento profissional • Orientação a Objetos • Padrões de Projeto (Factory, Director, MVC) • Tecnologias de dados (XML, DB) • Tecnologias de desenvolvimento (Java, Xna, ActionScript) • Integração com arte (animações e som) • Conhecimento da plataforma e suas limitações
Conclusão Jogos são software complexos, que embora possam ser desenvolvidos por uma única pessoa, é preciso que esta pessoa tenha embasamento profissional.