|
Je ne sais pas ce que vous en pensez mais le système de gestion aléatoire de trésors de NWN me parait... nullissime. A croire que le gars de Bioware chargé de concevoir ce système avait trop fait de Diablo tard le soir avant de développer son script. Notez que je n'ai rien contre les joueurs de Diablo (j'en étais un occasionnellement) mais lorsqu'un programmeur bossant sur un jeu qui a officiellement un gameplay différent des Diablo-Like se laisse influencer de la sorte, là on peut se dire qu'il y a un gros problème. Certains diront peut-être "Voilà encore un exigent qui grogne après Bioware. S'il est pas content, qu'il fasse mieux lui-même". Mais la grosse différence, c'est que je ne grogne pas après Bioware parce qu'ils n'ont pas fait assez bien... mais parce qu'ils ont fait moins bien que par le passé (c'est fort tout de même
![]() ça parait un peu obscur ? je développe... Dans NWN, nous avons un système de gestion aléatoire des trésors basé UNIQUEMENT sur le niveau du personnage. Lorsqu'on a un tonneau en ville qui donne 10 po lorsqu'un PJ de niv.1 l'ouvre, un PJ de niv.18 qui passe une demi-heure plus tard et ouvre le même tonneau peut se retrouver avec une armure en peau de dragon rouge (oui le Harnois (+5) qui réduit de 50% les dégâts contre le feu... Le pire c'est que ceci est une expérience vécue, lors d'une tentative de jouer en multijoueurs sur la campagne officielle ![]() Là où on comprend encore moins comment raisonne Bioware c'est lorsqu'on commence à se pencher sur la façon dont fonctionnait la génération aléatoire de trésors sous... Baldur's Gate II ! Celle-ci était ô combien plus simple et ô combien plus réaliste. Si l'on pouvait adapter ce système à NWN, je pense que l'équilibre du jeu pourrait y gagner beaucoup ! ![]() Mais cela fait intervenir une grosse question : Est-il possible sous NWN, d'aller chercher des données sélectionnées de manière aléatoire dans un tableau situé dans un fichier 2DA ? Certains fichiers 2DA de Baldur's Gate II (et il en était de même pour Icewind Dale) géraient la génération aléatoire d'objets. Le principe était le suivant : A la mort d'une créature (toujours dans BG2), un script (car cela ne pouvait être rien d'autre qu'un script à mon avis) choisissait aléatoirement un type d'objets parmi les suivants : "Equipement", "Magique", "Parchemin", "Trésor". Une fois ce type d'objet sélectionné, il allait sélectionner un objet au hasard dans le fichier 2DA correspondant. Ces derniers avaient pour nom "RNDEQUIP.2DA", "RNDMAGIC.2DA", "RNDSCROL.2DA" et "RNDTREAS.2DA". Ces quatres fichiers contenaient, sous forme de tableaux, la quasi-totalité des TAGs des objets du jeu (ceux n'y figurant pas étant bien évidemment les objets uniques, qui eux étaient placés à un endroit bien précis ). Dans certains emplacements des tableaux il n'y avait pas de TAG mais un nombre. Cela représentait en fait le nombre de pièces d'or générés. Si l'objet sélectionné par le script était de type "Trésor" (donc situé dans le fichier "RNDTREAS.2DA"), en fonction des conditions environnementales dans lesquelles le script s'effectuait (dans quel type de lieu, si le script se déclenchait à l'ouverture d'un coffre ou lors de la mort d'une créature, etc...), un degré de valeur lui était attribué : "Pauvre" (POOR), "Moyen" (AVERAGE), "Abondant" (WELL_OFF), "Généreux" (WEALTHY) ou "Riche" (RICH). Cela déterminait la ligne du tableau sur laquelle devait être sélectionné le TAG de l'objet aléatoire. Ensuite, un jet de D20 virtuel était simulé et le résultat indiquait la colonne du TAG de l'objet choisi aléatoirement. Le principe était le même pour les objets de type "Equipement", "Magique" et "Parchemin" même si les degrés de valeur existant différaient : - Pour le type "Equipement", on avait juste les degrés de valeur "1er" (1st), "2e" (2nd) et "3e" (3rd). - Pour le type "Parchemin", c'était les mêmes degrés de valeur que pour le type "Equipement". - Pour le type "Magique", on avait juste les degrés de valeur "Faible" (LOW) et "Puissant" (HIGH). Pour avoir des exemples concrets j'ai transposé le contenu des fichiers RNDEQUIP.2DA", "RNDMAGIC.2DA", "RNDSCROL.2DA" et "RNDTREAS.2DA" de BG2 sur des pages webs aux adresses suivantes : http://solaufein.free.fr/telechargem...DTREAS-2da.htm http://solaufein.free.fr/telechargem...DEQUIP-2da.htm http://solaufein.free.fr/telechargem...DSCROL-2da.htm http://solaufein.free.fr/telechargem...DMAGIC-2da.htm Ma réflexion était donc la suivante, vu que sur ce point BG2 et NWN utilisent le même type de fichiers (en l'occurence les fichiers 2DA), qu'est ce qui empêcherait (dans NWN) qu'un script fasse appel à des données contenues dans des fichiers 2DA ? La logique voudrait que cela soit également faisable sous NWN. Si oui, cela serait nettement plus simple que de devoir faire un méga-script-de-la-mort-qui-tue pour la génération aléatoire de trésors. Cela aurait en plus les avantage suivants : - Consommation de beaucoup moins de ressources système qu'un énorme script indigeste. - Modification en toute simplicité par un utilisateur lambda, qui n'a pas besoin de s'y connaitre en script, et qui sera sur de pas faire de bêtises en modifiant un morceau du script qui ne fallait pas |
![]() |
|
Aller à la page... |
Revoir fondamentalement le système de gestion aléatoire des trésors dans NWN ?
Suivre Répondre |
|
Partager | Rechercher |
|
Oups... messages croisés
![]() Ha ? On pourrait donc le faire par la base de données ? Selon quelle méthode ? (je suis un noob concernant l'utilisation de la base de données ![]() |
![]() |
|
|
exellent, j'y aurais jamais pensé
![]() sauf que : si on fait ca, ca seras des script, des "GetObjetByTag" etc. et bon moi m'en fiche g pas de module perso, mais y parait que ca lourd . . . alors si on peut passer par un systeme un peu plus "light", avec moins d'appels à des fonction lourdes, ba ca seras pas plus mal si ? Autre remarque, pour la lourdeur sur le script, si els switch sont gargantuesque, c'est qu'on est obligé de mettre un possibilité pour chaque variable, donc un cas par resref . . . si on avait que deux ou trois variables ? avec tous les resref dedans ? je m'explique : j'avais ca dans un script pour une conversation aleatoire, une string avec toutes les éventuels répliques dedans, et une fonction qui découpait la string et choisissait une des répliques aléatoirement, c'est là : https://forums.jeuxonline.info/showthread.php?t=180908 Donc avec grand max 10 string je pense, vu la longueur des resref, et moins sans doute en considérant que finalement il n'y a pas grd chose qui varie d'un resref à l'autre, on doit pouvoir tout mettre sans pour autant dépasser la limite de 500 caractères et des brouettes par string . . . . non ? c toujours pas assez lisible ? ![]() bon, après c'est sur faut compiler . . . non non, les 2DA g rien contre ![]() c juste que je vois pas une utlité si énorme . . . probablement parce que je gère pas de module ![]() |
![]() |
|
Suivre Répondre |
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|