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

Problème d'Optimisation

_lemoria
_lemoria
Niveau 6
30 août 2016 à 19:13:14

Salut ! Je fais un jeu sur love2d avec lua. Mon jeu : Gestion./survie à la banished vu de haut.
Mes sprites sont juste des carrés de couleurs donc il y a juste 4 sprites. Le problème est que un personnage représenté par un carré jaune a des ralentissements. Il se déplace d'un sprite a un autre. Certes mon pc n'est pas puissant mais quand même. Alors, comment je fais pour optimiser mon code ? Il n'y a pas des techniques ? Même si vous n'utilisez pas love2D pouvez vous m'aider, s'il vous plait ?

LGV
LGV
Niveau 28
30 août 2016 à 19:39:41

Trop vaste pour pouvoir vraiment t'aider ; utilise des outils pour analyser les performances et identifier la cause des problemes. Ou alors poste ton code si tu sais deja d'ou le soucis vient sans savoir comment y remedier.

caelacanthe
caelacanthe
Niveau 10
30 août 2016 à 22:12:51

peut-être que c'est pas vraiment des ralentissements, pas moyen d'afficher un framerate quelque part? Imaginons que je fasse se déplacer un objet et que j'arrondisse son affichage à la dizaine de pixels la plus proche, ou que je ne fasse l'affichage que tous les tant de frames, il donnera l'impression d'un jeu qui rame alors que c'est pas vraiment ça :oui:

_lemoria
_lemoria
Niveau 6
30 août 2016 à 23:17:19

Merci de vos réponses, Caelacanthe : Alors j'ai réussi à afficher les fps, je tourne a 60-50 fps mais quand je fais l'action des fois je reste dans les 60-50 fps puis des fois je suis a 10-20 voir 8 fps. LGV et whiteapplex, je comprends tout à fait. Comme lua est un langage simple vous devriez comprendre. Pour la compréhension du code j'ai réuni des variables au dessus.
materiaux = {} materiaux.arbre = {} materiaux.arbre.quantite = 100 materiaux.arbre.x = 400 materiaux.arbre.y = 200 people = {} people.ouvrier = {} people.ouvrier.x = 500 people.ouvrier.y = 500 home_mere = {} home_mere.x = 500 home_mere.y = 500 maison = {} maison.image = love.graphics.newImage("Images/maison.png") annuler = true une_fois = true function build() -- construire une maison if materiaux.arbre.quantite >= 100 and love.mouse.isDown(2) then position_souris = {} position_souris.x = love.mouse.getX() position_souris.y = love.mouse.getY() table.insert(maison , position_souris) materiaux.arbre.quantite = materiaux.arbre.quantite - 100 end for i,n in pairs(maison) do love.graphics.draw(maison.image, n.x, n.y) end end function action_couper() if souris.x >= 10 and souris.x <= 100 and souris.y >= 150 and souris.y <= 160 and love.mouse.isDown(1) then annuler = false charge_plein = false end --trajet vers le bois if annuler == false then if people.ouvrier.x > materiaux.arbre.x then people.ouvrier.x = people.ouvrier.x - 2 end if people.ouvrier.y > materiaux.arbre.y then people.ouvrier.y = people.ouvrier.y - 2 end if people.ouvrier.x < materiaux.arbre.x then people.ouvrier.x = people.ouvrier.x + 2 end if people.ouvrier.y < materiaux.arbre.y then people.ouvrier.y = people.ouvrier.y + 2 end end --recolte du bois if people.ouvrier.y == materiaux.arbre.y and people.ouvrier.x == materiaux.arbre.x then charge_plein = true une_fois = true end --trajet vers l'entrepot if charge_plein == true then annuler = true if people.ouvrier.x> home_mere.x then people.ouvrier.x= people.ouvrier.x - 2 end if people.ouvrier.y > home_mere.y then people.ouvrier.y = people.ouvrier.y - 2 end if people.ouvrier.x < home_mere.x then people.ouvrier.x = people.ouvrier.x + 2 end if people.ouvrier.y < home_mere.y then people.ouvrier.y = people.ouvrier.y + 2 end end end --dès qui pose du bois dans un endroit voulu gagne 100 bois function poser_materiaux() if people.ouvrier.y == home_mere.y and people.ouvrier.x == home_mere.x then if une_fois == true then materiaux.arbre.quantite = materiaux.arbre.quantite + 100 une_fois = false end end end
Après j'ai quand même penser que ça venait peut être de mon pc. Donc merci a ceux qui voudront bien m'aider :)

LGV
LGV
Niveau 28
31 août 2016 à 00:18:02

visiblement tu fais des deplacements en pixels absolus, au lieu de le faire en vitesse*delta_temps ; ca devrait pas mal fluidifier les deplacements deja

_lemoria
_lemoria
Niveau 6
31 août 2016 à 15:32:00

Merci j'ai fais avancer mon perso en delta time sauf que ça créer un autre problème. Les nombres sont plus des entiers mais des flottants donc je cherche un moyen de le convertir. :)

Megagugus14
Megagugus14
Niveau 10
31 août 2016 à 16:24:49

Leur type n'est pas censé poser problème il me semble. :doute:

_lemoria
_lemoria
Niveau 6
31 août 2016 à 16:34:49

Le probleme est que j'avais une condition qui demandé que deux variables soit equale sauf que depuis que j'ai mis delta time ben il y a plusieurs chiffres apres la virgule donc je peux pas verifié la condition --'

LGV
LGV
Niveau 28
31 août 2016 à 17:16:49

Teste l'egalite "a epsilon pres", c-a-d si "abs(a -b) <= epsilon", ou epsilon est la marge d'erreur toleree pour valider la condition

De maniere generale, on ne travaille sur des positions directement, mais sur des zones, e.g. "est-ce que la zone du joueur intersect la zone d'activation de l'interrupteur", etc.

Message édité le 31 août 2016 à 17:18:06 par LGV
_lemoria
_lemoria
Niveau 6
31 août 2016 à 17:38:26

Je vais essayer epsilon :) Merci. je connaissais pas. Apres j'ai pas fait par zone car je veux faire vite fait des tests. Sinon c'est long à faire car je connais pas encore comment faire des zones, des collisions(enfin si mais c'est des calculs savant que je dois faire) faudra que je fasse un petit jeu pour l'apprivoiser.

_lemoria
_lemoria
Niveau 6
31 août 2016 à 18:09:54

Bon je n'ai pas trouvé comment faire epsilon mais j'ai trouvé une fonction "math.ceil" qui permet d'arrondir, sauf que le problème numéro 1 n'est pas résolu, j'ai remarqué qu'à force de joueur même pas 5 min cela fait planter mon pc. x)

LGV
LGV
Niveau 28
31 août 2016 à 20:02:31

Epsilon, c'est juste une valeur arbitraire assez petite a partir de laquelle on peut considerer que deux grandeurs sont egales. A toi de fixer cette valeur selon ton univers ; dans une scene ou on travaille en metres, p-e que epsilon = 0.001 est un bon debut. Si tu travailles en pixels, ou a l'echelle planetaire, il faut ajuster en tres petit ou en tres grand.

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