Dernières nouveautés - Énorme "spoiler", mais c'est aussi afin de recueillir des avis ou des suggestions pour cette dernière phase de développement. Par exemple, est-ce que dans ce qui suit l'ambiance de Hauteflêche semble correcte (selon les goûts cela pourrait être trop sombre, bien que plus réaliste)? Des suggestions pour les coffres partagés (en dehors les gemmes, les ressources et les ingrédients, il y a aussi des coffres partagés qui acceptent tout avec un seul inventaire) : qu'aimeriez-vous d'autre à distinguer ou "micro-manager" lors des rangements? ...?
La caisse traînant sous l'escalier de Doucebrise (avant l'achat du mobilier de salle à manger), peut être utilisée pour s'y assoir, disponible au PJ et aux PNJ. La lanterne est active (On/Off).
PNJ compagnons- Frédéric et Alyne Foyatiers ont leurs propre sorts (et cris pour Fred) : ces derniers n'ont pas d'effet sur le PJ, ses acolytes, les gardes en ville, ni tout autre allié durant les combats.
- S'ils sont tués, après un peu plus d'une demi-journée, tout le contenu de leur corps est transféré dans leur cercueil respectif, l'un dans les catacombes de Solitude (Frédéric), l'autre dans celles de Doucebrise (Alyne). Afin de guider le joueur en ce sens, une lettre d'héritage apparait dans leur aire de repos respectif dès que le transfert est fait. Ainsi le PJ pourra récupérer tout objet précieux qu'il eut pu donner à l'un ou l'autre des Foyatiers, advenant qu'ils se fassent tuer et que le joueur en perde trace (ou que le PJ ne soit pas suffisamment fort pour tout récupérer sur les lieux du drame).
- Amélioration du statu marchand d'Alyne : le jour elle a deux inventaires, l'un derrière DouceBrise, l'autre quand elle se promène près du centre-ville. Le soir, elle s'installe au centre-ville de Blancherive et offre divers inventaires dépendamment du stand qu'elle occupe (aléatoire, elle change de stand selon ce que son package sélectionne). Bien entendu, comme c'est le soir, avant de s'installer derrière un stand elle accroche sa lanterne afin de s'éclairer, puis la retire quand elle change de stand ou qu'elle va finir sa soirée au bar.
À gauche, apothicaire (ingrédients, recettes, vêtements, bâtons, potions); au milieu, armurier (armures, nourriture, bijoux, ressources, armures du Furotte); à droite, vendeur d'armes (armes, parchemins, gemmes, épées éthériques)
........
Lumières
Hauteflêche : les nuits sont de vraies nuit! Comme on peut le lire plus avant dans ce fil, je trouvais qu'en les demeures les nuits étaient irréalistes : trop claires comme s'il s'agissait d'ampoules électriques, ou que l'on soit près d'un pôle aux nuits ensoleillées, alors que tout l'éclairage est produit par des chandelles (du feu quoi), et que le ciel est celui d'une nuit équatoriale... Le premier mod en ce sens fut un script qui allume ou éteint les ampoules des fenêtre associées à la lumière du jour selon l'heure. Mais ceci n'élimine pas la légère lumière ambiante qui persiste même quand il n'y a aucune source lumineuse : j'ai donc ajouté à cela un nouveau modèle d'ambiance (présentement seulement à Hauteflêche), et suis relativement satisfait... À tout le moins je trouve ça plus "imprégné" qu'auparavant, et à mon humble avis c'est une amélioration (bien qu'il me reste à tester les paramètres de brume sur le modèle). Ici, pas besoin d'
Image Space particulier (à éviter autant que possible), le résultat est assez probant.
Avant mobilier
Comparaison avec la vanille - À gauche la vanille (sans MOD) de jour; à droite avec MOD de jour, toutes lumières (activables) éteintes.
Les images du MOD montrent un côté un peu plus lugubre, ce qui est réaliste considérant une demeure en pierre grise encore toute sale et sans lumière outre ses fenêtres...
....
Côté patio avec MOD , toutes lumières éteintes : à gauche de nuit; à droite de jour.
....
Mobilier acheté avec MOD - Dans ces images, les Roombounds et lumières paramétrées avec Portal Strict, permettent de bloquer le rayonnement lumineux à travers murs et planchers des lumières du sous-sol et du second étage (qui sont allumées lors des captures d'écran : la majorité sont des "Omnidirectional")
Côté patio de nuit : la première la nuit sans lumière avec le nouveau modèle d'ambiance; la seconde au crépuscule sans lumière; la troisième la nuit avec lumières et l'ancien modèle d'ambiance; la quatrième la nuit avec lumières et le nouveau modèle d'ambiance.
............
....
Salon de nuit : la première à gauche lumières éteintes; la seconde lumières allumées
....
Note 1 : Script versus Emittance
Au lieu d'un script pour gérer les lumières de fenêtre, peut-être aurais-je pu utiliser le paramètre Emittance/Extrerior light sur les références d'ampoules, ayant remarqué que certaines sélections offraient différentes émission de LUX selon l'heure de la journée (chose que j'ai laissé sur les ampoules manipulées par le script, ainsi on voit un changement graduel jusqu'à l'extinction totale). Cependant, je n'arrive pas à en trouver les objets dans le CK (!), contrairement au paramètre Interior Light. En cliquant-droit 2x sur la liste déroulante, au lieu d'ouvrir un dialogue montrant le Form de la sélection, un message du CK mentionne « trying to use dialog box template for unknown type "REGN" » : il semble que le CK n'offre pas d'interface pour ce type de record, et il n'y a pas d'entré "Region" dans l'Object Window... Si quelqu'un a un indice il serait fort bienvenu.
En attendant c'est un script qui gère le tout, sans heurt. Le léger "glitch" que je doive corriger (et qui serait réglé sans souci ni script si j'arrivais à éditer un exterior emittance) est sans grande incidence : si on dort dans Hauteflêche le même jour que son acquisition (et seulement en ce cas) jusqu'à la tranche d'heure suivante du mécanisme, alors les lumières ne sont pas ajustées par le script au réveil (par ex. au réveil en matinée il fait toujours nuit en la demeure). Par contre, après la tranche d'heure suivante, le "glitch" se corrige de lui-même ne se reproduit plus du tout.. Étrange, mais ce n'est pas grave : l'occurrence est de probabilité globalement basse devant tous les comportements possibles du PJ, et quand ça se produit ça se "répare" tout seul pour le prochain coup et les suivants.
EDIT 2013-09-22 : je viens de faire un autre test avec le même contexte ci-haut expliquant le léger "glitch", et ça ne s'est pas reproduit... "l'occurrence est de probabilité" non seulement "basse", mais rare.
EDIT 2 : je crois qu'il est possible d'éliminer cette rareté pour en faire un impossibilité, reste à savoir comment. D'après moi cela se produit quand le changement de tranche d'heure devrait se faire alors que le PJ est en train de dormir. Serait-il possible que le scheduling d'un OnUpdateGameTime ne soit pas pris en compte par le moteur quand le PJ est dans un processus du marchand de sable?
EDIT 3 : Je croyais ne plus le voir, mais finalement il y a un pattern : que ce soit pour une partie avec le mod chargé avant ou après l'achat de la demeure, si la première visite du PJ se fait après 18:55 (l'heure programmée de tombée des lumières dans le script), alors le système n'est pas enclenché, il s'enclenche à la prochaine tranche d'heures.
Note 2 : Scripts d'automatisation des lumières jour/nuit, et des interrupteurs On/Off
Les scripts de cette page du site sur le Creation Kit sont incomplets et je les ai refait à zéro, pour palier à ce qui suit :- Le premier est erroné et limitatif:
- il détecte mal les tranches d'heure, les expressions booléennes (if-then-else) sont incomplètes;
- j'ai ajouté des propriétés pour gérer quelque dépendance à un marqueur parent d'objets (en l'occurrence celui de l'achat du patio), ce qui permet d'aiguiller sur les états de mise en fonction, en gardant le script "éteint" quand le marqueur n'est pas encore mis en fonction (sans écoute sur un Event et à l'état vide). Ceci permet d'économiser sur des OnUpdateGameTime inutiles.
- Le second est très limité et génère des "glitch" :
- pour le cas où il y réinitialisation de la cellule, il ne garanti pas la remise en fonction de l'état présent (éteint ou allumé).
- il ne permet pas un rafraîchissement si l'objet auquel il est attaché dépend 'un marqueur d'objet (dans le nouveau script de ce mod «Demeures Améliorées», si le parent est mis hors fonction, alors le script éteint tout et sort de l'état dans lequel il était pour arrêter toute "écoute" d'event);
- il ne permet pas de "Link Chains", au cas où plus d'une ampoule doivent être manipulées en même temps pour la même source lumineuse (ce qui pourrait aussi servir à contrôler toutes les ampoules d'une salle complète)
- Ces deux scripts n'utilisent qu'une propriété pour la source lumineuse, via un marqueur (donc des objets "allumés" selon que le marqueur soit mis en fonction ou "éteints" dans le cas inverse). Le nouveau script offre plus de versatilité en manipulant deux propriétés ObjectReference. Ces derniers peuvent être :
- soit les objets d'une seule source (ex. 2 chandeliers, l'un éteint l'autre allumé);
- soit des marqueurs d'objets permettant de contrôler une source à plus d'un élément par état, ou encore de contrôler une cellule entière : non seulement les ampoules de cette dernière via le Link Chain, mais aussi toutes les sources visuelles, chacune pouvant être constituée d'autant d'objets que l'on veut pour les états "On" et "Off", avec une variété de possibilités car on parle d'un marqueur parent d'objets par état, et non d'un seul pour les deux états;
- notons aussi que les ampoules peuvent être soit éléments d'un Link Chain sur l'objet auquel est attaché le script, soit associées à l'option d'un marqueur parent pour l'état "On" donné en propriété.
Scripts
Utilisation d'SKSE optionnelle - Deux contextes de script tirent profit d'SKSE, mais ce dernier n'est pas nécessaire pour que ces scripts fonctionnent, une alternative étant alors appliquée.
- Scripts de gestion d'inventaire partagé pour les conteneurs sans categorie (acceptent tous les objets sans filtrer) : ces derniers tiennent le décompte des éléments pendant l'utilisation. Si SKSE n'est pas actif, alors ce décompte n'est pas fait mais le tout fonctionne quand même.
- Script initialisant le GameSetting pour les sauts associé au Magic Effect des enchantements de Furotte, quand les bottes de furotte sont portées par le PJ : sans SKSE, il ne peut pas y avoir d'initialisation d'un GameSetting. Un message en ce sens apparait alors à la première occurrence.
Ouverture du code - J'ai terminé la tâche de faire en sorte que les scripts soient génériques et réutilisables. Ils ne dépendent d'aucune quête, ainsi ils peuvent être facilement intégrés à d'autres MOD via leurs propriétés, sans avoir à toucher au code. Certains offrent donc un nombre conséquent de propriétés à remplir pour un minimum de versatilité (ex. pour les inventaires via conteneurs, sans ou avec son, animations, FXShaders, les différents délais pour ces derniers, tableaux de Formlist et autres, tous les messages sont des "Message Form" et non du texte dans le code du script, etc.).
Optimisation - Plusieurs scripts qui comptaient sur des RegisterForSingleUpdateGameTime, furent recodés en réagissant plutôt à l'event OnCellAttach, notamment ceux concernant les décorations à dépendance multiple (objets qui dépendent des combinaisons entre les status de plus d'un marqueur parent). Cela supprime des processus inutiles sur OnUpdateGameTime quand on est hors de la demeure. Initialement je voulais que ces scripts puissent fonctionner autant à l'ext. qu'à l'int., prévoyant donc les cas où quelque changement de statu se produirait dans la même cellule, mais dans le cas des demeures c'est inutile car les achats de mobilier se font toujours hors de la cellule de la demeure.
Commentaires - Tous les scripts sont lourdement commentés, j'y explique certaines contraintes, la technique, etc. : mon but est de les clarifier au cas où d'autres modeurs voudraient les utiliser.
Partage - Après publication du MOD, je vais aussi publier des pages exposant les scripts et leur utilisation. Notamment pour la gestion d'inventaire avec les conteneurs, et particulièrement :
la gestion des ressources qui est hyper-efficace (il fut testé avec plus de 1000-1500 éléments et c'est instantané - mon ordi est un vieux i7 950 avec 6 Go. RAM et une ATI HD6900 2 Go.).;
l'illumination taxinomique qui est versatile et visuel (peut impliquer plusieurs coffres/activateurs et visuellement les manipuler, avec animations, sons et
shaders en option, selon le nombre de catégories tout en gardant un niveau de performance acceptable), sa structure permettant des contextes variés, de n'en utiliser que les diverses fonctions, etc..
Modifié par HawkFest, 25 septembre 2013 - 20:59.