@@ -36,7 +36,7 @@ def __init__(self, round_num: int, agents: list[Player]):
3636 self .winner = None
3737 self .round_num = round_num
3838 # Map of player to game metric (e.g. # of wins, assets accumulated)
39- self .scores : dict [str , float ] = {}
39+ self .scores : dict [str , float ] = {a . name : 0.0 for a in agents }
4040 self .player_stats : dict [str , PlayerStats ] = {agent .name : PlayerStats (name = agent .name ) for agent in agents }
4141 self .details : list [str ] = []
4242
@@ -254,16 +254,17 @@ def run_round(self, agents: list[Player], round_num: int, *, copy_logs: bool = T
254254 random .shuffle (agents ) # Shuffle to ensure fairness in case of positional advantages
255255 stats = RoundStats (round_num , agents )
256256 validated : list [Player ] = []
257- for agent in agents :
258- is_valid , error = self .validate_code (agent )
257+ for a in agents :
258+ is_valid , error = self .validate_code (a )
259259 if not is_valid :
260- self .logger .warning (f"Agent { agent .name } failed submission validation: { error } " )
261- stats .player_stats [agent .name ].invalid_reason = error
260+ self .logger .warning (f"Agent { a .name } failed submission validation: { error } " )
261+ stats .player_stats [a .name ].invalid_reason = error
262262 continue
263- self .logger .info (f"Agent { agent .name } passed submission validation" )
264- stats .player_stats [agent .name ].valid_submit = True
265- validated .append (agent )
263+ self .logger .info (f"Agent { a .name } passed submission validation" )
264+ stats .player_stats [a .name ].valid_submit = True
265+ validated .append (a )
266266
267+ sims = self .config ["game" ]["sims_per_round" ]
267268 if len (validated ) > 1 :
268269 self ._pre_round_setup (validated )
269270 self .execute_round (validated )
@@ -273,9 +274,16 @@ def run_round(self, agents: list[Player], round_num: int, *, copy_logs: bool = T
273274 elif len (validated ) == 1 :
274275 self .logger .info (f"Only one valid agent ({ validated [0 ].name } ), automatic win" )
275276 stats .winner = validated [0 ].name
277+ stats .scores [validated [0 ].name ] = sims
278+ stats .player_stats [validated [0 ].name ].score = sims
276279 else :
277280 self .logger .info ("No valid agents, no winner this round (Default tie)" )
278281 stats .winner = RESULT_TIE
282+ # Split points evenly
283+ points = sims * 1.0 / len (agents )
284+ for a in agents :
285+ stats .scores [a .name ] = points
286+ stats .player_stats [a .name ].score = points
279287 return stats
280288
281289 @abstractmethod
0 commit comments