ADD decoupling from FPS and game state

This commit is contained in:
dylandefaoite
2025-05-20 10:21:52 +02:00
parent 52df76081e
commit 058c16b685
3 changed files with 16 additions and 4 deletions

View File

@@ -2,7 +2,7 @@ from models.player import Player
from models.team import Team
class Match:
def __init__(self, map_name, game_info, team_1: Team, team_2: Team, game_events, tick_rate=128):
def __init__(self, map_name, game_info, team_1: Team, team_2: Team, game_events, tick_rate=64):
self.team_1 = team_1
self.team_2 = team_2

View File

@@ -8,6 +8,7 @@ class Team:
self.players = []
self.score = 0
self.id = 1
self.set_ct()
def add_player(self, player: Player):
self.players.append(player)

View File

@@ -1,3 +1,4 @@
import time
from states.game_state import GameState
from controllers.player_controller import PlayerController
from render.map_renderer import MapRenderer
@@ -18,6 +19,10 @@ class Game(GameState):
self.match_data_path = f"assets/maps/config/{self.match.map_name}.json"
self.match_image_path = f"assets/maps/overview/{self.match.map_name}.png"
self.game_update_interval = 1 / self.match.tick_rate
self.elapsed_time = 0
self.last_time = time.perf_counter()
self.__init_screen_areas()
self.__init_utils()
self.__init_renderers()
@@ -49,7 +54,6 @@ class Game(GameState):
self.info_controller = InfoController(self.info_render, self.player_controller)
self.control_controller = ControlController(self.control_render, self.control_box_top_left)
def handle_events(self, events):
"""Handles user inputs."""
for event in events:
@@ -61,8 +65,15 @@ class Game(GameState):
self.control_controller.update(event)
def update(self):
"""Updates game objects."""
self.match.next_tick()
"""Fixed-timestep update decoupled from frame rate."""
now = time.perf_counter()
delta = now - self.last_time
self.last_time = now
self.elapsed_time += delta
while self.elapsed_time >= self.game_update_interval:
self.match.next_tick()
self.elapsed_time -= self.game_update_interval
def draw(self):
"""Draws everything on screen."""