Scraft
Unity 2021.3
Concept art par Marion Benoit
Concours Ubisoft 2023
Jeux complet
UQAC - Hiver 2023
Dans le cadre du concours Ubisoft 2023, j'ai activement participé au développement d'une expérience de jeu complet sur le thème de l'arcade.
Ce projet a été mené dans un groupe de 8 personnes sur Unity sous les contraintes suivantes : 1 mécanique de gravité, une mécanique de création et de destruction lié à l'environnement, 1 leaderboard online, le tout sous le thème Arcade.
Le jeu est un scrolling shooter en 2D qui repose sur la construction évolutive de son vaisseau, le mantra : construisez le vaisseau que vous voulez.
Le jeu a été nommé dans les 4 catégories suivantes :
Meilleur expérience utilisateur (UX) ;
Meilleur design de jeu ;
Meilleur intégration du thème ;
Meilleurs innovations et défis techniques.
Trailer
Le processus
Le projet a été imaginer, développé et affiner en 10 semaines durant la session d'hiver 2023. Nous avons suivi un processus agile classique divisé en 5 sprint de 2 semaines, en nous imposant la contrainte de proposer des builds chaque semaine pour les mentors d'Ubisoft qui nous ont aidé pour le projet.
Le Game Design Document
Lors du premier sprint, nous avons réalisé un GDD. Pour ma part, je me suis concentré sur les contrôles et des prototypages d'idées rapides pour voir leur pertinence.
Concernant les contrôles, j'ai voulu qu'ils soient le plus simple possible pour conserver cet aspect arcade : peu de boutons facile à identifier.
Mon rôle
Durant le projet, je me suis concentré sur les éléments suivants :
Gestion de projet / Scrum Master
J'ai mis en place le système de suivi de notre travail et de gestion de notre backlog.
J'ai activement animé la plupart de nos réunions internes ou avec nos mentors.
J'ai aussi souvent pris les décisions lors des sprints finaux pour optimiser nos ressources et respecter notre deadline serré.
Pour cette gestion, j'ai choisi d'utiliser une page Notion pour y regrouper tous les outils nécessaires pour cette gestion.
Cette approche est très similaire à celle que j'ai déjà utilisé pour d'autre projet.
Quelques images de notre outil de gestion (Notion)
Développement - Système de brique de gameplay (Editor Tool)
Afin de fluidifier le développement du level design de notre jeu, j'ai créé un système de "brique" pour pouvoir prototyper et élaborer efficacement notre niveau.
Pour son utilisation, le designer devait créer un prefab représentant une "brique de gameplay". Il associait ensuite sa brique à un scriptable object qui décrit la brique (hauteur, type, difficulté). L'éditeur prenait en compte le lien avec notre Perforce pour éviter d'éditer un fichier verrouillé par un autre membre de l'équipe.
On remplissait ensuite un JSON (via une interface rajouter à l'éditeur) avec les différentes briques. C'est alors ce JSON qui est chargé en début de jeu pour créer le niveau.
Cette approche nous a permis de mixer un level design fixe pour présenter des éléments clés de notre gameplay et un level design plus aléatoire et procédural pour donner du challenge aux meilleurs joueurs.
Développement - Architecture des ennemis
Les ennemis du jeu voient leur logique reposé principalement sur un behaviour tree.
Ainsi, j'ai élaboré la structure de base de nos ennemis pour pouvoir facilement créer différents ennemis avec une certaine cohérence.
Globalement j'ai :
Établi l'architecture de code derrière les ennemis (classe abstraite principale qui se charge de la logique globale, behaviour tree) ;
Développé un outil de création de chemin pour donné un pattern spécifique à nos ennemis ;
Développer quelques ennemis concrets du jeu.
Développement - Architecture des armes
En collaboration avec un autre membre de l'équipe, j'ai élaboré l'architecture de base du fonctionnement des armes pour pouvoir facilement créer divers types d'armes et pouvoir afficher de nombreuses balles à l'écran sans soucis de performances.
Globalement j'ai :
Imaginer l'architecture du système d'arme (classe abstraite principale pour la logique, système d'instanciation des balles avec de l'object pooling pour améliorer les performances, utilisation de scriptable objects pour facilement édité les données associées à une arme) ;
Développer quelques comportements d'armes (tir simple, shotgun, ...).
Développement - Combo et score (backend)
Je me suis chargé du système de score du jeu (en local) et des combos du côté backend.
Développement - IA du Boss
L'intégration du boss est arrivé tardivement dans le développement (au sprint 4 sur 5). L'approche a été assez différentes que pour les autres ennemis. Le boss fonctionnant principalement grâce à une machine à états finis. Je me suis occupé :
De ses différents composants principaux (déplacement, attaques, logique globale) ;
De sa machine à états finis (structure de la machine et développement de chaque état) en s'appuyant sur l'outil d'Unity (d'habitude utilisé pour les animations) ;
De la synchronisation de mes systèmes avec ses animations.
Aperçu
Le jeu est disponible pour PC, navigateur et Android (les versions navigateurs et Android ayant été développé après le concours) sur cette page itch.io
Ci-dessous se trouvant une petite vidéo de gameplay.