Programação de Jogos no Brasil - Entrevista com Vinícius Godoy

Aprenda a criar jogos programandoPara quem não o conhece, Vinícius Godoy (ou ViniGodoy) é um dos fundadores do Portal Ponto V, que é inteiramente dedicado ao desenvolvimento de jogos, que tem um gigantesco acervo de aulas e tutoriais sobre programação de games .

Ele é especialista na criação de jogos, trabalha e dá aulas no assunto, para pós-graduação de Desenvolvimento de Jogos Digitais, na PUC/PR.

Ele aceitou nos dar uma entrevista, falar um pouco dessa área, como entrar, como está o mercado brasileiro e outros assuntos de interesse para quem quer conhecer um pouco mais essa área.

Programação de Jogos no Brasil

Como temos esse site sobre programação, e outros dedicados à linguagens específicas, é bem comum recebermos dúvidas sobre criação de jogos, como programar e criar games. É realmente uma área muito interessante e que envolve demais a programação, por isso resolvemos escrever a respeito e ajudar quem está interessado nessa área.

Mas ao invés de escrever um artigo falando sobre isso, fomos procurar alguém que tenha uma real experiência, bem profissional, no assunto. Me lembrei do ViniGodoy porque ele é um membro super ativo no GUJ (Grupo de Usuários Java), e está sempre por lá tirando dúvida de iniciantes, discutindo otimizações e ideias.

É uma entrevista muito interessante, onde ele fala de sua experiência, da situação atual do mercado, e dá dicas pra quem quer entrar na área.


Como você chegou até esse mercado, de criação de jogos? Foi o que sempre quis desde o começou? Era de seu interesse ou foi uma oportunidade?

Eu viajei pela Siemens para a Alemanha. Como lá não havia muito o que fazer nas horas vagas, já que estava sem minha família e a TV não falava português, decidi começar a estudar algo diferente. Comecei a procurar em Curitiba um curso de pós graduação.  Não estava procurando especificamente por jogos, mas sim, por um curso que repetisse o mínimo de matérias possível que tive na graduação. Foi então que vi o curso de Jogos Digitais da Universidade Positivo, o primeiro do Brasil e entrei em contato com o prof. Fábio Binder, que é o orientador. Usei meu tempo livre para pesquisar um pouco sobre a área, e aí, decidi entrar de vez.


Vinícius, você pode dar uma 'geral' sobre como é a criação de jogos? Pois muitas pessoas pensam que é só programar, não fazem noção da gama de outros profissionais que estão envolvidos nesse meio. 

O processo de criação de um jogo é dividido em duas grandes fases. A primeira, chamamos de produção, e inclui a criação do conteúdo do jogo. É aí que entram profissionais como game designers, roteiristas, ilustradores, modeladores 3D, sonoplastas, músicos e pedagogos (no caso de games educacionais).

A segunda, chamamos de desenvolvimento, e refere-se a programação do jogo em si. É aqui que entram os programadores de gameplay e da engine do jogo. Muitos estúdios utilizam engines prontas de mercado, como a Unity ou a Cocos2D, concentrando-se mais na programação do gameplay em si.







Como temos alguns sites de programação, é bem comum a gente receber dúvidas de pessoas que querem programar jogos, mas a impressão que temos é que as pessoas que mais querem criar jogos são os fãs de jogos. Ele fazem a associação "gosto de jogar, então seria um ótimo programador de jogos", o que para nós é um verdadeiro mito. Pode nos falar quais as características mais importantes de pessoas que querem atuar nesse ramo? O que é mais requisitado ? Outra impressão que a gente nota é que os que querem entrar nesse ramo veem a criação de jogos algo tão divertido como jogar, algo quase lúdico. Como é o dia-a-dia desse profissional? É como a de um programador normal, quebrando a cabeça com códigos, bugs, atualizando, tentando otimizar etc? 

Ser fã de jogos é certamente um primeiro passo. Mas programar um jogo é uma tarefa muitíssimo diferente de jogar um.

Em primeiro lugar, exige-se de um programador de jogos exatamente o que vai se exigir de um programador comum: codificar com qualidade, saber padrões de projeto, ter ótimos conhecimentos de orientação a objetos e ter profissionalismo. Além disso, o programador de jogos deve ter bons conhecimentos em matemática e ter bons conhecimentos sobre o processo de otimização de código (é bom lembrar que games são, por natureza, sistemas de tempo real).

Em segundo, é bom ressaltar que a programação de jogos não é muito diferente da programação normal. Também está sujeita a prazos, a cronograma, a ter que lidar com colegas de equipe. Você também terá que correr atrás de bugs e, muitas vezes, irá programar muito longe da arte final do jogo. Aliás, nem sempre o seu módulo será lúdico. Você pode acabar programando o módulo que controla a rede, ou gera os logs do sistema, ou gastar horas programando ferramentas para facilitar a vida do time de produção (por exemplo, um editor de diálogos ou uma ferramenta para facilitar a internacionalização do jogo).

Uma das principais diferenças, e que ao mesmo tempo é uma vantagem e uma desvantagem, é o fato do time de jogos ser extremamente multidisciplinar. Você dividirá espaço com artistas e interagirá com o game designer e com o roteirista do jogo. Se por um lado você acaba vivenciando vários conteúdos diferentes, por outro, há também dificuldades de comunicação.

Finalmente, acho importante citarmos que o programador de jogos vai criar os jogos que a empresa precisa e não necessariamente os jogos que gostaria de jogar. O mercado de jogos é bastante amplo e, além de games para entretenimento, inclui jogos educacionais, jogos para publicidade, simuladores para treinamento, entre outros produtos. Fazer um game educacional para uma criança de 6 anos pode ser um desafio de desenvolvimento tão ou mais instigante do que fazer um jogo de tiro. É relativamente fácil saber o que um jogador de um game de tiro curte, mas é muito mais complicado saber o que agradaria uma criança e, ao mesmo tempo, fazer com que o jogo seja capaz de educa-la. É como eu gosto de dizer, "o amador faz os games que gosta, já o programador profissional de jogos faz os games porque gosta".


Qual a diferença entre programar um software normal, para uma loja por exemplo, e programação de jogos? Ou é a mesma coisa? Poucos sabem, mas tem que ter boas noções até mesmo de Física (velocidade, ótica, reflexão, aceleração etc), por exemplo

A primeira você mesmo citou. O programador de jogos deve conhecer um bocado de matemática e física. A matemática é importante porque todo o universo do jogo é representado numericamente, num eixo cartesiano. Por exemplo, como você faria um personagem andar para a esquerda? Muitos programadores respondem a essa pergunta simplesmente respondendo que basta "subtrair 1 do x". E isso está certo para games como o Super Mario mas... e se a câmera estiver sobre a cabeça do personagem e ele puder girar? E se o game for 3D, e se tratar de um avião que pode estar com o bico inclinado para cima, para baixo, para frente ou para trás, ou ainda de maneira oblíqua? Logo nota-se que definir exatamente o que é "esquerda" torna-se um desafio matemático interessante. A necessidade de matemática ou de física se intensifica caso você seja um programador especialista em computação gráfica, inteligência artificial ou física.

A segunda diferença é que um game, de maneira geral, é um projeto fechado, que terá um "fim". Embora a rede certamente tenha aumentado a vida dos jogos, muitos jogos terão um tempo de vida útil e uma data para "morrer". Além disso, o padrão de qualidade exigido para os games antes de seu lançamento costuma a ser mais rigoroso do que o de um software web, justamente por atualizações serem mais difíceis (frequentemente, tem que ser baixadas em todas as máquinas clientes), e serem encaradas como um inconveniente maior pelo jogador. Isso exige um processo de testes robusto, especialmente se você estiver desenvolvendo game para algum publisher ou objetivando o mercado de consoles.








Que caminhos você indica para quem quer estudar para ser programador de jogos? Algum curso, faculdade ou especialização? E pra quem já é programador, como virar e ir pra essa área? Tem que aprender algo antes, ou qualquer programador já pode ir pra essa área, como um outro ramo qualquer?

Ao meu ver, o caminho mais interessante é o profissional fazer uma faculdade como a de ciências da computação e em seguida, uma especialização em desenvolvimento de jogos, como a que ofertamos na PUCPR. Esse é um caminho seguro, pois o profissional pode ter acesso ao mercado de trabalho geral, antes de seguir para o nicho específico dos jogos.

Outra possibilidade, para os que precisam entrar na área com mais velocidade, é fazer a graduação tecnológica em Jogos Digitais, ofertadas em várias faculdades, inclusive a PUCPR, onde dou aula.

O profissional deve estar atento, pois muitos cursos de jogos estão focados em game design, e não em programação. Então, analise a ementa com cuidado.

Se você já fez faculdade e está em dúvida, pode também procurar por material na internet. Há muito material disponível em sites como o Ponto V ou GamaSutra. Existem bons livros a venda.

Se seu conteúdo de faculdade será suficiente ou não vai depender muito de que faculdade você fez e que tipo de coisa irá desenvolver em jogos. Se você for um programador de gameplay, provavelmente só seu curso superior será suficiente (talvez você só tenha que desenferrujar um pouco a álgebra linear básica). Agora, se você quiser partir para a programação de shaders em computação gráfica, fazer módulos avançados de IA, ou criar engines, aí terá que estudar um bocado.

O que está na moda hoje em dia? Jogos pra mobile? Pros vídeo-games de última geração ? 
Hoje o mercado está bastante diversificado. Vivemos um bom momento na área, pois os estúdios Indie, aqueles formados por poucos desenvolvedores, estão na moda. Hoje temos lojas online que permitem que qualquer um publique games, decentralizando o modelo existente na indústria de games de console, que dominou até os anos 2000.

No PC, lojas como a Steam abriram espaço para os pequenos estúdios com projetos como o GreenLight. Temos até bons exemplos de jogos brasileiros como Knights of Pen and Paper e DungeonLand, ambos presentes na Steam. Outros exemplos de lojas são a Apple Store, o Google Play e o Facebook.

Os video-games de última geração sempre serão moda, porém, é um mercado bastante difícil de se entrar. Se quiser trabalhar em empresas como a EA ou a Naughty Dog, você deve ter profundo conhecimento em C++ e ter um bom portifólio na área de games que quiser atuar. É importante ter um foco específico (como ferramentas, computação gráfica ou IA) e ficar atento aos editais de contratação das empresas. É necessário ter fluência em inglês.

Empreender na área de jogos hardcore também é difícil: Os video-games top de linha não vendem seu kit de desenvolvimento para qualquer indústria e nem publicam qualquer tipo de game. Os padrões de aceitação dos games é extremamente elevado.


A gente nota que a interação online está muito presente, é como se os jogos que se jogavam sozinhos não existissem mais. Isso é regra? 

Não é uma regra absoluta, embora certamente, os jogadores valorizem bastante a interação multiplayer.

Os jogos online vieram para ficar. A interação existe seja de forma mais casual, com poucos jogadores, como no caso do Trine, seja na forma de MMORPGs elaborados, como o Guild Wars. Ainda há espaço para games single player, mesmo entre games hardcore, tais como Dragon Age, Skyrim e Bioshock Infinite, todos títulos de sucesso. A plataforma Wii tem centenas de jogos de sucesso onde a interação é direta, e não online. O Single Player está muito presente nos games casuais, como o Candy Crush, Angry Birds e o Where's My Water.

Note que mesmo jogos single player não descartam muitas vezes algum tipo de integração casual, como compartilhar pontuação ou permitir que jogadores enviem vidas ou itens um para os outros, sem a necessidade que ambos os jogadores estejam conectados simultaneamente.

E sobre o mercado aqui no Brasil, como está? Dá pra se empregar sem problemas, ganhar bem? Ou, como de costume, vai depender da competência de cada um? E fora, você sabe como é a situação? 

Primeiramente, é importante lembrar novamente que a área de jogos não está restrita a games de entretenimento. No Brasil, temos grandes desenvolvedores na área educacional (a Positivo Informática e a FTD, por exemplo), e empresas na área de Advergames (como a Aquiris) e na área de treinamento e simulação (EBTS e Oniria). Na parte de games para entretenimento, o mercado é dominado por indies, tais como o Studio Mini Boss, Behold Studios, Dynamic Light Studios, etc. Muitos desenvolvedores optam por abrir pequenas empresas e se aventurar no mercado mobile. Para games maiores de destaque, podemos citar o Taikodom (MMO brasileiro) e o Toren que, apesar de desenvolvido por um Studio Indie chamado SwordTales, apresenta gráficos e narrativa impressionantes, tendo inclusive ganhado premios.

O governo melhorou muito a forma de encarar os jogos. Até poucos anos atrás, games e jogos de azar eram colocados no mesmo balaio. Hoje, os desenvolvedores de jogos já podem se beneficiar da Lei Rouanet e já tem linhas de financiamento interessantes e impostos não tão opressivos quando antigamente.

Em termos de salário, o desenvolvedor de jogos pode atingir patamares similares de outros programadores. Até porque, ele pode se empregar normalmente fora da indústria de games. Há áreas que usam tecnologias de games para outras coisas, como a área de imagens médicas, ou segurança.

O  maior problema mesmo é a demanda por esse tipo de profissional pois, como ocorre em todo mercado de nicho, a demanda por um programador especificamente para jogos é menor do que a do mercado web geral.

Obviamente, um bom salário só é obtido caso você seja um profissional competente e diferenciado. E não poderia ser diferente, seja em jogos, seja em qualquer outro mercado.


Qual a melhor parte dessa profissão? E a pior?

Para mim é, certamente, lidar com tecnologias diversificadas. Jogos frequentemente lidam com tecnologia de ponta. Por exemplo, na Positivo Informática, desenvolvi um game educacional que utilizava realidade aumentada. Você vai lidar com as últimas placas de vídeos ou dispositivos móveis. Games sempre impulsionaram a indústria de hardware, e trabalhar com eles é estar em contato com esses dispositivos.

A pior parte, é o fato do mercado ainda não ser muito desenvolvido no Brasil. Há muito trabalho para se fazer nessa área até termos uma indústria forte e consolidada.

Mais informações
Como ser programador de jogos

Quem quiser saber mais detalhes sobre o Vinícius, seus trabalhos e experiência: http://vinigodoy.wordpress.com/o-autor/

Jogos e artigos criados por ele:
http://www.pontov.com.br/site/index.php?option=com_content&view=article&id=133:meus-jogos&catid=55:artigos

Não deixe de seguir o Ponto V para receber notícias:
Twitter:@pontov
Facebook: http://www.facebook.com/PontoV

3 comentários:

Anônimo disse...

Olha, matéria sensacional, vocês estão de parabéns. Estou cursando Ciências da Computação na UFRRJ, e sonho em poder ingressar um dia nessa área, foi muito bom ler a entrevista de vocês pois ela me mostrou que estou no caminho certo, onde preciso me esforçar, e onde devo me aperfeiçoar. Além de me dar forças pra continuar em busca desse sonho. Obrigado!

- João

Anônimo disse...

Muito boa a entrevista. Seria bom também uma entrevista sobre jogos no GNU/Linux, dado o recente interesse da indústria de games na plataforma.

Source Matter Studio disse...

Também estamos em busca desse sonho criar nossos próprios games, estamos sempre conseguindo fazer algo novo, mas tem que se atualizar sempre.
quem quiser nos seguir https://www.facebook.com/sourcematter.st