Deus Vult
A downloadable game for Windows
Le jeu
Deus Vult est un Hack'n'Slash multijoueur en 3D, inspiré du jeu Gauntlet.
L'équipe
- Ethan Margaillan (Lead Developer)
- Développement du système ECS
- Design et développement de l'interface (GUI)
- Design et développement de l'intro et du menu principal
- Intégration du langage de script
- Support et compilation cross-platform & Installeur
- Pierre Pinet
- Développement du moteur physique
- Développement du rendu graphique
- Développement du système de combat
- Guillaume Bergignat
- Développement du système de sons et musiques
- Développement du système de gestion des entrées
- Animations 3D
- Sound design
- Monteur vidéo
- Thibault Thomas
- Développement du système de particules
- Développement du système d'ennemis
- Développement de l'IA
Outils utilisés
- Adobe Photoshop CC 2018 :
- AutoDesk 3DS Max 2018 :
- Cinema 4D 2018 :
- Adobe After Effects CC 2018 :
- Unity 2018 (level design, placement et export des assets) :
- Audacity :
Développement
Le moteur du jeu utilise une architecture de type Entity Component System.
Pour différents éléments, tels que les cinématiques, nous utilisons le langage de script Chaiscript (http://chaiscript.com/) qui est un langage spécifiquement conçu pour s'intégrer dans C++, langage utilisé par notre jeu.
Voici le diagramme de classes de notre ECS :
Les composants (Component) sont stockés séparément des entités (Entity), dans la classe ComponentHolder, elle-même stockée dans la classe World. La classe ComponentFilter, dont une instance est membre de la classe System, permet de définir quels composants sont requis (ou exclus) du système, comme dans le diagramme ci-dessous :
Dimanche 10 juin 2018 :
- Intégration du système d'apparition d'ennemis au travers de la map,
- Intégration de l'IA des ennemis. Ces derniers se déplacent vers le joueur puis l'attaquent lorsque celui-ci entre dans leur zone d'action. Le joueur peut fuir le combat en quittant la zone d'action de l'ennemi. Ce dernier retournera alors au centre de se zone d'action,
- Intégration des différentes attaques et compétences du joueur,
- Attack (donne un coup d'épée),
- Block (donne un coup de bouclier et réduit les dégâts de la prochaine attaque reçue),
- Purification (invoque un cercle d'épées, infligeant alors des dégâts de zone),
- Benediction (crie "Deus Vult !", conférant alors un bonus temporaire d'attaque et d'armure au joueur),
- Crucifixion (invoque un crucifix spectral, infligeant alors de lourds dégâts aux ennemis sur son passage).
- Lorsqu'un joueur tue un ennemi, il récupère de l'expérience, lui permettant alors de monter de niveau. Plus le niveau du joueur est élevé, plus il est long de monter au niveau suivant (l'expérience requise est plus grande), et plus les caractéristiques du joueur (attaque et défense) sont élevées,
- Ajout d'une animation (particules) lorsqu'un ennemi meurt,
- Ajout d'un système de message permettant au joueur de savoir ce qu'il se passe (dégâts infligés, dégâts reçus, bonus reçus, trésors trouvés, etc.). Ce dernier est affiché en bas à gauche et affiche un maximum de 7 messages. Les messages disparaissent automatiquement au bout de 4 secondes,
- L'interface utilisateur est désormais dynamique (les barres de vie, d'expérience, etc. sont actualisées en temps réel),
- Mise en place d'un système de loot, permettant au joueur de récupérer de manière aléatoire dans des coffres de nouvelles épées et armures, améliorant ainsi les caractéristiques du joueur,
- Le système de voyage rapide est désormais fonctionnel et permet au joueur de voyager entre les différentes zones de la map,
- Intégration de l'écran de "mort" du joueur. Le joueur peut désormais être tué par un ennemi,
- Le joueur peut aussi mourir lors d'une chute,
- Prise en charge de la manette d'Xbox One,
- Mise en place du multijoueur sur écran séparé. Le joueur 1 (à gauche) contrôle son personnage avec le clavier et/ou la souris, tandis que le joueur 2 (à droite) contrôle son personnage avec la manette,
- Le système de sauvegarde est maintenant fonctionnel. Il est donc possible de sauvegarder une partie, puis de la reprendre par la suite.
Samedi 9 juin 2018 :
- Correction du bug de la texture du sol,
- Mise en place d'une skybox,
- Mise en place d'un écran scindée afin d'accueillir deux joueurs (pour l'instant, les deux écrans pointent sur le même joueur),
- Mise en place de l'interface utilisateur in-game. Le système d'interface utilisateur (y comprit pour celle dans les menus) a été créé from scratch (images, sliders, boutons, barres de progression) sans passer par le système de GUI natif d'Irrlicht,
Détails de l'interface :
- Barre d'expérience (lorsque cette dernière est pleine, le joueur passe au niveau suivant, gagnant de l'armure et de la puissance d'attaque),
- Barre de vie (lorsqu'à zéro, le joueur meurt, la partie continue cependant pour le joueur allié),
- Information sur l'ennemi (nom et vie). Disparaît à la mort de l'ennemi ou 3 secondes après la dernière attaque (si le joueur a fuit le combat),
- Liste des compétences du joueur.
- Lorsqu'un joueur passe au niveau supérieur, son nouveau niveau est affiché sur la gauche de son écran, puis disparaît au bout de 3 secondes,
- Mise en place d'un menu in-game permettant de sauvegarder (pas encore fonctionnel) ainsi que de quitter la partie.
- Création d'un système d'apparition d'ennemis, ainsi que le début d'un système d'IA pour les ennemis (non intégré pour l'instant),
- Création d'un système de hitbox pour les combats (non intégré pour l'instant),
- Mise à jour de la map avec un ajout de trappes (pour un voyage rapide entre les différentes zones de la map),
- Mise à jour de la map avec un ajout de murs invisibles afin d'empêcher le joueur de se retrouver bloqué dans certains endroits.
Vendredi 8 juin 2018 :
- Le système de bruitages et de musiques est désormais en place et fonctionnel,
- Mise en place d'un système de collision entre les différentes meshes,
- Le sol de la map a été intégré, avec la possibilité pour le joueur de se déplacer dessus (avec un léger problème de texture, qui est trop étirée),
- Le menu des réglages est désormais terminé. Il permet de régler différents paramètres graphiques ainsi que le volume des différents sons et musiques. La fumée en arrière plan est dynamique (grâce à l'utilisation du système de particules),
- Le menu des contrôles est lui aussi terminé, avec la possibilité de réattribuer les touches (y compris les boutons de la souris).
Jeudi 7 juin 2018 :
- La map est désormais intégrée dans le jeu, sans le terrain pour l'instant,
- Le joueur est lui aussi intégré, avec un modèle animé, la gravité, ainsi que son déplacement,
- Un début de menu de configuration est en place, avec des sliders permettant de régler chaque paramètre.
Mercredi 6 juin 2018 :
- Les assets et scripts sont désormais respectivement archivés dans des fichiers .isa et .iss. Lorsque présents dans le dossier assets, ces fichiers sont automatiquement chargés par le moteur,
- Les boutons du menu principal sont désormais cliquables et liés à des actions,
- La page des crédits est terminée,
- Un début de gestion des collisions,
- La map principale ainsi que les modèles 3D des ennemis de base sont prêts à être intégrés à la scène,
- La jaquette du jeu est terminée (voir captures d'écran ci-contre).
Mardi 5 juin 2018 :
La scène du menu principal est désormais terminée, avec les particules de feu qui ont été améliorées, une lumière ambiante style "nuit" ajoutée, ainsi que le Templier qui est désormais présent et animé :
La scène d'introduction, entièrement scriptée à l'aide de Chaiscript, ainsi que l'écran de chargement, sont eux aussi terminés.
Extrait de la scène d'introduction (la première partie a été coupé, voir la vidéo de présentation pour la version complète avec une meilleure qualité) :
L'écran de chargement :
Lundi 4 juin 2018 :
À ce jour, ont été implémenté :
- Le système de particules,
- L'interface du menu principal (certains éléments de décors ne sont pas encore intégrés).
Voici un aperçu du menu principal (le feu utilise le système de particules) :
Dimanche 1 juin :
- L'animation des meshes est terminée.
Samedi 2 juin :
- L'implémentation du gestionnaire de sons et de musiques est terminée,
- L'installeur, réalisé avec Qt 5.10, est terminé. Via une interface utilisateur, celui-ci télécharge le fichier .msi (installeur Windows), puis l'exécute en arrière-plan, tout en affichant la progression de l'installation.
De plus, il permet de sélectionner le chemin d'installation ainsi de créer un raccourci sur le bureau et dans le menu démarrer.
Voici une capture d'écran de l'installeur :
Jeudi 31 mars 2018 :
Le système ECS est totalement fonctionnel. Actuellement, les systèmes implémentés dans le moteur sont :
- La caméra,
- La gestion des entrées (clavier, souris, joystick),
- La gestion de l'éclairage,
- Le chargement et rendu de meshs.
Cela permet pour le moment d'afficher cette simple scène :
De plus, le moteur permet de :
- Gérer dynamiquement les options de lancement (taille du rendu, plein écran, etc.),
- Charger des scènes via des fichiers de configuration,
- Charger des scènes de manière asynchrone.
Ces fichiers de configuration se présentent sous la forme de données JSON. Pour les scènes, ces derniers contiennent la liste des Systèmes et des Entités (ainsi que leurs composants) à instancier :
Actuellement, il reste à implémenter (principalement) :
- Le gameplay
- L'intelligence artificielle
- Les quêtes
- Le menu principal
- L'installeur Windows
Status | Released |
Platforms | Windows |
Publisher | |
Release date | Jun 10, 2018 |
Author | Ethan13310 |
Genre | Role Playing |
Tags | 3D, Fantasy, Hack and Slash, Multiplayer |