1 / 30

Role Playing Games

Role Playing Games. Game AI 2007 CASANAS Sylvain PASTOR Antoine PERCHET Frederic VERHEYE Fabien. Plan. Principe Architecture Animation Analyse de RPG Modèles de comportement Avenir du RPG. Principe. Issu du JDR papier Un personnage ou groupe à incarner Des quêtes à accomplir.

moswen
Download Presentation

Role Playing Games

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RolePlayingGames Game AI 2007 CASANAS Sylvain PASTOR Antoine PERCHET Frederic VERHEYE Fabien

  2. Plan • Principe • Architecture • Animation • Analyse de RPG • Modèles de comportement • Avenir du RPG

  3. Principe • Issu du JDR papier • Un personnage ou groupe à incarner • Des quêtes à accomplir

  4. Principe • Différents types de JDR • Classique : Baldur’s Gate, Fallout, NeverwinterNigths • Action/aventure : Oblivion, Gothic • Hack ’n slash : Diablo, Titan Quest • MMORPG : WoW, Everquest • Tactical : FF Tactics, Golden Sun • … • Différents univers • Médiéval Fantastique • Post Apocalyptique • Space Opéra • Contemporain • …

  5. Personnages • Définis par une feuille de personnage Fallout 2

  6. Personnages • Possèdent un inventaire NeverWinterNigths2

  7. Personnages Joueurs • Un personnage unique ou un groupe • Acteurs de l’histoire • Contrôlés par le joueur • Evolue au fil du jeu NeverWinterNigths2

  8. Architecture Moteur Graphique Jeu Moteur de son Contexte Carte Element Objet Personnage Sorts PNJ Journal PJ Quête Inventaire Feuille de Perso Compétence Dons IA_PNJ Moteur physique

  9. Animation d’un personnage • Model du personnage structuré en 2 parties : Mesh Maillage du model 3D Squelette Anatomie Vertex Les sommets du maillages Bone Os du squelette

  10. Animation d’un personnage • 2 models de skinning : • Rigid skinning • Smooth skinning • Chacun de ces bones a une influence appelée “un poids” sur un vertex. • Pour chaque vertex on récupère les matrices de rotation des n bones qui l’influencent ainsi que les poids correspondant. • On modifie les vertices et les normales au vertex avec la formule suivante : • V = M0*V*W0 + M1*V*W1 + … + Mn*V*Wn • On récupère la rotation du bone. • On transforme cette rotation dans le repère du mesh. • On récupère les vertices influencés par ce bone dans le mesh. • On applique la rotation sur chaque vertex.

  11. Animation d’un personnage • Animé par le squelette Mesh Maillage du model 3D Squelette Contient les animations Vertex Les sommets du maillages Bone Os du squelette Vertices à influencer Vertices attachés au bone Bonesinfluençants Poids des bones Animation Clés d’animation

  12. Animation d’un personnage • Interpolation de mouvements • Une animation se compose de keyframes (translation et rotation sur un bone à l’instant ti) • Connaître à chaque instant t les positions des bones • On récupère les 2 keyframes bornant t • On utilise une formule d’interpolation de mouvement pour trouver la position des bones à l’instant t

  13. Animation d’un personnage • Interpolation de mouvements avec tangentes • Permet des mouvements plus souple • Direction dans laquelle on arrive ou on part : tangente in et tangente out

  14. Animation d’un personnage • Composition de mouvements (Animation blending) • Enchainement de mouvements : même principe d’interpolation mais entre 2 keyframes d’animations différentes. • Un poids croissant ou décroissant sur les animations. • Cross fade, continuous blending.

  15. Animation d’un personnage • Composition de mouvements (Animation blending) • Mélange de mouvements : Feather blending. • Exemple : un personnage qui marche et fait tourner son épée. • Un modificateur de poids sur chaque os d’une animation : • Anim1 (marcher) : 100% sur les jambes, 20% sur les bras. • Anim2 (tourner épée) : 100% sur les bras, 0% sur les jambes.

  16. Animation d’un personnage • Motion Capture Making of The Witcher

  17. Etude détaillée • Interactions PNJ : • Quêtes : Oblivion • Dialogues : Fallout 2 • Combat : NeverWinterNigths 2

  18. Analyse de RPG • Journal de quêtes • Définie par une priorité • Une quête divisée en « quest stages » avec une valeur indiquant l’avancement de la quête • Mise à jour du journal • Evolution du dialogue des PNJ • Mise à jour du marqueur sur la carte Exemple 10 : quête acceptée 20: 1ère étape validée 30 : 2ème étape validée 40 : quête terminée

  19. Analyse de RPG • Journal de quêtes Oblivion

  20. Analyse de RPG • Journal de quêtes Oblivion Construction Set

  21. Analyse de RPG • IA des PNJ de Fallout 2 • Les fichiers .ssl • procedure pickup_p_proc : Si le joueur tente de voler le PNJ • procedure talk_p_proc : Début du dialogue • procedure destroy_p_proc : Décès du PNJ • procedure look_at_p_proc : Le joueur regarde le PNJ • procedure description_p_proc : Le joueur regarde le PNJ avec attention • procedure use_skill_on_p_proc : Le joueur utilise une compétence sur le PNJ. • procedure damage_p_proc : Le PNJ perd des points d'impact. • procedure map_enter_p_proc: Le joueur entre sur la map du PNJ. C'est ici par exemple qu'est définie la team du PNJou son ia.

  22. Analyse de RPG • Exemple de dialogue proceduretalk_p_procbegin Evil_Critter:=0; Slavery_Tolerant:=SLAVE_VERY_INTOLERANT; Karma_Perception:=KARMA_PERCEPTION1; if (dude_iq < 4) thenbegin start_gdialog(NAME,self_obj,4,-1,-1); gSay_Start; call Node012; gSay_End; end_dialogue; end else if (global_var(GVAR_ARROYO_DOG) == DOG_FINISHED_BAD) thenbegin floater(128); end else if (global_var(GVAR_ARROYO_DOG) == DOG_ACCEPTED) thenbegin set_local_var(LVAR_Herebefore,1); start_gdialog(NAME,self_obj,4,-1,-1); gSay_Start; call Node005; gSay_End; end_dialogue; end {129}{}{J'ai à faire, imbécile. Va jouer ailleurs.} {130}{}{Gaaaah…} {114}{}{As-tu retrouvé Fumace ?} {115}{}{Non, pas encore. Où as-tu dit que se trouvait le terrain de chasse ?} {116}{}{Non, pas encore.} {128}{}{Fumace me manque. Pourquoi ne peux-tu pas le sauver ? Tu es l'Etre Elu.} procedure Node012 begin Reply(129); NLowOption(130,Node999); End procedure Node005 begin Reply(114); NOption(115,Node004,004); NOption(116,Node999,004); end

  23. Analyse de RPG • Autres procédures procedure damage_p_procbegin if (source_obj == dude_obj) then begin set_local_var(LVAR_Personal_Enemy,1); set_global_var(GVAR_ENEMY_ARROYO,1); end end procedure pickup_p_procbegin if (source_obj == dude_obj) then begin set_local_var(LVAR_Hostile,2); end end

  24. Modèles de comportement Charge CPU • Dépend de la distance au joueur • LOD (Level of detail) • Dépend du type de créature 1 PJ 5 2 25% 4 4 5 5 3 10% 3 3 4 5% 2 1 2 4 1 5 2% 5 5 4 3 2 3 4 4

  25. Modèles de comportement • Animaux •  Animaux « d ’ambiance » : oiseaux, insectes… • Déplacements basiques… • Autres animaux : ours, loups, cerf… • Algos de « vie » : nourriture, protection, chasse, errance Oblivion

  26. Modèles de comportement • Ours Normal errer(); si (a_faim() et voit_nourriture() ) { aller_a(nourriture-vue); animation(manger); } Est_attaque while(est_vivant(attaquant)) {attaquer();}

  27. Modèles de comportement • Villageois • Errent dans la ville • Occupation naturelles en fonction du moment de la journée • Déplacements dans la foule Assassin’screed

  28. Modèles de comportement • Marchand • Accroche du PJ • Comportements dépendant des actions du PJ • Achats précédents • Aide apportée • Négociation • Popularité dans la ville

  29. Modèles de comportement • Garde • Suit un tour de garde • Renseigne le PJ • Enquête sur les évènements suspects (cadavre, inconnu…) • Donne l ’alerte

  30. Conclusion

More Related