def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) self.step = self.args['step'] self.peek = self.args['peek'] self.method = self.args['method'] self.escapedepth = self.args['escapedepth'] self.escapemethod = self.args['escapemethod'] self.repeathistory = self.args['repeathistory'] self.motionblur = self.args['motionblur'] self.input_log = [] self.history = [] self.deuxiemevue_buffer = [] self.best_state = self.game.Freeze() self.best_heur = self.game.Heuristic() self.screen = pygame.Surface(self.ScreenSize()) self.screenmidpoint = self.screen.get_width() / 2 self._AddChildren = self._AddChildrenDFS if self.method == 'bfs': self._AddChildren = self._AddChildrenBFS self._AddChildrenEscape = self._AddChildrenDFS if self.escapemethod == 'bfs': self._AddChildrenEscape = self._AddChildrenBFS
def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) self.depthfactor = self.args['depthfactor'] self.maxdepth = self.depthfactor self.input_log = None self.init_state = game.Freeze()
def __init__(self, game, args={}): Brain.__init__(self, game, args, defaultargs) self.clock = pygame.time.Clock() self.fps = self.args['fps'] self.force = self.args['force'] self.granularity = self.args['granularity'] self.recordvideo = self.args['recordvideo'] self.recordaudio = self.args['recordaudio'] loadedfile = cPickle.load(open(self.args['file'], 'r')) if self.recordaudio: # todo: some way to determine appropriate framerate from game. currently using values for snes self.wav = wave.open( 'output/{}_{}.wav'.format(self.__class__.name, self.game.__class__.name), 'wb') self.wav.setnchannels(2) self.wav.setsampwidth(2) self.wav.setframerate(32040) # describe the run print 'replaying a run of:\t', loadedfile['game'], '\t', loadedfile[ 'game_args'] print 'that was produced by:\t', loadedfile['brain'], '\t', loadedfile[ 'brain_args'] if not self.force: if loadedfile['game'] != game.__class__.name: raise Exception('loaded input string is for "%s"' % (loadedfile['game'])) special_cases = ['granularity', 'audio'] mismatches = [] for key in game.args: if key not in special_cases: # note: old args being dropped are implicitly ignored by this loop. # explicitly ignore new features with this conditional. if key in loadedfile['game_args'] and loadedfile[ 'game_args'][key] != game.args[key]: mismatches.append(key) else: if key == 'granularity': then = loadedfile['game_args'][key] if key in loadedfile['brain_args']: then *= loadedfile['brain_args'][key] now = game.args[key] * self.args[key] if then != now: print 'rerun: granularity mismatch! consider adjusting rerun\'s granularity.' mismatches.append(key) elif key == 'audio': print 'rerun: be sure to use "array" for the game audio if you want to use rerun\'s sound recording.' if len(mismatches) > 0: for key in mismatches: print key, '\n\tgame:', game.args[key], print '\n\tfile:', loadedfile['game_args'][key] raise Exception('game_args mismatch') self.inputstring = loadedfile['path'] self.outputstring = [] print 'with', len(self.inputstring), 'frames of input'
def __init__(self, game, args={}): Brain.__init__(self, game, args, defaultargs) self.depthfactor = self.args['depthfactor'] self.maxdepth = self.depthfactor self.input_log = None self.init_state = game.Freeze()
def __init__(self, game, args={}): Brain.__init__(self, game, args, defaultargs) self.step = self.args['step'] self.peek = self.args['peek'] self.method = self.args['method'] self.escapedepth = self.args['escapedepth'] self.escapemethod = self.args['escapemethod'] self.repeathistory = self.args['repeathistory'] self.motionblur = self.args['motionblur'] self.input_log = [] self.history = [] self.deuxiemevue_buffer = [] self.best_state = self.game.Freeze() self.best_heur = self.game.Heuristic() self.screen = pygame.Surface(self.ScreenSize()) self.screenmidpoint = self.screen.get_width() / 2 self._AddChildren = self._AddChildrenDFS if self.method == 'bfs': self._AddChildren = self._AddChildrenBFS self._AddChildrenEscape = self._AddChildrenDFS if self.escapemethod == 'bfs': self._AddChildrenEscape = self._AddChildrenBFS
def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) self.clock = pygame.time.Clock() self.fps = self.args['fps'] self.force = self.args['force'] self.granularity = self.args['granularity'] self.recordvideo = self.args['recordvideo'] self.recordaudio = self.args['recordaudio'] loadedfile = cPickle.load(open(self.args['file'], 'r')) if self.recordaudio: # todo: some way to determine appropriate framerate from game. currently using values for snes self.wav = wave.open('output/{}_{}.wav'.format(self.__class__.name, self.game.__class__.name), 'wb') self.wav.setnchannels(2) self.wav.setsampwidth(2) self.wav.setframerate(32040) # describe the run print 'replaying a run of:\t', loadedfile['game'], '\t', loadedfile['game_args'] print 'that was produced by:\t', loadedfile['brain'], '\t', loadedfile['brain_args'] if not self.force: if loadedfile['game'] != game.__class__.name: raise Exception('loaded input string is for "%s"' % (loadedfile['game'])) special_cases = ['granularity', 'audio'] mismatches = [] for key in game.args: if key not in special_cases: # note: old args being dropped are implicitly ignored by this loop. # explicitly ignore new features with this conditional. if key in loadedfile['game_args'] and loadedfile['game_args'][key] != game.args[key]: mismatches.append(key) else: if key == 'granularity': then = loadedfile['game_args'][key] if key in loadedfile['brain_args']: then *= loadedfile['brain_args'][key] now = game.args[key]*self.args[key] if then != now: print 'rerun: granularity mismatch! consider adjusting rerun\'s granularity.' mismatches.append(key) elif key == 'audio': print 'rerun: be sure to use "array" for the game audio if you want to use rerun\'s sound recording.' if len(mismatches) > 0: for key in mismatches: print key, '\n\tgame:', game.args[key], print '\n\tfile:', loadedfile['game_args'][key] raise Exception('game_args mismatch') self.inputstring = loadedfile['path'] self.outputstring = [] print 'with', len(self.inputstring), 'frames of input'
def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) # populate dnalen = self.args['dnalen'] popsize = self.args['popsize'] self.mutate_strength = self.args['mutate_strength'] self.avg_point_mutations = self.args['avg_point_mutations'] self.avg_swaps = self.args['avg_swaps'] self.avg_deletions = self.args['avg_deletions'] self.pop = [Indiv(game, dnalen) for i in xrange(popsize)] self.input_string = (float("inf"), []) # pair of (heur, path)
def __init__(self, game, args={}): Brain.__init__(self, game, args, defaultargs) # populate dnalen = self.args['dnalen'] popsize = self.args['popsize'] self.mutate_strength = self.args['mutate_strength'] self.avg_point_mutations = self.args['avg_point_mutations'] self.avg_swaps = self.args['avg_swaps'] self.avg_deletions = self.args['avg_deletions'] self.pop = [Indiv(game, dnalen) for i in xrange(popsize)] self.input_string = (float("inf"), []) # pair of (heur, path)
def __init__(self, game, *_, joypad=joylist[0], dir_keys='wsad', btn_keys='klji1056', state_path='output/{name}.state'): Brain.__init__(self, game) if type(joypad) == str: if joypad.isdigit(): joypad = int(joypad) else: joypad = joylist.index(joypad) if joypad >= 0: self.joy = pygame.joystick.Joystick(joypad) self.joy.init() print('Sapiens:', self.joy.get_name()) self.input_log = [] self.input_map = game.HumanInputs() self.pad = 0 UDLR = ('up', 'down', 'left', 'right') map = self.input_map self.hat_reset = 0 for i in UDLR: s = 'hat0_{}'.format(i) if s in map: self.hat_reset |= map[s] self.hat_reset = ~self.hat_reset self.hat_lut = [{-1: 'left', 1: 'right'}, {1: 'up', -1: 'down'}] self.key_map = {} for i in range(len(dir_keys)): s = 'hat0_{}'.format(UDLR[i]) if s in map: self.key_map[ord(dir_keys[i])] = map[s] for i in range(len(btn_keys)): if i in map: self.key_map[ord(btn_keys[i])] = map[i] self.state_path = state_path.format(name=self.game.name.lower()) self._current_game_res = None
def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) self.step = self.args['step'] self.peek = self.args['peek'] self.method = self.args['method'] self.motionblur = self.args['motionblur'] self.input_log = [] self.best_state = self.game.Freeze() self.best_heur = self.game.Heuristic() self.screen = pygame.Surface(self.ScreenSize()) self.screenmidpoint = self.screen.get_width() / 2 self._AddChildren = self._AddChildrenDFS if self.method == 'bfs': self._AddChildren = self._AddChildrenBFS
def __init__(self, game, args={}): Brain.__init__(self, game, args, defaultargs) self.step = self.args['step'] self.peek = self.args['peek'] self.method = self.args['method'] self.motionblur = self.args['motionblur'] self.input_log = [] self.best_state = self.game.Freeze() self.best_heur = self.game.Heuristic() self.screen = pygame.Surface(self.ScreenSize()) self.screenmidpoint = self.screen.get_width() / 2 self._AddChildren = self._AddChildrenDFS if self.method == 'bfs': self._AddChildren = self._AddChildrenBFS
def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) self.lookahead = self.args['lookahead'] self.walkahead = self.args['walkahead'] self.escapedepth = self.args['escapedepth'] self.shortcutrepeat = self.args['shortcutrepeat'] self.input_log = [] self.new_best = None self.terminated = False self._GenInputLists(self.lookahead) self.current_state = self.game.Freeze() self.current_heur = self.game.Heuristic() self.escape_heur = self.current_heur self.screen = pygame.Surface(self.ScreenSize()) self.screenmidpoint = self.screen.get_width() / 2
def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) self.fps = self.args['fps'] self.clock = pygame.time.Clock() joynum = self.args['joynum'] if type(joynum) == str: joynum = joylist.index(joynum) if joynum >= 0: self.joy = pygame.joystick.Joystick(joynum) self.joy.init() print 'Sapiens:', self.joy.get_name() self.input_log = [] self.input_map = game.HumanInputs() self.pad = 0 self.won = False UDLR = ('up', 'down', 'left', 'right') map = self.input_map self.hat_reset = 0 for i in UDLR: s = 'hat0_{}'.format(i) if s in map: self.hat_reset |= map[s] self.hat_reset = ~self.hat_reset self.hat_lut = [ { -1: 'left', 1: 'right' }, { 1: 'up', -1: 'down' } ] self.key_map = {} keyhat = self.args['keyhat'] for i in xrange(len(keyhat)): s = 'hat0_{}'.format(UDLR[i]) if s in map: self.key_map[ord(keyhat[i])] = map[s] keybuttons = self.args['keybuttons'] for i in xrange(len(keybuttons)): if i in map: self.key_map[ord(keybuttons[i])] = map[i]
def __init__(self, game, args={}): Brain.__init__(self, game, args, defaultargs) self.fps = self.args['fps'] self.clock = pygame.time.Clock() joynum = self.args['joynum'] if type(joynum) == str: joynum = joylist.index(joynum) if joynum >= 0: self.joy = pygame.joystick.Joystick(joynum) self.joy.init() print 'Sapiens:', self.joy.get_name() self.input_log = [] self.input_map = game.HumanInputs() self.pad = 0 self.won = False UDLR = ('up', 'down', 'left', 'right') map = self.input_map self.hat_reset = 0 for i in UDLR: s = 'hat0_{}'.format(i) if s in map: self.hat_reset |= map[s] self.hat_reset = ~self.hat_reset self.hat_lut = [{-1: 'left', 1: 'right'}, {1: 'up', -1: 'down'}] self.key_map = {} keyhat = self.args['keyhat'] for i in xrange(len(keyhat)): s = 'hat0_{}'.format(UDLR[i]) if s in map: self.key_map[ord(keyhat[i])] = map[s] keybuttons = self.args['keybuttons'] for i in xrange(len(keybuttons)): if i in map: self.key_map[ord(keybuttons[i])] = map[i]
def __init__(self, game, args = {}): Brain.__init__(self, game, args, defaultargs) self.edge = self.args['edgecost'] self.input_log = None
def __init__(self, game, args={}): Brain.__init__(self, game, args, defaultargs) self.edge = self.args['edgecost'] self.input_log = None