Olá, quero falar sobre como criei meu primeiro jogo relativamente sério para iOS e Android.
Antecedentes
No colegial, meu amigo e eu éramos muito bons em aulas de ciência da computação, gostava de codificar e resolver vários problemas usando a programação. Além disso, eu sempre gostei de jogos e, como muitos fãs jogam, fui seduzido pela oportunidade fantasmagórica de escrever meus próprios.
Como deveria ser, desenvolvi um interesse em outras linguagens de programação e decidi "crescer" com o notório Pascal. Minha escolha recaiu sobre o notório Python, pois eu tinha ouvido falar sobre sua ampla gama de aplicativos e desenvolvimento relativamente fácil. Movendo-me um pouco na leitura da literatura relevante, para a prática resolvi problemas do
Projeto Euler .
De fato, durante todo esse tempo, eu queria começar a fazer algo realmente sério, e em um certo estágio senti que, se não agora, nunca.
Esse jogo “sério”, como você deve ter adivinhado, se tornou um jogo.
Tendo encontrado a biblioteca PyGame para esta lição, comecei a trabalhar. Para começar, decidi praticar um pouco banal. Tetris, no entanto, não fez, mas percebeu, embora não imediatamente, o bom e velho jogo "vida", com o qual ficou muito satisfeito.
Vida

Então eles se juntaram às minhas criações: um DX-Ball quase acabado, que toquei com interesse no computador do meu tio no meio do zero, uma cópia do Supaplex em sua infância (a mesma nostalgia) e, no mesmo estado, uma arcada inspirada no relativamente moderno The Binding de Isaac.
Dx ball '

Isaac '

O início dos alunos e os primeiros impulsos para criar seus próprios projetos
Com o tempo, percebi uma coisa desagradável para mim: não terminei nada dos projetos, embora a princípio houvesse entusiasmo mais do que suficiente. E assim foi: cada vez menos eu voltava aos desenvolvimentos antigos, às vezes com entusiasmo assumia novos, mas o resultado era um.
Então, o período mais aterrador da vida de qualquer aluno começou: o exame. A programação desapareceu em segundo plano, mas, depois de passar nos exames e ingressar na "Eletrônica e Nanoeletrônica" na Politécnica de São Petersburgo, voltei à programação. Além disso, a vida de estudante me abalou um pouco, me ensinou responsabilidade, e foi por isso que decidi que a partir de agora terminaria todos os meus projetos.
E então eu decidi escrever algo para o Android. Tudo parou no mesmo Python, pois era a única coisa que de alguma forma eu sabia e com o que eu podia me agarrar. Começou a aprender a estrutura do Kivy. Infelizmente, por mais que eu não goste, o Python + Kivy não é a melhor opção para o desenvolvimento do Android, e percebi que não poderia ir muito longe nessa direção.
Como resultado, tendo passado um tempo considerável em um aplicativo tão simples como um teste com a conclusão de várias opções para o resultado final, eu ainda trouxe esse projeto modesto ao fim e até o enviei para o GooglePlay. Então, na sequência da popularidade da batalha de duas batalhas de rap conhecidas, meu amigo se ofereceu para fazer um teste sobre esse tópico e preparou perguntas para ele. Então, nosso primeiro projeto concluído apareceu e uma equipe de duas pessoas apareceu, assumindo o nome de "Aspid Dynamics".

Passava a maior parte do tempo conhecendo o Kivy e outra biblioteca do KivyMD que fornecia elementos do Google Material Design. O resto do tempo foi gasto desenhando ícones e inúmeras redesigns (acabou no final, não muito, mas poderia ter sido pior). Como não estava trabalhando sozinho, isso facilitou um pouco o processo de desenvolvimento e me motivou.
Novos começos
O resultado não era exatamente o que eu queria, mas decidi seguir em frente. Eu olhei atentamente para uma nova ferramenta de desenvolvimento para mim, que era o conhecido mecanismo Unity. A escolha da direção adicional do desenvolvimento foi finalmente feita; resta (apenas algo) se familiarizar com o C # e explorar as capacidades do próprio Unity. Assim, chegamos perto dos eventos que ocorreram recentemente.
Como antes, eu decidi não enfrentar imediatamente algo impossível. A idéia era simples: criar um jogo no qual as pessoas escrevessem palavras adequadas a uma condição predeterminada. Um exemplo simples: "Digite as palavras que contêm as três letras" o "", após o que você digita, por exemplo, "sino". No início, a ideia não parecia nova, mas depois de verificar o Play Market, não encontrei esses jogos, o que me convenceu do sucesso da ideia.
Projeto “Word Expert”
Tendo escolhido o nome trivial, mas cativante, "Word Expert" para o jogo, comecei a considerar cuidadosamente o processo de desenvolvimento. A implementação parecia descomplicada, pelo menos após uma análise superficial. Talvez seja assim, se formalizarmos apenas a mecânica básica, mas com uma consideração detalhada, a funcionalidade aumentou repetidamente e foi significativamente expandida.
Depois de terminar a descrição do projeto, comecei com entusiasmo a implementar ponto a ponto. A idéia principal se tornou realidade rapidamente: foi adicionada a capacidade de criar níveis com base em vários modelos.
Modelos são uma espécie de base para alguns critérios que uma palavra deve satisfazer, entre eles: o início de uma palavra em uma "substring", ou seja, uma letra ou sequência de letras, o conteúdo da "substring" na palavra, o conteúdo de N letras, a uniformidade / singularidade do número de letras na palavra, etc.
Além disso, as palavras inseridas pelo jogador foram verificadas quanto à conformidade com o modelo e a presença no dicionário. Os pontos foram concedidos dependendo da frequência da palavra e comecei a definir os níveis de aprovação, dependendo do número de pontos que recebi em 5 minutos. Nos níveis padrão do jogo, uma pessoa precisa digitar o número máximo possível de palavras para poder passar os seguintes níveis.
Word Expert

Novos problemas e soluções inesperadas
Tudo ficaria bem, mas acabou sendo muito difícil fazer muitos níveis diferentes um do outro. Mais uma vez, meu amigo assumiu a tarefa de me ajudar e, quando eu tinha quarenta e poucos anos, o problema não era apenas o nível de dificuldade em se pensar, mas também que, devido a algumas características lingüísticas da percepção humana, muitas vezes escolhemos certas letras e padrões, teimosamente ignorando os outros.
Isso foi percebido em tempo hábil e foi feita uma tentativa de fortalecer o controle sobre mim mesmo, mas não deu os resultados desejados; portanto, tive que calcular e registrar as frequências para o uso de letras e padrões em nossos níveis. Depois disso, ficou muito mais fácil cuidar de si mesmo, mas no final apenas 60 níveis foram realizados.
Devido ao fato de a necessidade de inventar níveis atrapalhar o desenvolvimento, além dos problemas descritos acima, decidi implementar um gerador de níveis que criaria uma tarefa sã com base em nossos modelos. Não consegui encontrar uma correlação entre o número de palavras correspondentes à tarefa, sua frequência e quantos pontos foram ganhos (isso significava que os níveis precisariam ser equilibrados também - manualmente).
Aparentemente, isso se deve ao fato de as palavras serem mais fáceis para algumas condições, mesmo se houver menos delas. Por exemplo, na consciência, as palavras simplesmente aparecem, com a condição de iniciar em alguma substring, por exemplo, use as palavras em 'ba'. É como se estivéssemos dizendo a nós mesmos essa condição inicial "ba", e o cérebro a completa facilmente com muitas palavras: "tanque", "banco", "banana" etc.
Mas se a condição contiver não mais que 4 vogais e exatamente 8 letras, mesmo que haja 6 vezes mais palavras assim, a velocidade da seleção obviamente diminuirá. Em alguns modelos, quando encontramos uma palavra, nos encontramos em um cluster inteiro (por exemplo: terminando em 'spruce', se criarmos a palavra professor, podemos ver que muitas profissões terminam como: 'construtor', 'motorista' e etc.) Se não houvesse conexão, nada teria unido essas palavras; então, por uma simples busca em nossa mente, teríamos adivinhado muito menos.
Polimento, novos modos, retoques
O gerador criado realmente facilitou marcadamente a criação de níveis e, aumentando gradualmente o número de níveis, meu amigo e eu já alcançamos centenas. Foi inspirado pelo sucesso do gerador envolvido na criação dos níveis que decidimos introduzir um novo modo de jogo.
Foi "sobrevivência", onde você precisa digitar palavras até o tempo expirar. A diferença do modo clássico é o fato de que aqui o jogador se depara com a tarefa de inserir uma palavra em N segundos, de acordo com uma determinada condição. Após o cumprimento bem-sucedido da condição, uma nova tarefa é gerada e o cronômetro é estendido.
Mais tarde, decidimos que, para manter constantemente o conteúdo, precisamos adicionar o multiplayer. Obviamente, é muito mais interessante avaliar seu vocabulário com um amigo no recreio ou jogar com um estranho on-line. O modo multiplayer "clássico" implica uma competição no número de pontos recebidos durante um certo tempo. Por um longo tempo, com a implementação do jogo pela rede, eu ainda descobri e terminei 2 modos multiplayer correspondentes.
Muitos problemas no processo de desenvolvimento nos trouxeram design. O principal problema era que eu mesmo estava longe de ser designer, meu amigo também não possuía as habilidades necessárias e queria fazer uma imagem adequada. Um terceiro conhecido concordou em me ajudar, mas depois de vários rascunhos que não foram levados ao fim, ele não pôde continuar.
Como resultado, através do processamento repetido e da coleta de feedback de amigos, eu próprio desenvolvi a versão final do design.
Lançamento do jogo, planos para o futuro
Inicialmente, o Word Expert deveria entrar no Play Market apenas devido ao orçamento limitado, mas meu amigo me ajudou a obter os US $ 99 necessários para o lançamento na AppStore.
Planejamos complementar e atualizar o jogo. Níveis extras, conquistas, classificações de jogadores e muito mais. Talvez façamos a localização em inglês, o que é um pouco caro no contexto deste jogo.
Muito obrigado por sua atenção a todos que leram este longo post.
Atenciosamente, seu
Equipe Aspid Dynamics.