AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

 

 Optimiser un système de collision

Aller en bas 
AuteurMessage
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Optimiser un système de collision Empty
MessageSujet: Optimiser un système de collision   Optimiser un système de collision EmptyJeu 25 Aoû 2011 - 15:04

Bonjour gnii

Voilà, je cherche à optimiser le système de collision de mon moteur, j'ai vraiment l'impression de m'y prendre comme un barbare..
Mon système de collision marche par zone, teamID et filtres, j'explique :

Chaque zone possède un numéro qui identifie son "équipe", ce qui permet de ne pas tester des zones qui sont dans la même "équipe", histoire que, par exemple, deux ennemies ne se mettent pas subitement à s'entretuer (ce qui est plutôt marrant, mais bref)

Ensuite, il y a la notion de filtre.
Les filtres sont définie par lua, voilà leur construction (exemple de zone de vue d'un ennemie) :

filter_viewzone={};
filter_viewzone[0]="hitpoint";
filter_viewzone[1]="player";
create_filter("viewzone",filter_viewzone);

Donc à chaque fois qu'une zone est enregistrée en tant que type "viewzone", elle ne testera les intersection qu'avec les zones de types "hitpoint" et "player".

Bon, tout ça c'est bien joli, mais voilà comment se passe la gestion des intersections :

Lorsque tous les events (instances si vous voulez comparer à GM) ont fini leur fonction step, le moteur lance une grosse boucle sur les zone.
Il récupère une zone, puis lance une deuxième boucle sur toute les zones, et teste sur chaque zone sa teamID, son filtre et enfin s'il y a une intersection avec la première zone récupérée.
Dès qu'il y a collision, il casse la boucle et prend la zone d'après et recommence le teste sur toute les autre zones.

ça marche, mais j'ai vraiment l'impression de m'y prendre comme un barbare, je voudrais savoir s'il y a moyens d'optimiser tout ça.. J'avais pensé à faire des std::map qui stockent des array pour regrouper toute les zones du même filtre, mais je peux pas tellement savoir si c'est plus rapide ou pas..

Merci pour votre aide Smile


_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer

Messages : 6938
Projet Actuel : Bataille de cake au fruits

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyJeu 25 Aoû 2011 - 21:40

John Carmack a dit: Utilise un octree
Alors utilise un Quadtree(l'équivalant 2D d'un octree)
http://fr.wikipedia.org/wiki/Quadtree

_________________
Optimiser un système de collision Wargamer3
Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyJeu 25 Aoû 2011 - 22:22

Doux jésus gha

Ben, de toute façon les objets en dehors de la vue sont désactivés, et ce serait assez bordélique de tout découper en zone..
(surtout que je devrais tout le temps re-tester chaque zone, bref..

J'ai pas préciser, mais les collisions ne se font que sur des carrés (aucune collision par pixels) Very Happy

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer

Messages : 6938
Projet Actuel : Bataille de cake au fruits

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyJeu 25 Aoû 2011 - 22:42

Si ils sont désactiver ca doit demander pas mal de temps à activer/désactiver dès que tu bouge la caméra non?

_________________
Optimiser un système de collision Wargamer3
Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyJeu 25 Aoû 2011 - 22:44

Ben, c'est juste une zone définie autours d'eux, et ensuite on teste s'il n'y a pas d'intersection avec la position de la caméra Very Happy

Mais j'ai vraiment peur de mal m'y prendre pour tout le système de base, et de me retrouver avec un vieux truc bouseux tout lent Sad

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9142
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyJeu 25 Aoû 2011 - 22:49

C'est en forgeant qu'on deviens forgeron. Continue sur ta lancée et si ça marche pas recommence.
Franchement j'ai foi en toi lol, je suis sur que t'y arriveras. T'arrive a t'adapter super vite.

Et aussi les meilleurs solutions sont toujours celles qu'on trouve tout seul, surtout dans ce genre de situation !

Bon courage :p

_________________
Optimiser un système de collision Runningpotato1Optimiser un système de collision TvF6GED Optimiser un système de collision MdetltS
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyJeu 25 Aoû 2011 - 23:30

Héhé, merci gnii

C'était juste histoire d'éviter un peu de recommencer (j'ai déjà refait plusieurs fois le moteur, ça doit être au moins la 4 ou 5ième fois que je le réécris en entier gnii )

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyMar 30 Aoû 2011 - 19:44

Je comprend rien du tout mais alors rien du tout au quad tree.
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyMar 30 Aoû 2011 - 20:19

Apparemment le principe est de créer une énorme zone dans tout le jeu, puis de la subdiviser plusieurs fois afin de générer des petites zones, et ensuite on limite les collisions à cette zone (en gros, le jeu essaiera pas de voir si y'a une collision avec l'object qui est à 800km par exemple Very Happy)

Mais je pense que c'est surtout utile dans la mesure où les collisions sont faites par pixels, c'est largement plus lourd à tester qu'une intersection avec des boxes Very Happy

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyMar 30 Aoû 2011 - 20:28

Je penses aussi car les collisions par tileset avec tableau, ça ne recherche que les collisions dans la zone du perso.
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyMar 30 Aoû 2011 - 20:44

Non, rien à voir Very Happy

Quand tu fais un système de collision par tableau, tu créé d'autre variable x&y qui sont attachés à une grille, et tu teste sur _x/16 & _y/16 pour reporter sur ta matrice

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyMar 30 Aoû 2011 - 20:47

Oui je sais très bien puisque je l'utilises Yum!
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyMar 30 Aoû 2011 - 20:48

N'est-il pas? Yum!

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
CoDeAVE
Utilisateur confirmé: Rang **
CoDeAVE

Messages : 408
Localisation : Québec

Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision EmptyMer 31 Aoû 2011 - 3:14

onilink_ a écrit:
C'est en forgeant qu'on deviens forgeron. Continue sur ta lancée et si ça marche pas recommence.
Franchement j'ai foi en toi lol, je suis sur que t'y arriveras. T'arrive a t'adapter super vite.

Et aussi les meilleurs solutions sont toujours celles qu'on trouve tout seul, surtout dans ce genre de situation !

Bon courage :p

Bien dit ^^
Revenir en haut Aller en bas
Contenu sponsorisé




Optimiser un système de collision Empty
MessageSujet: Re: Optimiser un système de collision   Optimiser un système de collision Empty

Revenir en haut Aller en bas
 
Optimiser un système de collision
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: