+ All Categories
Home > Documents > Role Playing Games

Role Playing Games

Date post: 06-Jan-2016
Category:
Upload: moswen
View: 37 times
Download: 0 times
Share this document with a friend
Description:
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. - PowerPoint PPT Presentation
Popular Tags:
30
Game AI 2007 CASANAS Sylvain PASTOR Antoine PERCHET Frederic VERHEYE Fabien
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