VI Semana Acadêmica de ADS Como começar a desenvolver games e onde trabalhar? Prof. Jean Felipe P. Cheiran Agosto de 2016
Roteiro O primórdio dos jogos digitais Desenvolvendo jogos Oportunidades no mercado Contatos 2
Professor da UNIPAMPA Biografia Mestre em Computação pela UFRGS Atua nas linhas de pesquisa de Engenharia de Software, Interação Humano-Computador e Desenvolvimento de Jogos. Joga durante quase todo o tempo livre desde que ganhou seu Odyssey 2 e uma TV preto e branco. 3
Jogos 4
O que são jogos? 5
Você joga? Quanto? 6
Qual é o perfil do gamer de hoje? 7
Qual é o perfil do gamer de hoje? Média de idade: 35 anos Média de anos jogando: 13 anos Gênero 41 59 Masculino Feminino 8
Por que as pessoas jogam? 9
Como começou o hardware dos jogos digitais? 10
Tennis for Two (Higinbotham, 1958) 11
Spacewar (Russell, 1961) 12
Pong (1972) 13
Como começar a desenvolver um jogo? 14
Como começar a desenvolver um jogo? Escolha uma linguagem de programação. Encontre ferramentas e editores de jogos que possam ajudar no trabalho. Tente fazer algo simples (muito simples). Falhe miseravelmente e tente de novo. O começo é complicado, mas o importante é persistir. 15
16 16
LINGUAGEM C Principal linguagem de jogos na década de 90. Amplamente conhecida. Alto desempenho. Muitas bibliotecas disponíveis. Muitas questões de baixo nível para lidar. Muito complicada para coisas simples (char*). Sem orientação a objetos. 17
LINGUAGEM C++ Substituiu C no topo do desenvolvimento de jogos. Características de alto nível (incluindo OO). Alto desempenho. Muitas bibliotecas disponíveis. Ainda com muitas questões de baixo nível. Ainda muito complicada para coisas simples. Muito tempo para compilação e montagem. 18
LINGUAGEM JAVA Presente em várias plataformas (inclusive Android). Simples, limpa e orientada a objetos. Algumas bibliotecas disponíveis (inclusive nativas). Falta de tipos definidos pelo usuário. Desempenho pode ser um problema. Não é suportada pelos grandes consoles. Engenharia reversa facilitada. 19
LINGUAGEM C# Simples, limpa e orientada a objetos. Fortes raízes em C++ e Java. Disponível em várias plataformas Microsoft. Proprietária. Desempenho poder ser um problema (atenuado pela possibilidade de interagir em baixo nível). Engenharia reversa facilitada. 20
LINGUAGEM OBJECTIVE C Reflexiva e orientada a objetos. Influenciada por C e SmallTalk. Principal linguagem para sistemas Apple. APIs sólidas para construção de sistemas interativos (Cocoa e Cocoa Touch). Suporte a Automatic Reference Counting. Não é suportada pelo grandes consoles. 21
LINGUAGENS DE SCRIPT (E.G., JAVASCRIPT) Mais simples, flexíveis e heterogêneas. Alto nível e gerenciamento automático de recursos. Permite desenvolvimento e montagem rápidos. Códigos viram recursos editáveis. Desempenho é um problema. Geralmente têm poucas bibliotecas disponíveis. Difícil captura de erros. 22
Bibliotecas, engines, plataformas jmonkey Engine Java Allegro C (nativo), C++ (nativo), Lua e Python Unity scripts C#, JavaScript e Boo Construct 2 JavaScript Unreal Engine C++ OpenGL e OpenAL C DirectX C, C++ Panda3D Python, C++ Game Maker Game Maker Language 23
Engine É uma camada de software que serve de base para o jogo. Fornece funções para facilitar a criação. Permite carregar arquivos, renderizar cenários, tratar eventos, simular física, etc. 24
Engine O que pode me ajudar a escolher a engine mais adequada? 1. Editores de áudio/gráficos disponíveis 2. Otimização para o dispositivo alvo 3. Portabilidade para plataformas 4. Usabilidade e ergonomia de uso 5. Documentação ampla e detalhada 6. Comunidade colaborativa 7. Atualizações recentes 8. Quanto custa? 25
Design com ciclos protótipo é bom o suficiente Formule/escolha um problema Teste os protótipos Faça um brainstorming para encontrar soluções possíveis protótipo é insuficiente Construa protótipos para atenuar riscos Escolha uma solução Liste os riscos da solução 26
JOGO COMO UMA COLEÇÃO DE PROBLEMAS Formule um problema: Novo jogo de corrida. 27
JOGO COMO UMA COLEÇÃO DE PROBLEMAS Faça um brainstorming com potenciais jogadores e outros interessados e colete soluções: 1. Corrida com dinossauros. 2. Corrida de foguetes no espaço. 3. Corrida de carrinhos de lomba. 4. Corrida subaquática (com torpedos!). 5. Corrida de pessoas (de cabeça para baixo!). NENHUMA IDEIA É DESCARTADA! TODAS SÃO BEM-VINDAS! 28
JOGO COMO UMA COLEÇÃO DE PROBLEMAS A equipe escolhe uma solução possível: Corrida subaquática (com torpedos!). 29
JOGO COMO UMA COLEÇÃO DE PROBLEMAS A equipe elenca os potenciais riscos: Incerto sobre aparência das pistas de corrida. Talvez não seja inovador o bastante. Temos tecnologia para bons efeitos subaquáticos? 30
JOGO COMO UMA COLEÇÃO DE PROBLEMAS A equipe elabora protótipos e realiza testes: [artistas esboçam conceitos das pistas] [designers inventando e esboçando mecânicas e efeitos de saltos para fora d água e corrida em campos minados] [programadores fazendo pequenos programas de teste com efeitos de água] 31
EXEMPLOS DE ESQUEMAS, MODELOS E PROTÓTIPOS 32
33
34
35
JOGO COMO UMA COLEÇÃO DE PROBLEMAS A equipe avalia os resultados, toma decisões e escolhe novos problemas para abordar: Corridas em túneis e profundezas abissais parecem legais. É necessário que sejam submarinos de corrida com manobras responsivas e que possam voar. Os efeitos sobre a superfície da água parecem bons, mas efeitos subaquáticos são muito custosos em CPU. Novo problema: Jogo de corrida com submarinos que possam voar. 36
Anatomia do código de um jogo Inicialização do jogo Laço principal do jogo Fechamento do jogo Inicialização de front-end Laço de front-end Tratamento de entradas e eventos Renderizar e atualizar a tela Fechamento de front-end Inicialização de nível Laço de nível Tratamento de entradas e eventos Executar IA e simulações físicas Atualizar entidades e estado do jogo Enviar e receber mensagens de rede Renderizar e atualizar a tela Fechamento de nível 37
Mercado 38
Onde trabalhar? Estados Unidos Irlanda França China Coreia Taiwan Singapura Austrália 39
Onde trabalhar? 40
Estados Unidos Alemanha Inglaterra Irlanda China Turquia México Rússia Chile Brasil Coreia... Onde trabalhar? 41
Onde trabalhar? 42
Onde trabalhar? Estados Unidos Inglaterra 43
Onde trabalhar? 44
Onde trabalhar? Porto Alegre Aquiris Cupcake Epopeia MonsterBed Rockhead Swordtales 45
São Leopoldo Learn4Fun Mura Novo Hamburgo BrazaGames Caxias do Sul Urizen Santa Maria Decadium Onde trabalhar? 46
47
48
49
50
Posso fazer jogos sozinho? 51
Jogos Indie Desenvolvedores independentes. Pequenas equipes com poucos recursos. Pouco ou nenhum financiamento. 52
53
54
55
56
57
58
59
Onde hospedar minha empresa? Incubadora de Empresas de Base Tecnológica e/ou Social IF Farroupilha PampaTec UNIPAMPA Alegrete Zenit UFRGS Porto Alegre TecnoPuc PUCRS Porto Alegre UlbraTech ULBRA Canoas Feevale Techpark Feevale Campo Bom e NH TecnoSinos UNISINOS São Leopoldo 60
Dispositivos móveis Apple Store Google Play Store Consoles PlayStation Store Wii Shop Xbox Game Store PC Steam Desura GOG Nuuvem Distribuidoras de jogos 61
Contato Prof. Jean Cheiran (jeancheiran@unipampa.edu.br) Av. Tiarajú, 800 sala 230 62