From aee2f231e702c5b7fa025a297c107e086838b204 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Tue, 1 Sep 2015 00:01:43 +0200 Subject: FPS, problem manager --- main.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) (limited to 'main.py') diff --git a/main.py b/main.py index b9fc832..79b0e54 100644 --- a/main.py +++ b/main.py @@ -12,6 +12,54 @@ import stats from subscriber import EnhancingSubscriber from interval_utils import * from strategy import * +import time + +class Clock: + def __init__(self): + self.t = time.time() + self.fps_t = time.time() + self.fps = 27 + self.cnt = 0 + self.newfps = False + + def tic(self): + t = time.time() + result = t-self.t + self.t=t + return result + + def getfps(self): + self.cnt+=1 + if time.time() > self.fps_t + 1: + self.fps_t += 1 + self.fps = self.cnt + self.cnt = 0 + self.newfps = True + else: + self.newfps = False + return self.fps + +class ProblemException(BaseException): + pass + +class ProblemManager: + def __init__(self, setup): + self.setup = setup + self.problems = {} + for t in setup: + self.problems[t] = [] + + def report(self, prob): + self.problems[prob] += [time.time()] + self.problems[prob] = list(filter(lambda t : time.time() < t + self.setup[prob][1], self.problems[prob])) + + if len(self.problems[prob]) > self.setup[prob][0]: + print("PROBLEM: "+prob) + if self.setup[prob][2]: + raise ProblemException + +probs = ProblemManager({"network lag":(100,5,True), "strategy lag":(5,2,False), "gui lag":(5,2,False), "high fps":(300,6,True), "low fps":(5,6,True)}) + if "--nogui" in sys.argv: sys.argv.remove("--nogui") @@ -31,7 +79,7 @@ stats = stats.Stats(c) try: nick = sys.argv[2] except: - nick = "test cell pls ignore" + nick = "" for i in range(1,10): # 10 connection attempts print("trying to connect, attempt "+str(i)) @@ -66,11 +114,19 @@ strategy = Strategy(c, gui) autorespawn_counter = 60 +clock = Clock() + # main loop while gui.running: c.on_message() + if clock.tic() > 1./20: + print("NETWORK LAG") + probs.report("network lag") gui.draw_frame() + if clock.tic() > 1./40: + print("GUI SLOW") + probs.report("gui lag") if len(list(c.player.own_cells)) > 0: target = strategy.process_frame() @@ -80,6 +136,10 @@ while gui.running: stats.process_frame() + if clock.tic() > 1./25.: + print("STRATEGY LAG") + probs.report("strategy lag") + gui.draw_debug() gui.update() @@ -90,6 +150,14 @@ while gui.running: else: autorespawn_counter-=1 + fps = clock.getfps() + if clock.newfps: + print("FPS: %3d" % fps) + if fps < 24: + probs.report("low fps") + if fps > 50: + probs.report("high fps") + stats.save("stats.pickle") print("bye") -- cgit v1.2.3