diff --git a/overcooked_simulator/game_content/tutorial/tutorial.layout b/overcooked_simulator/game_content/layouts/tutorial.layout similarity index 100% rename from overcooked_simulator/game_content/tutorial/tutorial.layout rename to overcooked_simulator/game_content/layouts/tutorial.layout diff --git a/overcooked_simulator/game_content/study/level1/level1_config.yaml b/overcooked_simulator/game_content/study/level1/level1_config.yaml index b1cab18a7b15997c588bf9ffb05baca55cd9e902..919d6aa3a86ba80219553114851d57c15e052ed8 100644 --- a/overcooked_simulator/game_content/study/level1/level1_config.yaml +++ b/overcooked_simulator/game_content/study/level1/level1_config.yaml @@ -1,19 +1,20 @@ plates: - clean_plates: 1 - dirty_plates: 2 + clean_plates: 2 + dirty_plates: 0 plate_delay: [ 5, 10 ] # range of seconds until the dirty plate arrives. game: - time_limit_seconds: 20 + time_limit_seconds: 2 meals: - all: False + all: false # if all: false -> only orders for these meals are generated # TODO: what if this list is empty? list: - - OnionSoup - TomatoSoup + - OnionSoup + - Salad layout_chars: _: Free @@ -75,30 +76,16 @@ orders: b: 20 sample_on_serving: false # Sample the delay for the next order only after a meal was served. - score_calc_gen_func: !!python/name:overcooked_simulator.order.simple_score_calc_gen_func '' - score_calc_gen_kwargs: - # the kwargs for the score_calc_gen_func - other: 20 - scores: - Burger: 15 - OnionSoup: 10 - Salad: 5 - TomatoSoup: 10 - expired_penalty_func: !!python/name:overcooked_simulator.order.simple_expired_penalty '' - expired_penalty_kwargs: - default: -5 - serving_not_ordered_meals: !!python/name:overcooked_simulator.order.serving_not_ordered_meals_with_zero_score '' - # a func that calcs a store for not ordered but served meals. Input: meal - penalty_for_trash: !!python/name:overcooked_simulator.order.penalty_for_each_item '' - # a func that calcs the penalty for items that the player puts into the trashcan. + serving_not_ordered_meals: true + # can meals that are not ordered be served / dropped on the serving window player_config: radius: 0.4 - player_speed_units_per_seconds: 8 + player_speed_units_per_seconds: 6 interaction_range: 1.6 restricted_view: False view_angle: 70 - view_range: 5.5 # in grid units, can be "null" + view_range: 4 # in grid units, can be "null" effect_manager: FireManager: @@ -109,48 +96,84 @@ effect_manager: extra_setup_functions: + # # --------------- Scoring --------------- + orders: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ completed_order ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: 20 + score_on_specific_kwarg: meal_name + score_map: + Burger: 15 + OnionSoup: 10 + Salad: 5 + TomatoSoup: 10 + not_ordered_meals: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ serve_not_ordered_meal ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: 2 + trashcan_usages: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ trashcan_usage ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: -5 + expired_orders: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ order_expired ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: -10 + # # --------------- Recording --------------- # json_states: - # func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + # func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' # kwargs: # hooks: [ json_state ] - # log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - # log_class_kwargs: + # callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + # callback_class_kwargs: # log_path: USER_LOG_DIR/ENV_NAME/json_states.jsonl actions: - func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' kwargs: hooks: [ pre_perform_action ] - log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - log_class_kwargs: + callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + callback_class_kwargs: log_path: USER_LOG_DIR/ENV_NAME/LOG_RECORD_NAME.jsonl random_env_events: - func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' kwargs: hooks: [ order_duration_sample, plate_out_of_kitchen_time ] - log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - log_class_kwargs: + callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + callback_class_kwargs: log_path: USER_LOG_DIR/ENV_NAME/LOG_RECORD_NAME.jsonl add_hook_ref: true env_configs: - func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' kwargs: hooks: [ env_initialized, item_info_config ] - log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - log_class_kwargs: + callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + callback_class_kwargs: log_path: USER_LOG_DIR/ENV_NAME/LOG_RECORD_NAME.jsonl add_hook_ref: true # info_msg: -# func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' +# func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' # kwargs: # hooks: [ cutting_board_100 ] # log_class: !!python/name:overcooked_simulator.info_msg.InfoMsgManager '' # log_class_kwargs: # msg: Glückwunsch du hast was geschnitten! # fire_msg: -# func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' +# func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' # kwargs: # hooks: [ new_fire ] # log_class: !!python/name:overcooked_simulator.info_msg.InfoMsgManager '' # log_class_kwargs: # msg: Feuer, Feuer, Feuer -# level: Warning \ No newline at end of file +# level: Warning diff --git a/overcooked_simulator/game_content/study/level2/level2_config.yaml b/overcooked_simulator/game_content/study/level2/level2_config.yaml index e9eb286d48e27c3f76ea2e8e2f19ee3996ca167d..83552e3cfe30eea394c1869ca159fd9ce2401163 100644 --- a/overcooked_simulator/game_content/study/level2/level2_config.yaml +++ b/overcooked_simulator/game_content/study/level2/level2_config.yaml @@ -1,20 +1,19 @@ plates: - clean_plates: 1 - dirty_plates: 2 + clean_plates: 2 + dirty_plates: 0 plate_delay: [ 5, 10 ] # range of seconds until the dirty plate arrives. game: - time_limit_seconds: 5 + time_limit_seconds: 300 meals: - all: False + all: false # if all: false -> only orders for these meals are generated # TODO: what if this list is empty? list: - Salad - Burger - - TomatoSoup layout_chars: _: Free @@ -76,30 +75,16 @@ orders: b: 20 sample_on_serving: false # Sample the delay for the next order only after a meal was served. - score_calc_gen_func: !!python/name:overcooked_simulator.order.simple_score_calc_gen_func '' - score_calc_gen_kwargs: - # the kwargs for the score_calc_gen_func - other: 20 - scores: - Burger: 15 - OnionSoup: 10 - Salad: 5 - TomatoSoup: 10 - expired_penalty_func: !!python/name:overcooked_simulator.order.simple_expired_penalty '' - expired_penalty_kwargs: - default: -5 - serving_not_ordered_meals: !!python/name:overcooked_simulator.order.serving_not_ordered_meals_with_zero_score '' - # a func that calcs a store for not ordered but served meals. Input: meal - penalty_for_trash: !!python/name:overcooked_simulator.order.penalty_for_each_item '' - # a func that calcs the penalty for items that the player puts into the trashcan. + serving_not_ordered_meals: true + # can meals that are not ordered be served / dropped on the serving window player_config: radius: 0.4 - player_speed_units_per_seconds: 8 + player_speed_units_per_seconds: 6 interaction_range: 1.6 restricted_view: True - view_angle: 90 - view_range: 3.5 # in grid units, can be "null" + view_angle: 100 + view_range: 3.2 # in grid units, can be "null" effect_manager: FireManager: @@ -110,48 +95,84 @@ effect_manager: extra_setup_functions: + # # --------------- Scoring --------------- + orders: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ completed_order ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: 20 + score_on_specific_kwarg: meal_name + score_map: + Burger: 15 + OnionSoup: 10 + Salad: 5 + TomatoSoup: 10 + not_ordered_meals: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ serve_not_ordered_meal ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: 2 + trashcan_usages: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ trashcan_usage ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: -5 + expired_orders: + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' + kwargs: + hooks: [ order_expired ] + callback_class: !!python/name:overcooked_simulator.scores.ScoreViaHooks '' + callback_class_kwargs: + static_score: -10 + # # --------------- Recording --------------- # json_states: - # func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + # func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' # kwargs: # hooks: [ json_state ] - # log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - # log_class_kwargs: + # callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + # callback_class_kwargs: # log_path: USER_LOG_DIR/ENV_NAME/json_states.jsonl actions: - func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' kwargs: hooks: [ pre_perform_action ] - log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - log_class_kwargs: + callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + callback_class_kwargs: log_path: USER_LOG_DIR/ENV_NAME/LOG_RECORD_NAME.jsonl random_env_events: - func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' kwargs: hooks: [ order_duration_sample, plate_out_of_kitchen_time ] - log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - log_class_kwargs: + callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + callback_class_kwargs: log_path: USER_LOG_DIR/ENV_NAME/LOG_RECORD_NAME.jsonl add_hook_ref: true env_configs: - func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' + func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' kwargs: hooks: [ env_initialized, item_info_config ] - log_class: !!python/name:overcooked_simulator.recording.LogRecorder '' - log_class_kwargs: + callback_class: !!python/name:overcooked_simulator.recording.FileRecorder '' + callback_class_kwargs: log_path: USER_LOG_DIR/ENV_NAME/LOG_RECORD_NAME.jsonl add_hook_ref: true # info_msg: -# func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' +# func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' # kwargs: # hooks: [ cutting_board_100 ] # log_class: !!python/name:overcooked_simulator.info_msg.InfoMsgManager '' # log_class_kwargs: # msg: Glückwunsch du hast was geschnitten! # fire_msg: -# func: !!python/name:overcooked_simulator.recording.class_recording_with_hooks '' +# func: !!python/name:overcooked_simulator.hooks.hooks_via_callback_class '' # kwargs: # hooks: [ new_fire ] # log_class: !!python/name:overcooked_simulator.info_msg.InfoMsgManager '' # log_class_kwargs: # msg: Feuer, Feuer, Feuer -# level: Warning \ No newline at end of file +# level: Warning diff --git a/overcooked_simulator/game_content/study/study_config.yaml b/overcooked_simulator/game_content/study/study_config.yaml index 51e89ad042770901b589e7afefd5de8276a6ca28..e7ab75977245f3ab22fa3e7e814a425b92a5d463 100644 --- a/overcooked_simulator/game_content/study/study_config.yaml +++ b/overcooked_simulator/game_content/study/study_config.yaml @@ -8,6 +8,11 @@ levels: item_info_path: study/level1/level1_item_info.yaml name: "Level 1-1: Far Apart" +# - config_path: environment_config.yaml +# layout_path: basic.layout +# item_info_path: item_info.yaml +# name: "Basic" +# - config_path: study/level2/level2_config.yaml layout_path: overcooked-1/1-4-bottleneck.layout item_info_path: study/level2/level2_item_info.yaml