<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[IA #3 - les mécanismes de groupes]]></title><description><![CDATA[<p dir="auto">Qu'est ce que les mécanismes de groupe ?</p>
<p dir="auto">Ce sont les actions qui se passent lorsque vous êtes avec un nombre<br />
important de personnes.<br />
Ce tutoriel va mettre en place l'algorithme flack and swarm.<br />
Cet algorithme est issue de l'observation des "essaims" de poissons :<br />
Lorsqu'un poissons voit un prédateur, il fuit. Le poisson a coté voit celui<br />
qui fuit et fuit a son tour, etc... Ce mécanisme est tellement rapide<br />
qu'un observateur à l'impression que ceci se fait directement.<br />
C'est ça les mécanismes de groupe.</p>
<p dir="auto">Ces mécanismes sont souvent utilisés dans des jeu de type total war,<br />
ou un groupe de personnes n'a en fait qu'une vrai personnes qui va<br />
"réfléchir", le reste va copier les mouvement de celui qui réfléchit.</p>
<p dir="auto">Mais quels sont les avantages d'utiliser cette technique ?</p>
<p dir="auto">Tout d'abord, cela consomme moins de processeur car une seule personne<br />
réfléchit, fait son action, et tout le monde copie son action. Du coup,<br />
personnes d'autre ne réfléchit. (vous faites aussi cela en cours, tout<br />
le monde copie sur une unique personne, cela prend moins de temps aux<br />
autre cerveaux pour réfléchir, donc c'est bien <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> )<br />
Cela permet aussi d'assurer une cohérence dans le groupe<br />
vous imaginer une armée où chacun peut faire ce qu'il veut ?<br />
limiter le nombre de personnes qui réfléchit permet donc de limiter les incohérences<br />
dans le jeu pour le joueur.</p>
<p dir="auto">Donc pour le code, il faut faire cela :<br />
"l'entité" leader fait cela :</p>
<pre><code>typedef struct t_leader
{
    char etat;
    void(*p_fonction)(t_info *);
}t_leader;
</code></pre>
<p dir="auto">Si vous ne savez pas se que signifie etat, aller voir le tutoriel précédent.<br />
p_fonction est un pointeur de fonction.<br />
Allez voir le tutoriel d'AlexMog qui est très bien fait.</p>
<p dir="auto">Utiliser les pointeur sur fonction permet d'exécuter très rapidement la fonction,<br />
au lieu de mettre un ID de fonction et faire un immense switch ou if, else if ...</p>
<p dir="auto">Dès lors, afin que les sbires, où ceux qui suivent le leader fassent les même actions,<br />
il suffit de faire :</p>
<pre><code>typedef struct t_sbire
{
    void(*p_fonction)(t_info *);
}t_sbire;
</code></pre>
<p dir="auto">la structure t_info contient toutes les infos utiles pour exécuter les actions<br />
Aller encore regarder mon tutoriel précédent pour comprendre se que c'est</p>
<pre><code>t_leader leader;
t_info info;
/* vous mettez le pointeur sur fonction en fonction de l'état du pnj
par exemple : */
leader.p_fonction = &amp;attack_near_enemy;

t_sbire sbire[16]; /* 16 est un exemple */
int i;

for(i = 0 ; i &lt; 16 ; i++)
{
    sbire[i].p_fonction = leader.p_fonction;
}
/* tout les sbires vont maintenant pouvoir faire la même action que le leader */
</code></pre>
<p dir="auto">et on exécute le tout</p>
<pre><code>leader.p_fonction(&amp;info); /* on envoie la structure d'info a la fonction (un pointeur)*/

for(i = 0 ; i &lt; 16 ; i++)
{
    sbire[i].p_fonction(&amp;info);
}
</code></pre>
<p dir="auto">Et voila, vous pouvez maintenant créer facilement des mécaniques de groupe, afin de créer<br />
des immense batailles, ou encore une joli danse (chacun fait la même chose que son voisin) <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> .</p>
]]></description><link>http://new.melinyel.net/topic/776/ia-3-les-mécanismes-de-groupes</link><generator>RSS for Node</generator><lastBuildDate>Thu, 21 May 2026 18:31:38 GMT</lastBuildDate><atom:link href="http://new.melinyel.net/topic/776.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 May 2014 07:31:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to IA #3 - les mécanismes de groupes on Sun, 01 Jun 2014 13:41:14 GMT]]></title><description><![CDATA[<p dir="auto">Merci du partage, très bon tutoriel comme tout les précédents. <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<p dir="auto">La forme du texte est néanmoins un peu étrange (retour à la ligne en pleine phrase).</p>
<p dir="auto">+1 réputation tout de même, continue comme ça !</p>
]]></description><link>http://new.melinyel.net/post/8200</link><guid isPermaLink="true">http://new.melinyel.net/post/8200</guid><dc:creator><![CDATA[Azad]]></dc:creator><pubDate>Sun, 01 Jun 2014 13:41:14 GMT</pubDate></item></channel></rss>