CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[AIDE] Optimiser les collisions ?

News jeu

Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop

Voir
Alistesios
Alistesios
Niveau 7
31 mai 2013 à 22:31:45

Bonswar tout le monde :hap:

Alors tout d'abord je tiens à préciser que j'ai fait une recherche google, et que j'ai rien trouvé. :ok:

Donc. Je suis actuellement en train de créer un petit jeu en 2D, vue de dessus, avec un aspect survival, enfin bon un truc plutôt sympa. Je code depuis 1 semaine, mais j'ai plutôt pas mal avancé dans le projet. Donc je commence à chercher des optimisations à faire puisque je me suis rendu compte d'un problème plutôt embêtant.

Le principe, c'est que j'ai un objet "Map" qui contient toutes les données de la map (grosso modo, j'ai un système de tile, donc en fonction de l'endroit où se situe le joueur je teste si sa hitbox est en collision et puisque je sais si la zone est solide ou passable, je gerre les collisions et ça fonctionne très bien comme ça :noel: ).

Mais je me suis dit qu'il aurait été tout de même mieux d'effectuer les tests de collisions uniquement sur la zone proche du joueur, afin d'avoir à éviter de faire 36.000 test/secondes, ce qui sur de grandes maps ferait probablement laguer le jeu.

Donc je pose la question suivante : Comment peut on faire pour vérifier uniquement les tiles autour du personnage et pas toutes celles de la map ? Est-ce qu'un algorythme me permettrais de déterminer quelles sont les tiles à prendre en compte ?

Pour info, si jamais y'en a qui veulent savoir je code en C# avec XNA.

rk_yurkor
rk_yurkor
Niveau 61
01 juin 2013 à 00:55:52

Sinon une autre méthode ça serait d'avoir ta map trié . la complexité serait en log(n) en temps et la même en espace . pourquoi ? parce que tu va effectuer une recherche dichotomique en divisant à chaque coup par 2 le nombre de test . genre si ta 100 objets et ensuite 200 et bien ça te prendra qu'un test de plus

rk_yurkor
rk_yurkor
Niveau 61
01 juin 2013 à 01:02:57

Je sais pas si j'ai été assez compréhensible . envoie un MP si ta besoin d'aide .
ex : tableau contenant 10 chiffre trié
[0,1,2,3,4,5,5,7,8,8]
ce sont les positions x de tes objets .
le joueur est à x=3 ;
tu prend le milieu du tableau . tu regarde si il est supérieur ou inférieur à x . C'est 5 donc supérieur.Donc tu est entre 0 et 5 . tu reprend la moitié de ce nouveau tableau c'est 2 . c'est inférieur donc le résultat est entre 2 et 5 . tu recoupe en 2 et tu tombe sur 3 voila . si tu tombe sur rien à la fin c'est que tu ne touche pas

rk_yurkor
rk_yurkor
Niveau 61
01 juin 2013 à 10:21:04

Oui mais ton découpage binaire va vite s'arrêter dès qu'il voudra faire des forme différentes et des hitbox différentes . Mais effectivement dans son cas ça serait le plus efficace

Alistesios
Alistesios
Niveau 7
03 juin 2013 à 18:09:53

Merci Celeniak de ta réponse, c'est vrai que c'est vraiment tout con, mais j'y avais pas pensé.

A la prochaine :hap:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware