PROGRAMAÇÃO EM JOGOS DIGITAIS Frutuoso Silva Aplicações gráficas / Jogos Como funciona uma aplicação gráfica? O que é um jogo? Como funciona um jogo? 1
Aplicação gráfica! É um programa que apresenta gráficos 2D e/ou 3D! Baseia-se no paradigma de programação baseada em eventos! Muitas vezes os gráficos podem ser animados, ou seja, pode ter animação Aplicação gráfica! O que é uma animação?! Como se cria uma animação? 2
Aplicação gráfica! O que é uma animação?! Como se cria uma animação? Aplicação gráfica! O que é uma animação?! Como se cria uma animação? 3
Aplicação gráfica! O que é uma animação?! Como se cria uma animação? Aplicação gráfica! O que é uma animação?! Como se cria uma animação? 4
Aplicação gráfica! O que é uma animação?! Como se cria uma animação? Aplicação gráfica! Requer uma alta taxa de refrescamento (frame rate)! Normalmente na ordem de 30 fps ou superior! Isto obriga uma aplicação gráfica a funcionar em ciclo (Loop) PORQUÊ? 5
Aplicação gráfica! Ciclo INPUT OUTPUT UPDATE Com a restrição do nº de frames por segundo (30 fps) Aplicação gráfica! Recebe o input do utilizador; INPUT! Actualiza o estado da aplicação; OUTPUT UPDATE! Apresenta o resultado da actualização. 6
O que é um Jogo? (Videojogo)! Video Games always require a computer to receive player input, perform logic and return feedback to the player.! A game is a system in which players engage in an artificial conflict, defined by rules, that results in a quantifiable outcome. Rules of Play : Game Design Fundamentals. Salen, K. and E. Zimmerman. The MIT Press. (2003) O que é um Jogo?! A game is a system in which players engage in an artificial conflict, defined by rules, that results in a quantifiable outcome.! Temos ainda:! Diferentes tipos de jogos (i.e., géneros);! Diferentes tipos de jogadores;! O sucesso está em conseguir casar o tipo de jogador com o tipo de jogo 7
Que tipo de Jogo! Qual o género:! First Person Shooter! Real Time Strategy! Action vs Adventure vs Sports!! Qual o número de jogadores:! Single player?! Multi-player? " Real-time or non-real-time? " Synchronous or asynchronous? " Team-based or individual? Como funciona um jogo?! Funciona como uma aplicação gráfica.! No entanto, o desenvolvimento de um jogo envolve várias etapas.! Por isso, usa-se normalmente um Motor de Jogo (Game Engine) para suportar o seu desenvolvimento. 8
Motor de Jogo (Game Engine)! O que é um motor de jogo? A game engine is a software framework designed for the creation and development of video games. Video game developers use them to create games for video game consoles, mobile devices and personal computers. http://en.wikipedia.org/wiki/game_engine Motor de Jogo! Diversas funcionalidades: The core functionality typically provided by a game engine includes a rendering engine ( renderer ) for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, and a scene graph. http://en.wikipedia.org/wiki/game_engine 9
Motor de Jogo! Principais Funcionalidades:! Rendering & Animation! Physics! Controller Interaction! AI Primitives! Sound! Networking! Scripting system Lógica do Jogo! Game rules! Non-Player Characters (NPC) AI! Interface, etc. 10
Jogo! Ciclo de Jogo (Game Loop) READ PLAYER INPUT UPDATE WORLD STATE DRAW FRAME APPLY GAME RULES Jogo! Programação de Jogos é difícil " Podemos ter muitos módulos envolvidos num único jogo. 11
Jogo! Programação de Jogos é difícil " Players want complex graphics! " Game must run fast (30fps+) " AI isn t exactly trivial " We want networking but no latency " Physics is already hard " Now do it in real-time. What is a game engine? Game engine basics every developer should know Seth Sivak http://www.slideshare.net/sjsivak/what-is-a-game-engine 12