Programador de videogame (Video game programmer)

Article

February 8, 2023

Um programador de jogos é um engenheiro de software, programador ou cientista da computação que desenvolve principalmente bases de código para videogames ou software relacionado, como ferramentas de desenvolvimento de jogos.

A programação de jogos tem muitas disciplinas especializadas, todas sob o termo genérico de "programador de jogos".

Um programador de jogos não deve ser confundido com um designer de jogos, que trabalha com design de jogos.

História

Nos primeiros dias dos videogames (do início dos anos 1970 até meados dos anos 1980), um programador de jogos também assumiu o trabalho de designer e artista. Isso geralmente acontecia porque as habilidades dos primeiros computadores eram tão limitadas que era desnecessário ter pessoal especializado para cada função. Os conceitos dos jogos eram geralmente leves e os jogos eram apenas para serem jogados por alguns minutos de cada vez, mas o mais importante, o conteúdo da arte e as variações na jogabilidade eram restringidos pelo poder limitado dos computadores. Mais tarde, à medida que o hardware de arcade especializado e os sistemas domésticos se tornaram mais poderosos, os desenvolvedores de jogos puderam desenvolver histórias mais profundas e incluir recursos como gráficos de alta resolução e cores, física, inteligência artificial avançada e som digital.A tecnologia avançou tanto que os jogos contemporâneos geralmente apresentam gráficos 3D e vídeo em movimento completo usando recursos desenvolvidos por artistas gráficos profissionais. Hoje em dia, o termo pejorativo "arte do programador" passou a implicar o tipo de cores brilhantes e design em blocos que eram típicos dos primeiros videogames. O desejo de adicionar mais profundidade e recursos aos jogos exigia uma divisão de trabalho. Inicialmente, a produção de arte foi relegada a artistas em tempo integral. A próxima programação de jogos tornou-se uma disciplina separada do design de jogos. Agora, apenas alguns jogos, como o jogo de quebra-cabeça Bejeweled, são simples o suficiente para exigir apenas um programador em tempo integral. Apesar dessa divisão, no entanto, a maioria dos desenvolvedores de jogos (artistas, programadores e até produtores) tem algo a dizer no design final dos jogos contemporâneos.passou a implicar o tipo de cores brilhantes e design em blocos que eram típicos dos primeiros videogames. O desejo de adicionar mais profundidade e recursos aos jogos exigia uma divisão de trabalho. Inicialmente, a produção de arte foi relegada a artistas em tempo integral. A próxima programação de jogos tornou-se uma disciplina separada do design de jogos. Agora, apenas alguns jogos, como o jogo de quebra-cabeça Bejeweled, são simples o suficiente para exigir apenas um programador em tempo integral. Apesar dessa divisão, no entanto, a maioria dos desenvolvedores de jogos (artistas, programadores e até produtores) tem algo a dizer no design final dos jogos contemporâneos.passou a implicar o tipo de cores brilhantes e design em blocos que eram típicos dos primeiros videogames. O desejo de adicionar mais profundidade e recursos aos jogos exigia uma divisão de trabalho. Inicialmente, a produção de arte foi relegada a artistas em tempo integral. A próxima programação de jogos tornou-se uma disciplina separada do design de jogos. Agora, apenas alguns jogos, como o jogo de quebra-cabeça Bejeweled, são simples o suficiente para exigir apenas um programador em tempo integral. Apesar dessa divisão, no entanto, a maioria dos desenvolvedores de jogos (artistas, programadores e até produtores) tem algo a dizer no design final dos jogos contemporâneos.A próxima programação de jogos tornou-se uma disciplina separada do design de jogos. Agora, apenas alguns jogos, como o jogo de quebra-cabeça Bejeweled, são simples o suficiente para exigir apenas um programador em tempo integral. Apesar dessa divisão, no entanto, a maioria dos desenvolvedores de jogos (artistas, programadores e até produtores) tem algo a dizer no design final dos jogos contemporâneos.A próxima programação de jogos tornou-se uma disciplina separada do design de jogos. Agora, apenas alguns jogos, como o jogo de quebra-cabeça Bejeweled, são simples o suficiente para exigir apenas um programador em tempo integral. Apesar dessa divisão, no entanto, a maioria dos desenvolvedores de jogos (artistas, programadores e até produtores) tem algo a dizer no design final dos jogos contemporâneos.

Disciplinas

Um videogame contemporâneo pode incluir física avançada, inteligência artificial, gráficos 3D, som digitalizado, uma partitura musical original, estratégia complexa e pode usar vários dispositivos de entrada (como mouse, teclado, gamepads e joysticks) e pode ser jogável contra outras pessoas via Internet ou através de uma LAN.

Cada aspecto do jogo pode consumir todo o tempo de um programador e, em muitos casos, de vários programadores.

Alguns programadores podem se especializar em uma área de programação de jogos, mas muitos estão familiarizados com vários aspectos.

O número de programadores necessários para cada recurso depende um pouco das habilidades dos programadores, mas a maioria é ditada pelo tipo de jogo que está sendo desenvolvido.

Programador de motor de jogo

Os programadores de mecanismos de jogo criam o mecanismo básico do jogo, incluindo a física simulada e as disciplinas gráficas.

Cada vez mais, os videogames usam mecanismos de jogos existentes, sejam comerciais, de código aberto ou gratuitos.

Eles geralmente são personalizados para um jogo específico, e esses programadores lidam com essas modificações.

Programador de motor de física

O programador de física de um jogo é dedicado a desenvolver a física que um jogo irá empregar. Normalmente, um jogo simulará apenas alguns aspectos da física do mundo real. Por exemplo, um jogo espacial pode precisar de gravidade simulada, mas não precisaria simular a viscosidade da água. Como os ciclos de processamento são sempre valiosos, os programadores de física podem empregar "atalhos" que são computacionalmente baratos, mas parecem e agem "suficientemente bons" para o jogo em questão. Em outros casos, a física irrealista é empregada para permitir uma jogabilidade mais fácil ou para um efeito dramático. Às vezes, um subconjunto específico de situações é especificado e o resultado físico de tais situações é armazenado em algum tipo de registro e nunca é computado em tempo de execução.Alguns programadores de física podem até se aprofundar nas difíceis tarefas de cinemática inversa e outros movimentos atribuídos aos personagens do jogo, mas cada vez mais esses movimentos são atribuídos através de bibliotecas de captura de movimento para não sobrecarregar a CPU com cálculos complexos.

Programador de motores gráficos

Historicamente, este título geralmente pertencia a um programador que desenvolveu algoritmos de blitter especializados e otimizações inteligentes para gráficos 2D.

Hoje, no entanto, é aplicado quase exclusivamente a programadores especializados em desenvolver e modificar renderizadores gráficos 3D complexos.

Algumas habilidades gráficas 2D só recentemente se tornaram úteis novamente, no entanto, para o desenvolvimento de jogos para a nova geração de telefones celulares e consoles de jogos portáteis.

Um programador de gráficos 3D deve ter uma compreensão firme de conceitos matemáticos avançados, como matemática vetorial e matricial, quatérnios e álgebra linear.

Programadores habilidosos especializados nesta área de desenvolvimento de jogos podem exigir altos salários e geralmente são uma mercadoria escassa.

Suas habilidades podem ser usadas para videogames em qualquer plataforma.

Programador de inteligência artificial

Um programador de IA desenvolve a lógica do tempo para simular inteligência em inimigos e oponentes. Recentemente evoluiu para uma disciplina especializada, pois essas tarefas costumavam ser implementadas por programadores especializados em outras áreas. Um programador de IA pode programar sistemas de localização de caminhos, estratégia e tática inimiga. Este é um dos aspectos mais desafiadores da programação de jogos e sua sofisticação está se desenvolvendo rapidamente. Os jogos contemporâneos dedicam aproximadamente 10 a 20 por cento de sua equipe de programação à IA. Alguns jogos, como jogos de estratégia como Civilization III ou videogames de RPG como The Elder Scrolls IV: Oblivion, usam muito a IA, enquanto outros, como quebra-cabeças jogos, use-o com moderação ou não. Muitos desenvolvedores de jogos criaram linguagens inteiras que podem ser usadas para programar sua própria IA para jogos por meio de scripts.Essas linguagens são tipicamente menos técnicas do que a linguagem usada para implementar o jogo, e muitas vezes serão usadas pelo jogo ou designers de nível para implementar o mundo do jogo. Muitos estúdios também disponibilizam o script de seus jogos para os jogadores, e é frequentemente usado extensivamente por desenvolvedores de mods de terceiros. A tecnologia de IA usada na programação de jogos não deve ser confundida com programação e pesquisa acadêmica de IA. Embora ambas as áreas se emprestem umas às outras, geralmente são consideradas disciplinas distintas, embora haja exceções. Por exemplo, o jogo de 2001 da Lionhead Studios Black & White apresenta uma abordagem de IA exclusiva para uma criatura controlada pelo usuário que usa o aprendizado para modelar comportamentos durante o jogo. Nos últimos anos, mais esforços foram direcionados para intervir em campos promissores de pesquisa de IA e programação de IA de jogos.

Programador de som

Nem sempre uma disciplina separada, a programação de som tem sido um dos pilares da programação de jogos desde os dias de Pong. A maioria dos jogos usa áudio e muitos têm uma partitura musical completa. Os jogos de áudio de computador evitam completamente os gráficos e usam o som como seu principal mecanismo de feedback. Muitos jogos usam técnicas avançadas, como o som posicional 3D, tornando a programação de áudio uma questão não trivial. Com esses jogos, um ou dois programadores podem dedicar todo o seu tempo para construir e refinar o mecanismo de som do jogo, e os programadores de som podem ser treinados ou ter uma formação formal em processamento de sinais digitais. As ferramentas de script são frequentemente criadas ou mantidas por programadores de som para uso por designers de som. Essas ferramentas permitem que os designers associem sons a personagens, ações,objetos e eventos ao mesmo tempo em que atribui música ou sons atmosféricos para ambientes de jogo (níveis ou áreas) e configura variáveis ​​ambientais como reverberação.

Programador de jogabilidade

Embora todos os programadores acrescentem ao conteúdo e à experiência que um jogo oferece, um programador de jogabilidade se concentra mais na estratégia de um jogo, na implementação da mecânica e da lógica do jogo e na "sensação" de um jogo.

Isso geralmente não é uma disciplina separada, pois o que esse programador faz geralmente difere de jogo para jogo, e eles inevitavelmente estarão envolvidos com áreas mais especializadas do desenvolvimento do jogo, como gráficos ou som.

Este programador pode implementar tabelas de estratégia, ajustar o código de entrada ou ajustar outros fatores que alteram o jogo.

No entanto, muitos desses aspectos podem ser alterados por programadores especializados nessas áreas (por exemplo, tabelas de estratégia podem ser implementadas por programadores de IA).

Scripter

Nos primeiros videogames, os programadores de jogabilidade escreviam códigos para criar todo o conteúdo do jogo - se o jogador deveria atirar em um inimigo específico e uma tecla vermelha deveria aparecer junto com algum texto na tela, essa funcionalidade era tudo escrito como parte do programa principal em C ou linguagem assembly por um programador de jogabilidade. Com mais frequência, hoje em dia, o mecanismo principal do jogo geralmente é separado da programação do jogo. Isso tem várias vantagens de desenvolvimento. O motor do jogo lida com renderização gráfica, som, física e assim por diante, enquanto uma linguagem de script lida com coisas como eventos cinematográficos, comportamento do inimigo e objetivos do jogo. Grandes projetos de jogos podem ter uma equipe de roteiristas para implementar esses tipos de conteúdo de jogos. Scripters geralmente também são designers de jogos.Muitas vezes, é mais fácil encontrar um designer de jogos qualificado que possa aprender uma linguagem de script do que encontrar um designer de jogos qualificado que domine C++.

Programas de interface do usuário

Este programador é especializado em programação de interfaces de usuário (UIs) para jogos.

Embora alguns jogos tenham interfaces de usuário personalizadas, é mais provável que esse programador desenvolva uma biblioteca que possa ser usada em vários projetos.

A maioria das UIs parece 2D, embora as UIs contemporâneas geralmente usem a mesma tecnologia 3D que o resto do jogo, então algum conhecimento de matemática e sistemas 3D é útil para essa função.

Os sistemas avançados de interface do usuário podem permitir scripts e efeitos especiais, como transparência, animação ou efeitos de partículas para os controles.

Programador de entrada

A programação de entrada, embora geralmente não seja um cargo, ou mesmo uma posição em tempo integral em um projeto de jogo específico, ainda é uma tarefa importante.

Este programador escreve o código especificando como os dispositivos de entrada como teclado, mouse ou joystick afetam o jogo.

Essas rotinas são normalmente desenvolvidas no início da produção e são continuamente ajustadas durante o desenvolvimento.

Normalmente, um programador não precisa dedicar todo o seu tempo ao desenvolvimento desses sistemas.

Um jogo controlado por movimento em tempo real utilizando dispositivos como o Wii Remote ou Kinect pode precisar de um sistema de entrada muito complexo e de baixa latência, enquanto os requisitos HID de um jogo de estratégia baseado em turnos controlado por mouse como Heroes of Might and Magic são significativamente mais simples de implementar.

Programador de rede

Este programador escreve código que permite aos jogadores competir ou cooperar, conectados via LAN ou Internet (ou em casos mais raros, conectados diretamente via modem). Os programadores que implementam esses recursos do jogo podem passar todo o tempo nessa função, que geralmente é considerada uma das mais desafiadoras tecnicamente. A latência da rede, a compactação de pacotes e as conexões perdidas ou interrompidas são apenas algumas das preocupações que devem ser consideradas. Embora os recursos multijogador possam consumir todo o cronograma de produção e exigir que os outros sistemas de mecanismo sejam projetados com a rede em mente, os sistemas de rede geralmente são adiados até os últimos meses de desenvolvimento, adicionando dificuldades adicionais a essa função.Alguns títulos tiveram seus recursos online (muitas vezes considerados de menor prioridade do que a jogabilidade principal) cortados meses do lançamento devido a preocupações como falta de gerenciamento, planejamento de design ou escalabilidade. Virtua Fighter 5 para o PS3 é um exemplo notável dessa tendência.

Programador de ferramentas de jogo

O programador de ferramentas pode auxiliar no desenvolvimento de um jogo escrevendo ferramentas personalizadas para ele.

Ferramentas de desenvolvimento de jogos geralmente contêm recursos como compilação de scripts, importação ou conversão de recursos de arte e edição de níveis.

Enquanto algumas ferramentas usadas podem ser produtos COTS, como um IDE ou um editor gráfico, os programadores de ferramentas criam ferramentas com funções específicas adaptadas a um jogo específico que não estão disponíveis em produtos comerciais.

Por exemplo, um desenvolvedor de jogos de aventura pode precisar de um editor para ramificar diálogos de histórias, e um desenvolvedor de jogos esportivos pode usar um editor proprietário para gerenciar estatísticas de jogadores e equipes.

Essas ferramentas geralmente não estão disponíveis para os consumidores que compram o jogo.

Programador de portabilidade

A portabilidade de um jogo de uma plataforma para outra sempre foi uma atividade importante para os desenvolvedores de jogos. Alguns programadores se especializam nessa atividade, convertendo código de um sistema operacional para funcionar em outro. Às vezes, o programador é responsável por fazer o aplicativo funcionar não apenas em um sistema operacional, mas em vários dispositivos, como telefones celulares. Muitas vezes, no entanto, "portar" pode envolver reescrever todo o jogo do zero, pois linguagens, ferramentas ou hardware proprietários tornam a conversão do código-fonte um esforço infrutífero. Esse programador deve estar familiarizado com os sistemas operacionais e linguagens originais e de destino (por exemplo, converter um jogo originalmente escrito em C++ para Java), converter ativos, como arte e sons ou reescrever código para telefones com pouca memória.Esse programador também pode ter que evitar implementações de linguagem com bugs, algumas com pouca documentação, refatorar código, supervisionar várias ramificações de código, reescrever código para dimensionar uma ampla variedade de tamanhos de tela e implementar diretrizes especiais de operador. Eles também podem ter que corrigir bugs que não foram descobertos na versão original de um jogo.

Programador de tecnologia

É mais provável que o programador de tecnologia seja encontrado em grandes estúdios de desenvolvimento com departamentos específicos dedicados exclusivamente a P&D. Ao contrário de outros membros da equipe de programação, o programador de tecnologia geralmente não está vinculado a um projeto ou tipo de desenvolvimento específico por um longo período de tempo e normalmente se reportará diretamente a um CTO ou chefe de departamento, em vez de um produtor de jogos. Como o título do trabalho indica, essa posição é extremamente exigente do ponto de vista técnico e requer conhecimento profundo do hardware da plataforma de destino. As tarefas abrangem uma ampla gama de assuntos, incluindo a implementação prática de algoritmos descritos em trabalhos de pesquisa, otimização de montagem de nível muito baixo e a capacidade de resolver problemas desafiadores relacionados a requisitos de memória e problemas de cache durante os últimos estágios de um projeto.Há uma quantidade considerável de cruzamentos entre esta posição e algumas das outras, particularmente o programador gráfico.

Generalista

Em equipes menores, um ou mais programadores serão frequentemente descritos como 'Generalistas' que assumirão as várias outras funções conforme necessário.

Os generalistas geralmente estão envolvidos na tarefa de rastrear bugs e determinar qual conhecimento de subsistema é necessário para corrigi-los.

Programador líder de jogos

O programador líder é responsável por toda a programação do jogo. É seu trabalho garantir que os vários submódulos do jogo estejam sendo implementados corretamente e acompanhar o desenvolvimento do ponto de vista da programação. Uma pessoa nessa função geralmente faz a transição de outros aspectos da programação de jogos para essa função após vários anos de experiência. Apesar do título, essa pessoa geralmente tem menos tempo para escrever código do que outros programadores no projeto, pois são obrigados a participar de reuniões e interagir com o cliente ou outros leads no jogo. No entanto, espera-se que o programador líder ainda programe pelo menos parte do tempo e também tenha conhecimento na maioria das áreas técnicas do jogo. Muitas vezes há uma base comum considerável no papel de diretor técnico e programador líder,de tal forma que os empregos são muitas vezes cobertos por uma pessoa.

Plataformas

Os programadores de jogos podem se especializar em uma plataforma ou outra, como Wii U ou Windows.

Assim, além de se especializar em uma disciplina de programação de jogos, um programador também pode se especializar em desenvolvimento em uma determinada plataforma.

Portanto, o título de um programador de jogos pode ser "PlayStation 3 3D Graphics Programmer".

Algumas disciplinas, como a IA, são transferíveis para várias plataformas e não precisam ser adaptadas a um sistema ou outro.

Além disso, princípios gerais de desenvolvimento de jogos, como conceitos de programação de gráficos 3D, engenharia de som e design de interface de usuário, são transferíveis entre plataformas.

Educação

Notavelmente, existem muitos programadores de jogos sem educação formal no assunto, tendo começado como hobby e fazendo muita programação por conta própria, por diversão, e eventualmente tendo sucesso por causa de sua aptidão e experiência doméstica.

No entanto, a maioria das solicitações de emprego para programadores de jogos especifica um diploma de bacharel (em matemática, física, ciência da computação, "ou experiência equivalente").

Cada vez mais, as universidades estão começando a oferecer cursos e diplomas em programação de jogos.

Quaisquer desses graus têm uma sobreposição considerável com os graus de ciência da computação e engenharia de software.

Salário

Os salários dos programadores de jogos variam de empresa para empresa e de país para país. Em geral, no entanto, o pagamento pela programação de jogos é geralmente o mesmo para empregos comparáveis ​​no setor empresarial. Isso ocorre apesar do fato de que a programação de jogos é uma das mais difíceis de qualquer tipo e geralmente requer mais horas do que a programação convencional. Os resultados de uma pesquisa de 2010 nos Estados Unidos indicam que o salário médio de um programador de jogos é de US$ 95.300 por ano. Os programadores menos experientes, com menos de 3 anos de experiência, ganham um salário médio anual de mais de $ 72.000. Os programadores mais experientes, com mais de 6 anos de experiência, ganham um salário médio anual de mais de US$ 124.000. Geralmente, os programadores líderes são os mais bem remunerados, embora alguns programadores gráficos 3D possam desafiar ou superar seus salários.De acordo com a mesma pesquisa acima, os programadores líderes ganham em média US$ 127.900 por ano.

Seguro desemprego

Embora as vendas de videogames rivalizem com outras formas de entretenimento, como filmes, a indústria de videogames é extremamente volátil. Os programadores de jogos não estão isolados dessa instabilidade, pois seus empregadores enfrentam dificuldades financeiras. Desenvolvedores terceirizados, o tipo mais comum de desenvolvedores de videogames, dependem de um fluxo constante de fundos da editora de videogames. Se um marco ou prazo não for cumprido (ou por vários outros motivos, como o cancelamento do jogo), os fundos podem ficar curtos e o desenvolvedor pode ser forçado a dispensar funcionários ou declarar falência e sair do negócio. Os programadores de jogos que trabalham para grandes editoras estão um pouco isolados dessas circunstâncias, mas mesmo as grandes editoras de jogos podem falir (como quando a Hasbro Interactive foi vendida para a Infogrames e vários projetos foram cancelados;ou quando a The 3DO Company faliu em 2003 e encerrou todas as operações). Os currículos de alguns programadores de jogos consistem em períodos curtos que não duram mais de um ano, pois são forçados a pular de um estúdio condenado para outro. É por isso que alguns preferem consultar e, portanto, ficam um pouco protegidos dos efeitos dos destinos de estúdios individuais.

Idiomas e ferramentas

A maioria dos jogos de computador e videogames comerciais são escritos principalmente em C++, C e alguma linguagem assembly. Muitos jogos, especialmente aqueles com mecânicas de jogo interativas complexas, sobrecarregam o hardware até o limite. Como tal, é necessário um código altamente otimizado para que esses jogos sejam executados em uma taxa de quadros aceitável. Por causa disso, o código compilado é normalmente usado para componentes críticos de desempenho, como renderização visual e cálculos físicos. Quase todos os jogos de PC também usam DirectX, APIs OpenGL ou alguma biblioteca de wrapper para fazer interface com dispositivos de hardware. Várias linguagens de script, como Ruby, Lua e Python, também são usadas para a geração de conteúdo como jogabilidade e principalmente IA.Os scripts são geralmente analisados ​​em tempo de carregamento (quando o jogo ou nível é carregado na memória principal) e então executados em tempo de execução (através de ramificações lógicas ou outros mecanismos). Eles geralmente não são executados por um interpretador, o que resultaria em uma execução muito mais lenta. Os scripts tendem a ser usados ​​seletivamente, geralmente para IA e lógica de jogo de alto nível. Alguns jogos são projetados com alta dependência de scripts e alguns scripts são compilados em formato binário antes da execução do jogo. Na fase de otimização do desenvolvimento, algumas funções de script geralmente são reescritas em uma linguagem compilada. Java é usado para muitos jogos baseados em navegadores da Web porque é multiplataforma, geralmente não requer instalação pelo usuário e apresenta menos riscos de segurança, em comparação com um programa executável baixado. Java também é uma linguagem popular para jogos baseados em telefones celulares. Adobe Flash,que usa a linguagem ActionScript e JavaScript são ferramentas de desenvolvimento populares para jogos baseados em navegador. À medida que os jogos crescem em tamanho e complexidade, o middleware está se tornando cada vez mais popular na indústria. O middleware fornece funcionalidade de nível superior e maior e conjuntos de recursos maiores do que as APIs de nível inferior padrão, como DirectX e OpenGL, como animação esquelética. Além de fornecer tecnologias mais complexas, alguns middlewares também fazem tentativas razoáveis ​​de serem independentes de plataforma, tornando as conversões comuns de, por exemplo, Microsoft Windows para PS4, muito mais fáceis. Essencialmente, o middleware visa eliminar ao máximo a redundância no ciclo de desenvolvimento (por exemplo, escrever novos sistemas de animação para cada jogo que um estúdio produz), permitindo que os programadores se concentrem em novos conteúdos.Outras ferramentas também são essenciais para desenvolvedores de jogos: pacotes 2D e 3D (por exemplo, Blender, GIMP, Photoshop, Maya ou 3D Studio Max) permitem que os programadores visualizem e modifiquem ativos gerados por artistas ou outro pessoal de produção. Os sistemas de controle de origem mantêm o código-fonte seguro e otimizam a mesclagem. IDEs com depuradores (como o Visual Studio) tornam a escrita de código e o rastreamento de bugs uma experiência menos dolorosa.

Veja também

Lista de pessoas da indústria de videogames#Programming Code Monkeys, um programa animado sobre programadores de jogos Programador Design de jogos Ferramenta de desenvolvimento de jogos Programação de jogos#Ferramentas

Notas

Referências

Bates, Bob (2004).

Design de jogos (2ª ed.).

Tecnologia do Curso Thomson.

ISBN 1-59200-493-8.

Moore, Michael E.;

Novak, Jeannie (2010).

Guia de carreira da indústria de jogos.

Delmar: Cengage Learning.

ISBN 978-1-4283-7647-2.

Evans, Ricardo (2002).

Rabin, Steve (ed.).

Sabedoria de programação de jogos de IA.

Carlos Rio Mídia.

ISBN 1-58450-077-8.

links externos

Conselho do veterano da indústria de jogos Tom Sloper sobre programação de jogos The Programmer at Eurocom