Então, você quer entrar no desenvolvimento de jogos. Ou, mais específica e simplesmente: você gostaria de se tornar um desenvolvedor de jogos trabalhando no lado técnico das coisas. Bem, qualquer um teria dúvidas sobre como fazer isso! Por exemplo: Onde começar? Como melhorar suas habilidades? Qual motor de jogo é melhor dominar primeiro? Qual linguagem de programação escolher? Há toneladas de informações sobre esses tópicos por aí – tanto que isso pode facilmente sobrecarregar seu cérebro, dificultando a tomada de decisões que valham a pena. Meu nome é Andrey Mikheev e sou desenvolvedor backend sênior da Pixonic, MY.GAMES. Estou na indústria de jogos há 20 anos. Tentei fazer jogos pela primeira vez nos anos 90 no então popular ZX Spectrum. Neste artigo, abordarei as opções que você tem ao mudar para o desenvolvimento de jogos e explicarei como essas opções diferem. Algumas coisas primeiro Nesta postagem, partiremos do pressuposto de que o leitor está apenas começando sua jornada no setor. É impossível aprender tudo ao mesmo tempo e por isso você terá que priorizar e escolher como realizar seus estudos. Claro, cada pessoa tem uma experiência diferente; há mais de um caminho para se desenvolver nesta profissão. A beleza do desenvolvimento de jogos (e de muitas outras áreas de TI) é que existem muitas áreas onde você pode aplicar suas habilidades: você pode se tornar um produtor, comerciante, artista, designer, roteirista, modelador, analista, desenvolvedor do lado do cliente, desenvolvedor principal, desenvolvedor de meta-serviços, desenvolvedor de renderização e assim por diante. Na verdade, no mundo dos jogos indie, você praticamente tem que combinar quase todas as habilidades mencionadas acima – mas isso é assunto para outro dia. Ao pensar em iniciar uma carreira no desenvolvimento de jogos, as pessoas muitas vezes se concentram nos aspectos tecnológicos: o motor a dominar, a a escolher primeiro ou as habilidades específicas nas quais trabalhar. linguagem de programação ; um mecânico não é a chave inglesa. Hoje é uma chave de fenda cruzada, amanhã é elétrica, depois de amanhã é uma ferramenta pneumática. O objetivo não é aprender a usar uma chave de fenda específica, mas entender a estrutura dos carros, como montá-los e consertá-los. Mas tenha em mente que a tecnologia é apenas uma ferramenta; você não precisa construir toda a sua identidade como desenvolvedor em torno de uma coisa específica Substitua essas chaves por motores de jogos, linguagens de codificação e outras coisas – e a questão não mudará. Estas são apenas ferramentas para você utilizar Alguns conselhos sobre habilidades gerais para desenvolvedores de jogos Então, na minha opinião, as competências gerais são o mais importante nesta fase. Porque você não está encarregado da tarefa de criar um “jogo”, mas de . escrever um bom código O objetivo não é fazer um jogo de sucesso de bilhões de dólares, mas sim crescer como desenvolvedor. Fazer um jogo de um bilhão de dólares não tem tanto a ver com desenvolvimento, mas com ideias e marketing; o código é uma coisa secundária a isso. É claro que esses dois objetivos não se contradizem, mas eu não definiria um sucesso impressionante como seu primeiro objetivo – faça isso e você poderá rapidamente ficar desapontado com todo o empreendimento em geral. Voltando ao tópico do código, um foco geral no código é importante porque código de alta qualidade sempre terá grande demanda em qualquer setor, e isso tem muitas aplicações: jogos, fintech, algoritmos de controle de robôs, lançamento de foguetes ao espaço. Alguns podem dizer que código de alta qualidade significa grandes atrasos e que o tempo é fundamental neste negócio. Não acredite. Se você conseguir escrever um bom código, não haverá tempo de inatividade. Outra coisa é se o seu código for desleixado, para criar um produto de alta qualidade você terá que corrigir seus hábitos, e isso exigirá muito tempo e esforço. Outro ponto muito importante diz respeito ao tempo: . Afinal, um jogo, e principalmente um multiplayer, é um produto de longa duração, e a qualidade do código é de grande importância neste caso. o tempo gasto na criação de um bom código é sempre compensado pela redução do tempo gasto em sua manutenção , conseguir adaptá-lo, sem a necessidade de reescrevê-lo. , se de repente decidir mudar alguma coisa em alguns anos. Como um exemplo aproximado: é melhor passar alguns meses escrevendo código de alta qualidade uma vez e ser capaz de fazer algumas alterações rapidamente em alguns dias, do que escrever algo incompreensível em uma semana, então precisará de um mês para cada menor editar no futuro. Outros especialistas deverão conseguir entender facilmente o seu código E você também deve ser capaz de lê-lo facilmente Resumindo, se você deseja ser um bom especialista técnico na área de desenvolvimento de jogos. código limpo, arquitetura limpa, ECS, SOLID, KISS, OOP, algoritmos e estruturas de dados — todos esses tópicos devem receber atenção especial Sim, os algoritmos podem causar dores de cabeça para algumas pessoas. Mas há muito mais desses “algoritmos e estruturas” no desenvolvimento de jogos do que em projetos web típicos, e se você dominá-los, eles simplificarão muito a sua vida. Uma compreensão mais profunda destes conceitos só virá, naturalmente, com a experiência. Com o tempo, você terá participado de vários projetos, começará a entender como outros especialistas trabalham e verá o que o incomoda pessoalmente ao trabalhar com código de jogo. . Estude projetos de código aberto, ouça palestras de especialistas do setor e lembre-se de que existem muitas fontes de informação disponíveis atualmente. Mas o que você não deve fazer é mergulhar no suco do seu projeto, principalmente se você não tiver um bom mentor em sua equipe. Nenhum desenvolvedor competente pode trabalhar no vácuo. O principal aqui é não exagerar e começar a usar códigos de outros projetos sem entender o que você está fazendo e por quê. Aprender com as experiências de outras pessoas é fundamental E mais um ponto importante: . Além disso, durante o período de formação, isto é extremamente importante. Você verá como o uso de boas práticas permitirá melhorar seu código e torná-lo mais sustentável. reescrever código é normal, não tenha medo de fazer isso O processo de melhorar suas habilidades gerais de programação não é rápido. Pode levar meses – ou até anos. Então esteja preparado para isso, porque você simplesmente não pode viver sem isso. Se você tiver a oportunidade de . Você terá a oportunidade de aprender vários aspectos do desenvolvimento de jogos e obter respostas de mentores às suas perguntas. Mas sejamos honestos, esta não é a forma mais comum. conseguir um estágio em um bom estúdio, isso irá acelerar muito o seu crescimento Procurar do zero o primeiro emprego na indústria de jogos é outro desafio. O famoso paradoxo: para conseguir um emprego é preciso experiência, e para conseguir experiência é preciso um emprego. Neste caso, . Vamos descartar imediatamente a ideia de cursos pagos: eles não são adequados para todos por vários motivos. Felizmente, existem dezenas e centenas de guias na Internet para todos os aspectos da codificação de jogos. vale a pena considerar o auto-estudo Escolhendo um motor de jogo Depois de ter respondido a essas perguntas básicas e entendido o que e como você aprenderá, é hora de decidir com qual mecanismo de jogo você trabalhará, e isso também determinará a linguagem de programação que você terá que aprender. Este tópico é muito amplo para ser abordado em um artigo. Além disso, como desenvolvedores, não estamos tão interessados em motores, mas sim em linguagens de programação. Se você quiser se aprofundar no assunto, aconselho que leia isto sobre os motores de jogo mais populares no Steam do Game Developer. artigo útil Se você não tem nenhuma formação teórica ou prática, algum motor para jogos web será suficiente: algo como o PlayCanvas ou seus análogos. No início de sua jornada, você não precisa escolher imediatamente algum motor grande e sério como Unreal Engine ou Unity. . É mais simples que o Unity e mais focado em jogos 2D. Utiliza uma linguagem muito simples, Lua, que é fácil de aprender. O mecanismo Defold também pode ser uma boa opção para começar Priorizando linguagens de programação Para economizar um pouco do seu tempo, simplesmente descreverei alguns aspectos dos idiomas e os organizarei em ordem de prioridade, conforme eu os aprenderia; esta ordem não fala da qualidade da linguagem ou de seus problemas. Em vez disso, é a minha avaliação do equilíbrio entre complexidade, relevância e capacidades das linguagens. Por exemplo, Lua é uma linguagem muito interessante, fácil de aprender, você pode escrever um jogo com ela usando o motor Defold. Mas você não pode escolhê-lo como idioma principal para sua experiência de desenvolvimento. É uma linguagem auxiliar usada em conjunto com linguagens mais populares como ou C#. C++ Claro, esta não é uma lista completa de todas as linguagens de programação. Existem mais de uma dúzia deles. Mas é isso que quero apontar para você. Então, aqui está o que eu aprenderia e em que ordem: : Sim, não se surpreenda. Se você não é um falante nativo, estudar terá uma grande recompensa. A maior parte das informações sobre programação está disponível em inglês: guias, cursos, documentação, fóruns; em geral, tudo que você precisa para estudar. Em teoria, você poderia procurar comunidades locais de programadores em seu idioma nativo e pedir ajuda lá, mas se fizer isso em um recurso em inglês, o problema será resolvido cem vezes mais rápido. Português É provavelmente a linguagem mais importante para um desenvolvedor. Se você planeja trabalhar seriamente e por muito tempo em desenvolvimento, então é melhor começar com linguagens populares de uso geral. C# é um deles. É também uma linguagem adequada para o seu plano de backup: mesmo que de repente você fique entediado com o desenvolvimento de jogos, você pode escrever uma variedade de softwares em C#, como fintech, aplicativos de negócios e assim por diante. C#: C# permitirá que você se familiarize com conceitos de programação padrão e implemente uma variedade de abordagens de desenvolvimento. Você aprenderá tudo sobre abreviações aparentemente assustadoras como OOP, CQRS, DDD, ECS. É claro que a maioria dessas abordagens pode ser implementada em qualquer linguagem de programação. Mas existem nuances. Por exemplo, nem todas as línguas possuem o conceito de “classe” e, consequentemente, os conceitos são implementados de forma diferente. Isso pode surpreender um desenvolvedor novato e criar vários problemas desnecessários, inclusive motivacionais. em comparação com, por exemplo, JavaScript. Portanto, na minha opinião, C# é a melhor (mas não mais fácil) escolha para iniciar uma carreira em desenvolvimento : Assim como o C#, é uma linguagem de uso geral. Mas no desenvolvimento de jogos, é relevante principalmente em termos de servidores. Existem, é claro, mecanismos de jogos Java (por exemplo, LibGDX), mas eles não são tão populares quanto algo como o Unity para desenvolvimento de jogos. Java Java Novamente, essas linguagens gerais são boas para uma situação em que você já conhece Java, mas trabalha, por exemplo, em Fintech — e de repente decide fazer um jogo. Você não gostaria de aprender um novo idioma do zero apenas para experimentar, certo? : Como disse Jeff Atwood, um dos fundadores do Stack Overflow: “Qualquer coisa que possa ser escrita em JavaScript será escrita em ” JavaScript JavaScript. É triste, mas é verdade que cada vez mais projetos de jogos estão sendo escritos nesta linguagem. O fato é que JavaScript é muito simples, principalmente para iniciantes. E se você trabalha em algum tipo de mecanismo da web, provavelmente será informado sobre onde inserir suas linhas de código. É muito diferente de outras linguagens de uso geral e isso pode enganar os desenvolvedores. Existe essa ideia de que . Há alguma verdade nisso, então no início é melhor aprender técnicas e abordagens mais gerais. Mas se você decidir começar com jogos na web, provavelmente não conseguirá sobreviver sem JavaScript. Ele reina no mundo da web. Essa linguagem é muito semelhante ao C# e facilitará a mudança para outra linguagem no futuro. Apesar de sua simplicidade, não acho que JavaScript seja um bom lugar para começar sua jornada no desenvolvimento de jogos. um desenvolvedor pensa em termos dos conceitos de sua primeira linguagem de programação Nesse caso, aconselho você a prestar atenção ao TypeScript. Por que eu os juntei? Estas são linguagens de script, geralmente usadas para criar scripts de partes individuais da lógica do jogo. (Sim, existem mecanismos como o Defold, onde essas são as principais linguagens de desenvolvimento. Mas essas são exceções à regra.) Por exemplo, é uma ferramenta muito popular para scripts in-line e é usada no editor Blender 3D. Lua/Python: Python Conhecer e saber usar Lua e Python é útil, mas como mencionei anteriormente, são linguagens auxiliares e eu as guardaria para mais tarde. A menos, é claro, que você tenha escolhido o mecanismo Defold para seu primeiro projeto, então Lua é indispensável. : Alguns de vocês podem se surpreender com o fato de C++ estar no final da lista. E não é porque a língua seja ruim, mas o seu caminho é o mais difícil. C++ Esta é a linguagem mais poderosa das apresentadas, mas também a mais complicada, com características próprias. C++ é usado para fazer jogos AAA e permite aproveitar ao máximo o hardware. Mas eu não sugeriria isso a um desenvolvedor iniciante – as chances são altas de que você fique desapontado com o setor. Mas se você realmente sabe que C++ é o que você realmente precisa — e você não tem medo das dificuldades envolvidas e tem um plano de ação claro — então vá em frente! Escolher uma linguagem de programação é importante, mas não se esqueça que antes de mais nada você deve aprimorar seu inglês técnico — isso o ajudará a navegar em guias, cursos e outras fontes de informações valiosas. Único jogador ou multijogador? Na minha opinião, esta é a próxima decisão que um desenvolvedor de jogos deve tomar. (Não é algo como a escolha entre desenvolver jogos para celular, AAA ou jogos para web.) A razão é simples: logo no início de sua jornada, você quase certamente não terá a opção de fazer grandes jogos. Pense nisso, como você poderia trabalhar em algum tipo de Escape from Tarkov ou Call of Duty sem nenhuma experiência? Seu primeiro jogo não deve ser grande e complexo, caso contrário você não conseguirá terminá-lo. Você simplesmente se esgotará e abandonará o desenvolvimento de jogos. É bom entender exatamente o que você quer fazer. Para um desenvolvedor experiente, isso não é tão importante, mas no início, a resposta a esta pergunta irá estreitar os caminhos de um possível estudo. Em termos de single-player vs. multi-player: do ponto de vista do desenvolvimento do cliente (ou seja, a parte do jogo com a qual o jogador interage diretamente), a diferença para um desenvolvedor pode não ser tão grande. Mas o modo multijogador requer um back-end e todos os problemas associados a ele, e este também é um tópico separado e vasto. Um jogo para um jogador é mais fácil nesse aspecto porque você não precisa se preocupar em sincronizar o estado do mundo para outros jogadores, separar a lógica do jogo ou outros problemas semelhantes. Em termos de mecânica de jogo, um jogo single player também pode ser muito mais simples do que multiplayer — e quanto mais simples o projeto, mais fácil para você terminá-lo. E terminar o que você começou é uma habilidade crítica em qualquer negócio! . Mas se você realmente deseja criar um jogo multijogador simples para jogar com amigos, por que não? Você só precisa entender que isso exigirá mais tempo para obter sua primeira versão funcional. Porém, o impulso interno de uma pessoa é algo muito complexo — talvez criar jogos online o motive muito mais do que jogos single-player, aumentando a chance de finalizar seu primeiro projeto. Resumindo, aconselho começar com jogos para um jogador — será mais fácil Seu primeiro projeto Bem, aqui chegamos à questão principal – por onde exatamente você começa se quiser fazer jogos? Etapa 1: selecione suas ferramentas Digamos que já entendemos aproximadamente o tipo de jogo que queremos fazer. Sabemos que tipo de linguagens de programação são usadas principalmente e em quais motores elas são usadas. Esta é a fase em que este idioma e motor devem ser selecionados. (Eu recomendaria começar com C#. Você precisará de C++ para criar hits AAA, mas vamos guardar isso para mais tarde, quando ganharmos experiência.) Portanto, . Estes são muito procurados e são uma excelente escolha. nossa combinação de mecanismo de linguagem pode ser C# + Unity Etapa 2: aprenda o idioma Este é um ponto importante: . Sem um idioma, você não conseguirá aprender o mecanismo de forma eficaz; você simplesmente não entenderá nada nos exemplos e na documentação e só ficará confuso. não comece com um motor, selecione primeiro o idioma Idealmente, você não começaria a aprender um mecanismo de jogo antes de dominar a linguagem e poder escrever programas simples com segurança. Para melhorar suas habilidades de programação, confira projetos como onde você pode praticar a escrita de vários algoritmos na forma de pequenos jogos. Eles não são tão complicados quanto e as tarefas lá são mais interessantes para iniciantes. Além disso, possui uma comunidade própria e, como disse antes, a comunidade é muito importante para qualquer desenvolvedor competente. Jogo de codificação o LeetCode, Etapa 3: o motor Depois de dominar um pouco o idioma, você pode finalmente começar a estudar o motor. Em 2023, já há muita informação sobre esse assunto: a internet está cheia de recursos; dezenas de canais do YouTube para qualquer coisa que você escolher. Além disso, como eu disse, o Unity é muito popular, então não falta material. Você pode encontrar uma solução em vídeo para qualquer problema dos criadores do mecanismo (disponível diretamente no Unity Hub, que você instalará no início), , ou na rede. Você também pode ingressar em uma comunidade respeitada do Discord, onde as pessoas compartilham suas histórias de sucesso e ajudam umas às outras. Existem dezenas; se você precisar de algo testado pelo tempo, tente, por exemplo, . em documentação detalhada Braquetes Os próximos passos da jornada Esses foram os três passos básicos para começar e, a partir daí, seu caminho pode continuar. Deixe-me dar um esboço aproximado. Depois de aprender um pouco da linguagem e do motor escolhido, . Qualquer jogo, até mesmo jogo da velha. Faça tudo como quiser – sem limites. Você deve escrever o código sozinho. (Evite copiar e colar do , que ainda assim é um recurso muito útil). O principal critério é que o jogo funcione. tente criar um jogo simples Stack Overflow A seguir, . Por exemplo, se você estiver criando um jogo de plataforma, tente criar um recurso que altere a gravidade do nível ao pressionar um botão; ou a capacidade de se teletransportar de uma parte do nível para outra. crie alguns novos recursos para o jogo e tente adicioná-los Tente observar como foi fácil/difícil adicionar algo novo ao seu rascunho de trabalho. a quantidade necessária para alterar a estrutura do código e assim por diante. Depois disso, estude as melhores práticas, veja como outros desenvolvedores sugerem organizar o projeto e o código (OOP, SOLID, KISS), e reescreva o jogo, levando em consideração seus novos conhecimentos. Em seguida, . Leve em consideração como o código aprimorado torna mais fácil ou mais difícil adicionar um novo recurso e quantos bugs você pode encontrar. crie um novo recurso novamente e crie-o usando esse novo conhecimento Gradualmente, através de várias iterações, adicione complexidade ao projeto e reescreva-o com as lições aprendidas. Supondo que você não economize, verá como as decisões tomadas interferem ou ajudam a implementar novos recursos. Um dos principais critérios para a qualidade do código é a facilidade de fazer alterações no projeto. Infelizmente, não existem leis claras para isso; tudo vem com a experiência. . Por exemplo, você poderia começar fazendo um “carro” rudimentar composto de alguns cubos colocados em alguma superfície – e então, gradualmente, adicionar outras mecânicas à mistura. Se você não quiser criar jogos simples, você pode começar codificando mecânicas individuais Depois disso, você pode criar um jogo mais complexo – e novamente passar por várias iterações para melhorar o projeto. Se obtiver um resultado interessante, você pode eventualmente tentar lançar este jogo nas lojas. Lançando seu primeiro jogo Você pode tentar liberar via , se você ainda não quiser se envolver com grandes plataformas. Lá, você pode ganhar experiência em outras áreas relevantes do desenvolvimento de jogos e, o mais importante, coletar feedback de outras pessoas. Pode nem sempre ser construtivo, especialmente se for para projetos simples para iniciantes. Mas um pequeno feedback o ajudará a crescer e a se tornar um programador melhor. Coceira.io . Embora este formato pareça ter perdido popularidade, dado que os usuários agora jogam principalmente em dispositivos móveis, PCs ou consoles, os jogos da web ainda têm um público suficiente, então você pode tentar lançar seu projeto de estreia como um só. Isso também é muito mais fácil do que lançá-lo como um jogo nativo em dispositivos móveis. Posso oferecer a você um pequeno truque em relação ao lançamento de jogos: jogos para web/navegador A competição de jogos para celular é acirrada e é muito provável que seu jogo passe despercebido, desde que não seja promovido – e é muito difícil promover um projeto sem um editor. Para jogos web, existem portais especiais (por exemplo: ) que hospedam esses projetos: é muito fácil lançar lá, e você pode até ganhar alguma coisa com publicidade. Não tenha muitas esperanças, mas ainda assim, se isso acontecer, é um bônus agradável. Armor Games, Newgrounds, WebGames Um pequeno aviso sobre a abordagem “sem código” Agora, um pequeno aviso. Hoje em dia, a abordagem “sem código” é muito popular. É quando um projeto é criado sem escrever código. (Também é chamada de “programação com clique do mouse”). Meu conselho? Melhor ficar longe dessa abordagem. Essas abordagens sem código são ideais para testar a mecânica do jogo ou construir um protótipo simples. Mas temos um objetivo geral diferente — e montar um jogo simples sem código não o deixará mais perto de se tornar um desenvolvedor. Somente criando vários (e realmente vários, não apenas um) projetos você aprenderá algo significativo. Lembre-se: nenhuma leitura de artigos e visualização de guias do YouTube pode substituir a prática. Para traçar seu caminho como programador no desenvolvimento de jogos, a manta aqui é seguir passo a passo, do simples ao complexo. Tentei dar alguns conselhos sobre como entrar no desenvolvimento de jogos e começar a programar jogos. Escolher a linguagem e o mecanismo certos, persistência e perseverança, coletar feedback e introspecção – tudo isso é muito importante. Mas há outro componente desse processo que não pode ser negligenciado: a diversão. Se você não é apaixonado por jogos e não os joga, muito provavelmente, nada resultará dessa aventura; uma triste verdade que se aplica basicamente a qualquer trabalho criativo. Sem diversão, isso se tornará apenas uma rotina para ganhar dinheiro. Claro, você pode perder o interesse anos depois de qualquer maneira, mas esperamos que até lá você já esteja realizado e seja capaz de escolher entre algum trabalho relacionado, ou terá ganhado o suficiente para fazer algo novo e interessante para você naquele momento. Especialmente no início de sua jornada, todo trabalho e nenhuma diversão certamente levarão ao esgotamento e à decepção. , aquilo que o leva a trabalhar em um projeto por dias e noites (é claro, você não deve fazer isso literalmente!) Depois de encontrar sua motivação motriz, aquilo que que de outra forma seria uma rotina típica se transformará em um desafio interessante e envolvente - e isso certamente acelerará seu crescimento profissional! Portanto, meu último conselho: procure o que o apaixona Também publicado aqui.