Ressources Magic Makers

 

Site en maintenance

 
Nous sommes actuellement entrain de mettre à jour les ressources de ce site.
Pendant la mise à jour vous pouvez retrouver tous les nouveaux contenus sur le site
 

https://lp-magicmakers.fr/

 
 

UNITY - Projets exemples

Tu trouveras sur cette page plusieurs idées de projets à réaliser avec Unity :

    • Des exemples de plateformer
    • Des exemples de labyrinthe
    • Des exemples de jeu de quêtes
    • Des exemples de jeux divers à tester
    • Trois exemples de jeu avec les étapes de créations  (un jeu d’énigme, un jeu de quête, un jeu d’infiltration)

Exemples de Plateformer 3D

Clique sur les images pour tester les jeux 🙂

Exemple de Labyrinthe 3D

Clique sur les images pour tester les jeux 🙂 – A VENIR

Exemple de jeu de quête 3D

Clique sur les images pour tester les jeux 🙂 – A VENIR

Exemples de fonctionnalités et pouvoirs

Voici un exemple de jeu créé par Fabien !

Clique sur l’image pour tester le jeu

Petite démo de jeux réalisés par Laurent

Jeu d'énigmes

Les jeux d’énigmes sont des jeux de réflexion dans lesquels il faut réfléchir pour trouver une solution a problème donné.

Voici un exemple de jeu qui illustre ce principe.

<< Trapped >>

Dans Light in the dark tu dois te déplacer en évitant les obstacles et d’être vu par les marcheurs et aller récupérer le drapeau. Tu peux utiliser les touches ZQSD pour te déplacer et la souris pour orienter la caméra et le joueur.

Conception du jeu

 

Jeu de quête, d'aventure et RPG

Dans les jeux de quête ou de RPG (Role Playing Game), le joueur incarne un personnage qui évolue dans un univers dans lequel il doit résoudre des quêtes pour avancer dans le scénario et débloquer de nouveaux niveaux ou de nouvelles fonctionnalités. Ce type de jeu peut être proche du jeu d’aventure où le joueur doit explorer le monde pour progresser.

Voici un exemple de jeu qui utilise ces mécanismes de jeu.

<< Mystère sur Alin >>

Les jours et les nuits sont beaucoup trop courts depuis quelques temps sur Alin. Les habitants ont besoin de vous pour résoudre ce mystère. Saurez-vous trouver la source de ce problème?

Jeu d'infiltration

Dans un jeu d’infiltration, l’un des objectifs est d’atteindre un objectif sans se faire repérer. Ce type de jeu nécessite souvent d’avancer de manière réfléchie et contrôlée.

Voici un exemple qui illustre ce mécanisme.

<< The light in the dark >>

Dans Light in the dark tu dois te déplacer en évitant les obstacles et d’être vu par les marcheurs et aller récupérer le drapeau. Tu peux utiliser les touches ZQSD pour te déplacer et la souris pour orienter la caméra et le joueur.

Conception du jeu

Après avoir réfléchi aux différentes idées de ce qu’on voulait faire et choisi notre idée, on est passé par une phase de conception. Cette phase a permis de dresser une vision globale du jeu et de ce qui allait être fait. On retrouve la fiche générale sur le game design et les règles, la fiche joueur et les fiches obstacles.

Cette fiche a servi de guide pour la conception et pour structurer les différentes étapes de ce qu’il fallait faire.

Certaines choses ont évoluées entre la fiche de conception et le jeu en version finale (changement du nom, joueur à la première personne, déplacements plus complexes des marcheurs…). La fiche de conception est un guide pas un contrat qu’il faut respecter à la lettre.

Par exemple les marcheurs avaient au départ 2 points entre lesquels ils se déplaçaient mais c’était trop prévisible. D’autres points ont étés rajoutés après avoir fait les premiers tests pour avoir des trajectoires plus complexes et moins prévisibles.

Une itération possible sur le jeu serait de jouer sur la probabilité de changement de trajectoire sur certains marcheurs pour que ce soit encore moins prévisible.

Réalisation du jeu

ETAPE 1 : la création de terrain et de la killzone

Pour la création du jeu, j’ai commencé par créer un terrain sur lequel se déplacer.

Je ne voulais pas avoir un terrain trop grand donc j’ai adapté la taille pour avoir l’espace que je voulais puis j’ai commencé à créer les montagnes et les trous. Pour cela j’ai utilisé l’outil de création de terrain (voir la page Environnement).

J’ai ensuite mis en place la mort du joueur s’il tombe dans un trou. Pour cela j’ai utilisé le script Mort avec CheckPoint (voir la page Plateformer) et placé un cube en killzone juste en dessous de mon terrain mais plus haut que le fond des trous.

Pour tester le bon fonctionnement de ce comportement j’ai pris un MMFirstPersonController pour mon joueur.

ETAPE 2 : la création des marcheurs

Pour créer les marcheurs la première étape a été de trouver un personnage sur l’asset store puis de lui ajouter le script Patrouille. J’ai implanté tous les éléments pour qu’il se déplace correctement (voir la page Ennemis). Puis comme après chaque ajout d’élément, j’ai testé le jeu pour voir si le comportement était bien celui attendu.

Après avoir réfléchi aux différentes possibilités pour que le joueur meurt s’il arrive trop près d’un joueur, j’ai finalement choisi de créer un Empty GameObject autour du marcheur et de lui mettre un Collider pour contrôler la zone de détection autour de l’ennemi. Pour tuer le joueur je lui ai appliqué un tag ennemi que j’ai rajouté comme un élément des zones de mort dans le script Mort avec Checkpoint de mon joueur.

Une fois tout ça testé et fonctionnel j’ai ajouté un point de lumière pour éclairer la zone de détection du marcheur.

Note: au final j’ai utilisé le script Patrouille et Attaque pour mes marcheurs pour avoir visuellement l’effet qu’il vient vers le joueur pour l’attaquer avant de perdre.

ETAPE 3 : travail sur l’ambiance générale

Avant de dupliquer mes marcheurs, je voulais m’assurer de mes réglages de lumière pour ne pas avoir à faire des réglages pour chaque marcheur.

J’ai donc changé la Skybox pour avoir une nuit étoilé et limiter la lumière. J’ai également travaillé les Lumières et notamment le point de lumière de mon marcheur, (voir la page Lumières).

L’idée de cette étape était surtout d’avoir une ambiance globalement proche de ce que je voulais pour pouvoir poursuivre mais pas de faire les réglages dans tous les détails ( étape que je gardais pour la fin).

ETAPE 4 : création du drapeau et victoire

Mon premier marcheur étant prêt, j’ai voulu commencé le mécanisme de fin de partie et de victoire.

J’ai récupéré un modèle de drapeau sur l’AssetStore, rajouté de la lumière pour que l’on voit le drapeau de loin, puis commencé à réfléchir à l’affichage de la victoire.

Je n’avais pas envie de créer une nouvelle scène mais juste afficher un Canvas quand le drapeau était touché. J’ai donc créé mon texte sur CoolText, et je l’ai intégré dans mon Canvas (voir les pages Canvas et UI et Images)

Une fois mon Canvas prêt, il ne me restait plus qu’à faire en sorte de déclencher l’affichage au bon moment.

J’ai créer un Empty GameObject avec mon Collider pour définir l’espace dans lequel il fallait rentrer pour gagner, et j’ai créer un petit script inspiré de script AfficherTexte pour que mon Canvas s’active quand le joueur s’approche de l’objet (à l’aide la fonction OnTriggerEnter() ) et que par défaut le Canvas ne soit pas activé ( à l’aide de la fonction Start() ).

J’ai donné au joueur le tag Player et ajouté Player à ma liste de TagsDeclencheurs, puis testé le bon fonctionnement de mon script.

N’hésite pas aller sur la page Customiser les Scripts

ETAPE 5 : duplication et positionnement des marcheurs

Au niveau du game design j’avais désormais tous les éléments dont j’avais besoin.

J’ai donc commencé à réfléchir au placement de mes marcheurs. Je voulais que l’espace soit quadrillé pour qu’il soit difficile d’atteindre le drapeau. J’ai testé différentes configurations et ait abouti sur celle-ci dans laquelle tous les chemins passent par des marcheurs.

J’ai effectué plusieurs test pour voir si tout fonctionnait bien que l’on pouvait gagner sans que ce soit trop facile. J’ai ajusté les positions et déplacements de mes marcheurs en fonction.

Une fois tous les réglages terminés, le mécanisme de mon jeu était prêt il ne restait plus qu’à travailler l’esthétique et les derniers détails.

ETAPE 6 : Sons et Post-Processing

Satisfaite de mes mécanismes de jeu, j’ai entamé la finalisation de mon univers.

J’ai commencé par rajouté des sons pour avoir une ambiance sonore. Pour trouver mon son de nature, je suis allée sur Universal SoundBank et ajouté une Audio Source sur mon joueur. J’ai également trouvé un son de victoire que j’ai ajouté sur le Canvas de victoire en cochant la case Play on awake pour qu’il ne se déclenche que lorsque celui-ci est activé.

Pour la musique d’ambiance j’ai activé le Loop pour qu’elle tourne en continu, pour le son de victoire non car je voulais qu’il ne s’active qu’une seule fois.

N’hésite pas à aller sur la page Son pour plus de détails sur la gestion du son.

J’ai également ajusté l’intensité lumineuse à l’aide de Post-Processing, n’hésite pas à aller voir la page Post-Processing.

ETAPE 7 : Compilation, tests et retours

Enfin, j’ai compilé mon jeu pour le faire fonctionner sur un Navigateur Web en l’exportant en WebGL (voir la page exporter son projet en WebGL).

La luminosité n’étant pas exactement la même sur mon jeu en Unity que sur mon jeu en WebGL j’ai fait de nouveau réglages sur la luminosité, et une fois satisfaite, je l’ai fait testé par d’autres personnes.

On m’a fait quelques retours que j’ai décidé d’intégrer pour améliorer mon jeu. Par exemple, ce n’était pas évident de comprendre quand on mourait dans mon univers très sombre. J’ai donc décidé de rajouter un écran qui s’affiche quand on perd qu’on peut désactiver facilement.

ETAPE 8 : Ajout d’écran Game Over

Pour créer mon écran Game Over, j’ai cette fois encore utilisé un Canvas dans lequel j’ai mis mes images.

Pour le mécanisme d’activation de l’écran Game Over, je suis allée voir le script Mort avec CheckPoint pour ajouter que quand on touche une killzone, un écran apparaît.

J’ai donc ajouté une variable public Canvas m_EcranMort pour pouvoir y mettre mon Canvas et ajouter la désactivation dans Start() et l’affichage dans la fonction OntriggerEnter().

Afin de permettre que le Script fonctionne même sans Canvas, j’ai simplement rajouté une petite condition pour vérifier que le Canvas n’est pas non défini (null) : if (null != m_EcranMort)

Une fois l’activation faite, il reste à le désactiver. Pour ça j’ai créé un petit script qui le désactive (s’il est actif) quand on appuie sur une touche (ici espace).

J’ai utilisé la fonction Update() pour vérifier si l’on appuyait sur la touche et pour désactiver l’écran le cas échéant.

Note : Ici l’écran vient juste cacher le jeu qui continue d’être jouable et n’est pas en pause ou reset au début de la partie on vient juste remettre le personnage à sa position de départ. Si l’on veut vraiment mettre le jeu en pause il faudra faire autrement!

ETAPE 9 : Changement des touches de contrôle du joueur en ZQSD

Je voulais également que l’on puisse facilement contrôler le joueur avec les touches ZQSD (plus pratiques que les touches Haut Bas Droite Gauche, pour avoir la main gauche sur le clavier et la droite sur la souris).

Pour cela je suis allée dans :

Edit > Project Settings > Input

et j’ai remplacé les touches alternatives par celles qui m’intéressaient.

Télécharger les fichiers Unity

Ci-dessous tu trouvera un lien avec le projet en .zip que tu peux ouvrir sur Unity avec tous les éléments qui ont permis de le créer. S’il y a des choses que tu veux regarder plus en détail pour comprendre comment certaines choses fonctionnent n’hésite pas à le télécharger.