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

[Lua/Love] Optimisation collisions

Megagugus14
Megagugus14
Niveau 10
01 mars 2013 à 21:11:13

Salut,

Je code un petit jeu en Lua / Love, rien d'extraordinaire. bref, tout marche... Sauf les collisions. Ma méthode est ultra couteuse car mon code est assez horrible...

Bref, le principe est que dès que joueur entre en collision avec obstacle, on diminue la position y du joueur.

Sauf que, pour pouvoir faire défiler les obstacles, j'ai du faire un système pour sauvegarder dans une table le moment d'insertion de l'obstacle pour calculer ensuite sa position à chaque tout de boucle...

Problème : les obstacles ne sont jamais détruits ! Donc je me retrouve dès le début avec plus de 200 obstacles quand le cube arrive dans le "champs" et du coup la gestion de collision que je fais devient très très lourde...

En effet, pour vérifier les collisions, je vérifie tout le tableau des obstacles pour vérifier leur position (toujours en calculant la position de dessin).

Au début, je dois donc vérifier 200 données de tableau... Et comme cela tourne à ~50 FPS, alors le décalage entre l'arrêt du joueur et la collision est de... 4 secondes, dès le début du jeu. Donc je dois attendre 4 secondes pour voir mes collisions marcher, et en plus ce nombre grandit de boucle en boucle.

Je pose ainsi une question à laquelle je n'ai pas pu répondre : n'y a-t-il pas un autre moyen plus propre de trouver des collisions ?

Voici mon code : (attention les yeux)

http://pastebin.com/wq4uuTey

Pseudo supprimé
Pseudo supprimé 02 mars 2013 à 02:39:08

plusieurs choses.

1. tu écris du texte blanc sur un fond blanc :o))

2. tes obstacles n'ont pas de position y. pour avoir la position y tu fait

(love.timer.getTime() * 50) - position_x

c'est insensé.

quand tu ajoute un obstacle met le a y 0
table.insert(obstacleTab, {randPos(), 0, score})

ensuite dans la boucle tu incrémente y de 1
si y > love.graphics.getHeight() tu remet y a 0.

3. j’arrive a avoir 2500 obstacles avant une chute de fps.

Megagugus14
Megagugus14
Niveau 10
02 mars 2013 à 09:09:00

1. Oui, j'ai remarqué. :hap: J'ai modifié ça ^^

2. Je reconnais que le code est pas très lisible (voire pas du tout). Je vais essayer cette méthode et j'en rapporte les résultats plus tard.

3. Le problème c'est pas vraiment les fps, c'est surtout que le jeu met beaucoup de temps avant de trouver des collisions. Donc ça ralentit petit à petit.

Megagugus14
Megagugus14
Niveau 10
02 mars 2013 à 09:20:21

Après plusieurs modifications, tout marche à merveille. Le code pour les curieux :

http://pastebin.com/bdr1KUBP

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