Structure d'un addon

Un addon est un dossier. Le même format sert pour les addons locaux et pour ceux du Workshop.

Arborescence

mon_addon/
├── addon.json        titre, description (et workshop_id une fois publié)
├── preview.png       miniature Workshop (ou preview.jpg) — facultatif
├── lua/              scripts Lua (par ordre alphabétique dans chaque dossier)
│   ├── autorun/          partagés : serveur + client
│   │   ├── server/       serveur seulement
│   │   └── client/       client seulement (HUD)
│   ├── entities/         entités scriptées (classe = nom du fichier)
│   ├── weapons/          armes Lua (SWEP, classe = nom du fichier)
│   │   └── gmod_tool/stools/   outils de toolgun Lua (TOOL)
│   └── *.lua             serveur (anciens addons)
├── models/           modèles (pack de modèles)
│   ├── *.glb (ou .gltf)
│   ├── props.json    réglages des modèles (nom, physique, collision…) — facultatif
│   └── textures/     images utilisées par les matériaux
├── vehicles/         véhicules : un .json par véhicule + modèles, voir Véhicules
├── weapons/          armes : un .json par arme + modèles et animations, voir Armes personnalisées
├── playermodels/     playermodels : un .json par playermodel + modèles et skins, voir Playermodels
├── sound/            sons (.ogg, .wav, .mp3) pour EmitSound / CreateSound
│   └── mon_addon/sirene.ogg
├── maps/             cartes faites avec l'éditeur de map
│   └── *.pcmap
└── dupes/            constructions sauvegardées
    └── *.json

Tous les dossiers sont facultatifs : un addon peut ne contenir que des props, que des scripts, ou un mélange. L'éditeur de map crée lui-même l'addon (dossier, addon.json et maps/) de chaque nouvelle map, et l'éditeur de modèles celui de chaque pack de modèles.

Ordre de chargement des scripts : lua/entities/, lua/weapons/ et lua/weapons/gmod_tool/stools/ (partagés, voir Armes et outils en Lua), lua/autorun/, puis lua/autorun/server/ (et lua/*.lua) côté serveur, ou lua/autorun/client/ côté client. Les gamemodes ne sont pas des addons : ils ont leur propre dossier gamemodes/.

Les fichiers rangés dans d'autres sous-dossiers de lua/ (lua/monaddon/config.lua) ne sont pas lancés tout seuls : on les charge avec include, et le serveur les envoie aux joueurs avec AddCSLuaFile.

addon.json

CléTypeRôle
titletexteNom affiché dans Mes addons, dans le menu de spawn (onglet de l'addon) et sur le Workshop. Par défaut : le nom du dossier.
descriptiontexteDescription affichée dans Mes addons et pré-remplie à la publication.
workshop_idnombreÉcrit automatiquement après la première publication. Il permet ensuite de mettre à jour le même objet Workshop. Ne le modifie pas à la main.
{
	"title": "Pack de véhicules",
	"description": "Une jeep, un buggy et des roues tout-terrain."
}

Où sont les addons ?

SourceEmplacementIdentifiant interne (clé)
Local%APPDATA%\Godot\app_userdata\PhysiCore\addons\<dossier>local_<dossier>
WorkshopDossier géré par Steam (abonnements et téléchargements)ws_<id Workshop>

La clé sert à référencer le contenu d'un addon, par exemple un prop : addon:local_mon_addon/models/caisse.glb. Voir Props, maps et dupes.

Activer et désactiver

Dans Explorer → Mods → Mes addons, chaque addon a une case à cocher. Le choix est mémorisé. Un addon désactivé n'est ni chargé (scripts), ni proposé (props, maps, dupes).

Supprimer

Le bouton Supprimer de Mes addons demande une confirmation puis envoie le contenu à la corbeille de Windows (récupérable) :

ServeursQuand tu rejoins une partie, les addons Workshop du serveur sont activés pour la durée de la session, même si tu ne les as pas cochés. Voir Téléchargement automatique.

Ordre de chargement

  1. Au lancement d'une partie, l'hôte charge tous les addons activés, triés par titre.
  2. Dans chaque addon, les fichiers de lua/ sont exécutés par ordre alphabétique. Préfixe-les (00_config.lua, 10_commandes.lua…) si l'ordre compte.
  3. Tous les addons partagent le même état Lua : une variable globale définie par un addon est visible par les autres. Préfère local et des identifiants de hook uniques (monaddon_…).

L'addon d'exemple

Au premier lancement, PhysiCore crée l'addon local « Exemple Lua » (addons/exemple_lua). Il ajoute un message de bienvenue et les commandes /aide et /soin. C'est un bon point de départ à copier.