Fixed fps cap and latency system
This commit is contained in:
parent
779ac9194b
commit
d0c98925e2
|
@ -53,18 +53,11 @@ class Engine:
|
||||||
Attend jusqu'à la fin du jeu."""
|
Attend jusqu'à la fin du jeu."""
|
||||||
self.running = True
|
self.running = True
|
||||||
|
|
||||||
self.start_time = time.time()
|
|
||||||
self.frames = 0
|
|
||||||
|
|
||||||
# Initialisation ddes valeurs de delta et de last_time
|
# Initialisation ddes valeurs de delta et de last_time
|
||||||
delta = 1. # Le delta est le temps depuis la dernière image
|
delta = 1. # Le delta est le temps depuis la dernière image
|
||||||
last_time = time.time()
|
last_time = time.time()
|
||||||
|
|
||||||
latency = 0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while self.running:
|
while self.running:
|
||||||
refresh_rate = self.settings_manager.get_refresh_rate()
|
refresh_rate = self.settings_manager.get_refresh_rate()
|
||||||
if refresh_rate == -1: # Pas de limite, vers l'infini et l'au-delà !!!
|
if refresh_rate == -1: # Pas de limite, vers l'infini et l'au-delà !!!
|
||||||
|
@ -85,8 +78,16 @@ class Engine:
|
||||||
|
|
||||||
self.update(delta)
|
self.update(delta)
|
||||||
|
|
||||||
|
new_refresh_rate = self.settings_manager.get_refresh_rate()
|
||||||
|
if refresh_rate != new_refresh_rate:
|
||||||
|
refresh_rate = new_refresh_rate
|
||||||
|
self.global_latency = 0
|
||||||
|
self.last_latency = []
|
||||||
|
|
||||||
|
latency = 0
|
||||||
latency = delta - 1/refresh_rate
|
latency = delta - 1/refresh_rate
|
||||||
if not latency > self.global_latency * 100 or self.global_latency == 0 or self.settings_manager.get_refresh_rate() != refresh_rate: # Impossible que le jeu prenne autant de retard, on skip cette latence dans le calcul, l'utilisateur a surement cliquer hors de la fenêtre
|
|
||||||
|
if not latency > self.global_latency * 100 or self.global_latency == 0: # Impossible que le jeu prenne autant de retard, on skip cette latence dans le calcul, l'utilisateur a surement cliquer hors de la fenêtre
|
||||||
if len(self.last_latency) < self.latency_precision:
|
if len(self.last_latency) < self.latency_precision:
|
||||||
self.last_latency.append(latency)
|
self.last_latency.append(latency)
|
||||||
else:
|
else:
|
||||||
|
@ -100,10 +101,6 @@ class Engine:
|
||||||
self.global_latency = n/len(self.last_latency)
|
self.global_latency = n/len(self.last_latency)
|
||||||
|
|
||||||
def update(self, delta: float):
|
def update(self, delta: float):
|
||||||
self.frames += 1
|
|
||||||
if time.time() > 50 + self.start_time:
|
|
||||||
print(self.frames/50)
|
|
||||||
exit()
|
|
||||||
"""Fonction qui regroupe toutes les updates des composants. Elle permet de mettre à jour le jeu quand on
|
"""Fonction qui regroupe toutes les updates des composants. Elle permet de mettre à jour le jeu quand on
|
||||||
l'appelle."""
|
l'appelle."""
|
||||||
self.camera.update(delta, self.settings_manager.get_zoom())
|
self.camera.update(delta, self.settings_manager.get_zoom())
|
||||||
|
|
|
@ -29,7 +29,7 @@ class EntityManager:
|
||||||
def update(self, delta: float):
|
def update(self, delta: float):
|
||||||
"""Met à jour toutes les entités enregistrées."""
|
"""Met à jour toutes les entités enregistrées."""
|
||||||
for entity_name in list(self.entities.keys()):
|
for entity_name in list(self.entities.keys()):
|
||||||
entity = self.entities[entity_name]
|
entity: Entity = self.entities[entity_name]
|
||||||
entity.update(delta)
|
entity.update(delta)
|
||||||
if entity.life_points == 0:
|
if entity.life_points == 0:
|
||||||
self.entities.pop(entity_name)
|
self.entities.pop(entity_name)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
class SettingsManager:
|
class SettingsManager:
|
||||||
def __init__(self, default_master_volume: float, default_zoom: float) -> None:
|
def __init__(self, default_master_volume: float, default_zoom: float) -> None:
|
||||||
self.refresh_rate = 200
|
self.refresh_rate = 30
|
||||||
self.latency_precision = 100 # Nombre de valeurs de latence stocké (Pour faire la moyenne)
|
self.latency_precision = 100 # Nombre de valeurs de latence stocké (Pour faire la moyenne)
|
||||||
self.master_volume = default_master_volume
|
self.master_volume = default_master_volume
|
||||||
self.sound_master_volume = 100
|
self.sound_master_volume = 100
|
||||||
|
|
Loading…
Reference in a new issue