Bontenmaru

reallybigsocket - 30 Mar 2007

Pourquoi se casser le cul a faire une IA correct quand on peut la faire tricher, c'est plus facile, plus rapide et donc moins couteux !

Bontenmaru

Bien sûr le studio en question peut déléguer cette tâche à un studio spécialisé dans l'IA vidéoludique comme il y en a une en France, mais cela a un coût, que beaucoup préfère éviter....rentabilité, renatbilité, rentabilité...quel monde pourrit smiley10

Invité(e)
Pseudo_supprime

mon dieu

Bontenmaru

Pseudo_supprime - 30 Mar 2007

Dieu n'en a rien a foutre du jeu vidéo !

Black mais pas Decker
Sephiroth972

reallybigsocket - 30 Mar 2007
Bon écoute, tu commences à me saouler gravissement à vouloir défendre la wii, surtout en ce qui concerne son hardware sur des questions d'IA donc je vais t'ammener à une réponse simple, nette et précise:

Un algo d'IA s'écrit sous la forme de fonctions simples qui répondent à un ensemble de données:

Exemple d'IA d'un garde de Metal Gear Solid, le programmeur décrira son IA de cette façon:

IA_garde_niveau_difficile(position_du_joueur){
    Si position_du_joueur inclus_dans champs_de_vision faire{
        Si alarme=désactivée faire{
            Si garde_seul faire{
                Se mettre à l'abri des tirs ennemis;
                Sonner l'alarme;
                Vérifier position_du_joueur;
                Attendre renforts;
                Engager combat;
            }
            Sinon faire{
                Se mettre à l'abri des tirs ennemis;
                Sonner l'alarme;
                Vérifier position_du_joueur;
                Engager combat;
            }
       Sinon faire{
           Engager combat;
       }
   Sinon continuer_le_tour de garde;
}

Voilà en simplifiant à l'EXTREME ce que donne l'IA d'un garde d'un jeu comme MGS... Tu me suis? Surtout qu'il ne faut pas oublier que les gardes de MGS se grattent les couilles après un certain temps de garde, se branlent quand ils tombent sur des pornos, ramassent les chargeurs vides laissés par le joueur, réveillent leurs copains endormis, sonnent l'alarme quand l'un d'entre eux est mort... Chacune de ces actions correspond à une fonction qui a un but unique! Et comme tu peux le voir, généralement, à chaque fonction supplémentaire, un SI imbriqué apprarait, ce qui accroit de façon assez exponentielle, le nombre de fonctions à appeler...

Maintenant chaque action (faire) entraine une recherche dans le cache CPU afin de trouver la correspondance entre le nom de l'action (Sonner l'alarme) et le calcul qui lui correspond ce qui entraine des traversées multiples du pipeline...

Donc déjà, la différence première entre le CPU de la PS360 et celui de la wii concerne la fréquence:
    3.2 ghz opposé à 715 mhz
Plus véloce, tout en concervant un pipeline de longueur relativement indentique, le CPU de la PS360 aura, pour le même temps, une capacité supérieure à aller chercher des fonctions différentes dans son cache... d'où une IA plus poussée

Deuxièmement: la taille du cache:
    Plus de 2,5 mo pour la PS3 contre 512 ko pour la wii je crois...
Résultats: Un nombre plus important de fonctions stockées en cache donc moins de pertes de temps en accès à la mémoire centrale! Donc pour le même temps, la PS360 aura le choix entre une panoplie plus élargie de fonction... La programmeur pourra rajouter sur PS360 la fonction "Vérifier si on est dans une salle remplie d'explosifs avant de tirer", fonction qu'il aurait volontairement omis sur la wii par manque  de cache par exemple... d'où une IA plus poussée

Troisièmement: La vitesse du bus:
Possdant un bus plus rapide entre la mémoire centrale et le cpu, si certaines fonctions n'ont pu être stockées par manque de place dans le cache, on peut les stocker (c'est rare mais ça arrive) dans un cache secondaire, voir terciaire qui accélère les petits transferts nécessitant une latence très faible... Pareil que pour l'exemple précédant, mais cette fois ci sur des fonctions moins importante... d'où une IA plus poussée

Quatrièmement: Le multithreading:
Le CPU de la PS3 a l'avantage d'avoir un cache généralisé ainsi que plusieurs petits caches réparties entre les différents SPE... Le programmeur peut ainsi décider de spécialiser le SPE1 dans le thread de fonction du type "Garde au repos" et dès que l'alerte est donnée, faire basculer les calculs sur SPE2, spécialisé dans les fonction "Engager la cible"... Tout ça est possible grâce à la présence de plusieurs unités de calcul qui communique entre elles sans passer par le goulôt d'étranglement qu'est le FSB... Résultat: de part un plus grand nombre d'unités spécialisées, chaque tâche sera encore plus poussée dans le réalisme... La wii n'a rien de tout ça... d'où une IA plus poussée

Je continue mon pavé indigeste ou tu en as assez?
Non pas que je sois à court d'argument (tenir compte des informations de la physique envoyées par la carte graphique etc...), c'est juste que je suis fatigué d'écrire à 23h19 ce qui est évident et logique pour le commun des mortels non-nsexuel...

100% pur débile
Marvus

Sephiroth972 - 31 Mar 2007

C'est intéressant tout ce qui est écrit en tout cas... Mais je ne crois pas que reallybigsocket cherche à défendre la Wii en particulier.
Mais c'est vrai que quand on voit des gens qui s'acharnent contre une console on a tendance à vouloir prendre la défense de cette dernière.

J'ai la Wii depuis le 8 décembre et j'en suis très content, la Ps3 aussi... Ce sont deux consoles différentes, quand vous le comprendrez, vous grandirez !

Le fantôme de l'opéra
bluheim
Marvus a écrit :


J'ai la Wii depuis le 8 décembre et j'en suis très content, la Ps3 aussi... Ce sont deux consoles différentes, quand vous le comprendrez, vous grandirez !

Heu, je ne vois qu'une console dans ta phrase. C'est quoi la deuxième ? T'as une 360 en plus de la PS3 ?

J'ai honte, supprimez mon compte SVP
Profil_supprime
100% pur débile
Marvus

bluheim - 31 Mar 2007

ah ah ah, en effet j'ai 3 consoles... mais la 360 est à mon coloc mais elles sont toutes les 3 cotes à cotes...

je suis désolé, désolé sincèrement je sens une grande souffrance en toi ! un jour tu comprendras le sens du mot "tolérance"...

J'essaye de me persuader que vous êtes quelqu'un de bien dans le fonds mais à chaque fois votre arrogance prend le dessus, c'est vraiment dommage ! je continuerai à poster, à prendre position tout en vous respectant même si vous ne le faites pas avec moi.

Avant je voulais être admin mais j'ai pas pu, alors je suis devenu Jamel
Starfula

Marvus - 31 Mar 2007

Mais putain ferme ta gueule, ferme ta putain de grande gueule smiley17

100% pur débile
Marvus

Starfula - 31 Mar 2007

Non, et ta colère me fait doucement sourire... mais fais comme certains ignore-moi !

Avant je voulais être admin mais j'ai pas pu, alors je suis devenu Jamel
Starfula

Marvus - 31 Mar 2007

Non ton avatar me donne envie de te charcuter l'anus à coup de pelle.

100% pur débile
Marvus

Starfula - 31 Mar 2007

really ? tu veux qu'on se donne rencard ?

Avant je voulais être admin mais j'ai pas pu, alors je suis devenu Jamel
Starfula

Marvus - 31 Mar 2007

Demande à ta mère mon numéro.

100% pur débile
Marvus

Starfula - 31 Mar 2007

euh j'oublie ce que tu as dis, on va dire à ma belle-mère ok ?(à moins que tu sois nécrophile) attends je lui demande !!

Avant je voulais être admin mais j'ai pas pu, alors je suis devenu Jamel
Starfula

Marvus - 31 Mar 2007

Dieu a écrit :

ferme ta gueule

3 mots, allez vraiment fais un effort c'est pour ton bien smiley16

100% pur débile
Marvus

Starfula - 31 Mar 2007

alors moi c'est un peu plus simple, un seul mot à retenir "non"... tu ne comprends pas que derrière ton écran, tu n'es rien, je suis rien ! alors arrete et passe ton chemin c'est toi qui insiste...

Darsch 2 en 1 élimine les taches
Darsch

Marvus - 31 Mar 2007

Pour te faire avaler tes dents ?

100% pur débile
Marvus

Darsch - 01 Apr 2007

tiens voilà l'autre cloclo !

Me faire avaler les dents ? hum... à y réfléchir j'en ai encore besoin, tu attendras ou alors viens me les faire avaler grande gueule!

En plus je suis tout maigrichon (55 kilos pour 1m65), tu pourras me foutre la raclée de ma vie...

Darsch 2 en 1 élimine les taches
Darsch

ah ouais ... je fais presque le double.



a écrit :

ou alors viens me les faire avaler grande gueule!

ah non, j'ai bien trop peur.

100% pur débile
Marvus

Darsch - 01 Apr 2007

ah tu fais presque le double ? arrete je suis en train de faire dans mon caleçon...

Bon si t'as que de la gueule, franchement tu me déçois, je pensais que tu pouvais avoir de l'allure mais en fait t'as rien, que dalle, pas de couille... triste triste...

Invité(e)
Profile supprimé

wtf ? smiley12

100% pur débile
Marvus

Profile supprimé - 01 Apr 2007

bah il se passe que ces mecs ont que de la gueule... à propos freak ou fuck ?

Darsch 2 en 1 élimine les taches
Darsch
Marvus a écrit :

Bon si t'as que de la gueule, franchement tu me déçois, je pensais que tu pouvais avoir de l'allure mais en fait t'as rien, que dalle, pas de couille... triste triste...

vaut mieux pas que je te croise. Pour ta santé.

100% pur débile
Marvus

Darsch - 01 Apr 2007

mais je ne demande que ça p'tit père... tu es d'ou ?

Darsch 2 en 1 élimine les taches
Darsch

Marvus - 01 Apr 2007

Je travaille à Paris.

Invité(e)
Kenjin

Bon Tif et Tondu, voggle maintenant, le prochain d'entre vous qui poste sur ce topic c'est bye bye.

100% pur débile
Marvus

Darsch - 01 Apr 2007

ah bah ma foi c'est très bien, écoute au mois de mai je serai sur paris, je te préviens d'ici là et on se donne rencard ? ok allé ciao bisoux ma poule !

c'est bon tu peux me bannir, je me recréerai un compte pour lui rappeler la date, toi aussi bisoux ma poule (on se voit quand tu veux aussi, hein moi je suis sur nantes, si tu veux savoir où je bosse c'est à la chambre des notaires de loire-atlantique 119 rue de Coulmiers)...

Je retourne boire du Horse Power en attendant le prochain tag
TK_AK

smiley12

reallybigsocket

Sephiroth972 - 31 Mar 2007

Bon je suis content, tu essaye de faire une reponse correcte.
Sur ta remarque sur la puissance de calcul qui est essentiel pour avoir une ia plus poussée, on voit effectivement qui tu n'as pas compris ma remarque, et que tu ne maitrise pas reellement ce qui se passe.
Pour information, quand tu as un processeur qui tourne à 800mhz (à peu pres celui de la wii), si on a une instruction par cycle (tres optimiste ou pas, cela depends des processeurs, on va pas chipoter), cela fait 800 millions d'instructions par secondes. Si on a 60 images secondes (prenont le pire des cas), cela nous fait environ 13 (on arrondis) millions d'instructions par secondes.
Si on prends 10% (c'est raisonnable) du temps cpu pour l'ia, on obtient 1.3 millions d'instructions pour l'ia par frame affichées.
Si on imagine une centaine d'entités (note, cela peut etre moins, surtout que ce qui n'est pas visible par le joueur peut etre simplifié), cela fait 13 000 instructions par entitées. En 13 000 instructions, on peut faire beaucoup de choses, et ce n'est pas tes quelques tests en exemple qui vont prendre un temps significatif.
Ce qui peut prendre un peu (mais pas trop si bien implémenté) de temps, c'est le path finding, des algos basés sur des reseaux de neurones (mais pas necessaire pour les 100 unités ou alors à utiliser avec parcimonie).
D'ailleurs, le cas que je te presente est quasiment un des pire, car l'ia n'a pas besoin d'etre mise à jour pour toutes les frames, on peut laisser un leger temps (par exemple, mettre à jour seulement toutes les 10 frames ou plus seulement pour tout ce qui est loin du joueur, ou de facon plus pratique mettre à jour la logique toutes les 10 frames et continuer dans l'action actuelle entre, de la même maniere qu'un joueur qui mettrait du temps à réagir). Et cela permet de multiplier par dix le nombre d'unités qui peuvent gérées ainsi.

Si l'on reprends ton exemple, le calcul de ce genre d'interaction n'a pas besoin d'avoir une puissance de calcul enorme, cela prends un temps très faible.
Et dans ton cas, ce n'est pas la puissance de calcul qui va changer quoi que ce soit, on a déjà largement de puissance pour ce genre d'interactions.
Le seul cas où cela va jouer, c'est dans le cas où l'on a beaucoup d'unités, comme dit précedemment.

Black mais pas Decker
Sephiroth972
reallybigsocket a écrit :

Sephiroth972 - 31 Mar 2007

Bon je suis content, tu essaye de faire une reponse correcte.
Sur ta remarque sur la puissance de calcul qui est essentiel pour avoir une ia plus poussée, on voit effectivement qui tu n'as pas compris ma remarque, et que tu ne maitrise pas reellement ce qui se passe.

da bonne blague...

Il y a quelque chose que tu as oublié de préciser dans ton pavé: La complexité spatiotemporelle d'une fonction à une autre n'est pas la même... Alors c'est bien jolie de dire qu'un test ne prend pas beaucoup de temps à être exécuté grâce à tes 13 000 cycles d'horloge mais si la complexité d'une des fonctions est k-logarithmique voir tend à l'exponentionnel (je dis bien tend!!!! Exponentionnel c'est trop lourd pour nos machines quelles quelles soient) les temps de calcul et de latence s'en ressentent beaucoup... En plus la taille en cache augmente aussi, ça il faut le savoir pour comparer les 512 ko de la wii aux 2.5 mo de la PS3...

Ha aussi, tu as l'air d'avoir abordé le sujet mais tu l'as rapidement éludé: Une fonction ne se fait pas en un cycle d'horloge... Il faut comparer la longueur des jeux d'instruction traités en un cycle par le CPU par rapport à la correspondance en termes de bits de la fonction compilée pour à savoir à combien de cycles celà correspond...
Et généralement c'est loin d'être proche de 1...

Voilà voilà smiley1

Darsch 2 en 1 élimine les taches
Darsch

reallybigsocket - 02 Apr 2007

c'est marrant cette conception de l'IA à réguler comme un débit de flotte, on me l'a jamais faite smiley12

Bourreau des oiseaux
Bidelouze_

*lis les 2 précédents pavés*

a8359bf5a2732904a4a7fc4ac8232732.gif

reallybigsocket
Sephiroth972 a écrit :


Il y a quelque chose que tu as oublié de préciser dans ton pavé: La complexité spatiotemporelle d'une fonction à une autre n'est pas la même... Alors c'est bien jolie de dire qu'un test ne prend pas beaucoup de temps à être exécuté grâce à tes 13 000 cycles d'horloge mais si la complexité d'une des fonctions est k-logarithmique voir tend à l'exponentionnel (je dis bien tend!!!! Exponentionnel c'est trop lourd pour nos machines quelles quelles soient) les temps de calcul et de latence s'en ressentent beaucoup...
En plus la taille en cache augmente aussi, ça il faut le savoir pour comparer les 512 ko de la wii aux 2.5 mo de la PS3...

On n'utilise jamais de fonctions qui tend vers l'exponentielle dans les calculs. Dans ce cas là, on prends toujours une solution non optimale, avec un algorithme en un temps beaucoup plus raisonnable.
Et meme si c'etait le cas, le fait que ce soit en exponentiel fait que tu ne vas pas pouvoir traiter bcp plus de cas avec une puissance de calcul plus importante (c'est bien le problème).

Le cache ne va pas changer grd chose, divise le nombre d'instructions par deux, et cela revient au meme. (sans compter que la tailles des données à traiter pour les entitées tient en général facilement dans le cache, ce n'est pas gros, je te passe le calcul...)

Dans le cas général, on aura toujours une ia qui se met à jour régulierement, et pas à chaque frame (avec le temps de mise à jour variable selon ce que l'on en fait, et la complexité de l'opération effectuée).
Ce qui fait que pour nos 100 entitées, on a en fait beaucoup plus de cycles utilisable que 13000. (par exemple 130 000 pour 100 entités avec une rafraichissement toutes les 1/6s)


Sephiroth972 a écrit :


Ha aussi, tu as l'air d'avoir abordé le sujet mais tu l'as rapidement éludé: Une fonction ne se fait pas en un cycle d'horloge... Il faut comparer la longueur des jeux d'instruction traités en un cycle par le CPU par rapport à la correspondance en termes de bits de la fonction compilée pour à savoir à combien de cycles celà correspond...
Et généralement c'est loin d'être proche de 1...

Voilà voilà smiley1

Bon, en general, on ne parle pas de fonction quand on parle de cycle, et le reste de ta phrase ne veut rien dire, ou du moins je ne l'ai pas comprise.
Effectivement, une instruction cpu prend un nombre de cycle variable.
Par simplification, je l'ai pris egal à 1. Cela depends completement des cpu, et c'est, là encore du detail, ce qui compte c'est l'ordre de grandeur. (et loin de 1, plus maintenant, ce n'est plus le cas sur les architectures actuelles, ou les instructions sont pipelinées)

Et pour ton histoire de fonction, pour des fonction simples, il faut 2-3 instructions executée, moyenne peut-etre une centaine, couteuse plus de 10000 (mais là cela signifie probablement que ce n'est pas codé correctement, ou qu'il faut mettre à jour ces indicateurs moins souvent).


Black mais pas Decker
Sephiroth972

reallybigsocket - 03 Apr 2007
Putin I'AM TOTALY DEG!
Je t'avais entièrement répondu, j'avais même resorti mes cours d'ordonnancement puis quand j'ai cliqué sur envoyer, mon pc s'est figé smiley22! Le PAVE DE OUF QUE J'AI PERDU FILS DE PUTE DE PC smiley17:@:fou: sa mère la pute je vais le flinguer!!!!

DEG!!!!

Média affilié à un État, Russie
makunouchi_ippo

de toute façon on sait tous que la ps3/xbox 360 viol la wii

qu'un spe du cell est theoriquement aussi puissant que la wii entiere

aussi que l'EE de la ps2 fait plus de flops que le cpu de la wii smiley21 et que le gpu de la xbox est bien meilleur que celui de la wii

J'ai honte, supprimez mon compte SVP
Profil_supprime

Sephiroth972 - 04 Apr 2007
LOL ca m'arrive souvent avec mon pc de merde. je fais toujours un copier avant de poster quand c'est long

Bontenmaru

Profil_supprime - 04 Apr 2007

LOL Clair, ça m'ai déjà arrivé, t'es tellement dég que tu touche même plus le PC le temps de se calmer smiley10