Programação de Jogos Alexandre Tolstenko Nogueira alexandre@tolstenko.net

Preview:

Citation preview

Programação de Jogos

Alexandre Tolstenko Nogueiraalexandre@tolstenko.net

http://tolstenko.net

Apresentação

• Estudante Unicamp;• Integrante do Gamux;• Participante do LMSu – Microsoft Innovation

Center;• Palestrante de cursos de programação de

jogos; • Programador desde 8ª série;• Viciado por jogos eletrônicos.

Sinopse

Breve Histórico

Profissionais de Games

Produção de Games Mercado Como

Começar

Histórico

• Início nos anos 70/80– Geralmente desenvolvido por uma única pessoa;– Osciloscópio: Tenis para dois;– Pong: Atari;– Tetris.

• Atualmente:– Centenas de pessoas trabalham na produção de

um jogo;• Futuro?

Breve Histórico

Profissionais de Games

Produção de Games Mercado Como

Começar

Profissionais de Games

• Equipe multi-disciplinar:– Marketing;– Desenhistas;– Modeladores;– Escritores;– Músicos;– Programadores;– Testadores;– Projetista de Níveis, de Personagens, de Jogos;– ...

Breve Histórico

Profissionais de Games

Produção de Games

Etapas GDD Storyboard Concept Art Arte Final

Mercado Como Começar

Etapas

• Concepção;• Modelagem

(documentos de Design, Technical Design; Visão; Mercado …);

• Construção do jogo;• Testes;• Etapas comuns ao

desenvolvimento de um software.

Produção de Games

Estudo de Requisitos Brainstorm Conceito

de Jogo

GDD TDD Construção do Jogo

Alpha Beta Release

Brainstorm – Ideamap

Game Design Document(Nosso Modelo)

• Sumário Executivo• Conceito• Tema• Visão Geral• História de Fundo• Exemplo de jogo• Plataformas• Público Alvo• Diferencial• Jogos Concorrentes• Requisitos de Sistema• Gameplay• Gameflow• Menu / Fluxo de Telas

• Controles• Elementos de Tela (HUD)• Personagens e Objetos• Elementos de Jogo• Gráficos• Multiplayer• Física• IA• Áudio/Som• Níveis• Milestones• Plano de Negócios• Licença do Jogo

StoryboardImagens: Ricardo Nakayma

StoryboardImagens: Ricardo Nakayma

Concept Art

Imagens: Ricardo Nakayma

Arte FinalImagens: Alexandre Creto

Breve Histórico

Profissionais de Games

Produção de Games Mercado

Tipos de Jogos

Tipos de Jogadores

O que querem

O que esperam Atualidades Requisitos

Como Começar

Tipos de Jogos

• Advergames; Jogos educacionais; Serious Games; RPG; MMO; Simuladores de corrida, aviões etc; Puzzle; Quiz; FPS; RTS; Estratégia; Tabuleiro; Cartas; Adventure; Ação; Esportes; …

Tipos de Jogadores

• Casual;• Hardcore;• Pro;• Newbie;• Import;• Retro;• Girl;

O que querem?

• Desafio• Socializar• Ter uma

experiência dinâmica solitária

• Gabar-se• Emoção• Fantasiar

O que esperam?• Soluções razoáveis• Direção• Continuidade• Imergir• Falhar• Chance justa• Não ter que repetir• Um mundo consistente• Não perder as esperanças• Fazer, não assistir• Conhecer as fronteiras do

universo do jogo

Atualidades

• Faturamentos de 2007 e 2008 superou as indústrias de música e cinema;

• “U.S. computer and video game software sales grew 22.9 percent in 2008 to $11.7 billion – more than quadrupling industry software sales since 1996.”

• 77% de chefes de família jogam algum jogo digital• Média de idade de jogadores: 35 anos e jogam em média há

12 anos;• Média de idade de compradores: 39 anos• 63% dos pais acreditam que games são construtivos na

formação dos filhosFonte: www.theesa.com

Atualidades

Atualidades

Atualidades

Atualidades

Atualidades

Fonte: Abragames, 2005

Atualidades

Fonte: Abragames, 2005

Fonte: Game Developer 2009

Fonte: Game Developer 2009

Fonte: Game Developer 2009

Requisitos do Profissional

• Programador:– Proficiência em C/C++;– Conhecimentos avançados de algebra linear,

computação gráfica, algorítmos, física …;– Conhecimento de diversas APIs, SDKs,

Frameworks, Bibliotecas: DirectX, OpenGL, Physx, Xlib, Win32 …;

– Boa capacidade comunicativa.

Requisitos do Profissional

• Artista (imagem):– Proficiência em design

de conceitos, animação, modelagem, desenho …;

– Experiência em algum software: 3DSMax, Maya, Blender, Photoshop, Zbrush, Softimage XSI… ;

– Boa capacidade comunicativa.

Breve Histórico Profissionais de Games

Produção de Games Mercado Como Começar

Diálogo Ferramentas Requisitos Dificuldades Facilidades Campeonatos

Diálogo

• “Agora me empolguei e farei um MMO / FPS melhor que World of Warcraft / Crysis com meus colegas!“;

• Esses jogos são feitos por equipes gigantescas e altamente especializadas;

• Vejamos o caso do GTA 4:– 1000+ pessoas trabalhando em tempo integral;– 3,5 anos de desenvolvimento;– 100+ milhões de dólares investidos.

Diálogo

• “Mas não desanimem! Ainda é possível!”;• Tibia:– 3 desenvolvedores, que começaram o

desenvolvimento durante a graduação;– Chegou a um pico de 64,000 players online e 77

servers em 28 de novembro de 2007;– Contra-mão da evolução que deu certo: apostaram em

2D quando o 3D estava apontando!– Primazia pela simplicidade e leveza do jogo;– Primeiro MMORPG para celular: TibiaME!

Diálogo

• Percebam que uma boa idéia para um jogo faz toda a diferença;

• Evitem escolher como projetos iniciais games MMO, RPG, ou qualquer outro que tome muito tempo;

• Uma frase bem comum e repetida no Gamux: “Apenas após o seu 10o game, será capaz de fazer o seu 1o bom jogo.”.

Diálogo

• “Então só me resta fazer um pong!”

• É inevitável isso. Até hoje não conheço um programador de games que não tenha feito um PONG na vida;– Já que vai fazer um PONG,

aproveite o embalo e faça um SNAKE, SPACE INVADERS, TETRIS, ASTEROIDS …

Diálogo

• “Ok, entendi seu ponto, então como devo fazer um game? em assembly?”

• “We will gladly sacrifice 10% of our performance for 10% of our productivity”, Tim Sweeney (Unreal 3)– Pensem bem quais

ferramentas liguagens a utilizar.

Diálogo

• Sugestão para começar:– Liguagens: Java / C# /

Flash / Python ;– Engines / Framework:

XNA/ TorqueX / Ogre3D / SDL / Flash ;

• NÃO REINVENTE A RODA! SEJA PRODUTIVO!

Engines, Ferramentas e SDKs

• Open Source: jMonkey, Ogre3D, Cadabra, Crystal Space, Allegro, SDL;

• Baixo Custo: XNA, UDK, Torque, Unity, 3DGS

• Alto custo: Gamebryo, C4, CryEngine3

Requisitos

• É importante saber desde cedo a área a seguir e se especializar nela;

• É de suma importancia traçar metas, prazos e objetivos;

• Escolher a ferramenta certa;• Tempo e dedicação:• Um bom game é feito de 20%

inteligência, 20% conhecimento e 60% de esforço.

Dificuldades

• Incentivo nacional muito baixo:– Incentivo da CGU: 70 mil;– Investimento do GTA4: 100 milhões.

• Pirataria de games e produtos nacionais;• Antigamente:– Demandava muito conhecimento técnico, em

especial consoles;

Dificuldades

• Acesso aos SDKs era:– Restrito – apenas algumas empresas podiam utilizar;– Caro – PS3: 30.000$;– Complexo – Baseado em C++ e Assembly, Focado em

espaço/performance utilizando técnicas de baixo nível.• Desenvolver games para consoles e PCs eram

experiências distintas;• Falta de comunidades e materiais de apoio para

estudar;

Facilidades

• XNA:– Xna is Not an Acronym;

• Plataformas suportadas (API praticamente idêntica):– Windows;– Xbox 360;– Zune;– Windows Mobile 7;– Web(com Silverlight).

• Simplificação no tratamento de hardware, dando ao programador a possibilidade de se entreter apenas ao desenvolvimento dos games em si.

Facilidades

Como Começar

Diálogo Ferramentas Requisitos Dificuldades Facilidades Campeonatos

Metas do Milênio XNA Challenge SBGames Imagine Cup Arena Info Dream Build

Play

Metas do Milênio

XNA Challenge

• 2o XNA Challenge:– Vencedor com o game Recicle;– Finalista com o game Gariman

• 3o XNA Challenge– Finalista com o Óculos do tempo;

Recicle

Gariman

SB Games

• Vice-Campeão em 2007 com o iCoco

ICoco

Imagine Cup

• Chegou até a segunda fase do ImagineCup 2008 com o game Gariman;

Arena Info

• Campeão com o jogo Matemundo;• Semi-Finalista com o jogo Óculos do Tempo• Finalista com o jogo Musicor• Semi-Finalista com o jogo LastGalaxy

Matemundo

Last Galaxy

Musicor

Dream Build Play

• ???

Referencias

• www.gamedev.net• www.opengl.org• www.gamasutra.com• www.gdmag.com

Agradecimentos

“Se fui capaz de ver mais longe foi apenas porque eu estava apoiado sobre ombro de gigantes.” (Newton).

• André Furtado;• Bruno Evangelista;• Thiago Carvalho;• Bruno Melo

Agradecimento

spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!", positionVect, Color.Black);

Recommended