Docs Démarrer

Vue d’ensemble

Documentation d’OpenWar3 : ce que c’est, ce qu’elle permet ; démarrage rapide, premier Bot, faire écrire l’IA par un LLM, API et protocole, passerelle et MCP — par quelle page commencer selon votre situation.

OpenWar3 est la couche d’interface ouverte de War3AI : un runtime injecté dans Warcraft III 1.27, accompagné d’un SDK Python.

  • Toutes les 50 ms, le runtime pousse en mémoire partagée l’état complet de la carte : ressources et nourriture de tous les joueurs ; pour chaque unité, points de vie et mana, ordre en cours, cible attaquée, temps de recharge, buffs, inventaire ; objets au sol, arbres, files de production, cycle jour/nuit. S’y ajoute un flux d’événements : apparition et mort des unités, chaque coup porté, fin de production…
  • Un programme externe envoie des commandes sémantiques avec une latence d’environ une frame : déplacer, attaquer, récolter, construire, entraîner, lancer un sort, apprendre une compétence, ressusciter, utiliser un objet, acheter… Chaque commande renvoie un accusé de réception qui indique si le moteur l’a acceptée et, sinon, avec quel code de raison.
  • Vous dites seulement « quoi faire » : les unités par leur code à quatre caractères, les sorts par leur nom d’ordre, comme dans le jeu. Le « comment » est l’affaire du runtime.

Un LLM n’a donc besoin d’aucune connaissance bas niveau, ni de voir l’écran. Une fois la documentation lue, il peut écrire un Bot qui gère son économie et sait se battre, puis le corriger lui-même en cours de route à partir des accusés de réception et des événements.

Et pas seulement pour les matchs : le canevas permet de dessiner vos propres panneaux et annotations sur l’écran de jeu, Interface et entrées rend cliquables les boutons dessinés et fait réagir les raccourcis clavier, le canal JASS permet d’appeler depuis l’extérieur les 1291 fonctions du jeu, et dans les cartes RPG vous pouvez vous faire accompagner d’un compagnon IA. Une IA aboutie peut devenir un schéma, à changer en un clic, à exporter et à partager ; tout un nouveau gameplay peut s’écrire sous forme de mod de jeu.

Pas besoin d’écrire du Python pour se connecter : la passerelle permet à n’importe quel langage ou page web d’appeler les mêmes interfaces en WebSocket / JSON, et le serveur MCP permet à un agent comme Claude Code d’appeler directement des outils pour observer la partie et donner des ordres.

Choisissez votre parcours

Vous êtesCommencez parEnsuite
Joueur de Warcraft, sans notions de programmationDémarrage rapide → Écrire un Bot avec un LLMEn cas de problème, voir la FAQ
À l’aise en PythonPremier Bot → Modèle mental → Les quinze règlesRecettes de jeu pro, Bots d’exemple
En train de construire un agent de code / de l’automatisationItération autonome de l’agentAccusés de réception et codes de raison, llms-full.txt
Intéressé par un LLM qui décide en cours de partieUn LLM comme conseillerBulles de dialogue et modèles locaux
Envie de laisser un agent agir directement (Claude Code, etc.)Un LLM appelle directement des outils (MCP)Interface et entrées
Utilisateur d’un autre langage (JS, C#, Go, Rust…)PasserellePlus bas niveau : Protocole W3P
Envie de faire s’affronter les IA de plusieurs personnesMode équitableArène
Envie de créer votre propre gameplay dans des cartes RPG / personnaliséesMods de jeuInterface et entrées, Canevas, Canal JASS, Compagnon RPG
Envie de partager votre IA avec d’autresSchémas d’IAConsole Farsight

Contenu du dépôt

start.bat       Le point d'entrée unique : déploiement à partir de zéro + ouverture de Farsight ; stop.bat arrête tout
sdk/python/     Couche d'interface. openwar3/ est la façade publique (Game + Bot) : commencez ici
brains/         Couche de décision
  examples/       hello_bot (économie) → rush_bot (armée) → macro_bot (macro) → micro_bot (micro + creeping) ; buddy (compagnon RPG) ;
                  mod_hero_roguelike / mod_endless_defense (mods de jeu)
  xwar3/          Cerveau de référence : couche stratégique (seconde) + couche réflexe (4 processus) + modèle de victoire
console/        Console web Farsight (FastAPI + React)
gateway/        Passerelle (WebSocket / JSON) + client JS + page de démonstration dans le navigateur
director/       Réalisation automatique, barres de vie au-dessus des unités
speech/         Bulles de dialogue + LLM local
runtime/        Orchestration multi-instances (chaque partie relancée selon les réglages)
data/           order-ids.txt ; outils pour extraire les données de votre propre jeu
schemes/        Vos schémas d'IA (mine/) et ceux partagés par d'autres (installed/), hors du dépôt
tools/          play.py (une partie en une commande), run_scheme.py (exécuteur de schémas), war3_mcp.py (serveur MCP), run_tests.py, scripts de vérification en jeu
docs/           Catalogue de l'API api.json (généré depuis le code), protocole, manuel

Entre le runtime et votre code, il n’y a qu’un protocole W3P versionné : le SDK Python est le plus simple, mais vous pouvez aussi vous connecter depuis un autre langage en suivant le protocole.

Que signifie le « statut de test » d’une interface

Dans le catalogue de l’API, chaque interface porte l’un de ces trois statuts :

  • Vérifié en jeu : le chemin bas niveau (numéro d’action, forme des paramètres, effet relu) a été vérifié dans de vraies parties, et un script de vérification veille dessus.
  • Expérimental : interface récente, déjà fonctionnelle sur une instance de test et en cours de vérification en jeu point par point. Elle est utilisable, mais les détails de l’interface peuvent encore changer.
  • Déduit / pas entièrement testé : le mécanisme sous-jacent reprend la façon de faire du moteur lui-même (par exemple la fonction JASS équivalente), mais n’a pas encore été vérifié point par point en partie. Consultez l’accusé de réception avant de vous y fier.

Seul Warcraft III 1.27 (The Frozen Throne) est pris en charge pour l’instant. Les versions 1.24 à 1.28 partagent la même structure de moteur ; la prise en charge multiversion est prévue à la phase P4 de la feuille de route. À partir de la 1.29, comme pour Reforged, il s’agit d’un autre moteur, hors du périmètre de nos engagements.