Um programador de jogos é quem pega a visão do designer e faz funcionar no motor de jogo que usamos. Eu trabalho na equipe de programação de jogos móveis da Kwalee, então usamos principalmente Unity. Ex, se o designer quer que um dado role de forma específica, eu escrevo o script p/ lógica. Colaboramos c/ artistas p/ garantir que os jogos fiquem incríveis e tenham bom desempenho.
Neste blog, usarei meus cinco anos trabalhando na Kwalee para compartilhar insights e conselhos essenciais sobre ser um programador de jogos. Vou guiá-lo por algumas linguagens, ferramentas e princípios que usamos, meu conselho de carreira, além de dicas p/ iniciantes e avançados.
O Que Faz Um Programador De Jogos?
Escrevemos o código e ajudamos o jogo a se tornar realidade. Designers criam conceitos e artistas criam ativos, mas programadores criam a experiência funcional e jogável. Criamos e otimizamos o desempenho do jogo e resolvemos problemas identificados.
Garantimos que um jogo tenha ótimo desempenho. P/ isso, o código deve ser limpo e expansível, o que é difícil. Usamos padrões de codificação p/ manter qualidade consistente em todas as equipes - um documento pode conter padrões de nomenclatura, formatação etc. Às vezes, é preciso pensar fora da caixa p/ cumprir prazos.
Nossas responsabilidades incluem garantir que o jogo funcione bem no hardware do usuário final. Nos jogos móveis, evitamos que dispositivos antigos esquentem demais, otimizando o número de chamadas de desenho. Uma chamada de desenho é um comando do CPU para o GPU renderizar um objeto - diz ao GPU para desenhar elementos gráficos como texturas, malhas ou shaders. Minimizar essas chamadas é crucial, pois muitas podem causar problemas como quedas de frame. Há várias soluções, como agrupar objetos em uma única chamada ou reduzir o número de texturas únicas. Isso é especialmente importante p/ mobile, dado a variedade de dispositivos no mercado, com especificações técnicas diferentes.
Quais São As Principais Linguagens De Programação De Jogos?
Passamos a maior parte do tempo scriptando em várias linguagens - somos desenv de software de tipo diferente. Há muitas linguagens p/ escolher. Algumas parecem mais fáceis, mas após dominar uma, você pode aprender outras - o desafio é entrar no mercado.
Aqui está uma introdução às linguagens mais populares:
- C# - linguagem versátil e popular amplamente usada no desenvolvimento de jogos. É uma das mais fáceis de aprender p/ iniciantes. Um dos melhores recursos é a coleta de lixo automática - gerencia a alocação de memória p/ você - muito útil.
- C++ - em contraste, é uma linguagem não gerenciada, então você precisa alocar e desalocar memória manualmente, o que aumenta a complexidade e dificuldade. No entanto, permite maior velocidade, controle e desempenho.
- Java - como C#, Java tem gerenciamento de memória e coleta de lixo, facilitando p/ devs lidarem c/ memória sem se perderem nos detalhes. É amplamente usado em dev web e apps empresariais, e embora possa não ser a melhor escolha p/ dev de jogos, é uma opção sólida p/ criar apps escaláveis e eficientes.
- Swift - linguagem nativa da Apple p/ criar apps e jogos p/ iOS e macOS. Isso a torna menos útil p/ dev multiplataforma - já que visamos sempre publicar nossos jogos móveis tanto no Android quanto no iOS.
Como Se Tornar Um Programador De Jogos?
Há várias maneiras de se tornar um programador de jogos. Meu caminho é convencional - estudei Design e Programação de Jogos na Universidade de Staffordshire. Inicialmente, pensei em entrar na arte de jogos - sempre fui apaixonado por arte quando criança e gostei dos módulos de arte na universidade, mas descobri que gostava de criar gameplay. Prototipar me permitia ver o resultado rapidamente na minha frente.
No entanto, a beleza de programar jogos é que é acessível a todos, mesmo sem um caminho tradicional. Tive amigos na faculdade com 50+ anos - nunca é tarde p/ experimentar algo novo. Na Kwalee, contratamos alguém que aprendeu principalmente via YouTube e fez um jogo por diversão. Há muitas oportunidades p/ novos talentos hoje. Vemos talentos fantásticos surgirem e é um momento emocionante na indústria.
Uma pergunta que você pode querer fazer - a AI afetará a programação como carreira? Pode ser extremamente útil e está melhorando. Perfeito se precisar de explicações ou estiver preso em um problema. Pode ser usado p/ depurar bugs ou refatorar ("limpar") seu código colando no ChatGPT. No entanto, quando olhamos portfólios queremos ver o trabalho que você fez e tem orgulho, AI é bom usar, mas não como substituto de suas habilidades.
Como é Um Dia Típico Na Vida De Um Programador De Jogos?
Vou dar um exemplo baseado na minha vida. Sou Lead Programmer (chamo de meu emprego dos sonhos), então é uma ótima mistura de prática e gestão de outros programadores!
Um dia típico começa com um café, verifico bugs ou bloqueios p/ equipe de QA. Verifico c/ a equipe se precisam de algo p/ desbloquear o trabalho deles. Depois a música começa e a lista de tarefas é aberta. Compartilhamos vídeos de progresso via slack p/ feedback rápido, enquanto alternamos entre 2-3 projetos p/ apoiar membros da equipe. Também investimos muito em sistemas compartilhados p/ tornar nossa programação mais eficiente - tudo precisa ser mantido, atualizado e corrigido regularmente p/ manter tudo funcionando.
Dicas De Programação De Jogos Para Iniciantes
Se está começando e deseja ser um programador completo, eis minhas dicas p/ iniciantes!
- Há muito p/ aprender online, no YouTube e há muitos jogos exemplo que você não tem desculpa p/ não aprender! Os motores populares são gratuitos e muito divertidos!
- No extremo oposto, pode ter 30 anos, mas vale a pena ler o livro influente "Design Patterns: Elements of Reusable Object-Oriented Software" dos autores chamados Gang of Four, que introduziu algumas das bases dos padrões de jogos que usamos diariamente.
- Você pode ter suas ideias, mas comece simples p/ estar fundamentado nos conceitos básicos.
- Quando não está vinculado a um projeto comercial, pode escrever o quanto quiser, então divirta-se criando coisas insanas.
- Construir um portfólio é crucial (e foi assim que consegui meu emprego). Mas cuidado p/ não apenas enviar o mesmo trabalho padrão da faculdade, veremos muitos desses. Mesmo gastar um dia extra reskinando e adicionando recursos ajudará a se destacar.
- Criar seu próprio jogo real também é uma boa ideia - é muito barato colocar um jogo no Google Play, então lance algo que possa mostrar a recrutadores/publicadores/família/animais no seu celular. Você pode até ganhar alguns milhares de dólares por ano até conseguir um trabalho exclusivo em tempo integral, isso é um bônus! Ou pode tentá-lo a fazer seu próprio jogo completo e se associar a um publicador.
- Não aprenda apenas sobre programação - aprenda sobre arte, design, QA e outras disciplinas com as quais interagirá. Por ex, vale a pena entender métodos de QA porque pode cair na armadilha de assumir que algo funciona, mas precisa jogar como um usuário, não como alguém que escreveu o código e tem uma visão de como espera que "deva ser jogado". Seja destrutivo, tente coisas aleatórias que as pessoas possam fazer, apertando botões aleatórios e outros comportamentos bizarros.
Dicas Para Programadores Avançados
Aqui estão algumas dicas que me ajudaram a passar de júnior, a programador, a sênior, a líder.
- Sempre pode se beneficiar de mais aprendizado, e lembre-se que sem erros não podemos aprender!
- Se for realmente apaixonado por algo - pode se especializar. Ex, se gosta de brincar com shaders e pipelines de renderização, aprenda mais sobre como usar shaders gráficos p/ expandir sua capacidade de renderizar efeitos visuais complexos e usar pipelines de renderização p/ otimizar desempenho ou criar efeitos incríveis.
- Pode fazer algo muito legal, como um sistema complexo, enviar p/ uma loja de ativos p/ exibir se o contrato permitir e mostrar seu trabalho avançado. Pode desenvolver um nicho como um tipo particular de programador, como programador de gameplay, servidor, gráficos ou multiplayer.
- Alternativamente, pode seguir o caminho da gestão como eu, e mentorar pessoas. Minha tática p/ progredir na carreira foi absorver novas responsabilidades. Primeiro, comecei melhorando coisas menores, ex pequenas mudanças de fluxo de trabalho. Depois, tornei processos mais fáceis usando templates p/ economizar tempo ao criar novos projetos. Então tive um gosto por mentoria e gestão, o que me ajudou a ganhar mais confiança e agora participo de revisões entre pares, revisões de código, workshops e lidero equipes em projetos.
Seja trabalhando em equipe ou como gerente, é tão importante dar elogios quanto críticas construtivas. Ao revisar código, é bom animar as pessoas!
Quais São Os Princípios-chave Da Programação De Jogos?
Há tópicos chave que simplesmente têm que entrar em um blog sobre programação de jogos. Estes são alguns dos mais importantes que consideramos.
Controle de Versão
Assim como há pontos de salvamento nos jogos, há pontos de salvamento no desenvolvimento de projetos. Eles atuam como armazenamento geral do projeto e permitem que 3 ou 4 programadores trabalhem em um sistema simultaneamente, façam alterações e as enviem p/ o servidor. Permite-nos acompanhar essas mudanças e voltar facilmente se algo quebrar. Se dois devs trabalharem no mesmo arquivo, ele se tornará parte de uma mesclagem, se houver conflitos podemos resolvê-los manualmente ou escolher as alterações de um indivíduo p/ aplicar. Isso acontecerá muito ao usar Prefabs ou Cenas dentro do Unity.
Esses termos às vezes se sobrepõem, mas geralmente, controle de versão foca no código e controle de versão inclui todos os arquivos do projeto, ativos e documentação.
Quando começa a usar Controle de Versão pela primeira vez pode parecer assustador, pode parecer muito opressor e quando há conflitos pode se sentir inseguro sobre o que fazer. Mas a natureza do controle de versão ajuda a salvar momentos no tempo, então se estiver atualizando frequentemente e usando mensagens de commit detalhadas, é incrivelmente útil e seguro. Pode reverter p/ múltiplos pontos, ter múltiplos branches etc. Pense como a rede de segurança dos devs, para evitar uma versão de Toy Story 2 da Pixar - excluído acidentalmente e depois recuperado de um disco rígido na casa do Diretor Técnico, em vez disso está tudo salvo com segurança no servidor.
Programação Orientada a Objetos
Este é o tipo de programação que usamos principalmente na Kwalee. Usa objetos p/ representar coisas reais ou conceitos abstratos, e visa organizar a base de código usando princípios que espelham como vemos e interagimos com objetos no mundo real. Ajuda a manter sistemas complexos organizando o código em classes distintas que pode reutilizar, escalar e manter mais facilmente.
Claro, há debate se é bom ou não. Embora não seja o mais performático, funciona bem. Assim como as linguagens, cada uma tem seus prós e contras e deve aprender uma p/ começar e entender como linguagens e compiladores (tradutores de código humano p/ código de máquina) funcionam. Pode também considerar outros tipos, como programação funcional que trata mais como matemática, programação lógica que usa fatos e regras ou programação procedural que usa dados passo a passo.
Padrões de Programação
São coisas maravilhosamente úteis - soluções reutilizáveis que podem ajudar c/ problemas comuns que enfrentará no design de software. Dão um template p/ resolver um problema, então não precisa reinventar a roda cada vez e pode seguir soluções comprovadas.
Por exemplo, o padrão de design Singleton ajuda a garantir que haja apenas uma instância de uma classe, como um gerenciador de configurações de jogo, em todo o jogo, e oferece um ponto de acesso global. O código p/ esse padrão significa que apenas uma instância da classe SettingsManager existe, então não precisa recriar ou duplicar toda vez que precisar.
Há também o Padrão Factory que pode ajudar a criar objetos de forma mais organizada e flexível. Pode definir métodos p/ gerar tipos específicos de objetos, como personagens ou itens, com base em parâmetros de entrada, permitindo criar facilmente mais objetos de tipo semelhante sem começar do zero cada vez.
Espero que este blog tenha dado um gostinho da programação de jogos, seja novo na área ou um programador experiente! Se for uma pessoa trabalhadora e divertida, combinaria com nossa equipe, então saiba mais sobre carreiras na Kwalee. Caso contrário, pode aprender sobre nossos jogos móveis ou publicação e conhecer mais sobre o que lançamos como desenvolvedor e publicador.








