deepnight / ldtk

Modern, lightweight and efficient 2D level editor
https://ldtk.io
MIT License
3.37k stars 184 forks source link

Multiple worlds #231

Open deepnight opened 3 years ago

deepnight commented 2 years ago

The new JSON format is explained in the wiki: https://github.com/deepnight/ldtk/wiki/%5B0.10.0%5D-Multi-worlds

BurgerBob commented 1 year ago

Ces commentaires ne sont pas tous liés au Multi World, mais vu qu'ils sont liés au format de fichier, je pense que ça fait quand même sens ici. Aussi, en français, car flemme.

. Il y a surement une raison technique pour laquelle tu as fait le choix de casser la rétro-compatibilité si on active le multi world, en mettant l'array "levels" dans chaque définition de world. L'autre implémentation aurait été de mettre un champ "worldiid" dans chaque level, et garder l'array de levels dans le root ; ça n'aurais pas cassé la rétro-compatibilité, un importeur ne supportant pas le multi world aurait juste eu tous les levels de tous les worlds sans distinction ...

. Intéressant que les identifiers des levels restent uniques, même entre worlds (pour la rétro compatibilité, et pour pouvoir bouger les levels entre worlds). Dans ce cas, j'imagine que la plupart des projets vont choisir de préfixer les noms de levels (W2_L54_BigRoom). Peut-être qu'il serait pratique de pouvoir spécifier ce préfixe dans l'éditeur.

. La feature qui manque le plus pour l'instant pour que le multi world soit utile: Pouvoir exclure certains Layers dans certains worlds. De façon secondaire, on pourrait aussi exclure certaines définitions d'entités, potentiellement dans la définition de chaque entité, et/ou par tag (dans la définition du world, j'exclue ce tag d'entité).

. Vu que le but à moyen terme est d'avoir un seul projet Ldtk par jeu, le Ldtk principal va recevoir beaucoup de modifications, ce qui risque de poser des problèmes de merge pour les équipes un peu plus grosses. Le problème principal IMO est que les infos de level sont dupliquées dans le ldtk principal et dans le ldtk de chaque level. Suggestion: ne rien stocker dans l'array "levels" du ldtk principal, et l'éditeur pourrait juste regarder les fichiers présents dans le dossier de levels pour déterminer la liste de levels.

zommerfelds commented 1 month ago

I'm trying multi-world right now. Seems nice. The only thing that is broken for me is automatic level identifier. When I move a level to a different world the level indices are not contiguous anymore. They get updated if I select a level. There seems to be a bug refreshing the IDs.

One thing that would be useful for me is to have a LevelIndex option in "Default level indetifier" that only counds level in the same world. This way I could have multiple "level 2" (depending on the world).