IA:Jalons de développement/Fr

From OpenTTD
Jump to: navigation, search


Au fur et à mesure que le développement progresse, des changements importants sont introduits dans le système NonIA. Cette page les documente. Les éléments les plus récents sont en tête.

Contents

12 janvier 2009

NonIA est fusionné avec le tronc principal. Youpi!

20 juillet 2008 - Nouvelle manière d'assigner des IAs à une (fonctionnalité de) compagnie

Depuis le 20/08/2008 (r13771), il existe une nouvelle méthode pour indiquer quelle IA doit contrôler quelle compagnie, et avec quels paramètres. De ce fait, l'option de ligne de commande '-a' est supprimé. Prochainement, une IHM sera ajoutée pour faciliter l'édition, mais pour le moment, vous devrez ouvrir 'openttd.cfg' et ajouter/modifier la section suivante:

[ai_players]
none = 
YourAI =

Vous pouvez définir jusqu'à 8 emplacements. Pour chaque IA démarrant sur cet emplacement (compagnie), l'IA que vous avez assignée sera démarrée. Si un joueur humain démarre une compagnie sur cet emplacement, les infos de l'IA sont ignorées. 'none' indique une compagnie humaine.

20 mai 2008 - main.nut est coupé en deux

Depuis le 20/05/2008 (r13194), une nouvelle méthode pour enregistrer votre IA est en place. Cette méthode résoud de nombreux problèmes anciens. Comme, par exemple, si vous avez un problème de compilation dans votre main.nut, au démarrage, cela ne donnera plus d'erreur. L'erreur s'affiche quand l'IA veut démarrer, et ainsi, nous pouvons la rediriger vers la fenêtre de débogage de l'IA. Cela résout le problème où l'utilisateur n'a aucune idée de la raison pour laquelle l'IA ne se manifeste pas (car beaucoup d'utilisateurs (Windows) ne regardent jamais la console). La seule chose importante désormais est que, au démarrage, votre info.nut soit correct. Ce qui ne devrait pas être trop difficile pour la plupart des gens.

Mise à jour depuis un ancien système

En gros, ce que vous devez faire est de déplacer une petite partie de votre main.nut dans info.nut. Exemple:

class FWrightAI extends AIFactory {
	function GetAuthor()      { return "OpenTTD Dev Team"; }
	function GetName()        { return "WrightAI"; }
	function GetDescription() { return "Une IA simple qui tente de vous battre uniquement avec des avions"; }
	function GetVersion()     { return 1.1; }
	function GetDate()        { return "24/02/2008"; }
	function CreateInstance() { return "WrightAI"; }
}

/* Indique au cœur que nous sommes une IA */
iFWrightAI <- FWrightAI();

devrait être supprimé et info.nut devrait contenir:

class WrightAI extends AIInfo {
	function GetAuthor()      { return "OpenTTD Dev Team"; }
	function GetName()        { return "WrightAI"; }
	function GetDescription() { return "Une IA simple qui tente de vous battre uniquement avec des avions"; }
	function GetVersion()     { return 1.1; }
	function GetDate()        { return "24/02/2008"; }
	function CreateInstance() { return "WrightAI"; }
}

RegisterAI(WrightAI());

Ce dont il faut se souvenir:

  • la ligne <- devient RegisterAI
  • AIFactory devient AIInfo.

17 mars 2008 - Suppression du support de C++

Depuis le 17 mars 2008, il n'est plus possible d'écrire votre IA en C++. Le seul langage pour écrire votre IA est Squirrel. Cela est dû à diverses raisons, parmi lesquelles:

  • Il est difficile de maintenir un framework qui supporte à la fois Squirrel et C++.
  • Squirrel nous limitait pour faire des choses intéressantes en C++, et C++ nous limitait pour faire des choses intéressantes en SQ.
  • Quand j'ai une IA en C++ et que vous voulez l'essayer, je dois vous envoyer les sources et vous devez recompiler OpenTTD.
  • Même si ce dernier point était résolu avec des modules, il ne serait pas compatible entre plateformes.
  • Squirrel est assez mature pour relever le défi.
  • Squirrel permet un échange facile des AIs entre utilisateurs.
  • Si vous faites une erreur en C++, vous pouvez planter le jeu. En SQ, nous pouvons contenir tout problème dans la machine virtuelle, et ne tuer que l'IA.

Bien entendu, il y a des inconvénients, qui sont, pour mémoire:

  • C++ est plus rapide, bien que la différence ne soit pas aussi importante qu'attendu.
  • C++ permet de jouer avec les pointeurs. Bien que ce soit aussi une mauvaise chose, cela peut fonctionner pour le mieux.

Donc pour résumer: en supprimant C+ des langages possibles pour écrire votre IA, nous gagnons en simplicité dans le framework, nous gagnons en sécurité, et plus que tout: en portabilité. Pour ces raisons, il a été unanimement décidé de supprimer C++ comme langage possible pour le framework NonIA.

Personal tools