SOUS LES JUPES - CONTROLE DES A.I.

Le principal défaut de GPL, et je n'invente rien, Alison Hine s'étendant largement sur le sujet, c'est sa difficulté, surtout pour les débutants.

Je cite Alison Hine car elle n'est pas la première venue, ayant fait partie de l'équipe Papyrus pour le développement de Grand Prix Legends.

Elle a béta-testé le jeu avec toute une équipe pendant plus d'un an et a alors mis à jour des failles dans l'A.I. Hélas, comme elle l'explique sur son site, elle n'a pas pu faire passer l'idée d'adjoindre aux panneaux de réglages du jeu un mode de réglage des opposants accessible au joueur ( pour des raisons de délais de finalisation du jeu avant sa sortie, j'imagine ).

C'est pourquoi, après la sortie du jeu, elle a continué à s'y intéresser et en particulier à la gestion des A.I.

Je vous conseille d'aller sur son site où elle expose avec précision l'intégralité de ses travaux. C'est très très intéressant.

J'ai lu par ailleurs une étude portant sur ce sujet menée par Lee Bowden ( en cours de traduction par l'équipe de Formula one Legend ), par ailleurs responsable avec Nigel Pattinson de l'A.I. du "mod 69" de GPL.

Vous trouverez cette étude sur son site. Il cite au passage david Wright qui a travaillé, lui, sur le "mod 65".

Au vu de toutes ces lectures et le sujet étant assez complexe, j'ai décidé de me faire une synthèse, me sentant assez concerné, piètre pilote que je suis pour l'instant.

Je vous livre ceci, ci-après :

Le premier point est de s'entendre sur les performances de base des opposants.

Il faut pour cela reprendre le fichier de l'A.I. originel des pilotes.

Vous pouvez vous le procurer in extenso sur le site d'Alison Hine ( lien en bas de l'article ).

Je vous le mets aussi en annexe en bas de page après l'article : fichier driver.ini de base avec, sous chaque ligne, en gras, le global hype scaling de chaque pilote préconisé par Alison Hine pour avoir des opposants plus "abordables" comme il est décrit dans la méthode Alison Hine ci-après. Vous pouvez trouver, également, ci-après, un lien vers un petit article qui résume de manière abrégée les valeurs de base pour le Global Hype Scaling et celles suggérées par Alison Hine :

MODIFICATION DES VALEURS DU GLOBAL HYPE SCALING SELON ALISON HINE

Le fichier driver.ini est directement contenu dans le dossier GPL. Pour modifier les valeurs il suffit de les remplacer comme dans n'importe quel fichier texte et valider en refermant le fichier.

Je vous conseille cependant, avant toute modification, de vous faire une copie de sauvegarde de ce fichier dans un dossier de sauvegarde de votre choix, au cas où...

Quand au 'npt_override' dont je vais parler souvent ci-après, il se trouve dans le dossier gpl puis fichier 'gpl_ai.ini' au chapitre 'magic' de ce fichier.

Comme pour le 'global hype scaling' le chiffre est à modifier comme n'importe quel fichier texte.

De ces chiffres une petite manip s'impose, qui ressort, elle, des travaux de Lee Bowden : mettre le chiffre du npt override à 1.

Cela permet de ne pas voir les pilotes modifier leurs performances respectives en fonction des vôtres mais de garder chacun ses caractéristiques propres.

En effet, si le npt est laissé à 0 les pilotes virtuels réagiront d'abord sur la base d'un npt de 1,20 au lieu de 1 puis, quand le joueur aura effectué 10 tours en essais de course ou en course ( mais pas en training ) il réagira sur la base d'un ratio mêlant la moyenne des 10 derniers tours du joueur et son meilleur temps au tour.

Dans ce cas là, si j'ai bien compris, si vous laissez les chiffres du global hype de chaque pilotes tels qu'ils sont au départ, exemple Clark 0,05 celui ci augmentera ses temps au tour de 95 centièmes quand le joueur améliorera son ratio d'une seconde. Pareillement, pour un pilote de l'A.I. ayant un indice de 0,45 il s'améliorera de 55 centièmes quand le joueur améliorera son indice de 1 seconde.

Méthode " Alison Hine " réservée aux meilleurs pilotes, c'est à dire négatif au GPL RANKS, voire même à partir de -10 ou - 20 :

Pour terminer mon explication de ce que j'appelle la méthode Alison Hine, je résume : on laisse le npt à 0, on à donc des pilotes AI réactifs à nos performances et qui améliorent donc les leurs au fur et à mesure. Elle préconise une modification du global hype scaling de chaque pilote selon les chiffres en gras dans l'annexe.

Cette modulation du global hype scaling se fait de cette manière en augmentant le chiffre, ex 0.45 pour Clark au lieu de 0.05 etc, cette modification permet que les pilotes gérés par l'ordinateur s'améliorent au fur et à mesure de l'amélioration du joueur, comme l'avait prévu l'équipe Papyrus au départ mais en modulant cette capacité afin de permettre quand même aux meilleurs joueurs de pouvoir battre, in fine, les meilleurs A.I. ( Clark, etc... ).

On peut aussi moduler cette amélioration potentielle des pilotes dans un sens comme dans l'autre. En mettant Clark, par exemple à 0.65 il s'améliorera moins vite qu'à 0.45 par rapport à votre amélioration à vous. Evidemment cet exemple est valable dans les deux sens et il faut moduler le chiffre de chaque pilote. On peut aussi passer les chiffres des pilotes qui sont à 1 ou un peu en dessous à 0.9 pour resserrer le plateau. Tout est possible.

Par contre, et la méthode de Hine me parait tout à fait cohérente à ce sujet, il me semble tout à fait impossible de gagner contre les joueurs de l'ordinateur si on laisse les global hype scaling aux chiffres d'origine ( Clark 0.05 etc... ) à moins d' être un ultra-alien à -50 et plus, et encore... puisque chacun se heurtera quel que soit son niveau à l'augmentation trop linéaire des perfs des pilote de l'ordinateur. Pour en finir là dessus les chiffres préconisés par hine c'est à dire augmenter le global hype scaling de Clark de 4/10 et ainsi de suite pour les autres me paraissent sensés. Cela laisse l'espoir de gagner des courses ou au moins des championnats, in fine, mais cela ménage largement un très grand temps de bataille pour des joueurs d'un niveau déjà très élevé, et ce, quel que soit le niveau choisi de novice à Grand Prix.

En effet, n'oublions pas que les 6 modes de novice à Grand Prix sont, en eux-même, des niveaux de difficultés à part entière. Effectivement, en changeant de mode on augmente légèrement le niveau des opposants virtuels mais surtout on augmente la durée des courses, ce qui est déjà une grosse difficulté en soi ( je rappelle que beaucoup de ligues ne courent pas en mode Grand Prix, c'est à dire des durées de 100% du Grand Prix réel ) mais aussi une fragilité des voitures qui augmente selon les niveaux que ce soit au niveau de la fragilité mécanique comme au niveau de la résistance aux chocs ( même petits ).

Méthode Lee Bowden, s'adresse plutôt à des joueurs débutants et positifs voire négatifs au GPL RANKS jusqu'à un niveau de -10, -20 :

J'appelle cette méthode du nom de celui dont j'ai lu, comme mentionné au début, l'étude sur les A.I. Cette méthode à le même but que celle d'Alison Hine, à savoir moduler les performances des pilotes gérés par l'ordinateur et leur donner des performances sensiblement voisines des vôtres afin de vous permettre de disputer des courses intéressantes off-line.

Ici, on "déconnecte", si je puis dire, la capacité des pilotes A.I à s'améliorer selon vos propres performances. Pour ce faire on ne module plus le global hype scaling de chacun comme dans la méthode précédente mais on met les global hype scaling de chaque pilote à 1. Là , c'est le niveau global du plateau que l'on va changer en modifiant un seul chiffre, le npt_override. A 1 le npt_override est censé vous donner la vitesse de base des pilotes et pour les affronter il faut déjà un très bon niveau, supérieur au GPL RANKS. Cette considération est évidement à moduler par circuit. Selon votre niveau il vous faut donc moduler ce chiffre de 1.01 à 1.20 si comme moi vous êtes un débutant ( moi, + 180 ).

Evidemment un pilote de haut niveau peut aussi jouer avec le niveau du plateau en modulant ce chiffre à partir de 0.99 et en le baissant de plus en plus. Plus on baissera ce chiffre, plus les pilotes A.I. iront vite.

Pour garder à un championnat off-line un intérêt important il vous faudra évidemment trouver un chiffre que vous adopterez pour l'ensemble des circuits dudit championnat. Ce chiffre devra être déterminé après des tests que vous ferez sur les onze circuits et qui sera en quelque sorte une moyenne des perfs qui sont les vôtres sur ces circuits. Par exemple, mon frêre est actuellement +23 de handicap au GPL RANKS et il vient te terminer second d'un championnat trés disputé, en intermédiaire court, avec un npt de 1.05. A vous de trouver sur cette base le chiffre qui vous conviendra à l'instant ou vous adopterez cette méthode et de le faire évoluer au fur et mesure de l'amélioration de votre niveau, tout en modulant, évidemment, ceci avec les six niveaux de difficulté de GPL.

Une autre partie des travaux de ces différents chercheurs visait à améliorer le travail initial de l'équipe Papyrus en rapprochant encore plus les comportements et performances des pilotes A.I. des performances des pilotes réels de l'époque. Ceci ne tiens, évidemment pas compte du niveau du joueur et s'adresse plutôt à des joueurs de haut niveau, mais ce n'était pas le sujet du jour. En attendant, je vous mets les liens vers les sites qui contiennent les documents d'origine sur lesquels j'ai basé cet essai de synthèse, en espérant avoir pu être aussi clair que possible et en souhaitant que vous puissiez ainsi trouver plus de plaisirs dans des championnats hors ligne toujours disputés.

Bonnes A.I. et bonnes courses...

Les liens:

- Pour Lee Bowden :   , ensuite rubrique " utilities " puis " Lee and Stefan" , le document s'appelle GPL AI TUTORIAL, 78 pages en anglais, il vient d'être traduit par un des membres du site Formula 1 Legends.

- Je vous mets ici le lien vers cette traduction qui m'a été confiée par son auteur, Tristan Lefebvre. au 5.12.2007.

- Pour David Wright.

- Pour Kuratko ( Ondrej Haderka ) ( cité dans le document de Lee Bowden ) :

- Pour Alison Hine :

Evidemment ces liens pointent le plus directement possible vers le sujet qui nous intéresse ici, mais chaque site est intéressant dans son ensemble.

 

Annexe : Fichier driver.ini

[ driver_1 ]

team_number = 5 ; team_number

team_order = 1 ; team_order

car_number = 5 ; car_number

first_name = Jim ; first_name

last_name = Clark ; last_name

home_town = Kilmany, Scotland ; home_town

nationality = 12 ; nationality

helmet_color = 1 ; helmet_color

bump_order = 19 ; bump_order

aggression = 1.030000 ; aggression

alertness = 1.030000 ; alertness

experience = 1.010000 ; experience

hype = 1.002000 ; hype

qualifying = 1.020000 ; qualifying

quickness = 1.050000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.05 ; global_hype_scaling

                                0.45

[ driver_2 ]

team_number = 0 ; team_number

team_order = 1 ; team_order

car_number = 1 ; car_number

first_name = Jack ; first_name

last_name = Brabham ; last_name

home_town = Hurstville, Australia ; home_town

nationality = 1 ; nationality

helmet_color = 3 ; helmet_color

bump_order = 17 ; bump_order

aggression = 1.020000 ; aggression

alertness = 1.030000 ; alertness

experience = 1.050000 ; experience

hype = 1.008000 ; hype

qualifying = 1.010000 ; qualifying

quickness = 1.008000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.06 ; global_hype_scaling

                                0.46

[ driver_3 ]

team_number = 4 ; team_number

team_order = 3 ; team_order

car_number = 20 ; car_number

first_name = Mike ; first_name

last_name = Parkes ; last_name

home_town = Surrey, England ; home_town

nationality = 12 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 8 ; bump_order

aggression = 0.990000 ; aggression

alertness = 1.000000 ; alertness

experience = 1.030000 ; experience

hype = 1.000000 ; hype

qualifying = 0.990000 ; qualifying

quickness = 0.980000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.95 ; global_hype_scaling

                                0.85

[ driver_4 ]

team_number = 1 ; team_number

team_order = 1 ; team_order

car_number = 13 ; car_number

first_name = Chris ; first_name

last_name = Irwin ; last_name

home_town = London, England ; home_town

nationality = 12 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 6 ; bump_order

aggression = 1.000000 ; aggression

alertness = 1.000000 ; alertness

experience = 0.970000 ; experience

hype = 1.000000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 0.980000 ; quickness

smoothness = 1.000000 ; smoothness

magic_grip = 1.070 ; magic_grip

global_hype_scaling = 0.4 ; global_hype_scaling

                                0.75

[ driver_5 ]

team_number = 3 ; team_number

team_order = 2 ; team_order

car_number = 19 ; car_number

first_name = Bruce ; first_name

last_name = McLaren ;last_name

home_town = Auckland, New Zealand ; home_town

nationality = 20 ; nationality

helmet_color = 6 ; helmet_color

bump_order = 12 ; bump_order

aggression = 1.020000 ; aggression

alertness = 1.020000 ; alertness

experience = 1.040000 ; experience

hype = 1.000000 ; hype

qualifying = 1.005000 ; qualifying

quickness = 1.005000 ; quickness

smoothness = 1.000000 ; smoothness

magic_grip = 1.005 ; magic grip

global_hype_scaling = 0.2 ; global_hype_scaling

                                0.6

[ driver_6 ]

team_number = 6 ; team_number

team_order = 1 ; team_order

car_number = 7 ; car_number

first_name = John ; first_name

last_name = Surtees ; last_name

home_town = Tatsfield, England ; home_town

nationality = 12 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 11 ; bump_order

aggression = 1.020000 ; aggression

alertness = 1.020000 ; alertness

experience = 1.020000 ; experience

hype = 1.010000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 1.020000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.15 ; global_hype_scaling

                                0.55

[ driver_7 ]

team_number = 2 ; team_number

team_order = 3 ; team_order

car_number = 12 ; car_number

first_name = Jacky ; first_name

last_name = Ickx ; last_name

home_town = Brussels, Belgium ; home_town

nationality = 3 ; nationality

helmet_color = 8 ; helmet_color

bump_order = 2 ; bump_order

aggression = 1.000000 ; aggression

alertness = 0.980000 ; alertness

experience = 0.970000 ; experience

hype = 0.990000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 0.980000 ; quickness

smoothness = 1.000000 ; smoothness

magic_grip = 1.045 ; magic_grip

global_hype_scaling = 1.0 ; global_hype_scaling

                                1.0

[ driver_8 ]

team_number = 5 ; team_number

team_order = 2 ; team_order

car_number = 6 ; car_number

first_name = Graham ; first_name

last_name = Hill ; last_name

home_town = London, England ; home_town

nationality = 12 ; nationality

helmet_color = 1 ; helmet_color

bump_order = 18 ; bump_order

aggression = 1.020000 ; aggression

alertness = 1.030000 ; alertness

experience = 1.030000 ; experience

hype = 1.002000 ; hype

qualifying = 1.015000 ; qualifying

quickness = 1.040000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.075 ; global_hype_scaling

                                0.475

[ driver_9 ]

team_number = 3 ; team_number

team_order = 3 ; team_order

car_number = 10 ; car_number

first_name = Richie ; first_name

last_name = Ginther ; last_name

home_town = Hollywood, CA, USA ; home_town

nationality = 26 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 3 ; bump_order

aggression = 1.000000 ; aggression

alertness = 1.020000 ; alertness

experience = 1.030000 ; experience

hype = 0.985000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 0.970000 ; quickness

smoothness = 1.000000 ; smoothness

magic_grip = 1.03 ; magic_grip

global_hype_scaling = 0.85 ; global_hype_scaling

                                0.85

[ driver_10 ]

team_number = 4 ; team_number

team_order = 1 ; team_order

car_number = 18 ; car_number

first_name = Lorenzo ; first_name

last_name = Bandini ; last_name

home_town = Barce, Libya ; home_town

nationality = 14 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 14 ; bump_order

aggression = 1.030000 ; aggression

alertness = 1.020000 ; alertness

experience = 1.000000 ; experience

hype = 1.000000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 1.040000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.08 ; global_hype_scaling

                                0.48

[ driver_11 ]

team_number = 2 ; team_number

team_order = 5 ; team_order

car_number = 11 ; car_number

first_name = Joakim ; first_name

last_name = Bonnier ; last_name

home_town = Stockholm, Sweden ; home_town

nationality = 24 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 5 ; bump_order

aggression = 0.990000 ; aggression

alertness = 1.030000 ; alertness

experience = 1.040000 ; experience

hype = 1.010000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 0.980000 ; quickness

smoothness = 1.000000 ; smoothness

magic_grip = 1.02 ; magic_grip

global_hype_scaling = 0.6 ; global_hype_scaling

                                0.7

[ driver_12 ]

team_number = 0 ; team_number

team_order = 2 ; team_order

car_number = 2 ; car_number

first_name = Denis ; first_name

last_name = Hulme ; last_name

home_town = Nelson, New Zealand ; home_town

nationality = 20 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 15 ; bump_order

aggression = 1.020000 ; aggression

alertness = 1.020000 ; alertness

experience = 1.000000 ; experience

hype = 1.008000 ; hype

qualifying = 1.010000 ; qualifying

quickness = 1.010000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.075 ; global_hype_scaling

                                0.475

[ driver_13 ]

team_number = 1 ; team_number

team_order = 2 ; team_order

car_number = 8 ; car_number

first_name = Jean-Pierre ; first_name

last_name = Beltoise ; last_name

home_town = Paris, France ; home_town

nationality = 10 ; nationality

helmet_color = 8 ; helmet_color

bump_order = 1 ; bump_order

aggression = 0.980000 ; aggression

alertness = 0.980000 ; alertness

experience = 0.960000 ; experience

hype = 1.000000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 0.9700000 ; quickness

smoothness = 1.000000 ; smoothness

magic_grip = 1.070 ; magic_grip

global_hype_scaling = 1.0 ; global_hype_scaling

                                1.0

[ driver_14 ]

team_number = 2 ; team_number

team_order = 1 ; team_order

car_number = 14 ; car_number

first_name = Jochen ; first_name

last_name = Rindt ; last_name

home_town = Mainz-am-Rhein, Germany ; home_town

nationality = 2 ; nationality

helmet_color = 2 ; helmet_color

bump_order = 10 ; bump_order

aggression = 1.020000 ; aggression

alertness = 0.990000 ; alertness

experience = 0.980000 ; experience

hype = 1.012500 ; hype

qualifying = 1.010000 ; qualifying

quickness = 1.020000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.125 ; global_hype_scaling

                                0.525

[ driver_15 ]

team_number = 4 ; team_number

team_order = 2 ; team_order

car_number = 3 ; car_number

first_name = Chris ; first_name

last_name = Amon ; last_name

home_town = Bulls, New Zealand ; home_town

nationality = 20 ; nationality

helmet_color = 14 ; helmet_color

bump_order = 13 ; bump_order

aggression = 1.015000 ; aggression

alertness = 1.020000 ; alertness

experience = 1.000000 ; experience

hype = 1.000000 ; hype

qualifying = 1.010000 ; qualifying

quickness = 1.041000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.15 ; global_hype_scaling

                                 0.55

[ driver_16 ]

team_number = 3 ; team_number

team_order = 1 ; team_order

car_number = 9 ; car_number

first_name = Dan ; first_name

last_name = Gurney ; last_name

home_town = Port Jefferson, NY, USA ; home_town

nationality = 26 ; nationality

helmet_color = 0 ; helmet_color

bump_order = 16 ; bump_order

aggression = 1.025000 ; aggression

alertness = 1.020000 ; alertness

experience = 1.020000 ; experience

hype = 1.000000 ; hype

qualifying = 1.015000 ; qualifying

quickness = 1.037000 ; quickness

smoothness = 1.000000 ; smoothness

global_hype_scaling = 0.08 ; global_hype_scaling

                                0.48

[ driver_17 ]

team_number = 2 ; team_number

team_order = 4 ; team_order

car_number = 17 ; car_number

first_name = Jo ; first_name

last_name = Siffert ; last_name

home_town = Fribourg, Switzerland ; home_town

nationality = 25 ; nationality

helmet_color = 13 ; helmet_color

bump_order = 7 ; bump_order

aggression = 0.980000 ; aggression

alertness = 1.010000 ; alertness

experience = 1.000000 ; experience

hype = 1.000000 ; hype

qualifying = 1.000000 ; qualifying

quickness = 1.000000 ; quickness

smoothness = 1.000000 ; smoothness

magic_grip = 1.03 ; magic_grip

global_hype_scaling = 0.9 ; global_hype_scaling

                                0.9

[ driver_18 ]

team_number = 2 ; team_number

team_order = 2 ; team_order

car_number = 15 ; car_number

first_name = Pedro ; first_name

last_name = Rodriguez ; last_name

home_town = Mexico City, Mexico ; home_town

nationality = 16 ; nationality

helmet_color = 14                         ; helmet_color
bump_order = 9                           ; bump_order
aggression = 1.015000                    ; aggression
alertness = 1.000000                     ; alertness
experience = 0.990000                    ; experience
hype = 1.010000                          ; hype
qualifying = 1.000000                    ; qualifying
quickness = 1.02000                      ; quickness
smoothness = 1.000000                    ; smoothness
global_hype_scaling = 0.45   ; global_hype_scaling
                                   0.7

[ driver_19 ]


team_number = 4                          ; team_number
team_order = 4                                  ; team_order
car_number = 16                          ; car_number
first_name = Lodovico                          ; first_name
last_name = Scarfiotti                       ; last_name
home_town = Turin, Italy                        ; home_town
nationality = 14                          ; nationality
helmet_color = 14                         ; helmet_color
bump_order = 4                           ; bump_order
aggression = 1.010000                    ; aggression
alertness = 1.000000                     ; alertness
experience = 0.990000                    ; experience
hype = 0.985000                          ; hype
qualifying = 1.015000                    ; qualifying
quickness = 0.970000                     ; quickness
smoothness = 1.000000                    ; smoothness
magic_grip = 1.02                               ; magic_grip
global_hype_scaling = 1.0   ; global_hype_scaling

                                  1.0

 

Retour en haut de page


17/07/2007
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 257 autres membres


Recommander ce blog | Contact | Signaler un contenu | Confidentialité | RSS | Créer un blog | Espace de gestion