summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2015-09-01 00:01:43 +0200
committerFlorian Jung <flo@windfisch.org>2015-09-01 00:01:43 +0200
commitaee2f231e702c5b7fa025a297c107e086838b204 (patch)
tree1cd66ccc4d3bdc3ed063e012ff1fd2f3c621ee1c
parentfcbc8e4ff94f7176675f0da38a9f943bb4e4f693 (diff)
FPS, problem manager
-rw-r--r--main.py70
1 files changed, 69 insertions, 1 deletions
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")