Commit 72d4278c authored by Matthew Hausknecht's avatar Matthew Hausknecht

Added checks for finished.

parent edda8b73
...@@ -49,11 +49,13 @@ def main(args, team1='left', team2='right', rng=numpy.random.RandomState()): ...@@ -49,11 +49,13 @@ def main(args, team1='left', team2='right', rng=numpy.random.RandomState()):
'server::game_log_dir=%s server::text_log_dir=%s '\ 'server::game_log_dir=%s server::text_log_dir=%s '\
'server::synch_mode=%i server::hfo=1 ' \ 'server::synch_mode=%i server::hfo=1 ' \
'server::fullstate_l=%i server::fullstate_r=%i ' \ 'server::fullstate_l=%i server::fullstate_r=%i ' \
'server::coach_w_referee=1' \ 'server::coach_w_referee=1 server::hfo_max_trial_time=%i ' \
'server::hfo_max_trials=%i server::hfo_max_frames=%i' \
%(server_port, coach_port, olcoach_port, %(server_port, coach_port, olcoach_port,
args.logging, args.logging, args.logging, args.logging, args.logging, args.logging,
args.logDir, args.logDir, args.logDir, args.logDir, args.logDir, args.logDir,
args.sync, args.fullstate, args.fullstate) args.sync, args.fullstate, args.fullstate,
args.maxFramesPerTrial, args.numTrials, args.numFrames)
# server::record_messages=on -- useful for debug # server::record_messages=on -- useful for debug
try: try:
# Launch the Server # Launch the Server
......
...@@ -46,6 +46,7 @@ class Trainer(object): ...@@ -46,6 +46,7 @@ class Trainer(object):
self._defenseTeamName = '' # Name of the defensive team self._defenseTeamName = '' # Name of the defensive team
self._teams = [] # Team indexes for offensive and defensive teams self._teams = [] # Team indexes for offensive and defensive teams
self._isPlaying = False # Is a game being played? self._isPlaying = False # Is a game being played?
self._done = False # Are we finished?
self._agentPopen = [] # Agent's processes self._agentPopen = [] # Agent's processes
self._npcPopen = [] # NPC's processes self._npcPopen = [] # NPC's processes
self._connectedPlayers = [] self._connectedPlayers = []
...@@ -223,6 +224,8 @@ class Trainer(object): ...@@ -223,6 +224,8 @@ class Trainer(object):
self._numBallsCaptured += 1 self._numBallsCaptured += 1
elif event == 'OUT_OF_TIME': elif event == 'OUT_OF_TIME':
self._numOutOfTime += 1 self._numOutOfTime += 1
elif event == 'HFO_FINISHED':
self._done = True
if event in {'GOAL','OUT_OF_BOUNDS','CAPTURED_BY_DEFENSE','OUT_OF_TIME'}: if event in {'GOAL','OUT_OF_BOUNDS','CAPTURED_BY_DEFENSE','OUT_OF_TIME'}:
self._numTrials += 1 self._numTrials += 1
print 'EndOfTrial: %d / %d %d %s'%\ print 'EndOfTrial: %d / %d %d %s'%\
...@@ -351,6 +354,8 @@ class Trainer(object): ...@@ -351,6 +354,8 @@ class Trainer(object):
else self._defenseTeamName, player_num) else self._defenseTeamName, player_num)
player.terminate() player.terminate()
time.sleep(0.1) time.sleep(0.1)
player.kill()
player.wait()
self.send('(look)') self.send('(look)')
partial = ['ok','look'] partial = ['ok','look']
self._numPlayers = 0 self._numPlayers = 0
...@@ -497,7 +502,7 @@ class Trainer(object): ...@@ -497,7 +502,7 @@ class Trainer(object):
offense_nums, defense_nums)) offense_nums, defense_nums))
print 'Starting game' print 'Starting game'
self.startGame() self.startGame()
while self.checkLive(necProcesses): while self.checkLive(necProcesses) and not self._done:
prevFrame = self._frame prevFrame = self._frame
self.listenAndProcess() self.listenAndProcess()
except TimeoutError: except TimeoutError:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment