Jalons de développement
Framework NonIA

Page principale NonIA

Développement

Jalons de développement
Suggestion de changements de l'API

Programmation de l'IA

Documentation API
Introduction
Fichier info.nut
Fichier main.nut
Principes de base
Détermination de chemin routier
Détermination de chemin ferroviaire
Sauver / Charger des données
Choses à savoir
Squirrel
Page principale
Erreurs courantes
Listes
Traiter les erreurs OTTD
Tramways
Bibliothèques de l'IA
Forum
FAQ du forum
Comportement de l'IA

IAs

TestAI
WrightAI
Convoy
Voir le forum
Voir BaNaNaS
Tous les articles de la catégorie NonIA

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:

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:

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

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.