Jogo próprio em 72 horas: ancinho, muletas e alpacas

Para montar uma equipe dos sonhos, de uma vez para cortar um jogo de obra-prima que explodirá o topo. Ou, como um único gênio convém, para construir e liberar para o mundo um fenômeno de jogo durante a noite, um jogo é um ímã de dinheiro e fama. Como aconteceu na sala de fumantes e em várias reuniões de TI, essas fantasias sombrias atormentam não apenas os alunos mais jovens, mas também tios respeitáveis. É apenas mais difícil para eles admitir.

Como ser um desenvolvedor cuja carreira está tão longe de um desenvolvedor de jogos quanto o Hobbiton do Black Gate? Desvie da obsessão e finalmente termine a biblioteca que pareceria tão honesta no currículo. Mas se você enterrar seus próprios sonhos - não do seu jeito, seja bem-vindo ao gato. Você encontrará uma história honesta sobre como o Kick do mundo da TI praticou diante de um espelho e machucou. A história do jogo, do esboço ao lançamento.

imagem

De padrões vagos de pensamento a um conceito acabado


Em uma primeira aproximação, o plano era o seguinte: em um tempo mínimo para percorrer o ciclo de desenvolvimento de jogos, cuja etapa final é o lançamento de um lançamento completo.

Limites de tempo razoáveis ​​e a necessidade de publicar o jogo ajudam a evitar a armadilha típica à espera de noobs no game dev: perseguindo a imagem do "jogo dos sonhos"! Frequentemente, o conceito “ideal”, quando concretizado, se transforma em um projeto fora do alcance de uma equipe independente. A própria idéia se torna uma imperfeição, que mais cedo ou mais tarde será escondida timidamente "na mesa".

Para evitar a falha inglória com o desenvolvimento de um simulador submarino ou um jogo de tiro em 3D online, é melhor pausar e lançar um jogo simples. A propósito, simplicidade não significa um arcade primitivo de hello word, um clone de cobra truncado e outras variações de artesanato não jogável e não original.

Fazenda Quatro em Linha com Mordomos, Plantas vs. Hamsters ... Que idéia exótica escolher como bola de teste? Talvez algo sobre bolas. E como esta é a primeira panqueca, deixe o jogo ser plano, em 2D. O lema de qualquer evento duvidoso é menos racional, direto ao ponto. Portanto, a primeira idéia relativamente sã foi corrigida. Então, um esboço de uma mistura selvagem de bilhar e air hockey no cenário de uma civilização antiga:

imagem
Conceito de jogo

Este é o arranjo de bolas (zengs) no meio do jogo. O jogador mira em um gato zeng em um crocodilo zeng para martelá-lo em um dos seis bolsos e ver um poderoso efeito especial da explosão. O primeiro a nocautear todos os zenges do inimigo é Etsvatsephala (um grande companheiro). Ah sim. O cenário da civilização antiga ainda está nos bastidores.

Farinha de escolha: plataforma-alvo e kit de ferramentas


Depois que o conceito do jogo foi delineado em termos gerais, não foi difícil determinar a plataforma e as ferramentas.

A visão no mercado de PCs ameaça problemas com os serviços de distribuição online. Leve pelo menos o sistema Steam Direct para publicação na popular loja Steam. Para a adição de cada produto, é cobrado um imposto de cerca de 6.000 rublos e, desde o momento do pagamento até a publicação, deve levar um mês para os funcionários da Valve “garantirem que estão lidando”. A moderação do jogo antes do lançamento leva mais cinco dias.

A colaboração da igrodela independente com o GOG.com, outro gigante da distribuição digital, começa com o preenchimento de um questionário sobre o jogo. Leva algum tempo para que o jogo seja considerado pela loja, e o risco de recusa em publicar é bastante alto: o jogo pode não parecer único o suficiente, base ou pode não atender a outro critério ...

O senso comum determina que faz sentido entrar em contato com monstros como o Steam ou o GOG.com se você tiver um produto pronto (ou quase pronto) com a qualidade apropriada. Mas o lançamento do jogo para um público móvel é uma opção mais rápida e acessível. Claro, estou sugerindo o Android: um pagamento único de US $ 25 para ativar uma conta de desenvolvedor e o acesso ao console do desenvolvedor do Google Play é mais barato que os US $ 99 anuais no cofrinho da Apple para publicação na Apple Store. Eu tenho uma conta de desenvolvedor do Google Play desde tempos imemoriais, e isso derrubou a balança a favor do Android.

Quanto ao Android, os temerários, que seguem um caminho escorregadio de desenvolvimento para esta plataforma, geralmente se encontram em uma encruzilhada: fazer um jogo no Canvas, aprender a API do OpenGL ou lidar com um mecanismo de jogo completo. Para mim, não havia escolha: era muito mais tentador carregar o mouse no belo mecanismo de GUI do que passar a noite em um depurador e investigar por que a cena não é escalável e congela.

Obviamente, foi necessário escolher um mecanismo que atenda aos requisitos:

  • A capacidade de portar jogos para lançamento no Android
  • Grátis
  • Limiar baixo de entrada
  • Velocidade de prototipagem
  • Documentação nova e clara ou uma comunidade ativa

Após algumas pesquisas, três mecanismos despertaram interesse: Cocos2D, Unreal Engine e Unity. O Cocos2D impressiona com sua leveza e C ++ como linguagem de desenvolvimento, mas escrever um jogo não promete ser rápido. Uma escolha difícil entre o Unreal Engine e o Unity terminou com a vitória do Unity: no primeiro contato, parecia que era mais fácil para um iniciante entender esse mecanismo. O que vale pelo menos um tutorial on-line chique sobre a criação de jogos 2D!

Para o desenvolvedor independente, o Unity está disponível no plano de tarifas pessoais, ou seja, de graça. As empresas cuja rotatividade anual ou quantia de recursos captados excederem US $ 100.000 são convidadas a usar uma assinatura paga. Bem, assim que, imediatamente, mas por enquanto, inicie o Personal.

Sobre o desenvolvimento de um jogo sozinho: onde o tempo desaparece


Como resultado do lançamento entre diferentes plataformas e mecanismos no computador, o Unity 2017, a Comunidade do Visual Studio e o Android Studio foram registrados. A propósito, as compilações oficiais do Unity estão disponíveis para instalação no Linux e meu openSUSE Leap instalado sem problemas. No entanto, a maior parte do desenvolvimento do jogo foi feita no Windows, porque o Photoshop está lá. E o único desenvolvedor do projeto de meio período é o único designer que traz um toque especial ao processo do gamedev.

Por exemplo, você frequentemente precisava alternar entre duas tarefas: escrever código e desenhar gráficos. Assim que o processo de desenvolvimento foi bloqueado pela necessidade de adicionar novos gráficos à cena, foi necessário adiar tudo e projetar. Para paralelizar esses processos, as imagens "stubs" foram usadas ativamente, esboçadas de alguma maneira e até a última substituição de gráficos completos.

imagem
Desenvolvimento faseado de gráficos

Também houve acertos no impasse criativo quando os gráficos, considerados finais, provocaram rejeição pelo autor ou pelos jogadores, e não ficou claro como consertar a situação. A prática demonstrou que algumas novas artes conceituais contribuem para quebrar o impasse. Eles informam em que direção refazer a imagem ou a substituem completamente.

De qualquer forma, uma enorme quantidade de arte não entrará na montagem final do jogo, e isso é normal. Para uma tonelada de esboços malsucedidos, nasce um que todos olham e dizem: “Sim, é isso. A mesma alpaca. "

imagem
A mesma alpaca

E aqui está o campo de jogo após inúmeras iterações de refazer:

imagem
Captura de tela do campo de jogo

Aconteceu que, das 72 horas, cerca de 40 foram gastos apenas em desenho e design. O tempo restante foi gasto no ciclo de desenvolvimento-teste, acelerado por três fatores:

Ponto de verificação de prontidão do jogo para lançamento. Um jogo em que a funcionalidade não tem vergonha de ser concluída, pronta para passar pelo usuário que a vê pela primeira vez? Deixa de ser assim se você abandonar um ou dois recursos? Se não fosse o TK somente leitura compilado e traduzido mentalmente, o jogo poderia ser aprimorado e desenvolvido por idades. Enquanto discutiam suas impressões com os jogadores e o surgimento de suas próprias idéias, o novo Wishlist aparecia quase a cada hora e, em seguida, salvava a lista de recursos para o ponto de controle.

Recusa de um código bonito. Pode-se argumentar com isso, essa prática pode ser considerada prejudicial tanto para o projeto quanto para o desenvolvedor, e eu concordo com a maioria dos argumentos ... Mas o fato é claro: se o projeto é pequeno e o tempo está acabando, a pureza do código desaparece em segundo plano. O principal é que o código fonte ainda pode ser entendido. Mas o código do espaguete e a pasta de copiar gordura não são tão prejudiciais se você não pedir uma porção dupla.

Gama para peças em execução. A ordem do tempo foi gasta na explosão, mas ainda não ganha o prêmio pelos melhores efeitos visuais? As peculiaridades da animação do sprite são visíveis apenas agora, porque outros objetos estavam chamando a atenção para si mesmos? Depurando seções complexas, ajustando efeitos especiais, executando animações ... Para esses eventos, uma boa abordagem é isolar o bloco de interesse o máximo possível e colocá-lo em um projeto limpo (ou pelo menos em uma cena separada). Em primeiro lugar, isso elimina os efeitos colaterais de outras entidades do jogo. Em segundo lugar, ajuda a se concentrar na tarefa atual, a experimentar sem risco de estragar e quebrar alguma coisa na vizinhança. Por exemplo, em uma cena separada, era conveniente ajustar os parâmetros dos efeitos das explosões quando um zeng atingia um bolso e, no projeto de teste, selecione opções para texturizar o fundo.

Erros que nunca se tornaram fatais


Quedas descomprometidas em testes beta abertos, referência nula eggs- ovos de páscoa perto das linhas com a frase "// TODO", deslizando como água pelos dedos, bugs ... O triste fato: a maioria dos erros é resultado de descuido e falta de propriedade do instrumento. A Unity possui documentação detalhada e por boas razões. Muitas das soluções técnicas da Unity não são óbvias. Entupir a documentação gera horas extras de depuração e perambulação no Google ... o que o leva de volta à documentação on-line.

Senhoras e Senhores Deputados, aqui está o "Top 3" dos erros mais salgados e demorados que enfeitaram o processo de desenvolvimento do El Zengo. Eles estão curiosos por serem casos especiais de problemas típicos que surgem durante o rápido desenvolvimento da falta de tempo para um estudo detalhado da área de estudo.

3. Não funciona como eu quero


Quanto tempo foi desperdiçado em simulações de depuração de colisão de zengs ... É claro que, no Unity, todo o cálculo do movimento dos corpos funciona imediatamente. E no protótipo bruto do jogo, ele foi avidamente explorado: zenges rolavam pelo palco com gravidade zero, ricocheteavam entre si e pelos lados, e não havia dúvida de suas trajetórias após as colisões. Mas o momento crucial chegou para desenhar os vetores zengi e, de repente, foi revelado que o salto real dos zenges um do outro (o arco cinza na imagem) é diferente do esperado (linha branca):

imagem
Caminhos de retorno esperados e reais do zenga

Zeng desviou-se do caminho pretendido devido a muito atrito e o momento de torção resultante, cuja causa permaneceu por enquanto um mistério. O fato é que cada zeng é um gameObject gerado ao carregar a cena, à qual os componentes Rigidbody 2D e Circle Collider 2D são adicionados.

Corpo rígido, um "corpo sólido", define a física do comportamento de um objeto no mundo do jogo: massa, resistência, gravidade e outras características úteis. Collider - o componente responsável pelo cálculo dos limites do objeto e colisões com outros corpos. Ambos os componentes têm a propriedade "material" para definir o coeficiente de atrito e elasticidade.

Portanto, corrigir a rejeição incorreta dos zengs veio à questão: se dois componentes estiverem anexados ao gameObject, Collider e Rigidbody, e cada um deles tiver a propriedade "material", qual material será aplicado?

imagem
Propriedades de material de colisor e corpo rígido no Unity

Portanto, se o Collider não tiver um material definido, o material do corpo rígido será usado. Se estiver definido, a propriedade prioritária do colisor. Para material não especificado explicitamente, o Rigidbody usa um material com valores elásticos e de atrito padrão. Assim, o erro foi a suposição errônea de que a propriedade Corpo rígido com atrito próximo de zero seria aplicada com o material Collider especificado. E valeu a pena a noite passada no sábado.

2. Comporta-se de maneira diferente em diferentes dispositivos.


Comportamentos diferentes em dispositivos com versões diferentes da API apareceram por acaso ao renderizar sombras de texto. Um texto com o nome do jogo foi adicionado à cena. O componente Shadow está anexado ao texto:

imagem
Componente sombra adicionado ao texto no Unity

Cor escura, transparência. Ele sombreia perfeitamente o texto em todos os dispositivos ... exceto no antigo Android com API 15, no qual a sombra parecia teimosamente azul pálido em vez de azul:

imagem
Sombra desenhada incorretamente na interface do jogo

Não foi possível determinar rapidamente a causa do erro e dos remédios; portanto, por uma questão de velocidade de desenvolvimento, a sombra teve que ser abandonada.

Conclusão: fique alerta. Em dispositivos diferentes, até os elementos triviais do jogo podem parecer e funcionar de maneira diferente. Isso geralmente se manifesta em ninharias quase imperceptíveis.

1. Ele não inicia em um dispositivo específico


Na noite anterior ao lançamento (ou como é habitual começar essas histórias?), Foi descoberto que em um dos smartphones o jogo basicamente não quer começar. Eu tive que me apegar urgentemente ao depurador e ver o que deu errado.

Por design, o jogo é lançado à força na orientação paisagem. No Unity 2017, a configuração de orientação Padrão (Editar -> Configurações do projeto -> Player -> Orientação) é responsável por isso:

imagem
Definindo a orientação da tela no Unity

Ao exportar para um projeto para o Android Studio, a configuração de orientação Padrão se transforma na propriedade screenOrientation especificada no manifesto:

android:screenOrientation="landscape" 


Parece que o que poderia dar errado? De fato, em todos os dispositivos, o vôo é normal ... Exceto no Android 8.0.0 (API 26), no qual o aplicativo falha quando iniciado, com a exceção:

java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

É corrigido desativando a transparência no estilo especificado em styles.xml:

 <item name="android:windowIsTranslucent">false</item> 


Falha detectada acidentalmente acidentalmente que leva à moralidade: a correção da operação deve ser verificada em todas as APIs suportadas pelo aplicativo.

Sobre promoção e monetização, ou "Hoje eu entendi muito"


Depois de preparar um pacote espesso de materiais promocionais para colocação na loja Android, sob os gritos de alegria de um programador e designer, ocorreu um lançamento. No entanto, logo ficou claro que, além do nome do jogo na Play Store, era impossível encontrá-lo. O El Zengo, como um galeão afundado com dobrões de ouro, descansava em algum lugar no fundo do oceano de jogos e esperava seu mergulhador ... Aparentemente, os mergulhadores não mergulham tão profundamente.

Zero downloads por semana foi contra as expectativas. Observação: as expectativas não eram fantasias infundadas, mas baseadas em experiências reais, embora desatualizadas. Em 2014, quando o Google Play estava expandindo ativamente e atraindo novos desenvolvedores, o autor publicou um jogo de lógica sem precedentes. E embora o principal objetivo da publicação fosse o uso pessoal para festas com amigos e colegas, e o design deixasse muito a desejar, os assuntos do jogo foram surpreendentemente tranqüilos. Ela apareceu na seção de notícias, de onde se arrastou para o topo dos jogos por categoria na Rússia e nos países vizinhos. E tudo isso sem o menor esforço.

Desde então, o Google Play está transbordando de aplicativos, os desenvolvedores começaram a fazer grandes somas para evacuar de baixo para avançar para o topo, e tentam tornar o jogo conhecido para que começar com um usuário em potencial possa encontrá-lo de alguma forma, entrar em um negócio.

imagem
Negócio de elefante. Prince está esperando por uma aventura não planejada

Empresas que oferecem serviços de promoção, análises de vídeos do YouTube, análises em portais de jogos, publicidade em várias plataformas ... Se você recusar categoricamente a promoção paga, ficará agradavelmente surpreso com o número de maneiras de se livrar de alguns salários com estilo. Mas qual a sua eficácia, em que combinações e proporções dão o melhor efeito para um jogo em particular? A questão permanece em aberto.

Métodos gratuitos experimentados, incluindo tópicos em fóruns de jogos, relações públicas moderadamente insolentes nas redes sociais e propaganda desenfreada no círculo da comunicação, trouxeram resultados modestos. A conclusão sugere-se: se você realmente pensa na promoção do jogo, faça-o com antecedência e aloque os recursos apropriados. Ao mesmo tempo, todos os esforços podem ser reduzidos a zero, se você não acompanhar as tendências do mercado e as características do público-alvo.

Epílogo


É possível em alguns meses lançar o jogo você ou uma equipe pequena, sem prejuízo do trabalho e da vida pessoal? E assim, sem superação e "triunfo da vontade" sobre a falta de sono. Sim, bastante! E com os mecanismos modernos, um IDE e o fluxo de pilha, é mais fácil do que nunca.

Mas se o desenvolvimento de um jogo independente não é um fim em si mesmo, e surgem dúvidas sobre sua promoção e monetização, então ... há nuances. Promoção - um monstro com três cabeças: uma ciência separada na qual um pequeno erro de cálculo já é uma perda; um processo contínuo que precisa de monitoramento constante; buraco negro por tempo, esforço e dinheiro.

E finalmente O desenvolvimento independente não é apenas sobre código, gráficos e um curso de geometria que seria bom reler. Também é a comunicação com pessoas entusiasmadas que estão prontas para deixar feedback e até participar do projeto com puro entusiasmo. Por exemplo, uma tonelada de conselhos e críticas sobre jogabilidade e interface do usuário foi dada pelo desenvolvedor, que geralmente é legal sobre mortes casuais. E a música para a segunda versão do El Zengo foi criada pelo compositor, que gostou do jogo. Se você se esforçar e procurar, certamente há quem queira testar o jogo e deixar um comentário. E com uma boa escolha de ferramentas e observando as regras simples dos fãs desde o desenvolvimento, a inspiração do lançamento e o bombeamento fraco da experiência são simplesmente fornecidos.

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


All Articles