JeuWeb - Crée ton jeu par navigateur
IA dans un jeu php comment commencer - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : IA dans un jeu php comment commencer (/showthread.php?tid=1197)

Pages : 1 2 3


RE: IA dans un jeu php comment commencer - ifcody - 19-03-2008

Voici une méthode (parmis d'autres) pour faire une requette http en php avec des cookies:

Code PHP :
<?php 
$opts
= array (
'http'=>array (
'method' => 'GET',
'header' => 'Cookie:foo=bar'."\r\n"
)
);

$context = stream_context_create($opts);

$content = file_get_contents('http://monsite.net/script.php', false, $context);

stream_context_create
file_get_contents

C'est assé explicite...

Kami a écrit :Le truc c'est que sans cookies, pas de bot et c'est sûrement cette voie qu'il faut creuser pour arrêter/limiter ce genre de pratiques.
Oui en effet, donc moi le truc qui me viens tout de suite mais dont je ne connais pas les détails technique de la réalisation, c'est de raccourcir le temps de validité de la session. Comme ca, le bot ne pourras pas étre actif longtemps. Seulement, là encore ce n'est pas infaible: il suffit de faire d'abord une requette sur le script d'authentification (avec le bon login/pass du joueur) pour choper une nouvelle session.
Donc, il faut se la faire en plus hard... Viré les session et utiliser autre chose? Oui mais quoi?


RE: IA dans un jeu php comment commencer - denisc - 19-03-2008

Smile Il y a toujours moyen de tricher. Les bots qui simulent non pas les connexion mais les actions du PC (mouvement de souris, touches, ...) permettent de démarrer Firefox, de lancer une page, d'attendre un temps variable entre les différentes actions,... Tout est faisable comme si un vrai joueur se trouvait devant son écran (j'avoue, je l'ai fait sur OGame... Et jamais ne me suis fait repérer!)
J'ai pour ça utilisé AutoIt, c'est gratuit et c'est génial... Pour d'autres tâches répétitives également (en fait, je l'utilise toujours mais plus pour jouer!)... Ca te fera un nouveau langage à apprendre Tongue


RE: IA dans un jeu php comment commencer - ifcody - 19-03-2008

Yep c'est connus ca, mais y a pas trop d'équivalent sous linux, donc bon...

Mais y a quand méme un truc qui ne peut pas étre reproduit: le code captcha!
Il y a des jeux comme ca (je pence à slavehack):
Ils ont un genre de session spéciale anti-bot en plus de la session php normale. C'est à dire que toute les dix minute, la session anti-bot expire et si le joueur veut continuer a jouer, il doit entré un code en fonction d'une image captcha.
Pas béte hein? (h)

Edit: c'est vrai que j'y vait un peu fort en affirmant que le systeme captcha c'est infaible, pasque en fonction de la compléxité et de la motive du mec en fasse, ca peut aussi étre inutile. Et puis gros probléme des captcha: ca complique considérablement l'accéssibilité au site, pour les gens qui voient pas bien, entre autres.


RE: IA dans un jeu php comment commencer - alfanor - 19-03-2008

Si vous voulez réellement faire un robot en PHP il faut plutôt vous orienter vers la librairie Curl ou les sockets, ce n'est pas avec du fopen que vous allez faire une IA qui simule réellement un joueur. (et pour le coup avec Curl est assez simple de réaliser un robot gérant des jeux simplistes du style Ogame (donc les jeux ne demandant quasiment aucune réflexion / actions quoi, car après s'il s'agit de prendre en compte cinq milles trucs différents ça devient vite très lourd.)


RE: IA dans un jeu php comment commencer - keke - 20-03-2008

Coucou,

Y'a tout un tas d'outil utilisés pour les stress-test. Ces outils sont normalement utilisées pour des montées en charge ou pour de la recette applicative.

Le principe de ces outils c'est de définir un scénario et de valider que toutes les pages sont accessibles (utilisable lorsqu'il y a une nouvelle version). On peut tout autant manipuler un site pour faire des actions répétitives.

Tout outil peut être détourné pour s'en servir. J'ai ainsi utilisé l'outil open STA pour que pendant 2 jours, il récupère tout plein de bonus sur le jeu Zepirates.com . Ca prends 2 heures pour mettre en place ce type de technique. L'intéret est assez moyen (ca dénature le jeu, ca a aucune utilité dans la vie de tous les jours, et ç'est vraiment utile que dans les jeux un peu nul ou l'on demande aux joueurs de rester connecter 24h/24h pour avoir une chance de gagner.)
Les sites comme Ebay et autre gros sites voit ce type de technique à 10000 km à la ronde et désactive le compte et passe les gens (mail, compte bancaire et adresse IP) en black liste. Donc, jouez y molo ^^.

Pour en revenir à l'IA dans un jeu, c'est un vaste sujet. On risque de se perdre si tout le monde lance ses idées. Faut savoir que le PHP n'est pas le langage qui se prête le mieux à l'IA. On peut cependant faire pas mal de chose.
- Sur le forum ici, y'a des algorithmes de bases à l'IA : le plus court chemin, ...

La première règle comme tout développement compliqué c'est qu'il faut définir précisément ce que l'on souhaite réaliser et s'y tenir. Ne pas rajouter des fonctions nouvelles toutes les semaines, sauf si l'on a prévu un module adapté.

D'habitude, les IA des jeux sont basiques (ce qui ne veut pas forcément dire ineficace !). Il s'agit d'une action-réaction. Prenez le cas de PONG. La raquette controlée par l'IA suit le mouvement de la balle.

Un des premiers systèmes qui peut donner une "inteligence" au jeu consiste à quantifier les actions que peut faire le Monstre (je prends la dénomination de Magdales.) On calcule toutes les actions que peut réaliser le monstre et on associe une valeur, pondérée par des variables telles que la puissance du monstre, sa distance à sa cible, son niveau technologique, le nombre de troupes de marines dans le QG, voir le nombre de planètes contrôlées...
Cela permet à une IA de décider s'il va attaquer un joueur faible ou chercher à l'écraser.
On peut compliquer la chose en lui donnant une mémoire sur les actions déjà réalisées. On pondère les résultats par rapport à ses précédentes actions ... ainsi si pour le coup il avait décider d'attaquer le joueur, du fait qu'il n'ai jamais attaqué précédement, ben il renonce au combat.

Ce simple system (comparé au suivant) permet de simuler un axe de comportement assimilable à un joueur réel. J'ai utilisé avec succès ce type d'IA dans un bomber-like en réseau (mais pas en PHP).

Les autres systèmes d'IA font l'objet de site spécialisé.
- Les systèmes experts ont vécus mais ont démontrés trop de faiblesse pour être employés dans le monde médicale par exemple.
- L'IA avec apprentissage s'est avéré un fiasco terrible sur plein de points. (apprendre à une voiture à tomber dans le faussé pour ensuite lui apprendre que dans ce cas il faut redresser le volant ^^) Y'a cependant encore de l'espoir dans ce domain ...
- L'IA Automate : Résumé à des algorithmes bien ficellé, c'est la Seule IA utilisé dans le monde industrielle
- Reconnaissance de caractère, de symbole, suivi de trafic ... se résume à l'algo automate, mais donne un caractère humain à la chose.

Bonne journée à vous !
kéké.


RE: IA dans un jeu php comment commencer - Kami - 20-03-2008

keke a écrit :Les sites comme Ebay et autre gros sites voit ce type de technique à 10000 km à la ronde et désactive le compte et passe les gens (mail, compte bancaire et adresse IP) en black liste. Donc, jouez y molo ^^.
Hello, keke as-tu des infos quant aux dispositifs mis en place justement pour détecter ce genre de technique? Juste à titre informatif, même si j'ai une petite idée derrière la tête mais au final ça alourdi pas mal mon code (o:
Autrement je pense qu'aujourd'hui le développement d'une IA super poussée n'est pas une priorité dans un jeu en php, c'est plus les interactions entre les joueurs qui sont importantes.


RE: IA dans un jeu php comment commencer - keke - 20-03-2008

Kami a écrit :Hello, keke as-tu des infos quant aux dispositifs mis en place justement pour détecter ce genre de technique? Juste à titre informatif, même si j'ai une petite idée derrière la tête mais au final ça alourdi pas mal mon code (o:
Coucou ^^,
Déjà, les trames envoyés par un serveur apache ne sont pas les mêmes que celle d'un véritable joueurs. De même que les trames Curl et les sockets. Rares sont les outils qui 'simulent' un véritable navigateur classique (enfin ils existent mais comme ce sont des outils de pirates, je ne les mentionnerais pas, pas de MP please)
Ensuite la détection d'incohérence d'enchainement de pages peut être révélateur.

Certains sites font du fisching d'info préventif. Il s'agit d'un script qui va chercher des infos sur le poste client. C'est autorisé dans le sens où l'information n'est pas conservée et inaccessible par un humain. Par contre, si on Snif un client bizarre, on peut se permettre de s'attarder dessus.
Après la détection d'IP est assez fabuleux lorsque c'est correctement poussé. "Tiens il passe par un des nombreux serveurs de re-direction connus par les pirates en herbes pour éviter de se faire remarquer ? Hum hum ^^"

Sous OPEN STA, je vous engage pas à détourner son usage. Magdales n'est pas protégé contre ce type d'attaque, mais il faut savoir que le Header d'OPEN STA indique très clairement sa volonté comme étant des trames de hackage (à opposer à Piratage).

Kami a écrit :Autrement je pense qu'aujourd'hui le développement d'une IA super poussée n'est pas une priorité dans un jeu en php, c'est plus les interactions entre les joueurs qui sont importantes.

Et c'est dommage de penser cela. Certes les interactions inter-joueur sont importantes, mais parfois, un peu de PNG évolué ca fait pas de mal ! J'avoue que j'ai créé mon moteur d'IA sur Magdales avec des principes assez standards, mais dès que j'ai du temps (dans 3 ans normalement) j'améliore tout ça.
Pensez à Diablo II. Vous aviez un povre compagnon qui vous suivez à la laisse jusqu'à temps qu'il se fasse tuer ... vous n'avez jamais eu pitié de lui ? Vous vous pouviez réssuciter, mais lui ! Bande de sans-coeur !
Ca aurait pu être marrant qu'il puisse décider de se casser quand les choses tournaient mal ! Ou qu'il vous demande sa paye à la fin ... qu'il se gratte le nez.
Oblivion (morrowind IV) utilise des IA scriptés, et ben le résultat n'est pas mal du tout ! Rien que pour ça je vous engage à regarder ce jeu. On voit les gens qui marchent (bon .. bof) qui se rencontrent, qui discutent qui vont se coucher le soir, qui ferme les boutiques ... Y'a des rotations dans les rondes de soldat (ils travaillent tous les jours par contre, et il ne se lavent pas, il mangent jamais). Bref, c'est pas parfait, mais quand on ne fait que des aller-retour pour vendre des armes, ça fait une petite vie sympa.
Bien sur, en PHP, tous les jeux ne se prêtent pas à cet exercice, mais c'est balo.

kéké.


RE: IA dans un jeu php comment commencer - Amrac - 20-03-2008

Personnellement je vous conseillerais de créer une extensions Firefox.

Vue que la, c'est directement votre navigateur qui envoie les requêtes, vous ne pouvez pas être différencié d'un bot (du moins, pas à l'IP ou aux trames).


RE: IA dans un jeu php comment commencer - denisc - 20-03-2008

Tu as déjà fait ça toi?
Si oui, je suis très intéressé par un tuto pour réaliser une extension!


RE: IA dans un jeu php comment commencer - ifcody - 20-03-2008

J'en ai pas parler pasque j'ai pas trop pousser mes recherche dessus, mais tu peu regarder du coté de l'extension GreaseMonkey pour firefox.

keke-> tu peu m'envoyé un lien par mp pour expliquer ton principe de trame différentes en fonction de quel logiciel fait la requette.