def from_prims(cls, prims: dict) -> 'Entity': cpprims = prims.copy() cpprims['modifiers'] = [ ser.deserialize_embeddable(mod) for mod in prims['modifiers'] ] cpprims['items'] = dict((int(key), ser.deserialize_embeddable(val)) for key, val in prims['items']) return cls(**cpprims)
def from_prims(cls, prims) -> 'EntityCombatUpdate': return cls( prims['order'], prims['attacker_iden'], prims['defender_iden'], prims['og_damage'], set(prims['tags']), tuple( ser.deserialize_embeddable(prev) for prev in prims['attack_prevals']), tuple( ser.deserialize_embeddable(prev) for prev in prims['defend_prevals']), )
def from_prims(cls, prims): return cls( train_bot=prims['train_bot'], adver_bot=prims['adver_bot'], bot_folder=prims['bot_folder'], train_seq=list(ser.deserialize_embeddable(ses) for ses in prims['train_seq']), cur_ind=prims['cur_ind'] )
def _run(args): settings: TrainSettings = None if not os.path.exists(args.settings): os.makedirs(os.path.dirname(args.settings), exist_ok=True) settings = TrainSettings.defaults(args.bot) with open(args.settings, 'w') as outfile: json.dump(ser.serialize_embeddable(settings), outfile) else: with open(args.settings, 'r') as infile: rawsettings = json.load(infile) settings = ser.deserialize_embeddable(rawsettings) os.makedirs(settings.bot_folder, exist_ok=True) executable = 'python3' if args.py3 else 'python' port = args.port create_flags = 0 if args.headless else subprocess.CREATE_NEW_CONSOLE nthreads = args.numthreads spec = not args.headless ncores = psutil.cpu_count(logical=False) if args.aggressive and nthreads > (ncores // 3): print(f'auto-reducing simultaneous servers to {ncores // 3} since there are {ncores} ' + 'cores and we need 3 cores per server') nthreads = ncores // 3 if os.path.exists(settings.replay_folder): rb.FileWritableReplayBuffer(settings.replay_folder, exist_ok=True).close() while settings.cur_ind < len(settings.train_seq): print('--starting session--') print(settings.current_session) _get_experiences_async(settings, executable, port, port + 10*nthreads, create_flags, args.aggressive, spec, nthreads) _train_experiences(settings, executable) if args.debug: break _cleanup_session(settings) settings.cur_ind += 1 with open(args.settings, 'w') as outfile: json.dump(ser.serialize_embeddable(settings), outfile) print('--finished--')
def from_prims(cls, prims) -> 'AttackEventArgs': return cls(prims['attacker_iden'], ser.deserialize_embeddable(prims['attack_result']))
def from_prims(cls, prims): return cls( prims['order'], prims['entity_iden'], prims['event_name'], ser.deserialize_embeddable(prims['args']), tuple( ser.deserialize_embeddable(prev) for prev in prims['prevals']))
def from_prims(cls, prims): return cls(prims['order'], prims['depth'], ser.deserialize_embeddable(prims['dungeon']))
def from_prims(cls, prims): return cls(prims['order'], prims['entity_iden'], ser.deserialize_embeddable(prims['modifier']))
def _get_experiences_target(serd_settings: dict, executable: str, port_min: int, port_max: int, create_flags: int, aggressive: bool, spec: bool, replay_path: str, settings_path: str, tar_num_ticks: int): settings = ser.deserialize_embeddable(serd_settings) _get_experiences_sync(settings, executable, PortChooser(port_min, port_max-port_min), create_flags, aggressive, spec, replay_path, settings_path, tar_num_ticks)
def from_prims(cls, prims) -> 'MovePacket': return cls(ser.deserialize_embeddable(prims['thing']))
def from_prims(cls, prims) -> 'TogetherGameStartGenerator': return cls(ser.deserialize_embeddable(prims['dgen']))
def from_prims(cls, prims) -> 'SeparatedGameStartGenerator': return cls( ser.deserialize_embeddable(prims['dgen']), prims['p1_depth'], prims['p2_depth'] )
def from_prims(cls, prims) -> 'SyncPacket': if ser.peek_type_embeddable(prims['game_state']) != GameState: raise ValueError('game_state bad type') return cls(ser.deserialize_embeddable(prims['game_state']), prims['player_iden'])
def from_prims(cls, prims) -> 'UpdatePacket': return cls(ser.deserialize_embeddable(prims['update']))