Designer de jogos do zero: como começar a criar jogos sem experiência

Golubev Nikita, autor comercial e tradutor, especialmente para o blog da Netology, traduziu um artigo da desenvolvedora de jogos Angela He sobre como criar seu primeiro jogo sem habilidades de programação.

Há apenas dois anos, eu era uma estudante de 17 anos e não sabia nada sobre programação. Isso não me impediu de começar a aprender e, depois de alguns meses, lancei meu primeiro jogo no Steam. Hoje eu tenho mais de 10 jogos para PC, Internet e dispositivos móveis e mais de 1,9 milhão de jogadores.

Não importa o que você pode fazer agora - se desejar, também pode fazer jogos. Dois anos atrás, isso parecia impossível: foi a coisa mais difícil que fiz na minha vida e valeu a pena. Agora eu entendo que no desenvolvimento de jogos, como em qualquer outro negócio, você cresce apenas quando tenta, comete erros e melhora.

Aprendi tudo o que me conheço e agora vou te ensinar.

Para fazer o jogo, você precisa passar por 6 etapas:


  • Conceito
  • Gráficos
  • Programação
  • Som
  • Preparação para publicação
  • Postagem

No artigo de cada etapa, destacarei:
- Dicas que aprendi com a minha e a experiência de outras pessoas.
- As ferramentas que eu acho mais úteis.

imagem

Conceito


Dica


Você tem uma ideia legal. Mas como redigir no papel?

Todo mundo tem seu próprio caminho. Alguns compõem documentos de design de 60 páginas, outros escrevem uma folha de anotações ilegíveis. Não sei como é conveniente para você, mas lembre-se de corrigir o seguinte:

  • Chips. O que torna sua ideia legal? Essa é a pergunta mais importante. Assim que você puder capturá-lo e corrigi-lo, as etapas restantes parecerão mais fáceis. O seu jogo está levantando tópicos interessantes? Será que vai se tornar um novo clássico? Ou será diferente de tudo o que era antes?
  • A mecânica O que um jogador faz e por quê? Esta é a sua jogabilidade. Pode ser simples, como pressionar as teclas Q, W, O, P em um jogo QWOP ou complexo, como combinações no Dwarf Fortress.
  • Legend Como os jogadores se lembram do seu jogo? Com que emoções eles a deixarão? Todo jogo tem uma história. Se a história não for óbvia, o próprio jogador a criará. A história pode ser diferente: um aumento nos números no jogo 2048, a ascensão de impérios na Civilização ou interações silenciosas no Monument Valley. Pense em qual lenda estará por trás do seu jogo.
  • Humor. Que impressão o jogo causa? Que efeitos visuais e música contribuirão para isso? O que importa é a primeira impressão que pode fisgar o jogador e fazê-lo voltar ao jogo novamente. Você pode querer um efeito retrô com gráficos de pixel e música de 8 bits ou um visual moderno com geometria plana - pense nisso.
  • Participe de hackathons. Você e outros participantes precisarão fazer o jogo no tempo previsto. No mínimo, você será inspirado e conhecerá pessoas que pensam da mesma forma. Experimente Ludum Dare , um dos maiores jogadores do mundo.
  • Crie uma lista de idéias. Registre cada novo pensamento. Em momentos de estupor, você sempre pode olhar para a lista e encontrar algo interessante. Parece minhas idéias e anotações pessoais do Google Doc .

Quando a inspiração vier, largue tudo e escreva. Na próxima vez que o pensamento desaparecer, você não precisará sugar ideias do seu dedo.

As ferramentas


Manter anotações:

  • Notas no Mac OS.
  • Google Docs.
  • Trello.

Trabalho em equipe:

  • Google Drive
  • Github Requer git e Unity .gitignore.
  • Unidade Collab. A ferramenta mais fácil, mas com limitações na versão gratuita.

Eu faço jogos no Unity. Além disso, falaremos sobre isso, mas não tenha medo de usar outro mecanismo.

Inspiração:


Gráficos


Dica


Se você não sabe programar, leia primeiro a seção "Programação". É improvável que você queira gastar tempo com o cronograma e jogá-lo fora, porque você não pode escrever um código para ele.

Mesmo se você não sabe desenhar, o jogo pode ser bonito usando três princípios visuais: cor, forma e volume.



Thomas estava sozinho - um jogo simples e bonito

Interface


Pense em como tornar o jogo único com seu esquema de cores, fontes e ícones sem perder a conveniência do jogador. Informações importantes são compreensíveis e legíveis?


Fonte ruim e bem-sucedida

Animação 2D


A animação pode ser implementada de duas maneiras:

  • Animação quadro a quadro. Quando você desenha cada quadro. Para fazer isso, use as tabelas de sprite e o Sprite Packer no Unity.
  • Animação esquelética. Cada membro móvel é desenhado e, em seguida, sua posição e curvas são animadas. É mais rápido, mais leve e gasta menos RAM. Para animação 2D no Unity, use pivôs (pontos de ancoragem) ou o plugin Anima 2D .



O que mais poderia ser útil


Dicas que se aplicam não apenas aos gráficos dos jogos, mas também a outros programas:

  • Os objetos de bloco são usados ​​para criar blocos e requerem menos espaço no disco rígido.



Sem ladrilhos e com ladrilhos

  • Objetos de 9 fatias com bordas não escalonáveis ​​e um centro escalonável permitem ampliar imagens sem encher memória.



O ponto se expande, mas os ângulos permanecem os mesmos

  • Resolva cada objeto para que ele divida por 4 ou seja uma potência de 2.
  • No Photoshop, você pode salvar cada camada em um arquivo separado em Arquivo> Exportar> Exportação rápida para [formato de imagem].

As ferramentas


Criação de interface:

  • Photoshop
  • Esboço

Os princípios de criação da interface:


Criando objetos 2D:

  • Photoshop
  • Gimp.
  • Ferramenta de pintura SAI - para gráficos de estilo anime.

Criando objetos 3D:

  • O Blender é um software poderoso com treinamento sofisticado.
  • Maya - para animação.
  • Max - para renderização.

Recursos de jogos gratuitos:

  • Behance - fontes, ícones e muito mais.
  • KennyNL - objetos de alta qualidade, prontos para uso em jogos.
  • O Open Game Dev Art é uma enorme biblioteca de gráficos criados por outros usuários.

Inspiração:

  • Dribbble é uma comunidade fechada de designers.
  • Behance é uma comunidade de designers na qual qualquer pessoa pode participar.
  • itch.io é uma comunidade independente de criadores de jogos.

Programação


Dica


Escolha um mecanismo de jogo, ambiente de desenvolvimento e comece a mergulhar no código.

O seguinte conhecimento é suficiente para começar. Todos os exemplos são escritos em C ++, uma das linguagens de programação do Unity3D. ( Nota do tradutor: na verdade, o Unity usa C #, que é semelhante ao C ++ ).

  1. Tipos e variáveis ​​de dados. O código é baseado em dados armazenados em variáveis. Você pode declarar uma variável como esta:

    int i = 0; 

    int - tipo de dados, i - nome da variável, = 0 - valor da variável.

    Tipos de dados comumente usados:
    int e long - para números inteiros,
    float e double - para números de ponto flutuante,
    string - dados da string.
  2. Condições. Usando a instrução if, você pode criar condições para a execução do código:

     if (true){ //   !   doThings(); //   ,   ! } 

    Usando a instrução else , você pode expandir a condição e exibir o que fazer se a condição não for verdadeira:

     int i = 1; if (i == 0){  doThings(); } else if (i == 1){  doOtherThings(); //   ! } 

  3. Loops for / while. Os loops while repetem partes do código enquanto a condição permanece verdadeira. Assim que a condição deixa de ser verdadeira, o ciclo é interrompido.

     while (someBool == true){ //   doThings(); //  ,    } 

    Os loops for são semelhantes aos loops while. Por enquanto escrevemos assim:

     int i = 0; while (i < condition){   doThings();   i++; // ,     } 

    Um equivalente para loop seria:

     for (int i = 0; i < condition; i++){   doThings(); } 

  4. Estruturas de dados. Temos dados para interagir. Além disso, eles podem ser armazenados em uma estrutura especial - uma matriz, lista, fila, pilha ou conjunto.
    Uma matriz de exemplo simples:

     /* ,      0  9.     ! */ int[] arr = new int[10]; /*  []    .     10   arr.    : arr = [ 0 0 0 0 0 0 0 0 0 0 ] */ for (int i=0; i<10; i++){   arr[i]=i; //    i  i. //,     ? } /*       : arr = [ 0 1 2 3 4 5 6 7 8 9 ] */ 

  5. Funções e exceções. Uma função é uma linha curta de código que substitui um grande número de linhas de código. Por exemplo, imprima a função EatBread () , que contém o seguinte:

     void EatBread(){ //<---   breadAte=true;  printf("  ,    "); } 

Então, quando a função é emitida, duas expressões são executadas dentro dela.

Se algo der errado no código, as exceções ocorrerão. Eles meio que dizem: “Espere um pouco, aqui você fez algo ilógico. Verifique novamente.

O que mais você precisa saber:

  1. Idioma. Em que idioma você irá programar? Na maioria das vezes, os jogos são escritos em C ++, JavaScript ou C #. Os idiomas diferem em sintaxe e escopo.
  2. API (interface de programação de aplicativos). Depois de se familiarizar com a base, comece a estudar a interface do software aplicativo para um mecanismo de jogo específico. Eles são uma coleção de ferramentas úteis empacotadas em classes e funções simples. A API simplifica bastante a vida de um programador.
  3. Veja exemplos de projetos no mecanismo de jogo selecionado. Você pode encontrar muitos exemplos gratuitos de jogos nos mecanismos Unreal e Unity. Isso permitirá que você veja o resultado e todo o processo de trabalho, além de desenhar idéias para seu jogo futuro.

Um pouco de inspiração. Eu sei que a programação é assustadora no começo. Tudo parece sem sentido, você constantemente tropeça e diante de erros constantes que deseja desistir, mas isso não significa que a programação não é para você.

Código é um desafio para si mesmo. E entender nada a princípio é normal.

Como qualquer habilidade, a programação precisa ser aprendida. E talvez seja bastante interessante.

Outros princípios importantes de programação:

  • Programação Orientada a Objetos. Torna o código mais natural.
  • Convenção de nomenclatura. Nomeie classes, métodos e variáveis ​​para que você e outros programadores entendam seus propósitos. Por exemplo, nomeie a função de ataque corpo a corpo,

     meleeAttack () 

    não

     mA() 

    ou

     protecbutalsoattac() 

  • Decomposição. Crie uma função a partir do código de repetição e chame-a em vez de copiar as linhas de repetição.
  • Padrão de design Singleton ("Loner"). Um modelo de programação que permite que os dados sejam armazenados em um único local.
  • Evitar variáveis ​​estáticas. Além de usar singletones, evitei variáveis ​​estáticas - elas vivem apenas durante o jogo, são lentas e podem se comportar de forma imprevisível.
  • Observador de padrões de design ("Observador"). Permite que um objeto descubra o estado de outros objetos sem perder tempo para verificar o computador.

Coisas específicas da unidade:

  • Corotinas. Eles permitem que você comece a executar uma ação, continue pelo tempo certo e pare. Eu os uso para efeitos visuais de explosões, movimentos bruscos.
  • Classe ScriptableObject. Ele armazena dados a um custo menor do que a classe base MonoBehaviour.

As ferramentas


Motores de jogo:

  • Mecanismo personalizado em C / C ++. Baixo limiar de entrada. ( Nota do tradutor: de fato, criar seu próprio mecanismo requer muito esforço e conhecimento profundo dos princípios de programação ).
  • Unidade Suporta 2D / 3D. Requer conhecimento de JavaScript / C #. Limite médio de entrada. Desenvolvimento para múltiplas plataformas.
  • Irreal Suporta 2D / 3D. Requer conhecimento de C ++. Limite médio de entrada. Desenvolvimento para múltiplas plataformas.
  • pixi.js. Somente 2D. Requer conhecimento de JavaScript. Limite médio de entrada. Desenvolvimento para o navegador.
  • GameMaker Studio. Suporta 2D / 3D. Requer conhecimento de um mecanismo de linguagem especial GML (Game Maker Language). Para iniciantes. Desenvolvimento para múltiplas plataformas.
  • Corona. Somente 2D. Requer conhecimento de Lua (semelhante ao JavaScript). Para iniciantes. Desenvolvimento para múltiplas plataformas.

Ambiente de Desenvolvimento:

  • Código do Visual Studio (para MacOS) - não congela, possui informações de ajuda integradas e teclas de atalho convenientes.
  • Visual Studio (para Windows).
  • MonoDevelop - instalado com o Unity, às vezes congela.

Ativos de unidade gratuitos:

Existem muitos ativos gratuitos no Unity Asset Store, no bitbucket e no GitHub. Nos meus projetos eu uso pelo menos dois. Eles simplificam a vida, mas longe do ideal. Percebemos um erro - corrija-o e conte ao desenvolvedor sobre isso.


Um importante, até a principal fonte de solução de problemas com o código é o Google!

Som


Dica


O áudio é capaz de criar um clima e imersão em um jogo, mas precisa de memória.

Primeiro decida: você quer um som? Nesse caso, haverá música, efeitos sonoros, dublagem ou narrativa no jogo.

De qualquer forma, a gravação e a mixagem são necessárias para que o som corresponda ao clima do jogo. Por exemplo, o Bastion usa sons orgânicos e instrumentais que combinam bem com o jogo. Crypt of the Necrodancer incluiu uma mistura de ritmos eletrônicos e rock de oito bits para transmitir o ritmo e o brilho do jogo.
A imersão decide. Se os sons não coincidirem com o clima do jogo, será difícil para o jogador mergulhar no seu mundo.

As ferramentas


Aplicações de áudio:

  • Logic Pro (apenas MacOS). O preço é de US $ 200.
  • FL Studio. O preço é 99-899 $. Existe uma versão de avaliação gratuita.
  • Ceifador O preço é 60-225 $.
  • Audacity Programa gratuito. Possui poucos recursos, mas é útil para limpar o áudio.

Criando efeitos retrô:


Sons grátis:


Preparação para publicação


Dica


Há uma pequena probabilidade - em 99,99%, que o jogo tenha erros. E isso significa que é hora de fazer um teste de bug.

Como testar o jogo para erros?


  1. Deixe os outros jogarem o jogo. É recomendável que você encontre um erro e não consiga entendê-lo ou explicá-lo.
  2. Confira o jogo em diferentes plataformas. O editor pode não ser um problema, mas funciona onde será iniciado? Tome especial cuidado com Linux e Android.

Então, o bug é encontrado. O que agora



  1. Verifique o console para exceções. Se você encontrar uma exceção, localize o arquivo e a linha em que a exceção ocorreu. Se parecer marciano, procure uma solução na rede e pense por que uma exceção é lançada nessa linha.
  2. Escreva para o console. Tente exibir logs (arquivos do sistema) nos locais de erro alegados. Insira variáveis ​​diferentes e compare os valores obtidos com os esperados. Se houver uma incompatibilidade, corrija-a.
  3. Verifique os logs. Os registros do sistema do seu projeto fornecerão mais informações que o console. Leia as linhas em que a exceção ocorreu. Google tudo o que você não sabe.
  4. Durma. Tudo será consertado pela manhã. Este é apenas um pesadelo :)

Erros comuns


  • NullReferenceException.

     var.doThing(); //throws NullReferenceException: Object reference not set to an instance of an object 

    Qual é o problema: a função é executada com uma variável inexistente (nula).
    Solução rápida: verifique se a variável é nula.

     if(var != null)   {       var.doThing(); //   !   } 

  • SyntaxErrorException.
    Qual é o problema: erros de sintaxe.
    Solução rápida: a mensagem indica qual caractere gerou o erro. Encontre e corrija.

    Nota: Verifique quais aspas você está usando.
    "// aspas válidas;
    "// citações desnecessárias, elas geram muitos erros.
  • Tela rosa ou preta.
    Possível problema: o shader não foi processado.
    Possíveis razões: você está usando sombreadores 3D em um jogo 2D ou sombreadores que não são suportados pelo sistema operacional. Certifique-se de usar shaders móveis para jogos para celular.

Ao terminar com os erros, comece a otimizar o desempenho e o uso da memória. Os usuários poderão executar o jogo mais rapidamente e não terão problemas com os dispositivos de aquecimento.

Dicas de otimização


  • Defina a taxa de quadros desejada. 20 quadros por segundo é suficiente para um romance visual, mas são necessários 60 para um atirador.Uma baixa taxa de quadros gasta menos tempo renderizando.
  • Animação / sistema de partículas / processamento seletivo. Objetos invisíveis para a câmera do jogador não são processados. Os personagens são animados, as partículas são atualizadas, os modelos 3D são processados ​​apenas no campo de visão do jogador.
  • Compressão de texturas e sons. Use Crunch para compactar texturas. Streaming de música e efeitos sonoros descompactam sobrecarregam o jogo. Tente diminuir a qualidade do áudio. A compactação pode reduzir significativamente a qualidade dos objetos.
  • Não deixe o Raycast tocar em objetos desnecessários. Os Raycasts são como pequenos raios que saem dos seus dedos ou mouse quando você toca na tela ou clica. Encontre objetos que não devem reagir às ações do jogador e remova-os dos cálculos do Raycast.
  • Use o pool de objetos. A criação e exclusão freqüentes de um grande número de objetos reduzem o desempenho. Em vez disso, combine-os em uma lista, fila ou outra estrutura. Por exemplo, os marcadores devem ser combinados em uma matriz.
  • Otimize os shaders. Defina o material para cada visualizador. O jogo não precisa criar novos materiais no início do jogo, o que economizará recursos. Deixe o visualizador incluir apenas o que é funcionalmente necessário.
  • Use AssetBundles (literalmente "pacotes de ativos") em vez do antigo sistema de recursos no Unity. O AssetBundles exporta seus arquivos do Unity e os coloca em um único arquivo, economizando RAM.

Ferramentas (somente Unity)


Scripts:


Gráficos:


Memória:


Otimização da plataforma:


Postagem


Dica


É hora de mostrar ao mundo sua criação.

A promoção é a fase mais emocionante. Em caso de dúvida, a comunidade de design de jogos o ajudará. Lembre-se de que você não está sozinho e, como muitos já passaram, é necessário concluir o trabalho até o fim.

Você não saberá se o jogo será um sucesso até você publicá-lo.

  1. Descrição do produto

    Faça capturas de tela das páginas "Sobre o jogo" e crie descrições para cada plataforma na qual planeja lançar o jogo.
  2. Trabalho em rede

    Se você quiser que todos aprendam sobre o jogo, escreva anúncios para a mídia de jogos, participe de festivais e conferências.

    Envie uma descrição do jogo para a imprensa uma semana antes do lançamento - dê às pessoas tempo para escrever sobre ele. Pode acontecer que eles não escrevam sobre isso, mas lembre-se: os jornalistas adoram histórias bonitas sobre desenvolvedores, uma idéia única ou conflitante e um kit de mídia.

    Onde conseguir os endereços?
    • Encontre on-line os contatos dos autores que você gosta: correio, LinkedIn, Twitter.
    • Encontre o correio da publicação na seção Sobre nós ou na parte inferior da página.

    Não escreva para publicações de jogos que não cobrem seu gênero ou plataforma de jogos de destino.

  3. Flâmulas e blogueiros de vídeo

    Eles farão um vídeo do jogo se:
    • O jogo se tornará popular nas plataformas.
    • Você escreverá diretamente. Não fale sobre si mesmo, fale brevemente, de maneira bonita e convincente sobre o jogo. Use gifs e capturas de tela para atrair atenção.

    Normalmente, os endereços dos blogueiros estão listados na página. Caso contrário, tente encontrar contatos na Internet.



    Uma carta ao blogueiro de vídeo Markiplier, cujo canal tem mais de 21 milhões de assinantes



    Vídeo do jogo por Markiplier
  4. Redes sociais

    Esta é uma ótima ferramenta para promoção: Agar.io ganhou popularidade no 4chan, Butterfly Soup subiu em downloads depois de seguir no Twitter.

    Melhor: publique através do editor ou você mesmo. Deseja seguir o caminho da Hotline Miami lançado pela Devolver Digital ou aprender com Farmville e o Doki Doki Literature Club?

    Para colaborar com um editor , você deve primeiro encontrá-lo. Depois disso, haverá uma pequena pilha de papéis, mas você receberá fundos suficientes para o desenvolvimento do jogo.

    Se você pretende se publicar , esteja preparado para gastar muito tempo estudando marketing. Você pode falhar na campanha de promoção, mas no processo você ganhará um conhecimento valioso e economizará dinheiro.



    O número de configurações do jogo está crescendo

    Eu prefiro publicar jogos eu mesmo. Eu gosto de estudar e acredito que um jogo realmente bom terá sucesso, independentemente do progresso.
  5. Clique no botão "Publicar"!

    Acabou! Agora relaxe, pegue algo saboroso e relaxe. Você trabalhou incansavelmente e mereceu.

    Não tenha medo se o jogo não recebeu a atenção esperada - isso é normal. Meu primeiro jogo tem apenas 255 downloads no Steam.

O principal é que você fez o jogo e aprendeu muito. Agora isso é suficiente e sempre há a oportunidade de tentar novamente com novos conhecimentos.

As ferramentas


O serviço presskit () ajuda os desenvolvedores a escrever uma descrição do jogo para a imprensa.

Plataformas para publicação:

  • Steam (PC) - US $ 100 por postagem.
  • Origem (PC).
  • GOG (PC) - publicação gratuita após permissão.
  • Mac App Store (MacOS) - US $ 100 por ano, requer uma conta de desenvolvedor da Apple.
  • itch.io (PC / Web) é uma publicação gratuita.
  • Game Jolt (PC / Web) é uma publicação gratuita.
  • Armor Games é uma publicação gratuita.
  • Kongregate (Web) é uma publicação gratuita.
  • Newgrounds (Web) é uma publicação gratuita.
  • GitHub (Web) é uma publicação gratuita em um site que termina em ___.imtqy.com .
  • Amazon (Web / Mobile) é uma publicação gratuita.
  • Google Play (celular) - US $ 25 por postagem.
  • iOS App Store (Celular) - Requer uma conta de desenvolvedor da Apple.

Logs do jogo:


Festivais:


Conferências de Jogos:


Conclusão


Não há uma maneira fácil de criar um jogo. Existe apenas sua determinação e esforço.

Por trás de cada meia-vida, Minecraft e Uncharted são oceanos de sangue, suor e lágrimas.
Ken Levin, criador do Bioshock

Você cometerá erros, sentirá um impasse e chorará. Isso é normal - significa que você está crescendo acima de si mesmo.

Dos editores


Source: https://habr.com/ru/post/pt420689/


All Articles