Projet de fin d'études
La création de jeux et l'enseignement supérieur sont généralement considérés comme des choses incompatibles, souvent à juste titre. De nombreux développeurs indépendants bien connus ont abandonné l'université. Je vais parler de l'expérience inverse. À propos de son projet plutôt inhabituel et comment il a réussi à combiner affaires et plaisir.
J'ai étudié au RSUH sur l'informatique appliquée et en même temps je m'occupais de mon hobby. Et donc, quand est venu le temps de choisir le sujet du travail de qualification final, j'ai pensé: "Pourquoi étonner son choix et écrire une sorte de programme pour gauchers alors qu'il y a déjà un projet pratiquement terminé: mon premier jeu de puzzle."
Il appartenait au processus scientifique de décrire le processus de développement et de transmettre aux professeurs associés et professeurs une idée très abstraite du jeu. Non sans soumissions: j'ai fait des présentations, des revues vidéo, montré un prototype, signalé au superviseur que j'étais encore en vie et en affaires. Mais nous devons leur donner leur dû et leur dire merci d'avoir soutenu l'initiative non standard.
En conséquence, le matériel obtenu au cours du développement était suffisant pour écrire un diplôme unique (0% de plagiat) complètement de ma tête et de mon expérience.
Au départ, mon thème était «Développer un jeu vidéo logique basé sur des principes géométriques». Plus tard (conformément aux normes ISO / CEI), le mot «développement» est remplacé par «conception», qui est plus cohérent avec le texte de l'ouvrage.
À propos du jeu
Mon jeu est un jeu de puzzle combinatoire sans précédent pour Android.

But du jeu: transformer une figure pour qu'elle devienne exactement la même que la seconde.
Le jeu a trois modes.
Dans le "Mode de transformation", les formulaires sont modifiés en cliquant sur les boutons.

Dans le «mode de rotation», les virages tridimensionnels sont imités.

Le "mode Sports" sophistiqué combine les deux précédents et est conçu pour jouer pour un record.

Il y a aussi une collection interactive de figures, qui est réapprovisionnée au fur et à mesure que vous progressez.
Contexte
Le développement du concept de jeu a été facilité par ma passion de longue date pour la construction de figurines à partir de nombreux cubes. De croquis en marge du cahier, j'en suis venu à des formes plus complexes. Dessins à main levée récents, ces fractales:

L'habileté des images de visages qui se chevauchent et la pensée spatiale entraînée ont servi à créer de nouvelles figures composées de triangles. Voici à quoi ressemblaient les premiers concepts conceptuels dessinés dans CorelDRAW (pas encore en vue isométrique) et l'un des modèles 3D de Blender:

Plus tard, j'ai abandonné les graphismes 3D au profit de l'animation vectorielle dans Anime Studio Pro. Sur la base de la hiérarchie des formes et des animations de transitions entre elles, il a été décidé de faire un puzzle.
La logique
La logique du jeu est associée à plusieurs formes géométriques intéressantes. Ainsi, les trajectoires des triangles sont parallèles aux bords du cuboctaèdre imaginaire en forme d'étoile et le long des lignes droites passant par son centre et les intersections des bords.

Et les graphes de la logique du premier mode de jeu (transformations) sont des hypercubes. Au début, les configurations sont interconnectées en tant que sommets d'un 2-cube (carré). A chaque passage, un nouvel espace de figures s'ajoute. Au prochain démarrage, la logique est déjà un cube 3D, puis un tesseract et, enfin, un pentect avec une section tesseract.

Le mode de rotation a sa propre logique, grâce à laquelle seulement quelques animations de rotation pour chaque figure offrent une visibilité de rotation dans quatre directions et trois degrés de déploiement.

Implémentation
Donc, je vais vous dire un secret sur la façon dont j'ai implémenté un logiciel de conception de jeux. Cela peut être formulé comme suit: un système complexe est une implémentation simple.
Une implémentation simple signifie l'utilisation de jeux 2D Construct 2 pour la conception d'un concepteur. Dans mon cas, l'utiliser, avec certains de ses inconvénients, a néanmoins permis de gagner du temps et de se concentrer davantage sur la créativité.
J'ai décrit «l'hyperlogique» décrit ci-dessus comme une forêt d'arbres binaires complets et l'ai implémenté de façon linéaire dans le constructeur en utilisant des événements imbriqués. Afin d'éviter les conflits entre les actions, il a introduit des variables de blocage.
Optimisation
Compte tenu de la présence d'un grand nombre d'animations dans le jeu (environ 500), la question de l'optimisation s'est posée fortement. Je n'aborderai pas une amélioration spécifique du «code» dans Construct 2, mais je parlerai d'une optimisation plus générale du composant graphique. Pour minimiser la consommation des ressources système, nous avions besoin de:
- composition des sprites (en raison de la symétrie, les formes peuvent être découpées en morceaux et assemblées à partir de copies de copies de sprites selon le type de mosaïque);
- recadrer les bords vides des images (ceci est significatif avec un grand nombre d'images);
- animation inverse (au lieu de créer une animation séparée avec l'ordre inverse des images, il est préférable d'inverser l'animation existante);
- abaisser la fréquence d'images à 12 ips et réduire la résolution des images intermédiaires de l'animation;
- l'utilisation de couleurs 8 bits (une telle profondeur de couleur est complètement invisible en raison des caractéristiques de la palette du jeu).
Images gratuites: tesseract, pentect, cuboctaèdre étoilé tiré de Wikipédia.