Etonnant : la Terre est ronde !

Répondre
Partager Rechercher
Dans la lignées des scripts compliqués, inutiles, mais originaux (), voici le dernier venu : des planètes dans NWN !
Oui, vous avez bien entendu, des planètes. Ce qui veut dire que l'on peut tourner en rond en allant tout droit, etc.

Quel intérêt me direz-vous ? Eh bien, le fait est que ce résultat est assez simple à obtenir avec des méthodes classiques : trigger+waypoint, script de téléportation éventuellement etc.

Mais ici, c'est plus compliqué (heureusement sinon j'aurais un peu honte ).
Tout d'abord, le système est réduit à son minimum vital : un script (deux en comptant l'include), et un blueprint de trigger. Rien de plus, rien de moins. La planète est représentée par 20 zones, dont deux pôles et 18 zones "latérales". Deux triggers par zone (un aurait pu suffir mais la forme ne plaisait pas au toolset), disposés de manière précise donc il est déconseillé d'y toucher.

Là où c'est fantastique (de mon point de vue hein ), c'est que chaque point de la planète est accessible. Pas de zones "éclipsées" ou volontairement oubliées, le joueur peut poser le pied absolument n'importe où.
Comment ça se traduit, concrètement ? En fait, la surface de la planète est référencée par des coordonnées que j'ai appelées "polaires" (même si c'est une hérésie du point de vue mathématique ), de la forme :

* angle Theta : angle de longitude (repérés par les méridiens sur Terre)
* angle Phi : angle de latitude (0° au pôle sud, 180° au Nord)

Ensuite, chaque zone a des coordonnées polaires contenues dans son tag, qui sont en fait celles de sont centre.
Par exemple : un tag se finissant en _000_000 correspond au pôle Sud, un tag en _090_180 correspond à une zone au niveau de l'équateur, etc.

Ce que le script fait, c'est donc d'abord : donner la position d'un point (sur les zones "appartenant" à la planète) en coordonnées polaires, et vice-versa obtenir la position d'un point grâce à ses coordonnées polaires.
Enfin, le script de transition gère toutes les transitions (ce ne sont pas des triggers cliquables) sur la surface de la planète, étudiant chaque cas (transition pôle -> zone latérale, zone latérale -> pôle, etc.) et calculant tout le bazar pour qu'au final une créature qui passe d'une zone à l'autre, garde exactement les mêmes coordonnées polaires (ce qui signifie qu'il ne bouge pas "pendant la transition").
De plus, il est possible de créer un objet à un emplacement aléatoire sur la planète, avec deux simples Random(360) et Random(180)

Bon, ok ça peut paraître confus Donc voici le module de test :
http://membres.lycos.fr/theolivierguyot/Planete0.mod.
Concrètement, vous commencez au point le plus au nord de la planète, équipé d'une "amulette de positionnement" (oooooh l'inspiration pour les noms). Cette amulette vous permet de connaître à tout moment votre position en coordonnées cartésiennes (vecteur, relatif à la zone donc) et en coordonnées polaires (absolu sur la planète).
C'est bon, à vous la liberté

Dernière indication : lorsque vous vous trouvez sur les zones latérales, la boussole indique le nord de la planète. Mais lorsque vous vous trouvez sur un pôle, celle-ci indique la direction du méridien 0°. Voilà, vous savez tout !

Pour votre information, ce script fait partie intégrante d'un ensemble beaucoup, beaucoup plus gros (et très ambitieux) donc si je le partage sur ce forum c'est simplement par principe, et parce que j'en ai bavé aussi
*Bougonne dans sa barbe* C'est absolumment faux tout est faux : utiliser les coordonnées polaires pour se positionner sur une planète est du domaine de l'abérration, une insulte à Magellan et Gallilée.

En fait, je me demande s'il faudrait fournir obligatoirement des boussoles à nos aventuriers, ces ignares...

________________________________

Bravo, excellent boulot, j'ose meme pas imaginer le reste de l'édifice si ce script n'en est qu'une pierre ! Pousser le vice jusqu'à reparamètrer une boussole, ça dénote un soucis du détail que je n'ai encore jamais rencontré !!

Prince Nexus.
Reste à trouver des gens motivés pour modélisé toutes les cartes d'une planète. Aller quoi ce n'est rien que 9 999 999 999 999 zones 64x64 (Bah oui seulement, je n'ai pas compté les océans).
Citation :
Reste à trouver des gens motivés pour modélisé toutes les cartes d'une planète. Aller quoi ce n'est rien que 9 999 999 999 999 zones 64x64 (Bah oui seulement, je n'ai pas compté les océans).
Bah non, on utilise que 20 zones par planètes comme l'a précisé Taern

Enfin bon j'ai pas trop compris ce que tu voulais dire donc je sors

Bon c'est sur que si tu veux modéliser la Terre, tu n'es pas couché mais il te reste la possibilité de faire plusieurs planetes

PS : Merci Reyan
Zut, Prince Nexus a grillé l'arnaque (les restes de la sup/spé sûrement )

Comme je l'ai dis, les coordonnées dites polaires ne sont pas celles que j'ai utilisées, ce sont en fait des coordonnées qui "décrivent un cylindre" (tout comme les coordonnées cartésiennes "décrivent un cube").
En fait, ce que j'ai utilisé, ce sont des coordonnées sphériques (theta, phi), mais je trouvais simplement que "polar" sonnait mieux que "spheric"
Ba en tout cas bravo, c'est du très bon boulot.

Maintenant il faudrait toutes les conséquences de faire ainsi...

Mais sinon , cela m'a l'air super et une idée tout à fait originale.
Citation :
Maintenant il faudrait toutes les conséquences de faire ainsi...
C'est un changement de la luminosité en fonction de l'heure et de la position que tu veux oulaaaa... je t'en pris !

Superbe cette idée, bravo. Et si RAT tien ses promesses... ce sera encore mieux !
De ce que j'ai compris, Oberon souhaiterais que le script gère en plus le changement d'heure

Ce n'est pas très difficile à faire, mais vu que c'est un script à vocation multijoueur, je ne pense pas que ce soit possible
Cool

Bon franchement, je la tenterai bien la gestion de la luminosité moi...
Mais je manque de temps, tentative de création d'un CC n'utilisant pas JAVA oblige. (cependant je garde en mémoire ce sujet, et si j'ai un jour le temps de m'atteler à ceci...)
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés