[Resolu] Infos Quadrillage pour mapping

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Roots
Messages : 58
Inscription : 26 Avr 2017 16:12

[Resolu] Infos Quadrillage pour mapping

Message par Roots » 18 Sep 2017 12:33

Bonjour je réalise pour mon projet secondaire qui est une plateforme multiGames, un système de création de map pour les joueurs et je pensais pour ce faire mettre en place un quadrillage 3D .

Je ne me suis jamais intéressé à ce type de conception et j'aurais aimé savoir si la méthode que je commençais à élaborer pouvait faire l'affaire , si quelqu'un a déjà expérimenté ce genre de chose.

Donc je génère un quadrillage par code à l'aide d'un certain nombre de variables pour délimiter sa taille sur les 3 axes , il est composé de box collider en trigger.
Quand le joueur pose mettons un cube , je raycast simplement devant la camera en me servant d'un offset pour délimiter le départ du rayon (si je veux "sauter" les premiers blocs qui sont devant par exemple) et je place l'objet au centre du collider touché .
Au moment du placement de l'objet , je détecte via son collider les cubes du quadrillage qui vont être "rempli" pour les définir comme tel et interdire de placer d'autre objets sur ceux ci.

Je peux également modifier leur rotation et leur scale ce qui amènera a recalculer les blocs occupés ou non.

Pensez vous que ma méthode soit bonne ? Elle est relativement simple à mettre en place mais demande un quadrillage énorme surtout pour un de mes mini jeux qui est un jeu de parcours avec jump et grappin et qui peut potentiellement couvrir une surface gigantesque sur les 3 axes.

Voila si quelqu'un à une méthode plus optimisé ou plus propre je serais curieux d'entendre vos pistes :)

Edit : Bon après quelques test tout a l'air de marcher au mieux, avec un ptit "smoothage" sur le déplacement de l’élément c'est pas trop mal même si il reste un peu de saccade.
Il reste à coder la détection des blocs utilisés ou non, je vous dirais si tout à bien fonctionné si un débutant passe par la il aura une bonne piste pour réaliser son propre systeme.

Edit 2 : Marche finalement du tonnerre , je ne croyais pas du tout en ma méthode mais après avoir coder ça en moins d'une heure je pense que c'est en tout cas la méthode la plus simple à mettre en place .
Je passe le sujet en resolu un modo peut le supprimer si il juge que ça rendra service a personne :D

Edit 3 : Je n'avais pas poussé les tests assez loin , avec un quadrillage 10 fois plus conséquent on vois bien la baisse de performance .
J'ai résolu ce problème en m'inspirant de la génération procédural de terrain voxel , en créant un systeme de "chunk" avec un collider.
J'active seulement les chunks à proximité du joueur .
Ca marche nikel en StandAlone par contre ça freeze un peu dans l'editeur je sais pas trop pourquoi, surment le nombre d'objets à activer ..
Dernière édition par Roots le 19 Sep 2017 14:18, édité 1 fois.

Roots
Messages : 58
Inscription : 26 Avr 2017 16:12

Re: [Resolu?] Infos Quadrillage pour mapping

Message par Roots » 19 Sep 2017 13:11

Je suis toujours à la recherche de ce qui provoque des freezes dans l'editeur mais pas en standAlone.
Quand le joueur entre dans le collider associé à un chunk , ce chunk active ses enfants qui contiennent le box collider utilisé pour le quadrillage. A chaque activation j'ai un petit freeze c'est très desagréable mais absolument aucune chute de fps visible en stand alone, ça se produit juste dans l'editeur .
Pour l'instant dans l'editeur je laisse donc juste un chunk actif en permanence pour éviter le problème et continuer le dev mais si vous avez une idée de ce qui peut causer cette chute et comment l’éviter je suis preneur . Je précise que je ne sélectionne jamais le gameObject qui contient mon quadrillage dans l'éditeur sous peine de faire apparaitre les colliders actifs et me descendre a 5 fps donc le probleme ne vient pas de la !

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Resolu?] Infos Quadrillage pour mapping

Message par boubouk50 » 19 Sep 2017 13:18

Ne serait-ce pas simplement dû au Debug qui est droppé en StandAlone?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Roots
Messages : 58
Inscription : 26 Avr 2017 16:12

Re: [Resolu?] Infos Quadrillage pour mapping

Message par Roots » 19 Sep 2017 13:26

Tu parles d'une éventuelle utilisation de Debug.log de mon code?
Ou plutôt du debug général de l'éditeur qui permet d'avoir accès à certaines infos par l'inspecteur à tout moment?

J'imagine que c'est la deuxième option et effectivement je n'avais pas pensé à ça , je multiplie effectivement les gameObjects donc les ids ,positions, scales et rotations qui doivent être envoyé à l'inspecteur .. Il y a un moyen d'éviter ça ou il faut juste tricher quand on est pas en stand alone? (dsl si j'ai compris de travers :) )

Merci pour ta réponse !

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Resolu?] Infos Quadrillage pour mapping

Message par boubouk50 » 19 Sep 2017 13:44

Les deux peuvent être coupables.
Debug.log () renvoie des infos en console, et j'ai déjà noté des ralentissements à ce niveau.
Concernant le mode Debug, je sais que tu peux passer en mode Normal depuis l'Inspecteur mais je crois que ce n'est juste que de la visualisation des données des components qui rentre en jeu.
https://docs.unity3d.com/Manual/InspectorOptions.html
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Roots
Messages : 58
Inscription : 26 Avr 2017 16:12

Re: [Resolu] Infos Quadrillage pour mapping

Message par Roots » 19 Sep 2017 14:04

Ok ! oui pour le debug.log j'ai déjà remarqué que ça impactait les performances en cas d'appel dans des Update par exemples mais je m'en sers vraiment dans une optique de debug et c'est une scene créé juste pour mon créateur de map donc aucun debug.log présent .
L'inspecteur est aussi en normal j'utilise son debug dans peu de cas..

Je vais m'en tenir à ma première solution je n'ai de toute façon pas besoin d'un quadrillage énorme pour développer et j'ai de toute façon quasiment fini .

Merci à toi :)

Roots
Messages : 58
Inscription : 26 Avr 2017 16:12

Re: [Resolu] Infos Quadrillage pour mapping

Message par Roots » 19 Sep 2017 18:17

Bon non décidément ma méthode général était vraiment tout pourrie !

Donc si quelqu'un veux faire un truc du même genre sur une immense map sans bouffer toute sa mémoire vive :

- Générer un quadrillage autour du joueur assez petit pour avoir un impact vraiment minime sur les perfs mais assez grand pour placer les blocs de loin .
Il vaut mieux générer le quadrillage à base de collider uniquement plutôt que des EmptyGameObjects ça consomme moins de ram selon mes tests (mais vraiment moins) .

- Déplacer le quadrillage selon la position du joueur , dans mon cas j'arrondis seulement la position ça me permet d'avoir mon quadrillage qui se scale parfaitement en se déplaçant.

- Donnez aux blocs qui peuvent être posé par la joueur un Box collider qui s'active quand l'object est placé , il interdira de poser des blocs dans sa zone et est scalé avec le quadrillage ( ça permet de bien définir la taille de chaque blocs en passant , même si dans mon cas ils sont modifiables c'est quand même important )

C'est encore en test je fignole à droite à gauche mais tout est bien optimisé :D
La prochaine fois je réfléchi AVANT de commencer à coder !

Répondre

Revenir vers « Unity le logiciel »