lundi 9 avril 2012

Contrainte 2 - retour sur ce qui a été acompli

Salut,

Notre prototype de Vulturine est maintenant terminé (ou du moins nous n'avons plus le temps de continuer), la présentation devant Ubi est mercredi... hopefully on vous dira jeudi que ça s'est bien passé, mais reste qu'on est confiants et fiers de ce qu'on a réussi à livrer ! 

Je vais maintenant repasser sur les aspects sur lesquels j'ai travaillé pendant ces deux mois. 

Animation

Mon rôle principale étant animatrice j'ai réalisé le tiers des animations de Joanna et de Bird ( les deux autres tiers ont étaient réalisé par Micheal et Youssef ). Joanna a été particulièrement agréable à animer grâce au rig faciale de Youssef. C'est la première fois que j'utilisais ce genre de rig, il rend Joanna bien plus vivante. 

[vidéo s'en vient bientôt]



Set up des maps

Je me suis également occupé de séparé nos map en différents levels pour nous permettre de travaillé tous en même temps sur nos layers respectifs. Je trouve que c'est vraiment une bonne façon de travailler, elle nous à permet d'avancer rapidement, chacun sur nos choses. Nous avons séparer nos maps de la façon suivante : 
      • LA : pour tout l'environnement et le lightning (par viro)
      • LD : pour le Kismet (puzzles, navigation, pieges, Bird, par Youssef et moi)
      • FX : pour les particules et les destruction (par Micheal et Agustin)


Kismet

J'ai passé beaucoup de temps à rendre le prototype jouable avec le plus des mécaniques que l'on voudrait avoir dans le jeu final. Nous n'avons pas de programmeurs sur le projet, la plupart de ces mécaniques sont donc faites grâce à du Kismet. Je vais expliquer rapidement comment j'ai fait marcher quelques unes de nos mécaniques. 
    • Puzzles
C'était notre principale mécanique de la première partie de nos niveaux et le kismet le plus imposant. Accrochez vous ;) 



La base de ce kismet vient de scripts trouver sur internet (ici http://www.hourences.com/tutorials-ue3-kismet-interface/) qui permettent de créer un interface dans Kismet. Attention, cette façon de faire est extrêmement lourde et instable (je m'en suis rendu compte quand le Kismet commençait à prendre de l'ampleur), ça marche pour notre proto mais il nous faudra faire ça autrement pour le jeu final. 

















Ici on voit la première partie du Kismet : lorsque Joanna arrive dans un trigger proche de l'altar, le joueur peut appuyer "E". Il se passe alors plusieurs choses : 
  • #1. On retire le contrôle de Joanna au joueur et on change la camera pour une cam contextuelle au puzzle. Cela fait on render le HUD qui permet au joueur de résoudre le puzzle. 
  • #2. En même temps on lance le remote event "puzzle 2" qui permet à des partie de kismet complètement différentes (le comportement de Bird en l'occurence) de partir à ce moment là. Très pratique pour garder un Kismet ordonné (shortcut : Ctrl+R+click pour créer un remote event)
  • #3. Joanna est téléporté devant l'altar (des fois que le joueur ait appuyé E lorsqu'elle ne se trouvait pas à la bonne place. Personne ne s'en rendra compte car cet téléportation se fait en même temps qu'un cut de caméra). Puis Joanna joue les anim demandées (ici 'mettre la clé' puis son 'idle de puzzle'). Vous pouvez vous référer aux post de contrainte 1 (Chase : Gang of New York) sur le pawn anim pour plus d'info sur comment fonctionnent ces nodes. 
  • #4. Node de Hourences, allez voir sur son site pour les détails de leur fonctionnement. J'ai utiliser deux Render Texture, un pour chaque icone (chaque groupe de bloc) et un Render Mouse. 

D'après notre gamedesign, les bloc se déplacent sur des trajets pré-définis et s’arrêtent sur des position pré-définies elles aussi. J'ai donc commencé par décider d'un chiffre pour chaque position de chaque bloc et leur attribué un 'int' variable selon leur position de départ. 
  • #1. Avec une switch sans increment amount je track la position du bloc. 
  • #2. Variable qui contient la position du bloc. 
  • #3. Je set la nouvelle position du bloc puis joue le matinée qui l’amènera au bon endroit. 
  • #4. Selon la position du bloc et le click du joueur (gauche ou droite) je joue le matinée qui place les bloc à sa nouvelle position. Dans les settings du matinée Rewind on Play et No Reset on Rewind doivent être coché pour que le matinée puisse jouer plus qu'une fois et que le bloc effectue le mouvement de l'endroit ou il se trouve au moment du click. 
Dans certains cas il faut aller un peu plus loin : si un bloc est dans le chemin de celui qui doit bouger ce dernier restera sur place. Il faut donc vérifier la position des autres blocs avant de faire avancer ou pas le morceau choisi. Ici l'utilisation des 'Named variables' est très importante, pour garder le kismet propre mais surtout pour ne pas se perdre. 




Une autre sécurité importante : anti-button smacher security. En effet si le joueur envoie des commandes répétées avant que les blocs aient fini leurs mouvements, ils enchaînerons sur le mouvement suivant en cour de route et se retrouveront dans des positions assez random, complètement hors des tracks. Le trick est  de simplement bloquer les intervention du joueur pendant 1 seconde (le temps des animation des blocs). 


Enfin dernière étape : repérer la fin du puzzle lorsque les blocs sont à la bonne place et redonner le contrôle de Joanna au joueur. 
Cette séquence est lancé dès le début du puzzle et vérifie à chaque instant si les blocs sont tous à la bonne place. 

Petit mot de fin : avec ce genre de Kismet monstre, il est important de rester organisé, vive les sub-séquences. 

    • Corruption et limite de temps




    • Monkey bars



 



[WIP, le reste arrive d'ici demain]



1 commentaire: