ÍNDICE GERAL SOBRE O LIVRO XI 1 INTRODUÇÃO 1 1.1 GERAÇÃO DIGITAL NATIVE 2 1.2 ALGORITMIA E PROGRAMAÇÃO DE COMPUTADORES 2 1.3 COMPUTAÇÃO EM NUVEM 4 1.4 PROGRAMAÇÃO DE DISPOSITIVOS MÓVEIS 6 1.5 PROGRAMAÇÃO DE JOGOS EM AMBIENTE DE REA LIDADE AUMENTADA 7 2 INDÚSTRIA DE JOGOS DE COMPUTADOR 13 2.1 DESENVOLVIMENTO DE JOGOS DE COMPUTADOR 14 2.2 HISTÓRIA RECENTE DA PROGRAMAÇÃO DE JOGOS 15 2.3 TECNOLOGIA DE JOGOS DIGITAIS E TENDÊNCIAS 16 2.4 AMBIENTES INTEGRADOS DE DESENVOLVIMENTO DE JOGOS 19 2.4.1 3D GAME STUDIO 19 2.4.2 UNITY 3D 20 2.4.3 MICROSOFT XNA 22 2.4.4 PANDA 3D 23 2.4.5 MIT SCRATCH PROJECT 24 2.4.6 GAME MAKER 26 2.5 MERCADOS WEB DE JOGOS 27 2.5.1 APPLE STORE 27 2.5.2 ANDROID MARKET 29 2.5.3 WINDOWS PHONE MARKETPLACE 30 3 CRIAÇÃO E DESIGN DO JOGO 33 3.1 A IDEIA DO JOGO 33 3.2 JOGO COMO SIMULAÇÃO INTERATIVA 34 3.3 COMPONENTES E ÁREAS DE DESENVOLVIMENTO DE UM JOGO 36 3.3.1 ÁREAS DE CIÊNCIAS DA COMPUTAÇÃO 36 3.3.2 COMPONENTES E ENGENHARIA DE SOFTWARE 37 V
TECNOLOGIAS DE PROGRAMAÇÃO DE JOGOS 3.4 CONCEÇÃO E DESENVOLVIMENTO DO JOGO 37 3.4.1 NARRATIVA 39 3.4.2 TEMAS DE UM JOGO 39 3.4.3 O CENÁRIO E O MUNDO DO JOGO 43 3.4.4 GAMEPLAY 43 3.4.5 DEFINIÇÃO DAS REGRAS DE UM JOGO 44 3.5 DOCUMENTAÇÃO DO PROJETO DO JOGO 45 3.5.1 DOCUMENTO DE DESIGN DE UM JOGO 45 3.5.2 EXEMPLO DE ESTRUTURA DE UM GDD 47 4 ALGORITMIA E PROGRAMAÇÃO DE JOGOS 51 4.1 MODELAÇÃO E RESOLUÇÃO DE PROBLEMAS 52 4.2 ENGENHARIA DE SOFTWARE 52 4.3 ALGORITMOS E ESTRUTURAS DE DADOS 54 4.3.1 TIPOS E ESTRUTURAS DE DADOS 56 4.3.2 ESTRUTURAS DE DADOS INDEXADAS 57 4.3.3 ESPECIFICAÇÃO DE UM ALGORITMO 59 4.4 ENGENHARIA DE SOFTWARE PARA O DESENVOLVIMENTO DE JOGOS 60 4.5 ARQUITETURA DE SOFTWARE PARA UM JOGO 62 4.5.1 MOTOR DE UM JOGO 62 4.5.2 ENTIDADES E COMPONENTES DE SOFTWARE DE UM JOGO 64 4.6 ALGORITMOS E ESTRUTURAS DE DADOS PARA O DESENVOLVIMENTO DE JOGOS 65 4.6.1 ABSTRAÇÃO DOS DADOS E ORIENTAÇÃO AOS OBJETOS 65 4.6.2 CLASSES E ESTRUTURAS DE DADOS FUNDAMENTAIS 68 4.6.3 MODO DE FUNCIONAMENTO DE UM JOGO EM TEMPO REAL 70 4.6.4 MODELAÇÃO ORIENTADA AOS OBJETOS E AOS EVENTOS 72 4.6.5 ALGORITMOS DE INTELIGÊNCIA ARTIFICIAL 72 4.7 PROGRAMAÇÃO ORIENTADA A OBJETOS PARA O DESENVOLVIMENTO DE JOGOS 75 5 PROGRAMAÇÃO DE JOGOS COM PYTHON E PYGAME 77 5.1 INSTALAÇÃO DO AMBIENTE DE PROGRAMAÇÃO PYTHON 78 5.2 UTILIZAÇÃO DE UM EDITOR PYTHON 79 5.3 VARIÁVEIS, VALORES E TIPOS DE DADOS 82 5.4 INSTRUÇÕES DE LEITURA E ESCRITA 84 5.5 EXPRESSÕES MATEMÁTICAS SIMPLES 85 VI
ÍNDICE GERAL 5.6 CICLOS E ESTRUTURAS CONDICIONAIS 87 5.6.1 ESTRUTURA IF 87 5.6.2 CICLO FOR 87 5.7 MÓDULOS E FUNÇÕES 88 5.8 ESPECIFICAÇÕES DE JOGOS EM PYTHON 90 5.8.1 ADIVINHA O NÚMERO 91 5.8.2 ADIVINHA A PALAVRA 92 5.9 BIBLIOTECA PYGAME 94 5.9.1 INSTALAÇÃO DO PYGAME 95 5.9.2 MÓDULOS, FUNÇÕES E MÉTODOS PYGAME 97 5.9.3 IDENTIFICAÇÃO E MANIPULAÇÃO DE EVENTOS 99 5.9.4 PRIMEIRA APLICAÇÃO EM AMBIENTE GRÁFICO 101 5.9.5 DESENHO DE INTERFACES GRÁFICAS 104 5.9.6 CICLO DO JOGO 106 5.9.7 EXEMPLOS DE JOGOS E ANIMAÇÕES GRÁFICAS 109 6 PROGRAMAÇÃO DE JOGOS PARA A WEB EM HTML5 119 6.1 LINGUAGENS PARA A PROGRAMAÇÃO DE JOGOS WEB 119 6.1.1 HTML5 121 6.1.2 CSS3 123 6.1.3 JAVASCRIPT E DOM 126 6.1.4 AJAX 130 6.2 FUNCIONALIDADES HTML5 E CSS3 PARA JOGOS INTERATIVOS 132 6.2.1 RENDERING GRÁFICO E BITMAPS COM O ELEMENTO CANVAS 133 6.2.2 API DE DESENHO SVG E WEBGL 134 6.2.3 ELEMENTOS MULTIMÉDIA PARA ÁUDIO E VÍDEO 135 6.2.4 GEOLOCALIZAÇÃO 137 6.2.5 ARMAZENAMENTO LOCAL PERSISTENTE COM WEBSTORAGE OUWEBSQL 138 6.2.6 COMUNICAÇÕES E WEBSOCKETS 140 6.2.7 JOGOS OFFLINE COM APPLICATION CACHE 141 6.2.8 JOGOS MULTITHREAD COM WEB WORKERS 142 6.2.9 INFORMAÇÃO PERSONALIZADA COM MICRODATA 143 6.2.10 CSS3 PARA JOGOS BASEADOS NO DOM 144 6.2.11 EXEMPLOS DE JOGOS DESENVOLVIDOS EM HTML5 146 VII
TECNOLOGIAS DE PROGRAMAÇÃO DE JOGOS 6.3 AMBIENTE E FERRAMENTAS DE DESENVOLVIMENTO 148 6.3.1 NAVEGADORES COM SUPORTE HTML5 148 6.3.2 FERRAMENTAS DE DESENVOLVIMENTO PARA OS BROWSERS 149 6.3.3 BIBLIOTECAS JAVASCRIPT PARA PROGRAMAÇÃO DE JOGOS 150 6.4 PROGRAMAÇÃO DE UM JOGO HTML5 BASEADO NO DOM 151 6.4.1 PREPARAÇÃO DE UM JOGO BASEADO NO DOM 152 6.4.2 INSERÇÃO DOS ELEMENTOS DE JOGO BASEADO NO DOM 154 6.4.3 MANIPULAÇÃO DOS ELEMENTOS DO JOGO BASEADO NO DOM 156 6.4.4 MOVIMENTAÇÃO DE OBJETOS DO DOM DE ACORDO COM INPUT DO TECLADO 159 6.4.5 SUPORTE PARA MÚLTIPLAS TECLAS SIMULTÂNEAS 161 6.4.6 MOVIMENTAÇÃO DE OBJETOS DO DOM EM JAVASCRIPT 165 6.4.7 DETEÇÃO DE COLISÕES ENTRE OBJETOS DO DOM 168 6.4.8 APRESENTAÇÃO DAS PONTUAÇÕES DOS JOGADORES COM TEXTO DINÂMICO EM HTML 173 6.5 PROGRAMAÇÃO DE UM JOGO HTML5 BASEADO NO ELEMENTO CANVAS 179 6.5.1 PREPARAÇÃO DE UM JOGO BASEADO NO CANVAS 180 6.5.2 DESENHO 2D NO CANVAS: CÍRCULOS E FORMAS GEOMÉTRICAS 183 6.5.3 DESENHO DE PATHS NO CANVAS 185 6.5.4 GERAÇÃO DE NÚMEROS ALEATÓRIOS EM JAVASCRIPT 187 6.5.5 SALVAGUARDA DA POSIÇÃO DE OBJETOS GEOMÉTRICOS 187 6.5.6 DESENHO DE LINHAS NO CANVAS 189 6.5.7 INTERAÇÃO COM OBJETOS DESENHADOS ATRAVÉS DE EVENTOS DO RATO 191 6.5.8 CICLO DE UM JOGO BASEADO NO CANVAS 195 6.5.9 DETEÇÃO DE INTERSEÇÕES NO CANVAS 196 6.5.10 CRIAÇÃO DO JOGO DESENREDAR BASEADO NO CANVAS 201 7 PLATAFORMAS DE DESENVOLVIMENTO DE JOGOS 213 7.1 PROTOTIPAGEM E PRODUÇÃO DE JOGOS 213 7.2 PANDA 3D E O PROJETO ALICE 214 7.2.1 INSTALAÇÃO DO PANDA 3D E DAS BIBLIOTECAS 215 7.2.2 JOGOS E ANIMAÇÕES DE DEMONSTRAÇÃO 217 7.2.3 DESENVOLVIMENTO DE UM JOGO EM PANDA 3D 220 7.3 MICROSOFT XNA 224 7.3.1 INSTALAÇÃO DO VISUAL STUDIO E DO XNA 225 VIII
ÍNDICE GERAL 7.3.2 CRIAR UM PROJETO XNA DE UM JOGO 226 7.3.3 CLASSES E MÉTODOS XNA 229 7.3.4 MECANISMOS XNA E OBJETOS GRÁFICOS DE UM JOGO 231 7.4 MIT SCRATCH PROJECT 236 7.5 GAME MAKER STUDIO 242 7.5.1 INSTALAÇÃO DO AMBIENTE GAME MAKER 244 7.5.2 DESIGN DE UM JOGO COM O GAME MAKER STUDIO 245 7.5.2.1 RESUMO DO JOGO 245 7.5.2.2 DOCUMENTO DE DESIGN DO JOGO 245 7.5.2.3 GAME OBJECTS 245 7.5.2.4 SOUNDS 246 7.5.2.5 CONTROLS 246 7.5.2.6 GAMEPLAY 246 7.5.2.7 ROOMS AND LEVELS 246 7.5.3 CRIAÇÃO DE UM PROJETO (JOGO) 246 7.5.4 MANIPULAÇÃO DE IMAGENS 248 7.5.5 MANIPULAÇÃO DE FICHEIROS DE ÁUDIO 250 7.5.6 REPRESENTAÇÃO DE OBJETOS, EVENTOS E AÇÕES 251 7.5.7 IMPLEMENTAÇÃO DE EVENTOS DO JOGO 254 7.5.8 INTEGRAÇÃO DO ESPAÇO DO JOGO 260 7.6 DESENVOLVIMENTO DE JOGOS PARA O WIN DOWS 8 262 7.6.1 EXTENSIBLE APPLICATION MARKUP LANGUAGE (XAML) 265 7.6.2 DESENVOLVIMENTO DE APLICAÇÕES XAML COM O VISUAL STUDIO 266 7.6.3 DIRECT2D E DIRECT3D 268 7.6.4 BIBLIOTECA DE SOFTWARE MONOGAME 271 7.6.5 ATRIBUTOS E MÉTODOS DA CLASSE GAME 272 7.6.6 SHOOTER GAME 275 7.6.7 MINI SPACE INVADERS 284 LISTA DE SIGLAS 291 GLOSSÁRIO DE TERMOS PORTUGUÊS EUROPEU / PORTUGUÊS DO BRASIL 293 BIBLIOGRAFIA 295 ÍNDICE REMISSIVO 299 IX