16 de jun de 2011

Como se tornar um desenvolvedor de games - Parte 1

Introdução

Há alguns anos atrás a carreira de um desenvolvedor de games não passava apenas de um sonho de geeks para poucos fissurados por computador. Felizmente nos últimos anos essa realidade vem mudando drasticamente. 

Grande parte dessa mudança deve-se a enorme lucratividade que as desenvolvedoras estão tendo, o game deixou de ser tratado como entretenimento infantil e hoje já é considerado como a maior manifestação de arte digital possuindo um faturamento maior que a mega indústria do cinema. 





Essa realidade esquentou muito o mercado, bons desenvolvedores são raros e geralmente são disputados a tapa pelas grandes empresa. Isso se traduz em um salário atraente para um profissional da área. 

Com o grande aumento da remuneração dos desenvolvedores e repentina “fama” começaram a surgir no mercado profissionais que visavam apenas o lucro, muitas vezes sem capacitação ou dedicação suficiente. 

Portanto resolvi criar um tópico explicando um pouco desse mundo e dando alguns conselhos aos interessados pela área. Diante mão adiante que não trabalho na área de games, e sim desenvolvimento de software em geral. Mas minha curiosidade nesse mundo me permitiu adquirir algumas informações que podem ser interessantes para alguns, portanto resolvi compartilhar o pouco que sei. 

Antes de poder falar sobre a profissão é necessário explicar melhor quem é quem no mundo dos games. 


Cargos 

Game Artist: Esse é um nome genérico para a função, já que muitos se chamam Game Animators ou até Game Modelers. Cabe a eles criarem todo o conteúdo visual de um game, a aparência dos personagens, o visual das construções e os cenários. 

Grandes partes desses artistas digitais ainda relutam no uso do computador, muitos preferem papel e caneta, seguindo o estilo storyboard. Geralmente trabalham juntos com os Level Designers para transformar suas criações e cenários em 3D. 

Faixa salarial: 
- Até 3 anos de experiência: $43.657 anuais. 
- Média: $66,594 anuais. 
- A partir de 6 anos de experiência: $74.335 anuais. 
- Diretor de arte com mais de 6 anos de experiência: $102.806. 


Game Designer: Por definição o Game Designer é responsável pelo layout, conceito, estilo do jogo, balanceamento da jogabilidade, dificuldade. O Game Designer é o mais próximo do cargo de gerente, cabendo a ele coordenar a equipe e garantir que tudo está de acordo com o planejado. 

Não é obrigatório conhecimento específico na área de games, mas devido a grande complexidade dos games atuais é cada vez mais comum encontrar Game Designers que estudaram Ciência da Computação ou Engenharia da Computação e especializado em gerência de projetos, psicologia, filosofia, drama ou sociologia. 

Pertencem a essa categoria estrelas como Sid Méier, Chris Sawyer, Hideo Kojima e Will Wright. 

Faixa salarial: 
- Até 3 anos de experiência: $45.000 anuais. 
- Média: $70,000 anuais. 
- A partir de 6 anos de experiência: $90.000 anuais. 
- Diretor de Design: Não existe um valor fixo, geralmente trabalham com porcentagens de venda do produto. 


Audio Designers: Cabem a eles criarem a trilha sonora, dublagem, efeitos sonoros, tudo envolvendo o desenvolvimento do áudio dos games. Não cabe a eles programarem diretamente o áudio no game, isso é papel do suporte ou dos desenvolvedores. 

Faixa salarial: 
- Até 3 anos de experiência: $65.000 anuais. 
- A partir de 6 anos de experiência: $70.000 anuais. 
- Compositores e diretores de áudio: $90.000 anuais. 


Game Programmers: É a espinha dorsal dos games, cabem a eles implementarem as decisões tomadas pelo Game Designer, colocarem o áudio feito pelos Áudio 
Designers e renderizarem os personagens e cenários feitos pelo Game Artist. 

Ao contrário do que muitos pensam os desenvolvedores não são “peões de obra”, são extremamente valorizados e o cargo possui progressão própria, então um bom desenvolvedor não precisa mudar de atividade para melhorar a faixa salarial. 

Faixa salarial: 
- Até 3 anos de experiência: $40.000 anuais. 
- Média: $60.000 anuais. 
- A partir de 6 anos de experiência: $90.000 anuais. 
- Chefe de desenvolvimento: $100.000 anuais. 
- Chefe de suporte ao desenvolvimento: $90.000 a $120.000 anuais.* 

* Programadores com grande conhecimento técnico podem virar suporte ao desenvolvimento, conseqüentemente podem atingir o nível de Chefe de suporte ao desenvolvimento. 


Game Testers: Ao contrário do que acontece na maioria das empresas de desenvolvimento (seja de games ou software) nacionais o custo da hora de trabalho de um programador é muito elevado para que ele se dedique a realizar todos os testes e controle de qualidade do produto. Os desenvolvedores não testam o produto em sua totalidade, fazem testes de fumaça ou testes pontuais. 

Para isso existem os Game Testers, são pessoas especialistas em testar softwares de acordo com uma metodologia acertada com o Líder de Testes. Cabe a eles detectarem bugs, travamentos, problemas de desempenho, desempenho e jogabilidade. 

São responsáveis por todo o controle de qualidade de um produto. Infelizmente empresas de pouco nome ainda possuem uma mentalidade errada, considerando-os “supérfluos”. É geralmente o primeiro alvo de qualquer “redução de gastos”, obviamente isso impacta na qualidade do produto final. 

Faixa salarial: 
- Até 3 anos de experiência: $25.000 anuais. 
- Média: $32.000 anuais. 
- A partir de 6 anos de experiência: $45.000 anuais. 
- Chefe de testes: $40.000 a $60.000 anuais. 


Existem ainda vários outros cargos relacionados à produção de um game, porém esses são os mais diretamente ligados com a produção em si. Portanto não acho que seria útil se eu falasse sobre produtores, distribuidores e o pessoal de marketing. 

Optei por deixar a faixa salarial no padrão internacional, pois hoje em dia não é muito difícil encontrar emprego nas grandes desenvolvedoras. Porém em outra coluna, quando tiver tempo, falarei mais do mercado nacional. 


- Perfil de um desenvolvedor de games: 

A primeira característica necessária para um profissional de games é gostar do que faz. Não entre nesse ramo se você não ama games, é muito trabalhoso, pouco lucrativo, estressante e se você não gosta do que faz não passará de um profissional frustrado e medíocre. 

Quando eu falo “gostar” não digo apenas gostar de jogar (isso é o básico), mas sim gostar de todos os aspectos de um game. Se interessar pelo o que acontece por trás, se preocupar em saber como foi o desenvolvimento, como aquele engine trabalha, qual metodologia está sendo usada e saber quais as novidades dos games mais atuais. 

Segunda, saber trabalhar sob pressão e em equipe. Você sempre terá um prazo limite apertadíssimo e o resultado do seu trabalho não depende apenas de você e sim de toda a equipe. Mesmo que você seja o melhor profissional do mercado, se sua equipe não estiver trabalhando bem, seu produto será um fracasso e você será afetado por isso. 

É por isso que empresas procuram contratar equipes inteiras de programadores, ao invés de contratações individuais. Dessa forma eles têm certeza que possuem uma equipe mais experiente. É praticamente um time de futebol, se um setor não funciona bem, o time não ganha. 

É “comum” os desenvolvedores trabalharem mais de 80 horas semanais quando chegam perto da data limite, se você não gosta de “plantões”, procure outra profissão, quem sabe medicina :lol:

Existem até casos onde funcionários denunciam a empresa por trabalho excessivo, pois viram semanas trabalhando sem sair do local de trabalho. O mais notório foi o caso da mulher (recém casada) de um programador, que não via seu marido a mais de um mês já que ele estava desenvolvendo Madden para EA. Obviamente esse não é nem nunca será o ambiente ideal, mas é preciso alertar que existem empresas assim. 

Como diria o saudoso Roberto Ribeiro: “Se não agüenta pede uma broa e bebe leite.” :lol: 


- Formação Profissional: 

Acredito que esse é o ponto mais importante do tópico em si, muita gente deseja seguir essa carreira, mas não sabe como começar. 

O primeiro, mais importante e básico dos requisitos é dominar bem o inglês. Você não encontrará material de estudo suficiente sobre o assunto em português, todas as maiores empresas são americanas, canadenses ou japonesas e todo fórum, site, tutorial que você encontrará será em sua maioria em inglês. Se você não domina o inglês e pretende seguir essa carreira, pare o que estiver fazendo e vá fazer um curso de línguas agora mesmo. 

Desenvolver um game é antes de tudo desenvolver um software, com a diferença que praticamente cada empresa possui sua própria metodologia, linguagem ou framework. 

Devido a essa imensa variedade de linguagens e framework o curso mais recomendado para o profissional da área ainda é Ciência da Computação, pois você terá um foco maior em programação em si, terá acesso e conhecimento técnico das linguagens. 

Cursos como Engenharia da Computação e Sistema de Informação também podem ser usados, porém como a grade curricular varia de universidade para universidade, o recomendado é Ciência da Computação. 

Algumas empresas internacionais não aceitam profissionais que não tenham se formado em Ciência da Computação, portanto se você mira alto, melhor não arriscar em outro curso. 

Já existem no Brasil faculdades que apresentam o curso voltado especificamente para Desenvolvimento de Games, porém não tenho informação suficiente para opinar sobre a abordagem do curso. Acho mais versátil à formação em Ciência da Computação com uma especialização na área. 

Apesar de cada grande empresa possuir sua própria metodologia e Framework, C, C++ e Assembly são as linguagens mais usadas. Jogos não são totalmente desenvolvidos em Assembly, mas possuem funções que precisam de grande velocidade onde o uso da linguagem é bem vinda, é mais comum em consoles. Linguagens de script como Python e Lua (desenvolvido pela PUC-Rio) também são usadas. Também é possível desenvolver bem utilizando C#, o próprio framework do Xbox e Xbox 360 (chamado XNA) é feito 100% em C#. 

Além das linguagens é necessário que o desenvolvedor saiba usar com competência as API’s do Windows, da Nintendo, do Xbox da Sony e as API’s gráficas (DirectX e OpenGL). Infelizmente como as API’s são quase sempre proprietárias e caras é difícil estudá-las, por esses motivos é mais recomendado focar em C, C++ e C#, afinal essa é à base de qualquer API’s. 

Uma boa opção para ter noção de como um game funciona é baixar o XNA da Microsoft ou o OpenGL. O XNA é o framework de desenvolvimento do Xbox distribuído pela Microsoft gratuitamente. O OpenGL é uma API gráfica open source onde é possível encontrar material facilmente na web. 

Outra opção de estudo é participar de cursos de desenvolvimento de games. No eixo Rio - São Paulo é possível encontrar empresas que apresentam cursos como: 

- Básico: imagens digitais. 
- Introdução à computação gráfica. 
- Introdução à animação. 
- Curso de modelagem: cenários e personagens virtuais. 
- Criação de personagens virtuais para games. 
- Direção de arte aplicada a produção de games. 
- Produção de webgames. 
- Desenvolvimento de Jogos 3D com GameStudio. 
- Webgames. 
- Produção 3D com Softimage|XSI. 
- Produção 3D com Blender. 

Todos eles ajudam na carreira de um futuro profissional de games, porém tenha em mente que grande parte do conhecimento necessário para se tornar respeitado nessa área não virá de cursos, que infelizmente ainda são poucos no Brasil. Nada que meia dúzia de bons livros não resolvam. 

Não quis me prolongar demais nesse tópico, a idéia era apenas de dizer quem é quem no mundo dos games e qual a melhor formação acadêmica inicial para o profissional que pretende fazer parte dessa área. 

Com o passar do tempo vou explicando melhor o mercado nacional de games, leituras obrigatórias, sites importantes para os desenvolvedores e quem sabe até um mini tutorial para os curiosos da área. 

Felizmente hoje em dia é possível achar diversos tutoriais bem interessantes de como fazer mini jogos, alguns até em português, mas esse é o tema de uma próxima postagem.