Joined
Last Online
Recent Posts
posted in BB2 - General Discussion read more

Following link shows an example of AI (Lizardman) against myself (Human). It shows better than the pdf what is the current state of the development. But there is no comment 🙂

Youtube Video

posted in BB2 - General Discussion read more

*English summary: sorry I'm not native English speaker (writer 😊) and I do not want to translate this post. I explain how I've created a (not yet finished) AI for Blood Bowl. I'm sharing current work and wonder if one day an API would be available to integrate it into the official version. You still can have a small idea of its current behaviour looking at the joined pdf file. Feel free to ask some questions 😊

Il y a de ça dĂ©jĂ  quelques annĂ©es (!), aprĂšs avoir testĂ© la version 1 de Blood Bowl, j'en Ă©tais restĂ© assez frustrĂ© de la qualitĂ© de l'IA. Et ayant peu de moment oĂč je suis certain de pouvoir rester connectĂ© une demi heure non stop, je n'ai jamais Ă©tĂ© trop intĂ©ressĂ© par le multi... Donc j'ai construit ma propre IA (en Java).

Evidemment, pour pouvoir faire ça, il fallait une interface graphique - qui a pris d'ailleurs proportionnellement bien plus de temps que l'IA elle-mĂȘme 🙂
J'ai voulu d'abord utiliser une application Java existante (AIBowl) qui faisait exactement tout ce que je voulais: interface graphique, avec API pour construire sa propre IA ! Mais conceptuellement la partie graphique n'était pas du tout découplée du reste du code -> il n'était par exemple pas possible de réduire les temps d'animation à 0 seconde en cas de match AI vs AI.

C'est important car si je voulais faire un championnat avec d'autres IA, je ne voulais pas 'simuler' arbitrairement les scores des autres matchs, je voulais qu'ils se jouent rĂ©ellement et rapidement, sans ĂȘtre couplĂ© Ă  l'interface graphique. Avec des vrais gains d'expĂ©rience pour les joueurs, blessures, etc. Bref, comme ça ne me convenait pas, j'ai tout refait de scratch.

La version actuelle n'est d'ailleurs pas finie - Ă  ce sujet, je tiens surtout Ă  ne PAS remercier ma famille sans qui j'aurais dĂ©jĂ  fini tout ce boulot depuis belle lurette 🙂 (oui des enfants en bas Ăąge, ça n'aide pas pour le dĂ©veloppement sur temps libre). Car si je disais que j'avais dĂ» mal Ă  avoir du temps une demi-heure de suite pour jouer, forcĂ©ment il en fut de mĂȘme pour programmer ! Ce qui explique que aprĂšs quelques annĂ©es ce n'est tjs pas fini (d'autant qu'il y a eu aussi des annĂ©es oĂč je n'ai pas touchĂ© une seule ligne de code :-))

Ceci dit, je n'ai graphiquement rien rĂ©alisĂ© moi-mĂȘme. Le problĂšme c'est que je ne me souviens plus prĂ©cisĂ©ment d'oĂč j'ai pris les diffĂ©rents Ă©lĂ©ments/images/icĂŽnes. Sans doute Ă  la fois de ce AIBowl.jar, mais aussi d'une autre application Java qui existait avant la version Cyanide, peut-ĂȘtre mĂȘme de Fumbbl... En tout cas c'est simplement du 2D. A la vitesse oĂč je vais, le 3D est prĂ©vu pour environ dans 15, 20 ans 🙂 (non en rĂ©alitĂ© il n'est pas prĂ©vu)

La raison de ce post est double:

  1. Partager ce qui a Ă©tĂ© fait, car c'est un peu frustrant tous ces dĂ©veloppements juste pour une personne 🙂 Ca fait beaucoup de temps de dĂ©veloppement pour peu d'utilisation ! MĂȘme si essentiellement, j'ai fait ça aussi pour apprendre des choses. Mais comme expliquĂ© plus loin, je ne compte pas faire de release Ă  court terme;
  2. poser la question suivante : est-ce qu'il est possible qu'un jour Cyanide mette au point une api qu'on puisse intégrer notre propre IA ? Ca serait cool, ça permettrait d'avoir une meilleure IA pour tout le monde, à peu de frais pour Cyanide.

Voici maintenant une petite illustration du fonctionnement. Le choix de chaque action est guidĂ© par sa probabilitĂ© de rĂ©ussite. Comme tout joueur, elle va donc commencer par les actions sĂ»res, puis par celles de plus en plus risquĂ©es. Avec Ă©videmment certaines prioritĂ©s, comme par exemple faire un TD si c'est possible 🙂 Le point fort de l'IA par rapport Ă  l'humain, c'est qu'elle sait exactement (au bug prĂšs :-)) la probabilitĂ© de rĂ©ussite de telle ou telle action - par exemple pour un bloc, elle connaĂźt la probabilitĂ© de turnover, de mettre l'autre au sol, d'un push, etc, en tenant compte des skills, assists, etc. Son point faible est le positionnement stratĂ©gique des joueurs : par exemple elle sait faire une cage serrĂ©e autour du porteur du ballon (un homme Ă  chaque coin), mais moins facilement faire une cage moins serrĂ©e, ou Ă©viter un trou dans la dĂ©fense. Ca pourrait Ă©videmment s'amĂ©liorer dans le futur. A noter qu'elle tient aussi en compte le nombre de tours restants, ou le nombre de Relances restants, ça peut influencer son comportement.

La version actuelle n'est pas terminĂ©e : environ 80% des rĂšgles (LRB6) sont implĂ©mentĂ©es. Y a mĂȘme une rĂšgle fondamentale qui ne l'est toujours pas : y a pas encore moyen de lancer la balle ! J'avoue que je repousse tjs l'implĂ©mentation de cette derniĂšre bien que techniquement je ne vois pas de difficultĂ©, j'ai clairement en tĂȘte ce qu'il faut faire. Mais jusqu'Ă  prĂ©sent je m'attelle Ă  corriger les bugs existants, rajouter certains skills manquants, etc. Et mĂȘme sans cette option, je suis 100% certain que mon IA est plus amusante Ă  jouer (et plus forte) que celle de Cyanide 🙂 Je pense qu'elle est meilleure aussi que celle de AIBowl. Certes moins forte qu'un bon (voire moyen) joueur, mais elle se dĂ©brouille quand mĂȘme.

Voici ci-joint dans le pdf une petite séquence illustrant un peu son fonctionnement:

0_1543617423964_BloodBowl_IA_Sequence.pdf

VoilĂ  un petit aperçu, mais l'air de rien y a plein de dĂ©cisions Ă  prendre tout le temps (et donc Ă  coder) : utiliser une relance ou pas, suivre un joueur ou pas, oĂč pousser le joueur adverse, utiliser tel skill ou pas (genre 'stab'), ...

Voici par exemple le résultat d'un tournoi entre 21 équipes IA (chaque équipe se rencontrant une fois) :
(points, win, draw, loss)

Team NORSE_19: 20(P); 14(W); 2(D); 4(L); 30 points; 36 goals; 9 received
Team LIZARDMAN_21: 20(P); 14(W); 2(D); 4(L); 30 points; 41 goals; 14 received
Team VAMPIRE_9: 20(P); 12(W); 4(D); 4(L); 28 points; 25 goals; 14 received
Team ORC_2: 20(P); 12(W); 3(D); 5(L); 27 points; 29 goals; 12 received
Team NECROMANTIC_10: 20(P); 10(W); 4(D); 6(L); 24 points; 28 goals; 14 received
Team AMAZON_16: 20(P); 10(W); 4(D); 6(L); 24 points; 22 goals; 15 received
Team KHEMRI_15: 20(P); 10(W); 4(D); 6(L); 24 points; 23 goals; 17 received
Team DWARF_17: 20(P); 10(W); 4(D); 6(L); 24 points; 22 goals; 16 received
Team CHAOS_DWARF_8: 20(P); 10(W); 3(D); 7(L); 23 points; 20 goals; 18 received
Team NURGLE_11: 20(P); 7(W); 7(D); 6(L); 21 points; 18 goals; 14 received
Team UNDEAD_1: 20(P); 8(W); 4(D); 8(L); 20 points; 23 goals; 20 received
Team HIGH_ELF_20: 20(P); 7(W); 6(D); 7(L); 20 points; 22 goals; 19 received
Team DARK_ELF_6: 20(P); 7(W); 5(D); 8(L); 19 points; 21 goals; 23 received
Team CHAOS_12: 20(P); 8(W); 3(D); 9(L); 19 points; 16 goals; 22 received
Team SKAVEN_5: 20(P); 6(W); 6(D); 8(L); 18 points; 23 goals; 23 received
Team ELF_4: 20(P); 5(W); 8(D); 7(L); 18 points; 23 goals; 24 received
Team WOOD_ELF_3: 20(P); 5(W); 5(D); 10(L); 15 points; 17 goals; 28 received
Team HALFLING_7: 20(P); 2(W); 7(D); 11(L); 11 points; 11 goals; 29 received
Team HUMAN_14: 20(P); 3(W); 4(D); 13(L); 10 points; 11 goals; 32 received
Team OGRE_18: 20(P); 3(W); 2(D); 15(L); 8 points; 6 goals; 36 received
Team GOBLIN_13: 20(P); 2(W); 3(D); 15(L); 7 points; 8 goals; 46 received

On voit que comme pour des matchs entre humains, les Ogres ne sont pas des foudres de guerre ! Les vampires sont un peu trop bien classĂ©, c'est car 'Blood Lust' n'est pas encore implĂ©mentĂ© 🙂 Et les elfes sont actuellement privĂ©s d'un beau jeu de balle !

Actuellement, un match IA vs IA sans l'animation dure entre 1s et 2 secondes et demi. Ca pourrait ĂȘtre beaucoup plus rapide, mais je n'ai pas optimisĂ© ça car ça me suffit pour l'instant.

A noter que je ne compte pas faire de release publique Ă  courts/moyens termes, pour plusieurs raisons:

  1. La version actuelle n'est pas finie, et contient tout une série de bugs que je connais. Sortir une version publique avec un site de bugtracking m'amÚnerait à devoir faire tout un boulot de suivi de bugs, et je n'ai pas de temps à ça pour l'instant.
  2. Point de vue Copyrights Blood Bowl et tutti quanti, je ne sais pas si je peux lĂ©galement, mĂȘme en Ă©tant 100% gratuit. A noter que s'il le fallait, je pourrais sortir une version qui ne permettrait pas de crĂ©er son Ă©quipe, sauf via la version officielle de Blood Bowl de Cyanide. J'avais y a longtemps implĂ©mentĂ© la possibilitĂ© d'importer des fichiers sauvegardĂ©s de BB (du 1, j'ai jamais achetĂ© le 2 🙂 ). Ca demande juste un peu de boulot de mettre tout ça d'Ă©querre.
  3. Faudrait aussi que je retrouve d'oĂč viennent toutes les images/icĂŽnes et vĂ©rifier si j'ai pas de prob de copyrights lĂ -dessus...

Voilà, je viens de me faire plaisir en montrant un travail de l'ombre 🙂
J'espĂšre quand mĂȘme un jour pouvoir publier une version (gratuite bien sĂ»r) pour partager tout ça ! Sans me prendre un procĂšs de Games Workshop 🙂


Looks like your connection to Focus Home Interactive - Official Forums was lost, please wait while we try to reconnect.