Oi Habr. Sou desenvolvedor de jogos no Unity (parecia baixo) e gostaria de falar sobre os estágios de desenvolvimento do meu primeiro jogo. A história se origina 2 anos atrás, quando eu decidi tentar fazer jogos. Iniciado com guias no YouTube. Depois de criar alguns exemplos, aplicativos e minijogos, decidi criar um jogo completo. Naturalmente, eu representei um épico real, um enredo e 10 reais em 10. Minhas ambições eram ilimitadas, mas eu não sabia o que me esperava.
A primeira pergunta que fiz foi escolher uma plataforma de publicação. Fiz a escolha da plataforma a preços ou por um método de exceção: no Steam $ 100 por jogo, no IOS $ 100 por ano, a escolha caiu no Android. Paguei US $ 25 no Google Play, consegui uma conta e o desenvolvimento começou.
Decidi confiar nos aspectos mais poderosos e mais simples do mecanismo. A física 2D era mais adequada para isso, com base nisso, decidi construir um jogo.
Mas qual será, qual é o conceito? Decidi buscar inspiração no YouTube e encontrei um vídeo sobre como gerar geração de nível a partir de imagens em pixel. Eu queria o mesmo.
O que eu reescreviReescreveu o sistema, empatou um nível e testou a geração. Eu pensei: "O que vem depois?". E então - uma visão. A ideia surgiu instantaneamente e o quebra-cabeça se juntou. Por que o jogador não deve ser uma bola, mas consegue dar gravidade a ela? "Ótima idéia", pensei, e comecei a criar jogabilidade.
Após o que eu enfrentei a tarefa: como o jogador controlará a bola vermelha. Durante todo o tempo de desenvolvimento, criei 4 opções:
1) raioO jogador tocava na tela, estabelecendo um ponto de referência, em relação ao movimento adicional do dedo, a gravidade mudou. A força dependia do alcance do ponto de referência e da direção do ângulo entre eles.
2) raio fixoO mesmo que Radius, apenas o ponto de referência estaria estritamente no centro da tela
3) Em dois sentidos (batendo)Quando você clica no lado esquerdo ou direito da tela, pode girar a "gravidade" junto com a câmera em um certo número de graus à esquerda ou à direita, respectivamente.
4) Frente e verso (aperto)O mesmo princípio que o Dois lados (pressionando), era necessário apenas prender e a rotação ocorreu a uma velocidade fixa.
1 e 2, eu imediatamente os demiti por causa de sua complexidade de entendimento e controle não intuitivo. Não era adequado para um jogo para celular. Mas, infelizmente, quatro me ocorreram na fase de pós-produção, eu tive que tomar 3. Francamente, uma decisão muito ruim (sério, não é preciso dessa maneira). Este departamento teve duas falhas catastróficas.
- O primeiro foi sua nitidez, tremendo. Ao virar, a imagem mudou drasticamente e de maneira desagradável. Eu testei, eles disseram que, por causa da gerência, eles não entendiam para onde ir e como jogar, e metade dos "testadores" começou a balançar.
- O segundo problema é puramente técnico: ao girar, o jogo durava de 0,1 a 1-2 segundos, pois não era a câmera com gravidade que estava girando, mas o NÍVEL INTEIRO. E os níveis às vezes atingiam 10.000 objetos. Acho que não vale a pena explicar como o dispositivo reagiu a um foco semelhante com a trigonometria. Percebi isso no meio do desenvolvimento, mas não me atrevi a corrigi-lo, porque não sabia como mudar a direção da gravidade 2D (eu sei, eu era burro) e fiquei com preguiça.


Sim, e agora não seria possível corrigi-lo de maneira simples, sem mexer nos fóruns e na documentação. Quando eu queria pelo menos tentar consertar o bug, não o fiz, porque era impossível mudar a jogabilidade. A alteração do controle para o tipo 4 estragaria os 80% do conteúdo finalizado, aguçada para o controle do tipo 3.
Além disso, por causa disso, um problema piorou acentuadamente e agora até eu comecei a ficar doente. Aparentemente, eu tentei o meu melhor, a verdade não é o que eu queria. "Oh, bem", pensei, e continuei.
Comecei a programar recursos de quebra-cabeças e levei muito tempo. Passei os 2 meses inteiros em vários objetos e scripts para a interação deles. Os níveis eram simples texturas de mapa de bits com pixels distintos, cuja cor indicava seu bloco.
DesignaçõesBranco - bloco de fundo
Preto - bloco simples
Red - Jogador
Azul - Acabamento
Tons de Amarelo - Teleporte
Vermelho escuro - bola vermelha
Verde - bola verde
Apenas amarelo - estrela
Escala de cinza clara - blocos retangulares
Sombra escura de cinza - blocos falsos
Tonalidade amarela escura - teleportadores falsos
Matiz amarela média - estrelas falsas
Azul Escuro - Acabamento Falso
(Muitas falsidades)



Basicamente, todos os ativos contatados via OnTriggerEnter2D e tags. Mesmo agora, não consigo adivinhar o que me levou cerca de um mês. O menu levou o segundo mês da parte devido ao fato de eu não usar ciclos, e a atividade de todos os 500 objetos foi regulamentada pelo Awake, por isso produzi mais de 2500 linhas de código.
"Seu jogo já está cansado, faça outro", disseram amigos, mas continuei assim mesmo. Eu planejei 100 níveis. Demorou 4 meses para criá-los. Eu os criei em paralelo com a parte técnica. Como resultado, meu plano para os níveis de "pensamento" resultou quase nada. Eu posso nomear esses níveis com força de 10 a 15 peças, o resto foi difícil para os outros. Eles eram complicados pela presença de corredores estreitos, a complexidade da orientação no espaço, soluções de design absolutamente masoquistas e, é claro, minas com labirintos. Mas não fui eu quem fui responsável por sua criação. Meus "trabalhadores contratados" criaram um total de cerca de 60% do conteúdo do jogo.
Devido ao fato de termos projetado os níveis de acordo com as regras, os níveis acabaram sendo aceitáveis na teoria, mas na prática a teoria não foi testada. Depois de ter feito todos os níveis, entendi o que poderia acontecer com o meu jogo, a saber, a dissonância absoluta de níveis atrasados a níveis intransitáveis, pelos quais não seria possível concluir o jogo. Então permanece.
Além disso, não esqueci o cronograma, mas trabalhei nele por 2 horas e depois não o toquei mais. Como estou torto e o melhor que pintei no Photoshop são grandes círculos em vez de olhos, decidi que o jogador controlava a bola em vermelho e pegava as texturas do primeiro pacote de texturas que surgia no minecraft (hackeei o quanto pude).
Existem pistas no jogo, mas elas foram feitas muito rapidamente e, consequentemente, de baixa qualidade. No início do nível, um texto aparece com meus comentários do tipo “Difícil?” Ou “Pense!”.
Programei o jogo no Unity 2017.1. Já era 2018 e eu pude baixar o Unity versão 2018.2, mas não o fiz. Afinal, eu simplesmente não queria sofrer com a transferência do jogo e possíveis erros. Quando chegou a hora da compilação final, eu não pude fazer isso. A razão para isso é a falta do Android SDK. Passei uma semana pesquisando, experimentando uma combinação de novas versões do mecanismo (apenas em 2017), alterando suas configurações e inúmeros sdk enormes (300 GB para 24 diferentes sdk idênticos). Como resultado, decidi por um programa de instalação sdk de terceiros, a versão do mecanismo 2017.3 e o tipo de proposta Intent. Quão feliz fiquei quando compilei o jogo.
Levei três dias para publicá-lo.
A dificuldade foi preencher o questionário e a necessidade de preencher uma descrição em 18 idiomas (lição não muito interessante). Eu localizei tudo isso através do google translate. Não demorou muito tempo para criar a capa e as capturas de tela.
Apesar da completa ausência de relações públicas (exceto recomendações pessoais), o jogo geralmente tem valores estáveis. Cada mês uma média de 4-7 instalações.
No primeiro mês eu ajustei o tráfego, dizendo não indiferente.
Nos seis meses seguintes, o aumento foi perceptível. As instalações de pico ocorreram no final do verão e no outono.
Mesmo agora, um ano após o lançamento, as instalações são estáveis.
Inicialmente, a principal motivação para o desenvolvimento era o autodesenvolvimento, não persegui nenhuma meta de renda. Em parte por causa disso, o projeto do meu autor simplesmente desapareceu no esquecimento, caso contrário, devido a todos os itens acima. Mas o principal é que é chato jogar. Afinal, se eu introduzisse publicidade, eu seria mais responsável pelo PR, pela qualidade do produto final e por sua apresentabilidade. E assim - esse tipo de entretenimento.
Mas, em princípio, estou satisfeito com o meu jogo. Seu tamanho com bons níveis deixa claro que, para o primeiro jogo, a minha não é tão ruim. Durante todo o tempo de desenvolvimento, aprendi muito sobre programação e marketing, sobre jogos e coisas relacionadas, mas o máximo que eu entendi foi onde eu entrei, em qual indústria eu comecei a ir.
A propósito, estou apenas desenvolvendo uma sequência, talvez o que aconteça ...
PS: Para o artigo, o trailer foi montado especialmente: