JeuxOnLineForumsPlusConnectés : 807 (sites) | 1489 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Répondre
Partager Outils Rechercher
Avatar de Vlad_F
Vlad_F
Roi
 
Avatar de Vlad_F
 
Je suis l'avancée du Memetic AI toolkit depuis sa sortie. C'est un système qui me séduit beaucoup parcequ'il est modulaire et qu'il a une approche beaucoup plus académique que l'AI de bioware.

J'attends la sortie de la version utilisateur 1 (pour l'instant on en est à la developper release 4)

@+
Lien direct vers le message - Vieux
Avatar de Reyan
Reyan [L.D.D]
Roi / Reine
 
Avatar de Reyan
 
mm, personnellement, je lis, je réfléchis (un peu, il est encore tôt ) et je m'étonne moi aussi de tant de méfiance
Très franchement, c'est exactement le genre de trucs que je cherchais pour animer mes gardes dans ma prison, mes rats et mes orcs, mes . . . etc. dire que je me suis fendu d'un tas de machin bancals (bancaux ? ) pour faire tout ca (et que j'ai abandonné la plupart des idées) j'ai pas testé, fautes de temps, et g abandonné tout ca pour faire autre chose
mais si c'est économique, ba ca simplifie achement la vie non ? même plus, ca ouvre vraiment le champ à un tas de trucs drôle . . .


Enfin, peut être que, comme 95% de ce qui est fais sur un module, ca ne seras jamais remarqué par les joueurs, mais tout de même, c'est le genre de trucs qui rend fier de son bébé ca nom ?

bref, juste pour dire que je suis pas mal emballé par ce truc aussi
un énième "à suivre" donc
et tous éclaircissement apportés sur cet apparemment merveilleux système sont les bienvenu
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Nananan Vald_F, t'es pas "heup tou dète" !
Pour l'instant la Developper's Release 5 finale est dispo, et ils bossent sur une beta de la DR6 qui devrais arriver bientôt.
Parmi les apports de cette nouvelle version, on a (il me semble) la gestion de listes d'objets/textes qui servent de paramètres pour les memes (en gros ça économise des SetLocal*), et aussi l'ajout de fonctions déclenchées sur les emitters. Y'a sûrement d'autres trucs, mais bon j'ai pas eu le temps de lire l'intégralité du forum.

En dehors de ça ben j'ai encore pas mal fouillé le système, et en fait le gros problème en l'état actuel des choses c'est que le système est encore en développement, ce qui veut dire qu'on doit développer ses propres memes, générateurs et events. Et là ça devient assez casse-tête.
Personnellement je n'ai pas encore réussi à faire marcher une sequence de memes, ni à faire marcher d'event. Contrairement à ce que je croyais au début, les résultats se font vraiment attendre, ce qui est du au fait que c'est comme si on devait apprendre un nouveau language de programmation; la syntaxe reste la même, mais le principe et les fonctions utilisées sont radicalement différentes, et pas franchement simples

Enfin bon, là je suis sur le point de réussir à faire un comportement de passant simpliste, dès qu'il roule je vous le mets ici intégralement commenté, promis
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
En gros programmer cette IA la ou refaire l'IA de Bioware c'est pareil, faut se tapper le boulot ou attendre que les concepteurs le fassent à notre place
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Citation:
ou attendre que les concepteurs le fassent à notre place
Petit message de David Gaider de chez BioWare à propos de l'IA dans SoU.

Citation:
The overall AI is improved, not the henchmen specifically... and, yes, the generic AI scripts themselves have been changed.
Reste plus qu'à attendre de voir ce que ça va donner
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Attend, t'emballe pas trop vite, ça peut vouloir dire en clair:

- Comme il y a 50 nouveaux sorts et des nouvelles classes, on a bien du modifier quelques lignes dans le script d'IA, histoire que les PNJ possédant l'un et l'autre pensent à les utiliser de temps en temps

Citation:
The overall AI is improved, not the henchmen specifically
Alors cette phrase là, elle me fait à la fois prendre espoir (les mots avant la virgule); mais la suite ne m'annonce rien de bon
Cela sous-entend qu'au vu des nombreuses demandes au sujet des compagnons, Bioware a bien du se résoudre d'améliorer un peu leur IA, MAIS ils veulent rassurer tout le monde en précisant qu'ils ont aussi modifier (un peu, juste pour dire quoi) le reste.
J'extrapole beaucoup, mais je sens encore le gros poisson pas frais se profiler au bout de la canne à pèche
Lien direct vers le message - Vieux
Avatar de Simkim
JOL Simkim
Alpha & Oméga
 
Avatar de Simkim
 
Je ne m'embale pas, je sais qu'entre ce que disent (de façon très vague) les développeurs et ce qu'on trouve généralement dans le jeu, il y a souvent des différences .

En continuant ma lecture du forum, je suis tombé sur un autre passage de David Gaider. Il semblerait que "l'amélioration" principale soit au niveau du choix et de l'ordre des sorts lancés.

Bah, j'ai de quoi être optimiste quand à la nouvelle IA, ça ne peut pas être pire que maintenant, donc ce sera forcément mieux .
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Mouais, peut être qu'ils gagneront en clarté, ça serait pas mal Quoiqu'avec les UDE on peut rajouter des scripts à l'IA de base sans risquer de la perturber.

Bref, j'ai réussi à créer une IA mimétique de PNJ très (très) basique, donc je vais vous en faire part

- Comportement souhaité

Ici le but était qu'un PNJ fasse 2 choses très simples :
- la plupart du temps, se balader sur une petite zone (RandomWalk);
- de temps en temps, se déplacer sur de longues distances
(pour faire une ville un petit peu plus réaliste, enfin personnellement je vois pas souvent des gens dans la rues qui tournent en rond toute la journée, généralement chaque personne va a un endroit précis)

- Memes

Logiquement, on devra créer 2 memes sur chaque citoyen, un par actions souhaitées. A noter que l'action "de grand déplacement" se déclenchera périodiquement, mais j'ai choisi de la créer dès le début et de lui donner une priorité nulle (ajustable par la suite).

- Générateurs

Y'en a pas encore

- Events

On va avoir besoin d'un event, fourni avec le package DR 5 : e_prioritize. Celui-ci permet de changer la priorité d'un meme au cours du jeu, ce qui nous permettra de faire se déplacer le PNJ à un moment voulu.

-- Scripts --

Là on entre dans le vif du sujet J'ai eu besoin de créer 3 scripts : le OnSpawn du PNJ, et les scripts du meme "i_deplac" (grand déplacement).
Bien sûr, pour que les objets mimétiques inclus au DR 5 fonctionnent, il faut initialiser les libraires sur le module etc. mais je détaille pas, c'est pas vraiment un tutorial

Alors, le OnSpawn du PNJ :

s_citoyen
Code PHP:
//::///////////////////////////////////////////////
//:: s_citoyen
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Initialisation des memes, generateurs
    et events des PNJs citoyens
    (Mimetic AI)
*/
//:://////////////////////////////////////////////
//:: Created By: Taern
//:://////////////////////////////////////////////
#include "h_ai"

void main()
{
    
object oMemeoEventoSeqoGen;
    
float fDelai IntToFloat(Random(20)+40);   // Delai précédant la première activation de l'event e_prioritize

    // 1er meme : balade (action de fond)
    
MeCreateMeme("i_wander",                    // Nom du meme (celui-la est inclus au DR 5)
                 
PRIO_LOW,                      // Priorite (de PRIO_NONE à PRIO_HIGH)
                 
0,                             // Modificateur a l'interieur de la priorite
                 
MEME_RESUME|MEME_REPEAT);      // Flags (ici le meme boucle a l'infini
                                                // et recommence apres une interruption)

    // 2e meme : grand deplacement (action en attente)
    
oMeme MeCreateMeme("i_deplac",            // J'ai du creer ce meme
                         
PRIO_NONE,             // Le meme reste "en attente", aucune priorite
                         
0,                     // idem
                         
MEME_RESUME);          // Le meme reprendra si il est arrete, mais ne boucle pas

    // 1er event : grand deplacement
    
oEvent MeCreateEvent("e_prioritize",      // Cet event est inclus au DR 5
                           
EVENT_PERSISTANT);   // Flags, mais la on a pas le choix, c'est le seul existant
                           
    
MeAddTriggerTime(oEventfDelai);           // On declare un trigger, càd une condition pour que l'evenement se lance.
                                                // Il y a 2 types de triggers : triggers temporels et triggers signaux
                                                // Le 2e type est utilise pour les emitters, donc ici on s'en fout :P

    // Parametres de l'event (connus a partir de la description de l'event dans le script lib_events)
    
MeAddFloatRef(oEvent120.0"Delay");          // Delai entre chaque nouveau changement de priorite
                                                    // en fait cet event va tourner en boucle, remettant
                                                    // a chaque fois la priorite du meme a la meme valeur
    
MeAddObjectRef(oEventoMeme"Meme");          // Meme qui doit etre modifie (on peut en entrer plusieurs)
    
MeAddIntRef(oEventPRIO_MEDIUM"Priority");   // Nouvelle priorite voulue
    
MeAddIntRef(oEvent50"Modifier");            // Nouveau modificateur voulu
    
MeAddIntRef(oEvent20"DelayJitter");         // Composante aleatoire sur le delai defini plus haut
    
    
MeStartEvent(oEvent);                           // Et hop on lance l'event  : )

    
MeUpdateActions();          // Cette commande assigne le meme adequat au PNJ
                                // Elle doit toujours etre appelee lorsqu'on modifie les memes d'un PNJ
                                // a noter qu'elle n'est souvent utilisee que dans le onspawn, mais qu'elle l'est
                                // aussi bien sur dans l'event e_prioritize

Voilà, rien de bien méchant en fait, l'important étant d'être rigoureux et méthodique. La plupart du temps rien de marchait chez moi parce que j'oubliais soit de lancer l'event, soit de définir un trigger, etc.

Bon ensuite le premier script du meme de grand déplacement, i_deplac_go.

i_deplac_go
Code PHP:
/* Meme : i_deplac_go (grand deplacement)
 Choix d'une destination, enregistrement de celle-ci
 Ordre de mouvement
*/
#include "pnj_inc"
#include "h_ai"

void main()
{
    
object oDest GetLocalObject(OBJECT_SELF"destination");      // Ceci permet de verifier si une destination
                                                                    // avait deja ete assignee au PNJ mais n'avait
                                                                    // pas ete atteinte

    
if(!GetIsObjectValid(oDest))                            // Si effectivement aucune destination n'etait assignee...
    
{
        
oDest ChoixObjetZone(GetArea(OBJECT_SELF), "pnj_interet");    // Alors on en choisit une
                                                                        // (fonction perso que j'ai faite pour mes PNJs,
                                                                        // secret defense ; )  )
        
SetLocalObject(OBJECT_SELF"destination"oDest);          // On assigne cette destination
                                                                    // (au cas ou le meme serait interrompu)
    
}
    
MoveToLocationDecalee(OBJECT_SELFGetLocation(oDest));         // On va vers cette destination
                                                                    // (autre fonction perso :P a noter que ces fonctions
                                                                    // sont dans pnj_inc)

En fait les memes ressemblent à de simples scripts d'action. Mais il est possible de faire plus compliqué en rajoutant des paramètres, des valeurs renvoyées par le meme etc. Enfin là c'est ma première IA (oui bon je sais, ça a rien d'intelligent ) donc on reste dans le basique.

Enfin, dernier script créé : i_deplac_end (la fin du grand déplacement).

i_deplac_end
Code PHP:
/* Meme : i_deplac_end (grand deplacement)
 Suppression de la destination enregistree
*/
#include "h_ai"

void main()
{
    
DeleteLocalObject(OBJECT_SELF"destination");  // On supprime la destination precedemment assignee au PNJ
                                                    // puisque celle-ci a ett atteinte
                                                    
    
MeSetPriority(MEME_SELFPRIO_NONE0);     // Ici on doit absolument remettre la priorite du meme a zero
                                                // si on veut que le PNJ se remette a se balader aleatoirement
                                                // sans ca, ledit PNJ resterait betement sur place
                                                // jusqu'a la fin de ses jours, cruel non ? ; )

    
MeUpdateActions();              // Encore elle, je ne suis pas sr de sa necessite, mais on est jamais trop prudent
                                    // de toutes facons, cette fonctions ne perturbera jamais
                                    // le comportement d'une creature, elle ne fait que de le "rafraichir"

Voilà ! J'espère que ça vous aura un peu aidé Ces scripts sont tout de même très basiques, mais je trouve ça très formateur

Prochaine leçon : les emitters ! pourvu que j'arrive à les faire marcher
Lien direct vers le message - Vieux
Soune [Prov]
Alpha & Oméga
 
Thumbs up
juste un up pour voir si tout cela avance et pour dire que les lien du premier message sont HS

[edite] quelqu'un sur le forum chercher leur site , mimectic IA .

voila ,
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > L'IA mimétique
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 19h46.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite