Componentes de um jogo, desenvolvimentoComponentes 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 function gameloop() { while (ativo) { input(); update(); render(); } function gameloop() { 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) function gameloop() { while (ativo) { input(); update(); if (renderingDone) { render(); } function gameloop() { while (ativo) { input(); update(); if (renderingDone) { render(); } function gameloop() { while (ativo) { input(); if (getTime() - t > 1000) { update(); render(); t = getTime(); } function gameloop() { 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 event onKeyPressed(key) { update(key); render(); } event onKeyPressed(key) { update(key); render(); }
Máquinas de estados Representação de estados e transições Autômato finito avançandopróximo agarrandoatacandorecuando parado Oponente longe Oponente perto Oponente longe Oponente defendendo Oponente parado Final do cenário Oponente longe Oponente perto
Máquinas de estados Exemplo: Interpretação de entrada do usuário H H S H H S
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.