[outils] utiliser le compilateur de Torlack

Répondre
Partager Rechercher
readme
télécharger

Pour ceux que les outils en ligne de commande effraient... C’est pas compliqué.

Je traduis le texte de Torlack pour ceux qui sont allergiques à l’anglais, en essayant d’expliqer un peu plus :

NwnNssComp est un programme en ligne de commande. Ainsi il n’a pas de jolie fenêtre d’interface [Ndt : traduction libre]. Si vous vous voulez vous pouvez copier nwnnsscomp.exe dans votre répertoire Windows [Ndt : racine du système].

[Ndt : Je me permets d’interrompre Torlack tout de suite, étant donné que cette remarque n’est pas très claire.
Pour lancer un programme en ligne de commande il faut tout d’abord obtenir une ligne commande, plus précisément on va utiliser une fenêtre DOS ou son approximation sous Windows NT, parce que c’est plus pratique.
Windows 98 : il doit y avoir un raccourci dans le menu démarrer qui ouvre une fenêtre DOS si je me souviens bien.
Windows NT, 2000, XP : Pour cela cliquez sur "Démarrer" puis "Exécuter" saisissez "cmd" puis ENTER.
On se retrouve avec une fenêtre noire et un curseur :
C:\>
Ici on va taper le nom du programme à exécuter, nwnnsscomp, seulement en théorie il faudrait aussi spécifié le chemin d’accès ce qui n’est pas très pratique. En le mettant dans le répertoire système (\Windows pour 98-milenium \WINNT sinon) Windows va le trouver tout seul ce qui nous facilitera la vie. Seulement c’est un peu bordélique de mettre tout et n’importe quoi dans le répertoire système. On va donc plutôt rajouter un dossier dans lequel windows cherchera automatiquement les exécutables :
Sous windows NT ouvrez :
Démarrer>>Paramètres>>Panneau de configuration>>Système
Choissez l’onglet "Avancé" puis cliquez sur "variables d’environnement". Trouvez la variable PATH dans les variables systèmes et rajoutez dans la liste des chemins celui vers le répertoire utils de NWN ou vous mettrez le compilateur :
Chez moi cela donne :
Code:
C:\Program Files\jeux\NWN\NWN\utils;C:\watcom\BINNT;C:\watcom\BINW;
C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl; et caetera
Pour ceux qui auraient lu la version avec des guillemets, j'avais probablement fumé avant d'écrire ça, c'est une très mauvaise idée d'en mettre dans les variables d'environnement:
1) le point virgule suffit à délimiter les chemins dans PATH
2) Pour certaines variables (TEMP par exemple...) ça créera sans doute de très gros problème, même si je ne pense pas que cela soit le cas pour PATH. Je n'aimerais pas que vous "cassier" votre OS par ma faute (tout est réversible, mais bon, encore faut-il savoir d'où vient le problème) .


Comme vous le voyez les chemins sont séparés par des points virgules. Par ailleurs le chemin vers mon répertoire utils n’est pas en format DOS ("Program Files") ça marche très bien pour les systèmes NT.
Confirmer.

Voilà, maintenant il suffira de taper :
Code:
C:\> nwnnsscomp
Dans la ligne de commande pour lancer le compilateur.

Pour Windows 98, c’est à peu près là même chose, sauf qu’il faut éditer directement le fichier autoexec.bat où la variable PATH est définie. A priori il faut écrire les chemins sous format MS-DOS.

Il nous reste à voir comment passer les paramètres au programme pour qu’il compile ou décompile un fichier donné]

Usage:
nwnnsscomp [-cdeox] <fichier entrant> [<fichier sortant>]
[ndt : je passe volontairement sur les tests de régressions
les crochets signifient que ces paramètres sont optionnels
]

infile - name of the input file.
outfile - name of the output file.
-c - Compile le script (default)
-d - Décompile le script (ne peut être utilise en meme temps que -c, I.e l’option -cd est invalide)
-e - utiliser extensions non supportées par le compilateur Bioware [ndt : depuis la 1.30 ça ne sert plus à rien, car Bio a rajouté le fameux mot clé const]
-o - optimiser le fichier compiler
-x - extraire le script des fichiers de donnée de Bioware
NwnNssComp a 2 modes fondamentaux, la compilation et la décompilation.
[Ndt : d’un point de vue pratique, c’est la compilation qui nous intéresse]

Pour compiler un script, utilisez la commande :
Code:
NWNNSSCOMP -c nw_all_feedback6
Dans ce cas, le fichier appelé nw_all_feedback6.nss sera compilé et le résultat sauvegardé sous le nom "nw_all_feedback6.nsc".
[ndt : comme vous pouvez le constater seul le nom du fichier est précisé, pas son chemin d’accès. On pourrait préciser directement le chemin dans le nom, mais c’est une mauvaise idée car s’il a besoin de fichier d’include, le compilateur ne les trouvera pas. On changera donc plutôt préalablement le répertoire courrant grâce à la commande CD :

Code:
C:\>CD "C:\Program Files\jeux\NWN\NWN\modules\temp0"
C:\Program Files\jeux\NWN\NWN\modules\temp0> NWNNSSCOMP -c nw_all_feedback6
Vous noterez que suite à la commande CD, le prompteur a changé pour refléter le nouveau répertoire courant.

Ceci compilera le script nw_all_feedback6 du module ouvert dans le toolset (répertoire temp0).
]
Pour compiler un script en l’optimisant:
Code:
NWNNSSCOMP -co nw_all_feedback6
Utiliser NwnNssComp avec des Wildcards (* ? ...)

On peut utiliser des wildcards dans le nom du fichier entrant.
"*" signifie : tous les fichiers, quelques soit leurs noms
"nw_*.nss" tous les fichiers commençant par nw_ et d’extension .nss. "nw_all_feedback?.nss" : tous les fichiers de nom "nw_all_feedback", suivi d’un et un seul caractère puis ".nss"

NWNNSSCOMP -c ascii\* binary\
Compilera tous les scripts dans le sous repertoire -du repertoire courant- "ascii" et sauvegardera le résultat dans le sous répertoire "binary"

Pour recompiler tous les scripts d’un module en les optimisant on procèdera ainsi :
1) Ouvrir le module dans le toolset
2) Lancer une invite de commande (fenêtre dos)
3) Mettre le dossier temporaire du module comme répertoire courrant.
Générallement :
Code:
C:\> CD "C:\Program Files\jeux\NWN\modules\temp0"
4) vérifier qu’aucun script n’est ouvert dans l’éditeur Bioware
5) Appelez NwnNssComp avec la commande : "nwnnsscomp -co *.nss".
[code]
C:\Program Files\jeux\NWN\NWN\modules\temp0>nwnnsscomp -co *.nss
[code]
6) Sauvegarder le module, sans, bien sûr, recompiler de script avec le toolset entre temps sinon l’optimisation sera perdue. Si l’option Save/sauvergarder est grisée, utiliser sauvergarder sous et ne pas changer le nom.
Une cht'ite question qui me trotte a l'esprit.

C'est en open source tout ca ? J'ai cherché un peu, mais j'ai pas trouvé, donc je suppose que la réponce est non...

EDIT : euh............. désolé >_<

je fatigue moi.... le lien est gros comme une maison... et même avec google j'avais pas vu.....

bon je vais au dodo ^^'
si tu n'as pas déjà lu ce fil, voilà une exemple d'optimisation fort utile: https://forums.jeuxonline.info/showthread.php?t=256119
elle permet de faire de la compilation conditionnelle.


en moyenne en recompilant les scripts des modules de Bioware on obtient un gain de place de 11% (dixit Torlack lui-même). Quant aux performances, ça n'aurait pas beaucoup de sens de tenter de chiffrer le gain en moyenne, au final ce n'est de toute façon pas grand chose par rapport à la nécessité d'écrire du code correctement. Mais sur certains scripts, je pense que ça n'est pas négligeable. L'accès aux éléments d'une structure est bien mieux codé par exemple.

Un autre avantage de ce compilateur que je n'ai pas mentionné est qu'il est beaucoup plus rapide. Environ 20 fois plus rapide...
Si vous avez Textpad, quelques petits trucs en plus
Avec ça, textpad reconnaîtra les mots clés et les fonctions et constantes natives de nwscript. En utilisant une librairie de clip vous aurez en plus une fenêtre avec la liste de toutes les fonctions et constantes, et les commentaires apparaissant quand vous passez dessus avec la souri.
personnellement j'utilise la syntaxe de Derek French - qui est complète, et les librairies de DeLegge. Malheuresement ces dernières ne sont pas à jour il manque SetDroppableFlag et autres fonctions introduites par les patchs.
J'ai essayé les librairies de RandomGuild qui sont plus récentes. Je ne sais pas ce qu'il a voulu faire, mais je n'ai pas l'impression qu'il aie réussi (Je peux me tromper, je ne suis pas un pro de textpad, mais j'en doute).

Par ailleurs vous pouvez rajouter nwnnsscomp comme outil à Textpad pour compiler directement depuis ce programme. J'ai rajouté deux entrées (menu configuration>>préférences, onglet outil)

nwnnsscomp:
programme = nwnnsscomp (ceci ne marche que parce que j'ai mais mon répertoire utils dans PATH, cf premier message)
paramètres = -co $File
dossier initial = $FileDir
ne pas toucher au reste des options
ceci compile le fichier en cours d'édition (après l'avoir sauvegardé).

nsscompall:
programme = nwnnsscomp (même remarque)
parmètres = -co *.nss
dossier initial = $FileDir
Ceci compile tous les fichiers qui sont dans le même répertoire que celui en cour d'édition.

A noter que vous aurez un rapport de compilation, il suffira de cliquer sur une erreur pour se retrouver à la ligne correspondante du script. Si le script n'était pas ouvert (compilation de tous les fichiers) Textpad l'ouvrira, et vous mettra à la bonne ligne... bref ça marche bien, même pour les fichiers d'include (contrairement à l'éditeur Bio il me semble).

Pour terminer, et bien que cela n'est pas grand chose à voir, définir des variables d'environnement indépendantes pour les dossiers de NWN est pratique.
Par exemple:
NWNMOD: comme précédemment allez dans système>>avancé>>variable d'environnement , mais cette fois ci ajoutez une entrée aux variables utilisateurs. PAr exemple:
nom: NWNMOD
valeur: C:\Program Files\jeux\NWN\NWN\modules
Pas de guillemets

Maintenant, quand vous voulez vous retrouver dans ce répertoire (que ce soit depuis une invite DOS ou dans une fenêtre windows), vous pourrez utiliser %NWNMOD% comme raccourci (dans la rubrique "nom du fichier" des fenêtres Windows d'ouverture par exemple).
Ou %NWNMOD%\temp0 pour accéder à un sous dossier.
Merci, Sir Pom Pom, de prendre de ton temps pour nous exposer l'utilisation du compilateur de Torlack en "standalone".

Je n'ai jamais sauté le pas étant donné que je ne suis pas sûr de la compatibilité "Torlack compilateur" <-> "Bioware compilateur", mais à l'occasion (quand on n'a pas Aurora sous la main), cela peut se révéler très utile.
Citation :
Provient du message de Cheyenne
Merci, Sir Pom Pom, de prendre de ton temps pour nous exposer l'utilisation du compilateur de Torlack en "standalone".

Je n'ai jamais sauté le pas étant donné que je ne suis pas sûr de la compatibilité "Torlack compilateur" <-> "Bioware compilateur", mais à l'occasion (quand on n'a pas Aurora sous la main), cela peut se révéler très utile.

Je suis content que cela puisse aider. Il n'y a aucun problème de compatibilité. Avec l'option -o du compilateur de Torlack les fichiers ncs engendrés peuvent être un peu différent (essentiellement le fichier "de Torlack" aura quelques lignes inutiles en moins) mais il feront au final exactement la même chose, du moins depuis que Bioware a corrigé les quelques bugs de son compilateur (implémentation du "ou" et du "et", gros problème avec break et continue). Recompiler un coup son module avec l'option -co, ça prend pas longtemps, et on y gagne. D'autre part une fois textpad configuré je trouve ça plus pratique que l'éditeur un peu limité ( texte non ASCII ...) de Bioware.
Bonjour,

Je remonte ce post fort intéressant qui permet de pouvoir utiliser le compilateur de Torlack ou plus exactement dans mon cas celui du PRC.
J'ai suivi toutes les étapes et ça marche enfin, seulement un problème qui est apparemment de taille me bloque maintenant... C'est le manque de nouvelles fonctions...

Je passe par TextPad, fais mes modifs et lance "outils" pour pouvoir compiler mais TextPad ne peut pas car il ne trouve pas les nouvelles fonctions

Sauriez-vous, s'il vous plait, si je peux les trouver ou tout simplement les rajouter à la nwn syntaxe de TextPad ? Si oui comment ?

[ EDIT ] Je pense que je pourrais éviter de rajouter les fonctions si je pouvais récupérer les script de base NWN HOTU, sauriez-vous où je pourrais les chercher ?


Merci
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés