Alors, faisons les choses dans l'ordre
La base de donnée de Bioware te permet à peu de chose près d'utiliser des variables locales qui ne disparaitront pas lorsque le serveur s'éteindra.
Puisque, vois-tu, en l'état actuel des choses, les variables locales (objets, chaînes, entiers, locations etc.) sont stockées directement dans la RAM, et par conséquent pas réutilisable après un reboot serveur.
Le PUMA, NWNX et d'autres ont essayé (et on d'ailleurs très bien réussi dans les deux cas) de pallier à ce lourd défaut de NWN. Enfin, ce n'est pas exactement le défaut du jeu. Le vrai défaut, c'est l'instabilité du nwserver, qui fait que sans ses programmes tiers, un serveur risque d'avoir à faire une auto-save toutes les 30 secondes (auto-save qui bugge parfois, ce qui n'arrange rien).
Bref, voilà
Donc la base de donnée, ce sera des fonctions Get/SetCampaignChose au lieu de Get/SetLocalTruc
Jaha nous a donné la liste il y a de ça un moment, mais j'ai la flemme d'aller la chercher
Il y aura deux grandes différences (bon trois en fait) par rapport au système actuel de variables locales :
- d'une, évidente : les variables "de campagne" seront stockées sur le disque, d'où un risque de petit lag si on en abuse (j'ai vu ça sur les forums bio); en contrepartie le contenu de cette base de donnée sera accessible en dehors du jeu, par des logiciels tiers déja existants (avec possibilité de faire une page en php listant le contenu de la DB par exemple, ce que je trouve génial
)
- la deuxième, c'est la gestion des objets; jusque là, ni le PUMA ni le NWNX n'étaient capables de garder des objets en mémoire, tout simplement parce que la quantité d'informations à récupérer était assez colossale (stats + inventaire + état actuel + etc.) et que la manip' tenait carrément de l'exploit.
Bioware étaient par contre largement capable d'une telle chose, puisqu'ils savent exactement comment fonctionne le moteur de jeu, et comment sauver des objets. Ils ont donc créer, non pas Get/SetCampaignObject, mais StockObject et une autre commande pour récupérer les objets, que j'ai oublié
En clair, ces commandes copient le moindre détail de l'objet dans la DB, afin de pouvoir le recréer de toute pièces sur demande du scripteur
Cela a pour conséquence que toutes ces caractéristiques jusque là inaccessibles des objets (nom, apparence, couleur, etc.) peuvent être modifiées par l'intermédiaire de la DB; mais il reste encore à trouver un moyen de faire ça dynamiquement par script
- troisième différence, qui a son importance : il est possible de choisir dans quelle base de donnée tu enregistre ta variable ou ton objet; ainsi tu multiplier les bases de données, par exemple : une servira à enregistrer les PVs et sorts des PJs pour les restaurer lorsqu'ils reviennent, qu'on appellera "DB_StatsPJs", puis une autre te servira à enregistrer les états des différentes quêtes, disons "DB_EtatsQuetes", etc.
Bon ok l'intérêt n'est pas évident à première vue (et encore moins dans mon exemple), mais quand tu y pense imagine que tous les modules solos soient condamnés à utiliser la même base de donnée
vu que deux variables ne peuvent avoir le même nom dans une même DB, ça risque de poser problème.
Voilà, je crois avoir fait le tour de la question