Aller au contenu


Daggertools - Fais Moi Un Mod Édition 96


  • Veuillez vous connecter pour répondre
14 réponses à ce sujet

#1 Elenwel

Elenwel

    Granny Smith Wiwi


Posté 30 juillet 2019 - 19:13

Suite à une discussion sur le Discord d'Elodry, je me suis remis à l'analyse des fichiers de Daggerfall, et plus précisément des fichiers de donjons. L'idée à la base c'était de faire un format textuel, plus simple à modifier que les fichiers BSA actuels, permettant de répondre à des questions au combien essentielles (y a des donjons avec deux sorties vers la word map dans Daggerfall? combien y a t'il de chandeliers dans S0000001.RDB ? ) sans trop se prendre la tête. Mais aussi, pourquoi pas, de modifier des donjons existants, voir d'en créer de nouveaux !

Et comme le JSON c'est chouette, mais pas très visuel, j'ai fait une petite visionneuse, en python. Qui permet d'obtenir ce genre de petites choses :

Fichier joint  daggertools.PNG   372,24 Ko   15 téléchargement(s)


Bref, je sais pas si ça intéresse des gens de faire des mods pour Daggerfall, mais c'est mon petit projet du moment. Je vais voir pour modifier le code de DaggerfallUnity afin de pouvoir charger mes donjons custom et on pourra, 13 ans après, modder Daggerfall. Que la vie est belle :D

Voir le messageD.A.D., le 29 avril 2013 - 21:21, dit :

Un avertissement d'Elenwel, c'est un avertissement qui en vaut deux : si tu n'en tiens pas compte, c'est toujours pour TA pomme, et en général, il ne fait pas de quartier. Mieux vaut éviter les pépins, ça empêche d'y laisser sa peau.

#2 Gilbertus

Gilbertus

    Kalenbours


Posté 31 juillet 2019 - 15:53

Ce qui était génial dans les donjons Daggerfall était la possibilité de creuser les murs pour faire des passages

Jamais retrouvé cette possibilité dans les suites

Kalendaar un jour, Kalendaar toujours ...


#3 Daichi.

Daichi.

    Conjuration Bachelor


Posté 03 août 2019 - 15:38

Le principe serait donc d'avoir une interface pour modder plus facilement Daggerfall, en particulier les donjons ?
L'apprentissage du JSON sera tout de même nécessaire donc.

Ah mais oui, hein.


#4 Elenwel

Elenwel

    Granny Smith Wiwi


Posté 03 août 2019 - 17:36

Pour le moment, l'idée était surtout d'avoir de quoi visualiser les donjons plus simplement qu'en bougeant son derrière à travers la baie d'Illiac :) Le format JSON est juste un format pivot et une représentation textuelle de mes classes python.  C'est mieux que la représentation binaire de Daggerfall, mais c'est pas non plus génial. Par exemple, si on prend le tout premier donjon, il est représenté par le fichier S0000999.RDB dans l'archive BLOCKS.BSA. Ou 7000 lignes de JSON...

En gros, tu y trouveras une liste de l'ensemble des models utilisés :

"modelsRef": [
{"type":"610","id":"28","descr":"L0Z"},
{"type":"710","id":"02","descr":"022"},
{"type":"580","id":"08","descr":"R1X"},
{"type":"612","id":"11","descr":"C01"},
{"type":"612","id":"18","descr":"C0D"},
{"type":"612","id":"20","descr":"C09"},
{"type":"411","id":"09","descr":"XXX"},
{"type":"612","id":"04","descr":"C0J"},
{"type":"701","id":"22","descr":"034"},
...

Puis les différents objets présents dans le donjon :

{
	 "data": {
	 "field2": 0,
	 "field4": 0,
	 "field6": 0,
	 "fieldA": 0,
	 "findex": 210,
	 "type": 13
	 },
	 "position": { "X": 627, "Y": -624, "Z": 250},
	 "type": 3,
	 "id": 33966
},

Ici un objet flat (type 3 : marker ou bilboard), représentant l'image 13 du fichier de texture 210 (un lustre). On a également sa position.

Plus complexe, l'objet suivant:
{
	 "position": {"X": 896, "Y": 0, "Z": 640 },
	 "type": 1,
	 "id": 12767,
	 "data": {
		  "field10": 0,
		  "field12": 0,
		  "action": {
			   "field0": 0,
			   "field1": 0,
			   "field3": 0,
			   "type": 0
		  },
		  "rotation": {"X": 0, "Y": -512, "Z": 0 },
		  "modelID": 2,
		  "fieldE": 0
	 }
}
  • est de type 1, c'est un object 3D
  • son modèle 3D est le 3ème (modelID, les tableaux sont indexés à 0), il s'agit du modèle {"type":"580","id":"08","descr":"R1X"}, un escalier
  • l'objet à une action, ici de type 0, donc ne faisant rien.... Ou en tout cas un truc que je ne comprends pas encore :)
Actuellement, modifier ou créer un donjon, c'est juste modifier les valeurs dans le fichier. J’essaierais peut être de faire une GUI plus tard.

Dans l'interface tu auras ce genre de chose :
  • les modèles avec actions sont en rouges,
  • les portes en vert
  • tu vois un lien entre le tabouret en premier plan et l'étagère au fond : en utilisant le tabouret tu déclenches l'action de l'étagère (ici une rotation)

Fichier(s) joint(s)


Voir le messageD.A.D., le 29 avril 2013 - 21:21, dit :

Un avertissement d'Elenwel, c'est un avertissement qui en vaut deux : si tu n'en tiens pas compte, c'est toujours pour TA pomme, et en général, il ne fait pas de quartier. Mieux vaut éviter les pépins, ça empêche d'y laisser sa peau.

#5 Daichi.

Daichi.

    Conjuration Bachelor


Posté 03 août 2019 - 23:56

C'est vraiment pas mal, même si ça peut parfois être un peu confus. Mais j'imagine bien que c'est sujet à amélioration !
J'avais exploré les mods de DFU, et ça m'avait bien emballé. Espérons que d'autres outils avec interface voient le jour pour faciliter l'affaire :)

Ah mais oui, hein.


#6 Elenwel

Elenwel

    Granny Smith Wiwi


Posté 04 août 2019 - 10:21

C'est confus parce que le format de base est confus, le JSON n'est qu'une représentation textuelle du format binaire de base. Les champs non nommés (fieldXX) représentent des valeurs dont je ne comprends pas (ou n'ai pas cherché) l'utilité. Mais bon, les formats binaires confus c'est une spécialité de Bethesda, qu'on retrouve jusqu'au tout dernier jeux.

Voir le messageD.A.D., le 29 avril 2013 - 21:21, dit :

Un avertissement d'Elenwel, c'est un avertissement qui en vaut deux : si tu n'en tiens pas compte, c'est toujours pour TA pomme, et en général, il ne fait pas de quartier. Mieux vaut éviter les pépins, ça empêche d'y laisser sa peau.

#7 ELOdry

ELOdry

    Bibliothécaire de Tamriel


Posté 04 septembre 2019 - 16:15

Je comprends pas tout, mais j'aime ce que je vois :)

Voir le messageGilbertus, le 31 juillet 2019 - 15:53, dit :

Ce qui était génial dans les donjons Daggerfall était la possibilité de creuser les murs pour faire des passages

Jamais retrouvé cette possibilité dans les suites
Juste une petite précision : c'était dans Arena !

#8 Gilbertus

Gilbertus

    Kalenbours


Posté 05 septembre 2019 - 10:07

J'insiste on pouvait creuser les murs aussi dans daggerfall j'ai même creusé des galeries.

Je suis âgé mais pas gâteux

Kalendaar un jour, Kalendaar toujours ...


#9 Elenwel

Elenwel

    Granny Smith Wiwi


Posté 06 septembre 2019 - 15:24

Voir le messageELOdry, le 04 septembre 2019 - 16:15, dit :

Je comprends pas tout, mais j'aime ce que je vois :)

Y a pas grand chose à comprendre :D Je voulais aider Pango, ça a dérivé en visionneuse pour donjons. Et comme j'ai l'habitude de faire des représentations textuels des fichiers binaires quand je travail sur un truc, ma visionneuse utilise mon format texte et pas le format pourri des fichiers BSA.

Du coup pour bien faire, il faudrait que je recompile mon fichier texte en BSA (c'est chiant, mais compatible avec Daggerfall vanilla) ou que je modifie DaggerfallUnity pour qu'il utilise mon format (moins chiant, mais chiant quand même).

Et sinon je n'ai pas du tout eu le temps de bosser sur ce truc le mois dernier, j'ai juste changé de moteur (pyOgre c'est bien mais c'est plus supporté) pour passer sur du pyQt + pyQt3D. Et fait une interface (moche) :

En gros, j'ai ouvert le donjon S0000999 (le donjon de départ), sur la colonne de gauche j'ai la liste de l'ensemble des meshs, billboards et lumières présents. L'objet 410-20 est la table rouge visible dans le screen suivant :

Fichier joint  daggertools3.PNG   201,16 Ko   14 téléchargement(s)

En double cliquant dessus on a la popup visible, sur laquelle on voit qu'on peut activer la table, ce qui ne fait rien, mais déclenche le bloc action de l'objet 27861.

L'objet 27861 est juste au dessus (c'est un objet de type 410-42, en français une étagère :P ), on double clique et on voit que :

Fichier joint  daggertools4.PNG   352,19 Ko   14 téléchargement(s)

Lorsqu'on l'active cette étagère va tourner, autour de l'axe Y, de 472 fractions d'angles (unité interne à Dagerfall, un tout petit peu moins de 90°), pendant 34 ticks. Découvrant les magnifiques marqueurs jaunes (qu'on entreaperçoit normalement) qui sont des marqueurs pour trésors random.

Y a encore plein de trucs à faire, notamment de rendre éditable l'ensemble des champs (pour pouvoir modder), et de faire une petite visionneuse de mesh (pour savoir que le foutu mesh 411-23 est un trône un peu plus simplement). Y a les textures aussi, mais c'est vraiment chiant. Et puis rendre ça compréhensible pour Daggerfall ou DaggerfallUnity aussi...

Voir le messageD.A.D., le 29 avril 2013 - 21:21, dit :

Un avertissement d'Elenwel, c'est un avertissement qui en vaut deux : si tu n'en tiens pas compte, c'est toujours pour TA pomme, et en général, il ne fait pas de quartier. Mieux vaut éviter les pépins, ça empêche d'y laisser sa peau.

#10 Svartalfar

Svartalfar

    Moddeur d'or


Posté 22 septembre 2019 - 11:23

C'est passionnant les perspectives que ça offre...

On demande aux dév' de Concil of Wisdom de bosser sur un moteur rétrocompatible avec Dagg' et bénéficiant d'un éditeur de mods ? Ca t'épargnerait du travail un portage. :monstre:

#11 Elenwel

Elenwel

    Granny Smith Wiwi


Posté 22 septembre 2019 - 13:54

Honnêtement, non. Moins ils réutiliseront du code de Daggerfall, mieux se sera. La manière de coder et de concevoir du code à vraiment beaucoup évoluée en 25 ans, et il y a déjà assez des TES pour se trimbaler un moteur (et les problèmes qui vont avec) qui date de Mathusalem.

Et sinon je pense qu'il serait beaucoup beaucoup plus simple de faire un éditeur pour Daggerfall Unity, s'il n'y en a pas déjà un :D

Voir le messageD.A.D., le 29 avril 2013 - 21:21, dit :

Un avertissement d'Elenwel, c'est un avertissement qui en vaut deux : si tu n'en tiens pas compte, c'est toujours pour TA pomme, et en général, il ne fait pas de quartier. Mieux vaut éviter les pépins, ça empêche d'y laisser sa peau.

#12 Elenwel

Elenwel

    Granny Smith Wiwi


Posté 02 décembre 2019 - 19:04

J'ai fait pas mal de nettoyage sur mon bouzin, si ça intéresse il est dispo sur github:

https://github.com/T...DaggerfallTools

Pour faire tourner le truc :
- il faut pyhton3 et PyQt5 (ça doit être le seul paquet non standard)
- il faut avoir extrait ces textures dans le dossier media/textures (au format PNG). De base les outils dédiés vous sortiront une arborescence avec des nom du style 'TEXTURE.038 (Desert Manor)' il faut le renommer en '38'
-il faut avoir extrait l'ensemble des modèles 3D dans media/models (y a un fragment de script python dans BSA_parser.py pour faire ça)
-il faut avoir extrait les donjons au format JSON (avec BSA_parser.py)

Je suis vraiment pas fan des contrôle de la caméra, mais je fais avec Qt:
-flèches directionnelles pour bouger
-bouton gauche de la souris maintenu pour faire pivoter la caméra (vue style FPS)
-molette pour avancer/reculer

Et bien sur : "chez moi, ça marche!"

Voir le messageD.A.D., le 29 avril 2013 - 21:21, dit :

Un avertissement d'Elenwel, c'est un avertissement qui en vaut deux : si tu n'en tiens pas compte, c'est toujours pour TA pomme, et en général, il ne fait pas de quartier. Mieux vaut éviter les pépins, ça empêche d'y laisser sa peau.

#13 Daneel53

Daneel53

Posté 07 décembre 2019 - 16:21

Impressionnant ! J'admire ton talent pour aller fouiller dans les bits des fichiers pour en tirer quelque chose d'utile ! :good:

#14 ELOdry

ELOdry

    Bibliothécaire de Tamriel


Posté 04 janvier 2020 - 14:31

Voir le messageGilbertus, le 05 septembre 2019 - 10:07, dit :

J'insiste on pouvait creuser les murs aussi dans daggerfall j'ai même creusé des galeries.

Je suis âgé mais pas gâteux
Je ne dis pas ça, juste qu'il y a confusion :)

#15 Gilbertus

Gilbertus

    Kalenbours


Posté 04 janvier 2020 - 16:14

confusion c'est encore pire :isaVSjl:

Kalendaar un jour, Kalendaar toujours ...





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)