sábado, 5 de dezembro de 2009

Então Você Quer Fazer Jogos?

Se tem uma coisa que é bastante comum, é o sujeito fazer um vestibular e descobrir que o curso era algo completamente diferente do que ele esperava. Uma tirinha do Nerdson, que menciona especificamente "aprender a fazer jogos" e "fazer um curso de computação", exemplifica claramente o caso com grandes chances de acabar em frustração.

A maioria das pessoas que querem fazer um jogo são, na maioria esmagadora, jogadores que se encantam com as imagens na tela. Nada de anormal, a pessoa que vira pintor também se apaixona pela arte vendo trabalhos de terceiros. Só que ao contrário do pintor, que trabalha sozinho e tem uma técnica comum a maioria de seus trabalhos, o jogo é feito por muitas pessoas, com competências bastante diferentes. Cada uma dessas pessoas não produz um pedaço "tangível" do jogo. Ou seja, se você pegar o trabalho de 10% da equipe, você não sai com 10% do jogo. A soma do trabalho para se fazer um jogo é maior do que as partes individuais. Só que ninguém fazendo vestibular hoje sabe disso, nem sabe para qual dos 10% do jogo ele quer contribuir e que ele não pode contribuir em todas as etapas. Pior ainda se o indivíduo usou uma ferramenta do tipo maker, visual, que é uma ferramenta que não tem nada a ver com programação.

Para deixar mais claro, imagine a seguinte situação. Você está jogando pela primeira vez na sua vida uma partida de Super Mario Brothers (uma vez isso deve ter acontecido, então lembre-se da sensação). Em um dado momento o Mario "gigante" pula contra um bloco do cenário e quebra-o como se ele não fosse nada. Ao fazer isso, você vê que o Mario agora pode passar livremente por onde havia o bloco antes. Inclusive, inimigos podem fazê-lo. Um bloco que você podia até andar em cima, agora tinha virado um vazio no espaço. Você:

(a) Fica encantado, pensando nos novos caminho que você pode criar no cenário quebrando os blocos.

(b) Fica encantado, pensando na adequação da animação do bloco sendo quebrado e no efeito sonoro utilizado.

(c) Fica encantado, imaginando como aquela maquininha consegue dizer que ali tinha um bloco, mas que ele quebrou-se e agora o personagem pode passar por ali.

Se você se identificou mais com as duas primeiras respostas, pense duas vezes antes de fazer um curso de computação. Você pode fazer jogos, mas criando o enredo, fazendo a arte, o level design, etc. Para você, pode ser mais eficiente um curso design digital, que vai trabalhar exatamente com o que você se identifica e, melhor de tudo, vai permitir você fazer um jogo com o que você espera que seja fazer um jogo.

Você pode até argumentar "mas eu gosto de mexer com computador". Oras, usar um carro não torna uma pessoa habilidosa em mecânica. Saber usar as ferramentas do computador não é o mesmo que saber criá-las, que é o que um programador faz. Depois você pode dizer "mas eu sou craque em configurar o computador", ou melhor pro pessoal do Linux "eu sei recompilar o kernel". É o equivalente a dizer que você entende de mecânica porque instalou você mesmo os acessórios do seu carro. Configurar um sistema operacional não é o mesmo que escrever um, que é o que programadores (consideravelmente) avançados fazem.

A cartada final para quem responde as letras a e b é de que Shigero Miyamoto era programador. O Chris Crawford era programador. O Peter Molyneux era programador. Exceções não fazem a regra. Existem bons designers que também são bons programadores. Mas em geral, um bom designer é um péssimo programador, e vice-versa. Sem contar que na época do Atari e dos primórdios dos jogos de 8 bits (computador e videogame), só chegava perto de computador um programador, logo, só os poucos que tinham noção de design faziam jogos. Mas a medida que a coisa se profissionalizou, designers tomaram conta do campo da criação, enquanto programadores fincaram o pé no campo da realização.

Aí resta a pergunta indignada de quem respondeu a/b: e porque o sujeito que responde c pode fazer um curso de computação? Porque ele tem pensamento cartesiano. Para ele o mundo é visto como causa e efeito. Para ele, tudo o que ocorre naquele jogo tem uma razão de ser e interessa mais a ele como aquilo foi feito do que aquilo implica no jogo como um todo. É o sujeito que vai tornar possível na "maquininha" a visão do designer.

Um bom programador de jogos é o sujeito que gosta de matemática e conhece as principais técnicas computacionais, para aplicar isso em um jogo. É o sujeito que sabe a relação de um autômato finito e o personagem de um jogo. É quem sabe que um grafo pode servir para criar os caminhos dos personagens do PacMan a representar a hierarquia dos objetos de uma cena 3D. É quem escreve um pequeno compilador para ler do disco as configurações do seu personagem. É quem tem uma aula de álgebra linear e tem um click de como a placa de vídeo projeta os pontos de uma textura em um polígono na tela. É quem conhece a tese de Church-Turing para dizer que certa idéia no jogo não funciona, mas se limitar a certo contexto dá praticamente o mesmo resultado e torna o problema solúvel pelo computador. Enfim, é o cara que pensa em números antes de pensar em imagem na tela.

Claro, muitos que fazem um curso de computação podem argumentar que nenhum professor comente isso em sala. Bobagem. A área de computação é tão vasta que é utopia querer que um curso seja capaz de preparar um aluno especificamente para um setor sem que ele perca uma coisa importante: a habilidade de se adaptar a novas situações. Para quem duvida disso, basta ver anúncios de empresas estrangeiras de jogos no Gamasutra. Todas as posições iniciantes requerem sólida base de ciência da computação (ou de engenharia de computação). Profissionais que saem da universidade com a fundamentação para atuar com a computação como uma ferramenta para atingir um resultado.

Então, para que você não fique indignado como na tirinha do Nerdson, pense bem no tipo de sujeito que você é, porque ele vai dizer o curso que você deve fazer. Se você for o sujeito da resposta c e achar que a faculdade não está ajudando você a entender como o bloco do Mario desaparece, não se preocupe. Use o lado auto-ditata que a faculdade lhe dá e leia bastante, aí você vai agradecer que você aprendeu autômatos, álgebra linear e outras matérias que você não tinha a menor idéia para que serviam.

7 comentários:

Piovezan disse...

Pô PV, essa geração Y que está aí tem tanta frustração com que lidar e você ainda põe essa cereja na ponta. :P O que dizer das frustrações de terminar a faculdade e não virar um webdesigner rico, com seu iPhone no bolso, sem chefe, com freelas gordos, vivendo uma vida glamourosa, e sem hacks p/ IE6? Dá um desconto pros caras heheheh. :P

PV disse...

Cereja na ponta? Seria melhor uma cenoura ;). Isso não é coisa da geração atual. Quando comecei a fazer o curso em 93 (16 anos atrás) tinha um colega que sonhava em fazer ciência da computação para fazer coisas como a abertura do Fantástico da época. Enfim, a "magia e o encantamento" pelo que um computador faz sempre levaram muita gente para a ciência da computação. Tanto que é até hoje um curso que desiste muita gente, justamente por ver que o curso não era bem aquilo que queria.

xemptyx disse...

Muito bom o artigo PV!
É interessante começarmos a abrir os olhos das pessoas, ainda tem muita gente que vive na magia. Pretendo um dia escrever sobre as minhas experiências e frustrações no desenvolvimento de games e na computação em geral. Tenha certeza que o que penso em escrever é algo pavoroso sobre a área em geral, o que falta é a coragem de fazer isso.

PV disse...

Manda ver Danny. Pode soar pavoroso, mas o importante é ser verdadeiro e servir de alerta. Para os que querem exatamente aquilo, não soa como pavoroso, mas soa correto. Eu consegui o que eu queria na computação (apesar de não atuar com jogos como você ou o Bruno), mas sei que tem gente que não gostaria de trabalhar no que eu trabalho hoje, exatamente como tem gente que trabalha com coisas que eu sei que detestaria trabalhar, como direito, administração, etc.

Piovezan disse...

Opa, eu me incluo na turma que entrou na empolgação de programar jogos (ô bom e velho QBasic...) e apesar de não fazer isso, continuo muito motivado no mercado de programação, crescendo profissionalmente e me divertindo muito por trabalhar em algo que gosto (além da satisfação financeira).

Agora, curti o "Shiguero", de onde você tirou? :)

PV disse...

Opa, falha minha :). Valeu a correção Pio, já acertei (no bom sentido) o criador do Mario.

Anônimo disse...

Æ!!

Muito bom o seu post PV!
Se você for ver, eu acho que a grande maioria das pessoas que gostam realmente de jogar já pensaram em criar um jogo, mas a grande maioria deles pensam a e b. Algo do genero:

"Nossa, que legal esse novo jogo, olha só os gráficos"

Ta certo que todos gostam de ver bons gráficos em um jogo, mas acho que os games devem ser vistos muito alem disso, e esse é outro ponto para a pessoa perceber se ele gosta mesmo de programar ( e consequentemente vale a pena correr atrás de um curso de computação ao invés de design gráfico ) ou se prefere procurar outro estilo.

Seu post falou tudo.

Há braços