Download ppt - Role Playing Games

Transcript
Page 1: Role Playing Games

Game AI 2007

CASANAS Sylvain

PASTOR Antoine

PERCHET Frederic

VERHEYE Fabien

Page 2: Role Playing Games

PrincipeArchitectureAnimationAnalyse de RPGModèles de comportementAvenir du RPG

Page 3: Role Playing Games

Issu du JDR papier

Un personnage ou groupe à incarner

Des quêtes à accomplir

Page 4: Role Playing Games

Différents types de JDRClassique : Baldur’s Gate, Fallout, NeverwinterNigthsAction/aventure : Oblivion, GothicHack ’n slash : Diablo, Titan QuestMMORPG : WoW, EverquestTactical : FF Tactics, Golden Sun…

Différents universMédiéval FantastiquePost ApocalyptiqueSpace OpéraContemporain…

Page 5: Role Playing Games

Définis par une feuille de personnage

Fallo

ut 2

Page 6: Role Playing Games

Possèdent un inventaire

Neve

rWin

terN

igt

hs2

Page 7: Role Playing Games

Un personnage unique ou un groupe

Acteurs de l’histoire Contrôlés par le joueurEvolue au fil du jeu

Neve

rWin

terN

igt

hs2

Page 8: Role Playing Games

Contexte

Moteur Graphiqu

e

Moteur de son

Jeu

Carte

Element Objet

Personnage

PNJ

PJ

IA_PNJ

Journal

Quête InventaireFeuille de

Perso

Compétence

Dons Sorts

Moteur physiqu

e

Page 9: Role Playing Games

Model du personnage structuré en 2 parties :

SqueletteAnatomie

MeshMaillage du model 3D

VertexLes sommets du maillages

BoneOs du squelette

Page 10: Role Playing Games

2 models de skinning :Rigid skinningSmooth skinning

• 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.

• 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

Page 11: Role Playing Games

Animé par le squelette

SqueletteContient les animations

MeshMaillage du model 3D

VertexLes sommets du maillages

BoneOs du squelette

Bones influençantsPoids des bones

Vertices à influencer

Vertices attachés au bone

AnimationClés d’animation

Page 12: Role Playing Games

Interpolation de mouvementsUne 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

Page 13: Role Playing Games

Interpolation de mouvements avec tangentesPermet des mouvements plus soupleDirection dans laquelle on arrive ou on part :

tangente in et tangente out

Page 14: Role Playing Games

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.

Page 15: Role Playing Games

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.

Page 16: Role Playing Games

Motion CaptureM

akin

g o

f Th

e

Witch

er

Page 17: Role Playing Games

Interactions PNJ :Quêtes : OblivionDialogues : Fallout 2Combat : NeverWinterNigths 2

Page 18: Role Playing Games

Journal de quêtesDéfinie par une prioritéUne quête divisée en « quest stages » avec une

valeur indiquant l’avancement de la quêteMise à jour du journalEvolution du dialogue des PNJMise à jour du marqueur sur la carte

Exemple

10 : quête acceptée20 : 1ère étape validée30 : 2ème étape validée40 : quête terminée

Page 19: Role Playing Games

Journal de quêtesO

blivio

n

Page 20: Role Playing Games

Journal de quêtes

Ob

livion

Con

structio

n

Set

Page 21: Role Playing Games

IA des PNJ de Fallout 2Les 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.

Page 22: Role Playing Games

Exemple de dialogueprocedure talk_p_proc begin Evil_Critter:=0; Slavery_Tolerant:=SLAVE_VERY_INTOLERANT; Karma_Perception:=KARMA_PERCEPTION1;

if (dude_iq < 4) then begin start_gdialog(NAME,self_obj,4,-1,-1); gSay_Start; call Node012; gSay_End; end_dialogue; endelse if (global_var(GVAR_ARROYO_DOG) == DOG_FINISHED_BAD) then begin floater(128); end

else if (global_var(GVAR_ARROYO_DOG) == DOG_ACCEPTED) then begin set_local_var(LVAR_Herebefore,1); start_gdialog(NAME,self_obj,4,-1,-1); gSay_Start; call Node005; gSay_End; end_dialogue; end

procedure Node012 begin Reply(129); NLowOption(130,Node999);End

procedure Node005 begin Reply(114); NOption(115,Node004,004); NOption(116,Node999,004);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.}

Page 23: Role Playing Games

Autres procédures procedure damage_p_proc beginif (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_proc begin if (source_obj == dude_obj) then begin set_local_var(LVAR_Hostile,2); endend

Page 24: Role Playing Games

Dépend de la distance au joueurLOD (Level of detail)

Dépend du type de créature

1

2

22

3

1

3

33

4

4

4

4

4

4

5

5

5

5

5

1

2

3

4

5

PJ

25%

10%

5%

2%

Charge CPU

Page 25: Role Playing Games

Animaux Animaux « d ’ambiance » : oiseaux, insectes…

Déplacements basiques…

Autres animaux : ours, loups, cerf… Algos de « vie » : nourriture, protection, chasse,

errance Ob

livion

Page 26: Role Playing Games

OursNormal errer(); si (a_faim() et voit_nourriture() ) { aller_a(nourriture-vue); animation(manger); }

Est_attaque while(est_vivant(attaquant)) {attaquer();}

Page 27: Role Playing Games

VillageoisErrent dans la villeOccupation naturelles en fonction du moment

de la journéeDéplacements dans la foule

Assa

ssin’s

creed

Page 28: Role Playing Games

Marchand Accroche du PJComportements dépendant des actions du PJ

Achats précédentsAide apportéeNégociationPopularité dans la ville

Page 29: Role Playing Games

GardeSuit un tour de gardeRenseigne le PJEnquête sur les évènements suspects (cadavre,

inconnu…)Donne l ’alerte

Page 30: Role Playing Games

Recommended