Salut
Comment doit on gerer les vagues d ennemis .. j ai essayer avec un timer mais cela fait ralentir l ensemble
Merci d avance
Salut
Comment doit on gerer les vagues d ennemis .. j ai essayer avec un timer mais cela fait ralentir l ensemble
Merci d avance
Bonjour,
Pouvez vous être plus précis ?
Parlez vous du spawn des ennemies par vague et de la gestion de déplacement par la vague ?
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Surtout du spawn des ennemis ; mais les deux m interesse.
J ai mis un Timer en place qui toutes les n secondes genere des nouveaux ennemis.
Comment peut on optimiser la gestion des collisions entre les projectiles et les ennemis ? pour le moment je gere cela dans l Update des projectiles qui verifie si ils intersect avec les ennemis.
Tu spawn combien d'ennemis c'est sur que la gestion des collisions ca peut ralentir.
Pour le moment 1 par seconde...
Et comment tu fais ta gestion de collision?
J ai une liste avec tout les ennemis et dans l objet projectile je vérifie si il n intersect pas avec l un des objets "ennemis"
Combien y a t-il d'éléments lorsque cela rame ?
Sinon, pour les optimisations de collisions, on utilise de la hiérarchisation de l'espace (Space partitionning), dans le genre, il existe le quad tree, ou le binary space partitionning (BSP).
Cela permet d'éviter de faire des tests, en testant que les éléments proches ou dans un zone précise.
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
cela rame des que je tire ; il doit y avoir ~20 objets pour tout (enemis,projectiles, etc...)
Si tu as 20 ennemis et 20 projectiles ca fait deja 400 check de collision deja.
Tu ne fais pas un test de collision pixel perfect?
Une technique de collision plutôt lente...
Si tu fais du xna tu peux essayer de regarder par exemple le moteur physique farseer. Sauf si tu tiens a tout contrôler.
Suivez le développement de Chibis Bomba
twitter : https://twitter.com/MoD_DiB
DevBlog : http://moddib.blogspot.fr/
Voici mon bout de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public override void Update(GameTime gameTime) { VectorPosition += Direction * Speed; IList<IGameObject> list = LayerManager.Instance.GetObjects("Bullet"); foreach (IGameObject item in list) { Rectangle r = new Rectangle((int)item.Position.X, (int)item.Position.Y, item.HitBox.Width, item.HitBox.Height); bool res = HitBox.Intersects(r); if (res) { item.Alive = false; this.Alive = false; break; } Debug.WriteLine(res); } base.Update(gameTime); }
La première question c'est : est-ce que ça rame si tu vires le test de collision ?
Vive les roues en pierre
Faire ceci pour chaque sur chaque bullet me semble gourmand : IList<IGameObject> list = LayerManager.Instance.GetObjects("Bullet");
dans la mesure où je suis certains que GetObjects parcours tous les éléments du monde.
Le plus simple serait de gérer les collisions dans un manager afin d'éviter ça.
Mais sinon mis à part si ton HitBox.Intersects(r); est super lourd ton bout de code ne devrait pas ralentir tant que ca pour 20 éléments.
Tu ne testerai pas ton projet avec visual attaché et donc ca ne ramera plus une fois que tu auras viré cette ligne :
Debug.WriteLine(res);
?
Suivez le développement de Chibis Bomba
twitter : https://twitter.com/MoD_DiB
DevBlog : http://moddib.blogspot.fr/
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager