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) Agentes Fases (levels) Inteligência Artificial (IA) Simulação de física Servidor (online multiplayer) Motor vs API game loop, renderer máquina de estados maior parte do jogo complexidade complexidade Motor Game loop - laço principal do jogo Base para praticamente todos jogos existentes Gera pulsos de atualização do estado do jogo Motor Game loop - controle de taxa de frames Frames de atualização do estado (update) Frames de atualização da tela (render) Motor Jogo sem game loop Jogos baseado inteiramente em eventos Só possui ação em função da entrada do jogador Máquinas de estados Representação de estados e transições Autômato finito Oponente perto Oponente longe parado Oponente longe avançando Final do cenário Oponente perto Oponente longe recuando Oponente defendendo agarrando próximo Oponente parado atacando Máquinas de estados Exemplo: Interpretação de entrada do usuário 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 Jogos são software complexos, que embora possam ser desenvolvidos por uma única pessoa, é preciso que esta pessoa tenha embasamento profissional.