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)