Guide du développeur d’addons WoW Forever : écrire des addons avec l’IA

Publié le Mis à jour le Rapports de la bêta de la build 1.60.1.69913

Partager

Guide des addons page 1 sur 7

Les addons Forever utilisent l’API Mainline moderne, et le Warcraft Wiki répertorie l’interface 16001 pour la bêta. Briefez d’abord votre modèle d’IA, sinon il écrit des appels comme GetSpellInfo, absents de la build 69913.

Demandez tout sur le développement d’addons Forever à notre IA accro

Interface 16001, valeurs secrètes, changements de C_Spell, prompts système et plus

Tout ce que couvrent nos guides. Les réponses proviennent de cette page et du reste de nos guides, avec les vraies valeurs en graphique et les sections de guide liées. C’est une IA : vérifiez la source avant de la citer.

Avant qu’un modèle de langage écrive du code pour World of Warcraft: Forever, il lui faut des contraintes qui écartent les habitudes de Classic Era qu’il a mémorisées : Forever associe le cadre d’Azeroth d’origine à l’interface Mainline moderne.

Interface TOC
16001
Sortie
Nov 4, 2026
Famille d’API
Mainline 12.1.5
Build bêta testée
1.60.1.69913

Le problème

Demandez un addon WoW à un modèle et il écrit du code de l’ère Classic. Sur la build bêta 1.60.1.69913, les testeurs de WoW Forever Builds ont constaté que GetSpellInfo et GetItemInfo avaient disparu, que WOW_PROJECT_ID renvoyait la valeur Mainline et que la vie du joueur était renvoyée sous forme de valeur secrète, que les addons ne peuvent ni additionner ni comparer. Warcraft Forever rapporte que CombatLogGetCurrentEventInfo est inaccessible aux addons. De nouvelles builds ont suivi (1.60.1.70009 le 23 septembre). La sonde conservée du 12 octobre sur 1.60.1.70338 relève l’ID de projet 18 ; testez donc à nouveau chaque observation et conservez son numéro de build.

Kenneth Henseler montre une IA qui se trompe quatre fois sur du code d’addon WoW Forever, le 25 septembre 2026.

Comment utiliser ce guide

Donnez au modèle des contraintes explicites avant qu’il ne génère quoi que ce soit. Les modèles d’architecture client montrent en quoi Forever diffère de Classic Era et de Midnight. L’aide-mémoire de migration d’API contient les signatures de C_Spell et C_Item. La liste des pièges courants de l’IA recense les erreurs fréquentes des modèles. Partez des fichiers de départ, copiez depuis la bibliothèque de prompts d’addons ou examinez l’addon de test Forever Beacon, un exemple de référence non vérifié.

Pour une tâche précise, consultez l’API d’interface des règles actuelles, les fonctions avec plusieurs commandes, les commandes de message, les messages dans une fenêtre ou l’aide-mémoire des ID de sons. Chaque exemple indique ce qui a été vérifié et ce qui nécessite encore un test en jeu.

La mise à jour de l’ID de projet du 13 octobre cite l’extrait conservé du client 70338 et la sonde WFG du 12 octobre. Les miroirs de sources liés peuvent afficher une build plus récente.

Les règles d’or

Appliquez ces dix règles à chaque brouillon d’IA ciblant WoW Forever. Les guides Midnight omettent les règles 3, 6, 7 et 8, car elles sont propres à la bêta de Forever.

01. Interface : 16001

Un addon réservé à Forever déclare ## Interface: 16001, la valeur Forever Beta du tableau TOC du Warcraft Wiki. Classic Era utilise 11509 et Midnight 120100. Pour livrer un seul paquet à plusieurs clients, utilisez une ligne d’interface séparée par des virgules, un fichier _Camelot.toc (le suffixe Forever du wiki) ou un _Mainline.toc que Midnight et Forever partagent. Retestez quand le numéro changera au lancement.

02. Lua 5,1

WoW exécute un Lua 5,1 modifié. Pas de goto, pas de //, pas d’opérateurs bit à bit et pas de _ENV. Le travail bit à bit passe par la bibliothèque bit (bit.band, bit.bor, bit.lshift). Le wiki indique que les bibliothèques du système d’exploitation et des E/S de fichiers sont absentes, et que sa liste de fonctions omet require, dofile et loadfile. Le fichier .toc est votre chargeur de modules.

03. Famille Mainline, pas Classic

Blizzard a indiqué au Discord WoW UI que Forever partage l’architecture d’interface de Mainline, « including the vast majority of APIs available in 12.1.5 », et que le désarmement des addons de Midnight, secrets compris, est actif (cité par Wowhead). Le type de jeu Forever s’appelait Camelot, et ce nom doit changer avant le lancement. Lors du stream de questions-réponses du 17 septembre, les développeurs ont dit « we did opt for the modern API approach. » Portez un addon Midnight, pas un addon de combat Classic dont vous espérez qu’il fonctionnera.

04. Espaces de noms C_

Sur la build 69913, GetSpellInfo, GetItemInfo, GetSpellBookItemName, GetNumTalentTabs, GetTalentInfo et GetNumSkillLines étaient absents. C_Spell.GetSpellInfo renvoie une seule table ; C_Item.GetItemInfo renvoie la même liste de valeurs que l’ancien global. Les deux renvoient nil tant que l’enregistrement n’est pas en cache. Vérifiez nil, demandez le chargement (C_Spell.RequestLoadSpellData, C_Item.RequestLoadItemDataByID) et écoutez l’événement de résultat.

05. Tout mettre dans un espace de noms

Chaque fichier commence par local addonName, ns = .... L’état partagé s’accroche à ns. Les seuls globaux à déclarer sont les SavedVariables, les entrées de commandes slash et les rappels de l’Addon Compartment nommés dans le TOC. Un cadre nommé MainFrame devient un global ; nommez-le d’après votre addon ou passez nil.

06. Des événements, pas le journal de combat

Utilisez un seul cadre, un seul script OnEvent et une table de gestionnaires. Utilisez RegisterUnitEvent quand vous ne surveillez que le joueur. Sur Midnight, l’enregistrement de COMBAT_LOG_EVENT_UNFILTERED lève une erreur, et Warcraft Forever rapporte que le lecteur du journal de combat est indisponible sur Forever. Blizzard a dit en stream que Forever inclut un damage meter et un Cooldown Manager. Blizzard a aussi dit en stream qu’un swing timer arrive "perhaps coming soon" (« peut-être bientôt »).

07. Les secrets s’affichent, ils ne se résolvent pas

Les testeurs ont vu UnitHealth du joueur revenir sous forme de nombre secret : type() indique number, et lui additionner une valeur échoue. Warcraft Forever rapporte que les noms d’unités peuvent être des chaînes secrètes, et que UnitCanAttack et UnitExists peuvent être des booléens secrets. Protégez les valeurs avec issecretvalue avant de les comparer, d’en faire une condition ou de les afficher. Passez la vie directement à un StatusBar avec SetMinMaxValues et SetValue. Un appel protégé bloqué peut échouer sans erreur Lua, et pcall ne l’éliminera pas.

08. Ne vous fiez pas à WOW_PROJECT_ID seul

La build 69913 renvoyait 1, la valeur Mainline, selon les rapports. La sonde en direct conservée sur la build 70338 relève plutôt 18, et le code source du client de Blizzard nomme cette constante WOW_PROJECT_CAMELOT. Une bibliothèque qui interprète 1 comme Midnight uniquement, ou toute autre valeur comme Classic, prend la mauvaise branche. Comparez les constantes nommées lorsqu’elles sont disponibles et ajoutez une sonde de capacité. L’ancien exemple du Warcraft Wiki utilisait LE_EXPANSION_LEVEL_CURRENT, ou une variable TOC pour le type de jeu ; sa condition d’ID de projet Mainline ne correspond pas à 70338. Attendez-vous à ce que le test change avant le lancement.Source : constantes de projet Camelot de Blizzard, code source conservé de la build 70338 inspecté le 13 oct. 2026 ; sonde en direct capturée le 12 oct..

09. Aucune dépendance aux secure snippets

Sur la build 69913, les secure snippets n’ont pas pu être compilés, car le client n’avait pas de loadstring_untainted. Le click casting et la pagination des barres d’action qui utilisent des snippets ont échoué aussi. WoW Forever Builds pense qu’il s’agit probablement d’un bug. Ne publiez pas de cadres de soins qui exigent des secure snippets tant qu’une build ne l’a pas corrigé. Vos propres boutons sont la voie de clic sûre. N’écrivez pas d’attributs sécurisés sur les cadres d’unité de Blizzard.

10. Fichiers entiers, ordre de chargement correct

Fournissez toujours le .toc et chaque fichier .lua en entier. Les addons de la bêta se trouvent dans World of Warcraft\_classic_beta_\Interface\AddOns\. Les SavedVariables se chargent après l’exécution de vos fichiers et sont prêtes quand ADDON_LOADED se déclenche pour votre addon. Un rapport de forum du 21 septembre montrait des données sauvegardées écrites sur le disque mais absentes à la connexion suivante ; un suivi du 25 septembre indique que la build 70009 les recharge.

Démarrage rapide

Le plus petit addon WoW Forever utile tient en deux fichiers. Le nom du dossier doit correspondre au nom du fichier TOC. Placez-les dans World of Warcraft\_classic_beta_\Interface\AddOns\FirstLight\ et lancez le client. Le nom du personnage est protégé, car les noms peuvent être secrets.

FirstLight.toc
## Interface: 16001
## Title: First Light
## Notes: Smallest correct WoW Forever addon.
## Author: YourName
## Version: 0.1.0
## SavedVariables: FirstLightDB

FirstLight.lua
FirstLight.lua
local addonName, ns = ...

local function SafeName()
    local name = UnitName("player")
    if type(issecretvalue) == "function" and issecretvalue(name) then
        return "adventurer"
    end
    return name or "adventurer"
end

local frame = CreateFrame("Frame")

function frame:ADDON_LOADED(loaded)
    if loaded ~= addonName then return end
    FirstLightDB = FirstLightDB or { seen = 0 }
    ns.db = FirstLightDB
    self:UnregisterEvent("ADDON_LOADED")
end

function frame:PLAYER_LOGIN()
    ns.db.seen = ns.db.seen + 1
    print("|cffd4a85a[" .. addonName .. "]|r online, " .. SafeName() .. ". Session " .. ns.db.seen .. ".")
end

frame:SetScript("OnEvent", function(self, event, ...)
    if self[event] then
        self[event](self, ...)
    end
end)

frame:RegisterEvent("ADDON_LOADED")
frame:RegisterEvent("PLAYER_LOGIN")

Ce qui est confirmé et ce qui a seulement été observé

AffirmationSource et statut
Forever utilise l’API d’addons moderneConfirmé. Développeurs de Blizzard, stream de questions-réponses du 17 septembre, 01:20:52
Compteur de dégâts et Cooldown Manager intégrésConfirmé. Même stream, 01:21:51
Swing timer"Perhaps coming soon" (« peut-être bientôt ») sur le même stream. Pas un engagement
Partage la plupart des API 12.1.5 ; désarmement de Midnight et secrets actifsRapporté. Déclaration de Blizzard sur le Discord WoW UI, citée par Wowhead
Interface 16001Rapporté. Tableau TOC du Warcraft Wiki, ligne Forever Beta
UnitHealth est un nombre secret ; les secure snippets ne compilent pasRapporté. WoW Forever Builds, build 69913. À retester
WOW_PROJECT_ID vaut 1Rapporté. WoW Forever Builds, build 69913. À retester
WOW_PROJECT_ID vaut 18 (WOW_PROJECT_CAMELOT)Observation du client rapportée. Sonde en direct conservée, build 70338, le 12 octobre
SavedVariables écrites mais non restauréesNon vérifié. Signalements sur le forum du 18 au 21 septembre ; une réponse du 25 septembre indique que la build 70009 a corrigé le problème

L’accès à la bêta court du 17 septembre au 21 octobre 2026. Le lancement est fixé par Blizzard au 4 novembre 2026 à 15:00 PST, niveau maximum 60. Toute build d’ici là peut modifier l’API. La référence de la bêta et la vue d’ensemble des systèmes couvrent les règles du jeu qui l’entourent.

Prompt système pour les modèles d’IA

Collez ce bloc dans votre session d’IA avant de demander du code d’addon. La bibliothèque de prompts IA contient les prompts de tâches, de portage et de revue.

Prompt système
You write World of Warcraft: Forever addons. The client is not Classic Era and it is not a private server.

Facts you must obey. The original September 28, 2026 checks used Blizzard's statements, the Warcraft Wiki, and community tests on beta build 1.60.1.69913 (followed by 1.60.1.70009). The project-ID note was refreshed from retained build 1.60.1.70338 client source and the October 12 live probe, inspected October 13. Launch is November 4, 2026. Retest every claim on the build in front of you before you tell the user it is final.

- The Forever beta TOC interface is 16001. A Forever-only addon uses exactly: ## Interface: 16001
- Lua is 5.1. No goto, no //, no bitwise operators, no _ENV. Bitwise work uses the bit library (bit.band, bit.bor, bit.lshift).
- There is no require, dofile, loadfile, io library or os library. Load order is the .toc file. Shared state lives on the addon namespace.
- Blizzard said Forever shares Mainline's UI architecture, including the vast majority of APIs available in 12.1.5, and that Midnight's addon disarmament (including secret values) is active. Forever and modern WoW are two game types in the Mainline family. The Forever type was called Camelot and was expected to be renamed before launch. Do not target Classic Era interface numbers (11500s).
- WOW_PROJECT_ID was 18 (WOW_PROJECT_CAMELOT) in the retained live probe on build 70338. WOW_PROJECT_MAINLINE was 1 and WOW_PROJECT_CLASSIC was 2. The older community report of 1 belongs to build 69913. Never choose a Classic code path from that number alone. Compare named constants when available; probe select(4, GetBuildInfo()) and the presence of the API you need. Do not reuse the older LE_EXPANSION_LEVEL_CURRENT example inside a WOW_PROJECT_MAINLINE branch for 70338.
- These globals were absent on build 69913: GetSpellInfo, GetItemInfo, GetSpellBookItemName, GetNumTalentTabs, GetTalentInfo, GetNumSkillLines. Use C_Spell and C_Item. C_Spell.GetSpellInfo returns a table. C_Item.GetItemInfo returns multiple values, like the old global. Both return nil until the data is cached. Request the load and listen for SPELL_DATA_LOAD_RESULT or ITEM_DATA_LOAD_RESULT.
- On Midnight, registering COMBAT_LOG_EVENT_UNFILTERED throws an error, and testers report CombatLogGetCurrentEventInfo unavailable on Forever. Do not build a damage meter, healing meter, or combat-log boss mod. Blizzard ships a damage meter and a cooldown manager. A swing timer was described as perhaps coming soon, not as a promise.
- Player UnitHealth has been observed as a secret number: type() reports "number", and arithmetic or comparison throws. Unit names can be secret strings. UnitCanAttack and UnitExists can be secret booleans. Before any comparison, branch, or print, guard with issecretvalue when that function exists. Pass health and max health straight into StatusBar:SetMinMaxValues and StatusBar:SetValue.
- pcall does not make a protected call safe. Testers report that the client records "Interface action failed because of an AddOn" without a Lua error, and that the counter clears on a full client restart, not on /reload. Do not call ChatFrame_OpenChat, ChatEdit_ActivateChat, or C_SuperTrack.SetSuperTrackedUserWaypoint. Do not write secure attributes onto Blizzard unit frames. Shift-click links go through HandleModifiedItemClick. Map pins go through C_Map.SetUserWaypoint with a UiMapPoint.
- Secure snippet compilation failed on build 69913, which breaks click-casting and action-bar paging that depend on it. Treat that as a beta defect to retest, not as a design you should depend on. Use your own buttons.
- SavedVariables load after the addon's files run. Read and create them inside ADDON_LOADED for this addon, never at file scope. The beta was reported losing saved data between sessions until build 70009; if persistence fails, tell the user it may be the client.
- Every Lua file starts with: local addonName, ns = ...
- Handle events with one frame and a handler table keyed by event name. Do not grow an if/elseif chain. Do not poll with OnUpdate when an event exists.
- Check InCombatLockdown() before you show, hide, or move a protected frame. Queue the closure and run it on PLAYER_REGEN_ENABLED.
- Skin and inform. Do not automate combat decisions, and do not replace Blizzard unit frames, the damage meter, or the cooldown manager.
- When asked for an addon, emit a complete .toc and every .lua file. No fragments. State the beta install path: World of Warcraft\_classic_beta_\Interface\AddOns\<Name>\ and tell the user to restart the client if a new addon folder does not appear.
- If you are not sure an API exists on Forever, say so and show a capability probe. Do not invent C_ functions.

Liste de vérification

Passez cette checklist sur chaque fichier produit par un modèle d’IA avant de le tester en jeu :

Le reste du guide

Chaque page couvre un sujet :

FAQ : questions des auteurs d’addons

Quelle version d’interface les addons WoW Forever utilisent-ils ?

Le Warcraft Wiki indique 16001 pour la bêta de Forever. Confirmez-le sur votre client avec /dump select(4, GetBuildInfo()) dans la zone de chat.

Une IA peut-elle écrire un addon WoW Forever ?

Seulement si vous lui donnez d’abord des contraintes explicites. Sans elles, les modèles écrivent volontiers d’anciennes globales comme GetSpellInfo, un numéro d’interface retail tel que 110207, et COMBAT_LOG_EVENT_UNFILTERED. Le prompt système et la checklist ci-dessus en repèrent la plupart avant votre test en jeu.

Qu’est-ce que Camelot dans le client bêta ?

Camelot est le nom interne du type de jeu Forever dans la famille de code Mainline, d’après la déclaration de Blizzard sur le Discord WoW UI. Blizzard a dit qu’il serait renommé avant le lancement. Le Warcraft Wiki répertorie déjà _Camelot.toc comme suffixe TOC de Forever ; vérifiez donc ce suffixe à nouveau après le lancement.

Faits clés

  • Interface TOC Modifiée16001 dans la ligne Forever Beta du tableau TOC du Warcraft Wiki ; vérifiez avec /dump select(4, GetBuildInfo())Classic : Classic Era indique 11509 dans le même tableau.
  • API des addons ModifiéeForever utilise l’API moderne des addons, avec les restrictions de combat de MidnightClassic : Classic Era conserve l’ancienne API, avec le journal de combat ouvert aux addons.
  • Lancement Nouveau dans Forever4 novembre 2026 à 15:00 PST, niveau maximum 60
  • Famille d’API ModifiéePartage l’architecture d’interface Mainline et "the vast majority of APIs available in 12.1.5" (« la grande majorité des API disponibles dans cette version »)
  • Build bêta testée Nouveau dans Forever1.60.1.69913 ; les builds ultérieures (70009 le 23 septembre) peuvent différer
  • Outils intégrés Nouveau dans ForeverCompteur de dégâts et Cooldown Manager inclus ; swing timer "perhaps coming soon" (« peut-être bientôt »)
  • ID de projet capturé Modifié18 (WOW_PROJECT_CAMELOT) dans la sonde en direct du 12 octobre sur la build 70338 ; les anciens rapports de 69913 indiquaient 1

Sources

  1. World of Warcraft Developer Q&A (September 17 stream), add-on answer at 01:20:52Blizzard Entertainment (YouTube)
  2. WoW: Forever Will Have Addon Changes from MidnightWowhead
  3. Addons in WoW Forever? Blizzard Devs Just Addressed the Big QuestionIcy Veins
  4. TOC formatWarcraft Wiki
  5. What the WoW Forever beta breaks for addons: secret health values, dead secure snippets, new APIsWoW Forever Builds
  6. AddonsWarcraft Forever
  7. WOWF Beta: Addon SavedVariables appear to write correctly to disk but are not restored at startupWorld of Warcraft Forums (player bug report)
  8. World of Warcraft: Forever What's Next Panel RecapBlizzard Entertainment
  9. Secret ValuesWarcraft Wiki
  10. Patch 12.0.0/API changesWarcraft Wiki
  11. WOW_PROJECT_IDWarcraft Wiki
  12. Lua functionsWarcraft Wiki
  13. Saving variables between game sessionsWarcraft Wiki
  14. Blizzard client source: ProjectConstants.lua (retained build 70338; mirror may change)Blizzard Entertainment (source mirrored by Gethe)
  15. Blizzard · Developer Q&A, 01:21:51