Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 02/04/11 09:49 Sujet du message: Comment mettre une variation de terrain aléatoire ? |
|
|
Attention ce sujet est peut-être plus complexe qu'il n'y paraît.
Grâce aux informations précieuses trouvées ici, je génère un fichier de terrain war3map.w3e avec un autre langage de programmation. J'ai un souci technique, je ne gère pas les variations de terrains. Cela donne donc un terrain artificiel tout moche. Ce que je voudrais c'est que les variations soient générées de façon aléatoire.
Un carré de terrain est stocké dans 7 octets, dont l'avant dernier est destiné au choix de la variation (moi j'ai mis simplement 0). Seul problème :
"1byte: texture details (of the tile of which the tilepoint is the bottom left corner) (rocks, holes, bones,...). It appears that only a part of this byte is used for details. It needs more investigations"
Aucune info à ce sujet.
Je pourrais chercher de façon poussée mais si je pouvais gagner du temps grâce à la réponse de quelqu'un, ça serait appréciable .
Donc en fait la question est, comment est représentée la variation de terrain dans cet octet, sachant si je ne m'abuse que le nombre de variations diffère d'un type de terrain à un autre. _________________
|
|
Revenir en haut |
|
|
Tirlititi
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
|
Posté le: 02/04/11 10:42 Sujet du message: |
|
|
Tu créés un programme qui génère un .w3e sans erreur? GG
Moi, je n'arrête pas d'obtenir des résultats improbables quand j'essaie de toucher à la hauteur.
Pour la randomization des tiles, il me semble simplement que l'octet indique le numéro du détail sans plus (càd que j'ai toujours vu l'octet avec une valeur comprise entre 0 et le nombre de variations de la texture). Le reste a peut-être un autre sens mais je n'le connais pas (essaies en mettant les valeurs 16/32/64/128 ?). Peut-être que Warcraft est capable de randomiser la texture lors du chargement de la map ou un truc dans ce genre...
Sinon, tu as raison quand tu dis que le nombre de variations diffère d'une texture à l'autre, mais il me semble que ça n'est donnée nulle part : WE et W3 regardent juste la taille du .blp et la découpent en textures de plus petite taille (toutes les variations sont donc dans le même fichier .blp). Si c'est quand même noté quelque part pour chaque texture, c'est sans doute dans le fichier "Environment\Terrain.slk" (je fais p-e une erreur mais, de mémoire, c'est le seul qui liste les différents types de texture).
Au pire, tu indiques toi-même les nombres de variations pour chaque texture différente (mais il faudrait penser à modifier ces constantes si on utilise des textures personnalisées :s).
J'espère t'avoir un peu éclairé ^^. Bonne chance pour la suite . _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 02/04/11 10:53 Sujet du message: |
|
|
Ouaip merci. C'est très intéressant toussa.
Pour ce qui est de générer un .w3e sans erreur, il suffit de respecter précisément le format tel que décrit dans le lien que j'ai rappelé. Mais c'est sûr que j'ai dû corriger différentes erreurs que j'avais faites avant que ça marche.
Je n'ai pas touché à la hauteur par contre, je l'ai mise normale partout. Je n'envisage pas la possibilité de faire des variations de hauteur, du moins dans l'immédiat, puisque dans un escape ça n'est pas utile (si ce n'est visuellement éventuellement). Par contre quand j'aurai fini et que j'en serai au stade "améliorations", j'inclurai les sauts, ce qui nécessitera forcément des variations de hauteurs (sans dénivelé, pas de saut possible). _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 13/04/11 15:30 Sujet du message: |
|
|
Je n'ai pas eu le temps de m'occuper de ça encore, mais si quelqu'un a plus d'informations qu'il n'hésite pas ^^. _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 27/07/12 04:07 Sujet du message: |
|
|
Réouverture de topic.
ça fait un pti bout de temps que je n'avais pas mappé mais j'ai repris mon projet.
Le problème des variations n'est pas réglé mais ce n'est pas très grave : je recrée tout le terrain en début de partie, ceci permettant de mettre des variations aléatoires.
Mon éditeur est maintenant apparemment complètement opérationnel (http://max.slid.free.fr/maxEscapeCreation/) et j'aimerais m'attaquer aux jumps, comme j'en parlais plus haut.
J'aimerais donc savoir si Tirliti ou quelqu'un d'autre a du nouveau sur le fichier war3map.w3e : comment régler la hauteur du terrain ? _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 27/07/12 21:32 Sujet du message: |
|
|
Et qui sait qui va devoir faire des tests bit après bit ? huhu _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 27/07/12 21:53 Sujet du message: |
|
|
Lol _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 27/07/12 22:10 Sujet du message: |
|
|
La hauteur doit être sur les 16 premiers bits: ground height. _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 28/07/12 01:24 Sujet du message: |
|
|
Oui effectivement.
Mais je ne comprends pas comment ça fonctionne :
Citation: | -Short Integers
Short Integers are stored using 2 bytes in "Little Endian" order.
They are close to the C++ signed short but their range is from -16384 to 16383. It means the 2 highest bit are free of use for a flag for example.
Size: 2 bytes
short: ground height
C000h: minimum height (-16384)
2000h: normal height (ground level 0)
3FFFh: maximum height (+16383) |
Il est dit que les deux bits de poids fort ne sont pas utilisés (à ce que je comprends), dans ce cas ça laisse 2^14 possibilités = 16384, la moitié de ce qui est utilisé.
Pour C000 si on prend les 15 premiers bits et que je ne me trompe pas ça donne bien -16384.
Pour 3FFF, si on prend les 15 premiers bits ça me paraît correspondre également (16383).
Par contre, pourquoi 2000 représente-t-il la hauteur 0, pourquoi pas 0000 ?
Autrement, j'ai fait des test sur un carré de terrain, sa hauteur est de 140, quand je fais le calcul à partir de war3map.w3e ça me donne un résultat de l'ordre de 8000. _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 28/07/12 16:06 Sujet du message: |
|
|
2000h c'est de l'hexa-décimale => 8192.
C'est Blizzard qui a choisis que la hauteur par défaut serait 0x2000, un choix cohérent si on devait considérer l'entier comme non signé.
Mais leur exemple montre que leurs informations ne sont pas fiables, 0xC000 utilisant justement les deux bits de poid fort.
Il te faudrait donc tester en descendant assez bas. Si le bit de poids fort passe à 1 alors c'est un entier signé. Si au plus bas cela arrive à 0 c'est donc un entier non signé. Les deux bits qui servirait de drapeaux doit être incorrecte. _________________
|
|
Revenir en haut |
|
|
Tirlititi
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
|
Posté le: 28/07/12 16:35 Sujet du message: |
|
|
Il faut aussi vérifier si la hauteur est mise en valeur relative ou absolue.
Si ça se trouve, la "hauteur 0" n'est pas la même selon si le niveau de falaise est de 6 ou s'il est de 10. _________________
|
|
Revenir en haut |
|
|
Max Floodeur prématuré
Inscrit le: 13 Jan 2009 Messages: 550 Sujets: 47 Spécialité en worldedit: La partie déclencheurs sauf le GUI.
|
Posté le: 28/07/12 21:58 Sujet du message: |
|
|
J'ai trouvé !!!
J'ai mis une hauteur (C000)h pour un carré de terrain, en modifiant manuellement war3map.w3e. Mon short int a été transformé en (0000)h, les deux bits de poids fort ne sont donc apparemment pas utilisés. Cela m'a donné une hauteur de -2048. J'ai ensuite testé avec (3FFF)h, valeur restée intacte. Cela m'a donné une hauteur de +2047,75.
Cela m'a tout de suite mis sur la voie :
-2048 * 4 = -8192
+2047,750 * 4 = +8191
HauteurTerrain = (ValeurHexa - 8192) / 4
J'ai vérifié cette formule avec deux hauteurs différentes, une positive et une négative.
La hauteur est mise en valeur relative au niveau de falaise.
HauteurReelleTerrain = (ValeurHexa - 8192) / 4 + (NiveauFalaise - 2) * 128
EDIT : Aaah c'était indiqué là :
"The tilepoint "final height" you see on the WE is given by:
(ground_height - 0x2000 + (layer - 2)*0x0200)/4" _________________
|
|
Revenir en haut |
|
|
|