Versão 2.0 do artigo sobre como iniciar a carreira de desenvolvedor de jogos
O inicio de uma profissão é sempre muito difícil e confuso, por isso antes de sair por ai programando temos que fixar as raízes.
Focar objetivos é muito importante em qualquer profissão, mesmo se o objetivo não for ser um especialista, mas um generalista ou coordenador de projeto.
Qual o meu perfil?
Uma boa maneira de iniciar é focar objetivos. Dentro da área de desenvolvimento de games existem varias ramificações entre elas estão:
Núcleo, Programador: engine**, simulação física, inteligência artificial, gerenciamento de carga de memória, desempenho, etc.
Computação Gráfica: modelagem, desenho, textura, efeitos especiais, programação de shader, montagem de cenário, iluminação, etc.
Efeitos Sonoros, Musica: sonorização, ambientação, posicionamento virtual, efeitos sonoros, trilha sonora.
Enredo, Roteirista: criação da historia, adaptação da historia na engine, etc.
Gerencia, Coordenação: arquitetura de programação, supervisão, liderança, tradução de termos, engenharia de software, etc.
Núcleo
Desenvolvedores que trabalham no núcleo do game normalmente são programadores, trabalhando com a manipulação direta com APIs e engines estes profissionais estão mais íntimos com o hardware da plataforma.
O núcleo se ramifica também em física, programação gráfica e Inteligência artificial, as quais não vão detalhar, pois não é o objetivo deste.
Para iniciar como profissional de núcleo de jogo (programador) primeiro tem que avaliar e escolher qual plataforma que estamos interessados e qual linguagem devem-se usar.
As plataformas podem ser as mais variadas, dês de consoles (videogames), computadores (Apple, PC, etc.), consoles portáteis, celulares e jogos para Internet.
Esta é uma escolha que tem q ser feita com muito critério, avaliando o mercado, as tendências, mas principalmente a vocação do desenvolvedor e afinidades com as linguagens suportadas.
Depois de escolhida a plataforma, devemos avaliar quais as linguagens que esta, nos disponibiliza. Dentre elas estão as mais conhecidas C++ (a mais comum e mais poderosa linguagem pra desenvolvimento de games), Java (mais flexível e também poderosa) dentre outras, também temos linguagens de script, como ActionScript (Flash), Cscript (GameStudio) e outras.
Se for o caso de trabalhar na construção de engines o passo é avaliar, quais as API´s* disponíveis.
Para exemplificar temos o OPENGL, biblioteca livre e usada por padrão em muitas plataformas, DirectX, biblioteca da Microsoft usada na maioria dos jogos para Windows. Também temos API´s mais didáticas como o Alegro e AlegroGL, XNA. E em Java o Java3d, J2ME (celulares) entre outras.
Se for trabalhar em um nível mais alto o passo é avaliar as engines gráficas.
Neste segmento temos muitas opções pagas e gratuitas. Entre as gratuitas se destacam o ogre, irrlicht, XNAGameStudio, etc. Neste mesmo nível também escolhemos se for o caso as engines de Física e de Som.
Computação Gráfica
Desenvolvedores que partem para computação gráfica normalmente são desenhistas ou modeladores, com algum talento artístico, ou facilidade com o mesmo.
A computação gráfica é a área destinada à geração de imagens em geral em forma de representação de dados e informação.
A computação grafica destinada a jogos exige certas tecnicas especificas, como em um jogo a maioria das cenas 3d é renderizada em tempo real é de extrema importancia que o modelador consiga por exemplo ser "sucinto" ou seja usar poucos poligonos e mesmo assim fazer uma bela modelagem.
O mesmo é exigido dos artistas de textura e efeitos especiais como particulas, normal map, etc. Um talento especial é requerido para os jogos de celular e de portateis que é chamado de pixel-art, em desenhos 2d pequenos deve-se fazer com poucos poligonos desenhos que sejam facilmente reconhecidos.
Para trabalhar nesta area é importante dominar algumas ferramentas, tais como: After Effects, Autocad, 3D Studio MAX, Blender, Maya, Photoshop, Illustrator, etc.
Efeitos Sonoros, Musica
A acustica nos jogos é de vital importancia para a imersão do jogador, e para a qualidade do jogo.
Desenvolvedores que trabalham com efeitos sonoros, e musica para jogos normalmente se veem frente a desafios de tecnologia principalmente em jogos destinados a portateis e equipamentos de baixa tecnologia como celulares.
No inicio dos computadores e videogames a decisão de incluir som em um vídeo-game significava que, em algum ponto, ela deveria ser transcrita em código de computador por um programador.
Porem hoje, esta transcrição nao presisa mais necessariamente do programador. Desenvolvedor de efeitos sonoros ou compositor musical pode trabalhar diretamente com ferramentas de audio proprias e especializadas e simplismente exportar para formatos que a tecnologia empregada no jogo consegue reproduzir.
Para trabalhar neste segmento é importante o dominio de ferrramentas de edição sonora e noçoes de acustica e musica se for o caso.
Enredo
O roteirista de games é o profissional mais difícil de encontrarmos no Brasil. É ele quem cria a história de um jogo, como em um filme.
Esse profissional vai desenvolver todo o enredo e precisa saber como fazer a pessoa que está jogando identificar-se com o game, por vezes adaptando historias ou criando eventos para determinadas tecnologias tão limitadas que tem q se inventar uma boa historia que justifique esta limitação.
O roteirista de jogos deve ter conhecimento técnico mínimo, mas suficiente para entender as limitações tecnológicas que seu jogo pode enfrentar.
Seu foco deve ser no estudo de culturas locais ou não, historia em geral e game cultura (estudo da influencia dos jogos eletrônicos na sociedade).
Gerencia
No caso de se escolher gerencia, é importante ter um amplo conhecimento em todas as áreas envolvidas para poder reconhecer necessidades e fazer uma boa tradução de termos entre o pessoal técnico e o de artes.
Também deve ter conhecimento de engenharia de software para q seja capaz de coordenar a estrutura do projeto de games satisfatoriamente.
Pesquisas devem ser feitas sempre:
O que existe para a plataforma.
Mercado atual, tendências.
Procurar fontes bibliográficas.
Baixar software mais novo e que mais se adapte as necessidades.
Estudar trabalhos já publicados.
Procurar participar de fórum de discussões sobre a linguagem, engine, API, etc.
Quando queremos iniciar um novo trabalho sempre o primeiro passo é sempre o mais difícil, a intenção deste artigo é exatamente ajudar a dar o primeiro passo, e espero que com ele a iniciação no mundo de criador de jogos seja mais tranqüila e anime os novos desenvolvedores.