Projeto de graduação
A criação de jogos e o ensino superior são geralmente mencionados como coisas incompatíveis, geralmente com bastante razão. Muitos desenvolvedores independentes de renome abandonaram a universidade. Vou falar sobre a experiência oposta. Sobre seu projeto bastante incomum e como ele conseguiu combinar negócios com prazer.
Estudei na RSUH em ciência da computação aplicada e ao mesmo tempo participei do meu hobby. E assim, quando chegou a hora de escolher o tópico do trabalho final de qualificação, pensei: “Por que adivinhar a escolha dela e escrever algum tipo de programa para canhotos quando já existe um projeto praticamente finalizado: meu primeiro jogo de quebra-cabeça”.
Cabia ao processo científico descrever o processo de desenvolvimento e transmitir aos professores e professores associados uma idéia muito abstrata do jogo. Não sem submissões: fiz apresentações, revisões de vídeo, mostrei um protótipo, relatei ao supervisor que ainda estava vivo e nos negócios. Mas devemos dar a eles o que lhes é devido e agradecer por apoiar a iniciativa não padronizada.
Como resultado, o material obtido durante o desenvolvimento foi suficiente para escrever um diploma único (plágio de 0%) completamente da minha cabeça e da minha experiência.
Inicialmente, meu tema era "Desenvolvendo um videogame lógico baseado em princípios geométricos". Posteriormente (de acordo com as normas ISO / IEC), a palavra "desenvolvimento" é substituída por "design", que é mais consistente com o texto do trabalho.
Sobre o jogo
Meu jogo é um jogo combinatório incomparável para Android.

Objetivo do jogo: transforme uma figura para que ela fique exatamente igual à segunda.
O jogo tem três modos.
No "Modo de transformação", os formulários são alterados clicando nos botões.

No "Modo de rotação", as curvas tridimensionais são imitadas.

O sofisticado "modo Esportes" combina os dois anteriores e foi projetado para tocar para um disco.

Há também uma coleção interativa de figuras, que é reabastecida à medida que você avança.
Antecedentes
O desenvolvimento do conceito de jogo foi facilitado pela minha paixão de longa data em construir figuras de muitos cubos. A partir de esboços nas margens do caderno, cheguei a formas mais complexas. Desenhos à mão livre recentes, esses fractais:

A habilidade de imagens de rostos sobrepostos e pensamento espacial treinado serviu para criar novas figuras compostas por triângulos. É assim que a arte conceitual inicial desenhada no CorelDRAW (ainda não está na vista isométrica) e em um dos modelos 3D do Blender:

Mais tarde, abandonei os gráficos 3D em favor da animação vetorial no Anime Studio Pro. Com base na hierarquia de formas e animações de transições entre eles, decidiu-se fazer um quebra-cabeça.
Lógica
A lógica do jogo está associada a várias formas geométricas interessantes. Assim, as trajetórias dos triângulos correm paralelas às arestas do cuboctaedro imaginário em forma de estrela e ao longo das linhas retas que atravessam seu centro e as interseções das arestas.

E os gráficos da lógica do primeiro modo de jogo (transformações) são hipercubos. Inicialmente, as configurações são interconectadas como vértices de um cubo 2 (quadrado). A cada passagem, um novo espaço de figuras é adicionado. No próximo início, a lógica já é um cubo 3D, depois um tesseract e, finalmente, um pentecto com uma seção tesseract.

O modo de rotação tem sua própria lógica, graças à qual apenas algumas animações de rotação para cada figura fornecem visibilidade da rotação em quatro direções e três graus de implantação.

Implementação
Então, vou lhe contar um segredo sobre como implementei o software de design de jogos. Isso pode ser formulado da seguinte maneira: um sistema complexo é uma implementação simples.
Uma implementação simples significa o uso de jogos 2D do Construct 2 para projetar um designer.No meu caso, usá-lo, tendo algumas de suas desvantagens, economizou tempo e concentrou-se mais na criatividade.
Descrevi a "hiperlógica" descrita acima como uma floresta de árvores binárias completas e a implementei linearmente no construtor usando eventos aninhados. Para evitar conflitos entre ações, ele introduziu variáveis de bloqueio.
Otimização
Dada a presença de um grande número de animações no jogo (cerca de 500), a questão da otimização surgiu bastante. Não abordarei uma melhoria específica do “código” no Construto 2, mas direi sobre a otimização mais geral do componente gráfico. Para minimizar o consumo de recursos do sistema, precisávamos de:
- composição de sprites (devido à simetria, as figuras podem ser cortadas em pedaços e montadas a partir de cópias de sprites de acordo com o tipo de mosaico);
- cortar as bordas vazias das imagens (isso é significativo com um grande número de imagens);
- animação reversa (em vez de criar uma animação separada com a ordem inversa de quadros, é melhor reverter a existente);
- abaixar a taxa de quadros para 12 qps e reduzir a resolução dos quadros intermediários da animação;
- o uso de cores de 8 bits (essa profundidade de cor é completamente invisível devido às características da paleta do jogo).
Imagens isentas de direitos: tesserato, penteto, cuboctaedro estrelado retirado da Wikipedia.