+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Expert éminent sénior

    Avatar de Francis Walter
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2012
    Messages : 2 317
    Points : 26 483
    Points
    26 483

    Par défaut Concevoir l'intelligence artificielle pour les jeux vidéo - Partie 2 : Perceptions et Pathfinding

    Bonsoir,

    Je vous présente la deuxième partie de la série sur l'intelligence artificielle pour les jeux vidéo : Partie 2 : Perceptions et Pathfinding

    Citation Envoyé par Synopsis
    Dans l'article précédent, je vous parlais des méthodes de prise de décisions de base d'un agent intelligent contrôlé par une intelligence artificielle (IA). Dans cet article, je place notre héros (ou monstre ou tout type d'entité dans le jeu) dans un environnement pour qu'il y puisse prendre les décisions adaptées. Les agents intelligents doivent identifier les points d'intérêt dans l'environnement du jeu, puis comprendre comment y accéder. En fin d'article, j'aborderai l'optimisation de ces méthodes et vous expliquerai les moyens de les organiser en tenant compte des techniques de parallélisation (multithreading).

    Dans cet article, les IA évoquées s‘approchent terriblement de l'intelligence artificielle réelle. Tous les agents intelligents doivent pouvoir percevoir leur environnement et parvenir à s'y déplacer. Vos entités devront faire la même chose, mais avec une approche très différente. Vous pouvez également tricher pour vous assurer que tout fonctionne de façon fluide et rapide.
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2006
    Messages : 18
    Points : 15
    Points
    15

    Par défaut Performances !

    Bonjour,

    Je suis tombé par hasard sur cet article.
    L'article est plutôt pas mal rédigé. Par contre dans un article traitant des jeux vidéos il faut absolument appliquer les bonnes pratiques de coding.
    Dans l'exemple de code on peut voir ^^ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Unchecked[0].s.x = sx;
    Unchecked[0].s.y = sy;
    Unchecked[0].d = abs(sx - gx) + abs(sy - gy);
    Unchecked[0].p.x = -1;
    Unchecked[0].p.y = -1;
    Unchecked[0].used = 1;
    Unchecked[0].steps = 0;
     
    ...
     
    /*tile to the left*/
       if((Unchecked[u].s.x - 1) >= 0)/*first, make sure we're on the map*/
       {
         if((IsInList(Unchecked,Unchecked[u].s.x - 1,Unchecked[u].s.y,NULL) == 0)&&(IsInList(Checked,Unchecked[u].s.x - 1,Unchecked[u].s.y,NULL) == 0))
         /*make sure we don't repeat a search*/
         {
           if(TileValid(Unchecked[u].s.x - 1,Unchecked[u].s.y,team))
             NewtoList(Unchecked,Unchecked[u].s.x - 1,Unchecked[u].s.y, Unchecked[u].s.x, Unchecked[u].s.y, abs((Unchecked[u].s.x - 1) - gx) + abs(Unchecked[u].s.y - gy), Unchecked[u].steps + 1);
         }
       }
    ect. ect. ect.[/SIZE][/SIZE]

    Pour une question de persfs, dans les exemples, il faut absolument passer par une référence intermédiaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $my_object = Unchecked[0];
     
    $my_object.s.y = sy;
    $my_object.d = abs(sx - gx) + abs(sy - gy);
    $my_object.p.x = -1;
    $my_object.p.y = -1;
    $my_object.used = 1;
    $my_object.steps = 0;
     
     if(($my_object.s.x - 1) >= 0)/*first, make sure we're on the map*/
    ect. ect. ect.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    4 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 4 137
    Points : 15 300
    Points
    15 300

    Par défaut

    Non.
    Le code est clairement du C, les références n'existent pas.
    Et toi tu nous proposes... du mauvais PHP en guise de "mieux" !?!? T'as peur de rien..
    C'est en plus 800% inutile ici puisque c'est une variable accédée directement, le compilateur saura très bien l'optimiser. Une référence c'est utile quand tu dois récupérer un objet via des méthodes. Pour une variable dans le même scope, c'est juste un sucre syntaxique.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/11/2015, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo