Différences entre les versions de « Creation Kit : Packages »

De Wiwiki
Aller à la navigation Aller à la recherche
(Page créée avec « {{Lien retour | page= Tutoriels}} Tutoriel traduit du wiki officiel: [http://www.creationkit.com/Bethesda_Tutorial_Packages Original] =Résum... »)
 
Ligne 101 : Ligne 101 :
=Créer un nouveau Package=
=Créer un nouveau Package=


We've seen how to use existing "default" packages to build a schedule. What about making a new package specifically for Bendu? Let's say we want him to patrol the exterior around his house at a specific time during the day.
Nous avons vu comment utiliser les packages "default" pour créer des emplois du temps. Mais pourquoi ne pas créer un package spécialement pour Bendu ? Disons que l'on veut qu'il "patrouille" à l'intérieur de sa maison à certains moments de la journée.  


First, make a new package by right-clicking on the Package list and selecting "New". You'll get a blank package window that looks like this:
D'abord, créez un nouveau package en cliquant-droit sur la liste des packages et sélectionnez "New". Vous allez avoir une fenêtre vide comme celle-là :


[[Image:Package_Tutorial_NewPackage1.jpg]]
[[Image:Package_Tutorial_NewPackage1.jpg]]


By default, the Travel template is selected - but we want to make a Patrol, so change the dropdown to Patrol. Note that the list of Package Data changes - the Patrol template requires different data than the Travel template. Now we have a blank Patrol package, ready to fill in some data for the specific package for Bendu:
Par défaut, le template "Travel" est sélectionné, mais on veut créer une patrouille donc changez l'option pour "Patrol".
Notez que la liste des "packages data" a changé, le template de patrouille nécessitant des données différentes du "Travel". Maintenant on a un package de patrouille vide, prêt à être completé avec des données spécifiques à Bendu :


[[Image:Package_Tutorial_NewPackage2.jpg]]
[[Image:Package_Tutorial_NewPackage2.jpg]]


The [[Patrol_(Procedure)|Patrol procedure page]] has the details for the data on this package. For now, the only things we need to specify on this package are:
Pour avoir tous les détails sur les données possibles de ce package, regardez sur la page du wiki de Bethesda (http://www.creationkit.com/Patrol_%28Procedure%29).  
* Patrol Start - where should Bendu start his patrol route?
Pour l'instant nous n'aurons besoin que de deux données :
* Schedule - what time of day should he run this package?
* Départ de la patrouille : où Bendu doit-il commencer sa patrouille ?
* Emploi du temps : à quelle heure Bendu doit utiliser ce package ?


We haven't yet made a patrol route for Bendu, so let's load up the exterior and set up a simple one for him. (If you have the interior loaded, double-clicking on the yellow door marker is a quick way to get to the exterior; otherwise double-click on MixwaterMillExterior in the cell list for the Tamriel worldspace.)
Nous n'avons pas encore fait le chemin de patrouille pour Bendu donc chargez l'extérieur et créez un chemin simple pour lui (si vous avez l'intérieur de la maison chargé, double-cliquez sur le marqueur jaune. C'est un lien rapide vers l'extérieur de la maison. Sinon double-cliquez sur MixwaterMillExterior dans la liste des cellules dans le worldspace Tamriel).


If you're not familiar with linked references, the [[Bethesda_Tutorial_Encounters|Encounters Tutorial]] is a good place to start. For now, let's just create a quick 3-point patrol route:
Créons un rapide chemin de patrouille avec trois points :
# Drop an XMarkerHeading into the render window.
# Placez un XMarkerHeading (vous pouvez le chercher dans la fenêtre d'objet en sélectionnant *all à la fin de la liste et en recherchant ensuite dans la case prévue à cet effet) dans la fenêtre de rendu (render window).
# Duplicate it twice with CTRL-D.
# Dupliquez-le deux autres fois avec la commande CTRL-D.
# Move the 3 markers into a nice patrol route, then link them together using the Linked Ref tab on each reference.
# Déplacez les trois marqueurs pour former un chemin correct, ensuite, liez-les grâce aux "linked references" dans l'onglet approprié.


You should end up with something looking like this (the exact locations of the patrol markers doesn't matter):
Pour créer des références liées :
1. Double-cliquez sur le premier marqueur et ouvrez l'onglet "Linked Ref".
2. Double-cliquez sur la zone blanche vide et une boite de dialogue "Choose Reference" va apparaitre.
3. Cliquez sur "Select Reference in Render Window" et double-cliquez sur le deuxième marqueur. Ouvrez ensuite la fenêtre du deuxième marqueur et faites la même chose avec le troisième marqueur.
 
Une ligne doit maintenant relier les trois points comme ça :


[[Image:Package_Tutorial_NewPackage3.jpg]]
[[Image:Package_Tutorial_NewPackage3.jpg]]


Now, in the package window, select Patrol Start and click the button on the right (it will initially say "Linked Ref". This will allow you to select the data for the Patrol Start - select the "Specific Reference" radio button and select one of your new patrol points (it doesn't matter which since they are all linked together in a circle).
Maintenant, dans la fenêtre des packages, sélectionnez "Patrol Start" et cliquez sur le bouton à droite (ça devrait dire "Linked Ref". Cela vous autorisera à sélectionner les données pour le départ de la patrouille : sélectionnez le bouton "Specific Reference" et sélectionnez un de vos points de patrouille (n'importe lequel puisqu'ils sont liés ensemble).


[[Image:Package_Tutorial_NewPackage4.jpg]]
[[Image:Package_Tutorial_NewPackage4.jpg]]


The second thing we wanted to do was specify when Bendu should run this package (otherwise this will be the only thing he does when we put it on his package stack). Switch to the Schedule tab in the package window, and let's say he should walk around outside during the morning between 10am and 12pm:
La deuxième chose que l'on voulait faire était de définir quand Bendu doit utiliser ce package (sinon Bendu ne ferait que ça si l'on placerait le package dans sa liste). Passez dans l'onglet Schedule dans la fenêtre des packages et disons que notre Bendu devra se promener dehors le matin entre 10h et midi :


[[Image:Package_Tutorial_NewPackage5.jpg]]
[[Image:Package_Tutorial_NewPackage5.jpg]]


The only thing left to do is give the package a name - let's say GSQBenduPatrol10x2, keeping with the standard naming conventions. Hit OK to close the window and we're done making a new package.
La dernière chose à faire est de donner un nom à ce package, nommons-le GSQBenduPatrol10x2, en gardant les règles de nomination. Appuyez sur OK puis fermer la fenêtre. Nous voilà avec un nouveau package !
 
Maintenant que l'on a crée notre package, il reste à l'ajouter à la liste de package de Bendu pour lui faire changer son comportement. Trouvez notre nouveau package dans la section Package de la fenêtre d'objet (Object Window) et placez-le dans la liste de Bendu (AI Package List).  


Now that we've made the new package, we have to add it to Bendu's package list in order to actually change his behavior. Find the new package in the Package section of the Object window, and drag it into Bendu's AI Package List. By default, all new packages are placed at the bottom of the actor's package list, but we want this new package to go to the top (or at least above the DefaultSandboxHomeowner package - otherwise it will never run because the DefaultSandboxHomeowner package is always valid). Use the << arrow key to move it to the top of Bendu's stack:
Par défaut, tous les nouveaux packages sont placés à la fin de la liste, mais nous voulons que ce nouveau soit tout en haut (ou au moins au dessus le package DefaultSandboxHomeowner, sinon le package ne sera jamais utilisé puisque le DefaultSandBox est toujours valide rappelez-vous). Utilisez les touches directionnelles pour bouger le package tout en haut de la liste :


[[Image:Package_Tutorial_NewPackage6.jpg]]
[[Image:Package_Tutorial_NewPackage6.jpg]]


Hit OK to close Bendu's actor window and save your plugin. Go into the game to see Bendu do his new patrol:
Appuyez sur OK et fermez la fenêtre de Bendu puis sauvegardez votre mod. Chargez le jeu pour voir notre Bendu faire sa petite promenade :


  coc MixwaterMillExterior
  coc MixwaterMillExterior
  set gamehour to 10
  set gamehour to 10


That's it - you now know how to set up an actor's packages using existing or new packages. Most of the time, the premade [[Package Templates]] will provide all the functionality you need. But, if you find you need even more specialized behavior, you can even [[Creating_a_new_Package_Template|build your own Package Template]].
Et voilà ! Maintenant vous savez comme créer un package existant ou en créer un nouveau. La plupart du temps, les Package Templates vous donnera toutes les fonctionnalités que vous voulez. Mais si vous désirez un comportement spécial, vous pouvez créer votre propre Package template.

Version du 17 août 2013 à 20:43


Tutoriel traduit du wiki officiel: Original

Résumé

Ce tutoriel va vous montrer comment mettre en place des packages (la structure qui contrôle le comportement des personnages) sur un acteur pour le faire bouger dans le jeu.

Vous apprendrez :

  • Comment les listes de packages fonctionnent
  • Comment créer un emploi du temps quotidien simple pour un PNJ
  • Comment créer un nouveau package

Packages et les listes

Un package est un terme utilisé dans le Creation Kit pour désigner les structures qui contrôlent le comportement d'un acteur (un PNJ). A chaque instant, un acteur est toujours soumis à un et un seul package, qui lui dit quoi faire : dormir, manger, se promener, suivre un itinéraire de patrouille, travailler à la forge, etc.

Comment un acteur peut savoir quel package utiliser à quel moment ? C'est là qu'intervient la liste de packages (Package Stack). L'idée est que chaque PNJ possède une liste de package qu'il peut utiliser. Le jeu va ensuite régulièrement parcourir cette liste, utilisant le premier de la liste puis les utilisant un par un en descendant pour trouver celui qu'il peut utiliser. Un package est valide si :

  • Ses conditions sont vraies et
  • L'heure correspond à celle de son agenda.

Un NPC va toujours utiliser le premier package valide dans la liste. Les PNJ proches du joueur vont régulièrement mettre à jour leur liste de package à la différence de ceux dans des zones non-chargées.

Créer un emploi du temps simple

Voyons maintenant comment mettre en place ces packages en donnant à notre bon Bendu Olo un emploi du temps. (Veuillez avoir terminé le turoriel Créer un acteur avant).

Double-cliquez sur GSQBenduOlo et cliquez sur l'onglet AI Packages, qui doit ressembler à ceci :

Package Tutorial PackageList.jpg

Vu qu'il n'y a aucun package dans la liste, Bendu ne fait que rester à sa place toute la journée. Faisons-le faire quelque chose pour qu'il agisse plus comme un être humain.

Pour ajouter un package à un acteur, cliquez-droit sur la liste et sélectionnez "Add". Vous pouvez aussi prendre un package déjà fait depuis la fenêtre d'objet (onglet Character > Package). Utilisons la deuxième façon : descendez dans la liste et trouvez les packages nommés "Default..." (ce nom est utilisé pour indiquer que le package n'est lié à rien de particulier et peut être utilisé par n'importe qui).

Package Tutorial DefaultPackages.jpg

On peut ainsi créer un emploi du temps simple pour Bendu grâce à ces packages. Disons que l'on veut qu'il prenne son petit-déjeuner et son diner chez lui, qu'il dorme la nuit et sinon se promène dans sa maison.

Pour manger, regardons le package "eat" qui existe déjà : utilisons DefaultEatEditorLoc8x1 pour le petit-déjeuner et DefaultEatEditorLoc18x1 pour le diner.

Note : pour les packages qui ont des horaires, les noms utilisés sont "DEBUTxDUREE". Donc 8x1 indique un package qui commence à 8h du matin et dure 1 heure. Attention quand même, le nom peut être faux...

Vérifions que nos packages correspondent à leurs noms. Une heure dans le jeu correspondant à 3m dans la réalité (20min dans le jeu = 1min en vrai donc 24h = 72min).

Ouvrez les deux packages et sélectionnez leur onglet "Schedule" (emploi du temps) qui doit ressembler à ceci :

Package Tutorial DefaultEatEditorLoc8x1.jpg

Leurs noms sont corrects ! Ces packages ont les horaires attendus. Parfait, ajoutez-les à la liste de Bendu qui ressemblent maintenant à ça :

Package Tutorial PackageList2.jpg

Comme on l'a évoqué avant, l'ordre de la liste est très important puisque l'acteur va toujours utiliser le premier package valide. Pour ces deux packages, ce n'est pas très important puisqu'ils ne sont pas valides au même moment. Entre 8 et 9h du matin, "DefaultEatEditorLoc8x1" est valide mais entre 6 et 7h du soir, c'est DefaultEatEditorLoc18x1 qui le devient. A toute autre moment, aucun des deux n'est valide.

Si pour l'instant l'ordre n'a donc que peu d'importance, faites attention, car il le deviendra avec les prochains packages qu'on va ajouter.


On voulait aussi faire dormir Bendu la nuit, on peut trouver un package pour ça dans la liste "default" : DefaultSleepEditorLoc1x8 qui n'est pas le meilleur choix mais permet d'illustrer l'importance de l'ordre dans la liste des packages.

Si vous faites attention, vous avez pu noter que ce package, valide de 1h à 9h du matin, empiète sur le package du petit-déjeuner (DefaultEatEditorLoc8x1) qui est valide de 8 à 9h du matin. C'est ici que l'ordre importe !

Si nous mettons le package pour dormir en haut de la liste comme ceci :

Package Tutorial PackageList3.jpg

Comme c'est le plus haut qui "gagne", à 8h du matin, Bendu va faire la grasse-matinée puisque le package de petit-déjeuner, plus bas, de sera jamais utilisé.

Pour faire fonctionner tout cela, il va falloir mettre le package pour dormir en dessous de celui pour le petit-déjeuner dans la liste :

Package Tutorial PackageList4.jpg

Désormais, Bendu va aller dormir à 1h du matin comme prévu (c'est le seul package valide à ce moment-là) puis, à 8h, Bendu va se lever et prendre son petit-déjeuner puisque ce package est le plus haut dans la liste. Bendu n'aura donc que 7h de sommeil sur les 8 prévues par le package mais il ne loupera pas son petit-déjeuner !

Nous avons maintenant une bonne partie de la journée de Bendu couverte par un emploi du temps : il mange pendant 2h et dort pendant 7. On pourrait continuer à remplir sa journée avec des packages à horaires mais c'est toujours une bonne idée de lui donner un package de recours quand rien n'est valide. Ce package ne doit avoir ni conditions ni horaires et donc être placé en toute fin de liste.

On utilise souvent un package "Sandbox" pour cet usage. Cela laisse le PNJ bouger dans son environnement proche et choisir quoi faire presque au hasard. Très pratique quand on n'a pas besoin de faire faire quelque chose à un PNJ tout en le laissant se comporter naturellement.

Ici, DefaultSandboxHomeowner est un bon choix. Ouvrez-le et regardons ses données :

Package Tutorial DefaultSandbox.jpg

Sa "location" indique "Near editor location, radius 1500" ce qui veut dire qu'il va "sandbox" (on y mettra ce qu'on veut) autour de l'endroit où il est avec un périmètre de 1500 unités (assez pour couvrir un petit intérieur). Si vous regardez dans les autres packages "default" de Bendu, vous pouvez voir qu'ils utilisent tous l'option "Near editor location". Cela ne spécifie aucune localisation précise dans le monde et donc peut être utilisé par n'importe qui.

Une autre option intéressante est "Unlock On Arrival = True". Cela déverrouille les portes de l'endroit dès que le PNJ commence à utiliser ce package. Très pratique puisque notre Bendu est sensé accueillir le joueur pour lui donner une quête.

Vous pouvez regarder les onglets de conditions et d'emploi du temps (schedule) pour vérifier qu'il n'y a rien dedans (et donc toujours valide, ce qu'on cherche précisement).

Mettez le package dans la liste de Bendu, tout en bas. Il a maintenant un emploi du temps complet :

Package Tutorial PackageList5.jpg

Si vous voulez voir Bendu en action, chargez le jeu et déplacez vous vers lui:

coc MixwaterMillWorkersHouse

Pour le voir à différentes période, changez simplement l'heure du jeu :

set gamehour to 2

Bendu a désormais de simples comportements dans sa maison (manger, dormir, se déplacer). S'il ne veut pas dormir et vous demande de partir, utilisez la commande toggledetection, il ignorera votre présence.


Créer un nouveau Package

Nous avons vu comment utiliser les packages "default" pour créer des emplois du temps. Mais pourquoi ne pas créer un package spécialement pour Bendu ? Disons que l'on veut qu'il "patrouille" à l'intérieur de sa maison à certains moments de la journée.

D'abord, créez un nouveau package en cliquant-droit sur la liste des packages et sélectionnez "New". Vous allez avoir une fenêtre vide comme celle-là :

Package Tutorial NewPackage1.jpg

Par défaut, le template "Travel" est sélectionné, mais on veut créer une patrouille donc changez l'option pour "Patrol". Notez que la liste des "packages data" a changé, le template de patrouille nécessitant des données différentes du "Travel". Maintenant on a un package de patrouille vide, prêt à être completé avec des données spécifiques à Bendu :

Package Tutorial NewPackage2.jpg

Pour avoir tous les détails sur les données possibles de ce package, regardez sur la page du wiki de Bethesda (http://www.creationkit.com/Patrol_%28Procedure%29). Pour l'instant nous n'aurons besoin que de deux données :

  • Départ de la patrouille : où Bendu doit-il commencer sa patrouille ?
  • Emploi du temps : à quelle heure Bendu doit utiliser ce package ?

Nous n'avons pas encore fait le chemin de patrouille pour Bendu donc chargez l'extérieur et créez un chemin simple pour lui (si vous avez l'intérieur de la maison chargé, double-cliquez sur le marqueur jaune. C'est un lien rapide vers l'extérieur de la maison. Sinon double-cliquez sur MixwaterMillExterior dans la liste des cellules dans le worldspace Tamriel).

Créons un rapide chemin de patrouille avec trois points :

  1. Placez un XMarkerHeading (vous pouvez le chercher dans la fenêtre d'objet en sélectionnant *all à la fin de la liste et en recherchant ensuite dans la case prévue à cet effet) dans la fenêtre de rendu (render window).
  2. Dupliquez-le deux autres fois avec la commande CTRL-D.
  3. Déplacez les trois marqueurs pour former un chemin correct, ensuite, liez-les grâce aux "linked references" dans l'onglet approprié.

Pour créer des références liées : 1. Double-cliquez sur le premier marqueur et ouvrez l'onglet "Linked Ref". 2. Double-cliquez sur la zone blanche vide et une boite de dialogue "Choose Reference" va apparaitre. 3. Cliquez sur "Select Reference in Render Window" et double-cliquez sur le deuxième marqueur. Ouvrez ensuite la fenêtre du deuxième marqueur et faites la même chose avec le troisième marqueur.

Une ligne doit maintenant relier les trois points comme ça :

Package Tutorial NewPackage3.jpg

Maintenant, dans la fenêtre des packages, sélectionnez "Patrol Start" et cliquez sur le bouton à droite (ça devrait dire "Linked Ref". Cela vous autorisera à sélectionner les données pour le départ de la patrouille : sélectionnez le bouton "Specific Reference" et sélectionnez un de vos points de patrouille (n'importe lequel puisqu'ils sont liés ensemble).

Package Tutorial NewPackage4.jpg

La deuxième chose que l'on voulait faire était de définir quand Bendu doit utiliser ce package (sinon Bendu ne ferait que ça si l'on placerait le package dans sa liste). Passez dans l'onglet Schedule dans la fenêtre des packages et disons que notre Bendu devra se promener dehors le matin entre 10h et midi :

Package Tutorial NewPackage5.jpg

La dernière chose à faire est de donner un nom à ce package, nommons-le GSQBenduPatrol10x2, en gardant les règles de nomination. Appuyez sur OK puis fermer la fenêtre. Nous voilà avec un nouveau package !

Maintenant que l'on a crée notre package, il reste à l'ajouter à la liste de package de Bendu pour lui faire changer son comportement. Trouvez notre nouveau package dans la section Package de la fenêtre d'objet (Object Window) et placez-le dans la liste de Bendu (AI Package List).

Par défaut, tous les nouveaux packages sont placés à la fin de la liste, mais nous voulons que ce nouveau soit tout en haut (ou au moins au dessus le package DefaultSandboxHomeowner, sinon le package ne sera jamais utilisé puisque le DefaultSandBox est toujours valide rappelez-vous). Utilisez les touches directionnelles pour bouger le package tout en haut de la liste :

Package Tutorial NewPackage6.jpg

Appuyez sur OK et fermez la fenêtre de Bendu puis sauvegardez votre mod. Chargez le jeu pour voir notre Bendu faire sa petite promenade :

coc MixwaterMillExterior
set gamehour to 10

Et voilà ! Maintenant vous savez comme créer un package existant ou en créer un nouveau. La plupart du temps, les Package Templates vous donnera toutes les fonctionnalités que vous voulez. Mais si vous désirez un comportement spécial, vous pouvez créer votre propre Package template.