mettagrid 0.2.0.15__cp312-cp312-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mettagrid might be problematic. Click here for more details.
- mettagrid/__init__.py +146 -0
- mettagrid/builder/__init__.py +7 -0
- mettagrid/builder/building.py +205 -0
- mettagrid/builder/empty_converters.py +85 -0
- mettagrid/builder/envs.py +307 -0
- mettagrid/config/__init__.py +35 -0
- mettagrid/config/config.py +106 -0
- mettagrid/config/mettagrid_c_config.py +454 -0
- mettagrid/config/mettagrid_config.py +312 -0
- mettagrid/core.py +358 -0
- mettagrid/demo.py +35 -0
- mettagrid/envs/__init__.py +13 -0
- mettagrid/envs/gym_env.py +127 -0
- mettagrid/envs/gym_wrapper.py +63 -0
- mettagrid/envs/mettagrid_env.py +309 -0
- mettagrid/envs/pettingzoo_env.py +213 -0
- mettagrid/envs/puffer_base.py +143 -0
- mettagrid/map_builder/__init__.py +10 -0
- mettagrid/map_builder/ascii.py +46 -0
- mettagrid/map_builder/assembler_map_builder.py +267 -0
- mettagrid/map_builder/map_builder.py +148 -0
- mettagrid/map_builder/maze.py +122 -0
- mettagrid/map_builder/perimeter_incontext.py +312 -0
- mettagrid/map_builder/random.py +95 -0
- mettagrid/map_builder/utils.py +94 -0
- mettagrid/mapgen/__init__.py +0 -0
- mettagrid/mapgen/load.py +35 -0
- mettagrid/mapgen/mapgen.py +375 -0
- mettagrid/mapgen/mapgen_ascii.py +51 -0
- mettagrid/mapgen/random/float.py +99 -0
- mettagrid/mapgen/random/int.py +50 -0
- mettagrid/mapgen/scene.py +312 -0
- mettagrid/mapgen/scenes/ascii.py +39 -0
- mettagrid/mapgen/scenes/auto.py +155 -0
- mettagrid/mapgen/scenes/bsp.py +416 -0
- mettagrid/mapgen/scenes/convchain.py +187 -0
- mettagrid/mapgen/scenes/copy_grid.py +35 -0
- mettagrid/mapgen/scenes/dcss/README.md +7 -0
- mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_choice.yaml +13 -0
- mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_double_pillar.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_feature_with_door.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_flooded_fountain.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_single_pillar.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_underground_garden.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/angelslayer_arrival_pentagon.yaml +31 -0
- mettagrid/mapgen/scenes/dcss/convchain/co_arrival_square_in_a_square_in_a_square.yaml +41 -0
- mettagrid/mapgen/scenes/dcss/convchain/co_arrival_two_rings.yaml +39 -0
- mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_hothouse.yaml +41 -0
- mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_planthouse.yaml +39 -0
- mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_waterhouse.yaml +43 -0
- mettagrid/mapgen/scenes/dcss/convchain/doesnt_arrival_eight_statues.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/dolorous_arrival_somebody's_watching_me.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_boxes_within_box.yaml +35 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_boxorama.yaml +35 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_line_fractal.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_long_road.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_radiant.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_rooms_a.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_rooms_with_view.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_shelter.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_snail.yaml +41 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_ternary.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_three_bigger_balls.yaml +47 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_three_smaller_balls.yaml +39 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_a.yaml +5 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_b.yaml +9 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_c.yaml +11 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_d.yaml +13 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_e.yaml +13 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_f.yaml +15 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_g.yaml +15 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_h.yaml +15 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_i.yaml +9 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_j.yaml +13 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_k.yaml +9 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_triangle_fractal.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_windows_large_door.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/dpeg_chamrin_arrival_tetris.yaml +43 -0
- mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_angles.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_boulevard.yaml +35 -0
- mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_nine_rooms.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/ebering_hopf_link.yaml +27 -0
- mettagrid/mapgen/scenes/dcss/convchain/ebering_trefoil_3fold.yaml +27 -0
- mettagrid/mapgen/scenes/dcss/convchain/ebering_trefoil_twist.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_druids_welcome.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_tree_alley.yaml +13 -0
- mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_water_cross.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_water_star.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_blinker_ship.yaml +41 -0
- mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_huge.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_large.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_medium.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_small.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/giann_bridges.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/giann_forest_graveyard.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/giann_horns.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/giann_wishing_wells.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/grunt_arrival_crossed_arrows.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/grunt_arrival_lava_bath.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/ldierk_walled_garden.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/ldierk_walled_garden_2.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_cross.yaml +35 -0
- mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_funnel.yaml +35 -0
- mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_lava_pool.yaml +35 -0
- mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_chessboard.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_flooded_house.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_lavapool.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_maybe_door_vault.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_statue_moat.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/lightli_iron_boxes.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/lightli_molten_gateway.yaml +35 -0
- mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_grand_opening.yaml +37 -0
- mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_los_fun.yaml +49 -0
- mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_refuge.yaml +37 -0
- mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_spirals.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_diagonal_passages.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_doors.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_four_houses.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_open_corners.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_plants_in_alcoves.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_pointy.yaml +31 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_radiant_lines.yaml +45 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_three_doors.yaml +11 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_up_and_down.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_wavy_path.yaml +27 -0
- mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_arrow.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue.yaml +15 -0
- mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue_2.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue_3.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_large.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_med.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_small.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_square_statues.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/mushboom_english_gardens.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/ncdulo_halloftheorcs.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/ncdulo_lavacross.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/ncdulo_smallfort.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/ncdulo_watergridlock.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/ncdulo_wetmaze.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_crosshair.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_depleted_hourglass.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_water_spiral.yaml +39 -0
- mettagrid/mapgen/scenes/dcss/convchain/onia_arrival_mini_spirals.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/onia_arrival_pyramid.yaml +31 -0
- mettagrid/mapgen/scenes/dcss/convchain/pf_arrival_petrified_forest.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_basics.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_conway.yaml +31 -0
- mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_dodecagon.yaml +53 -0
- mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_heroes.yaml +41 -0
- mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_radial01.yaml +37 -0
- mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_radial02.yaml +45 -0
- mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_whirlpool.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/reono_arrival_forest_river.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/reono_arrival_mine.yaml +29 -0
- mettagrid/mapgen/scenes/dcss/convchain/roderic_chinese_lattice_arrival.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/roderic_crossed_star.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/roderic_dead_forest.yaml +39 -0
- mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_a.yaml +9 -0
- mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_b.yaml +13 -0
- mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_c.yaml +15 -0
- mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_d.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_e.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_checkerplants.yaml +27 -0
- mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_forest.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_gate.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_hexagon.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_simple_crosswalls.yaml +25 -0
- mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_simple_fountains.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_star.yaml +31 -0
- mettagrid/mapgen/scenes/dcss/convchain/spicycebolla_green_bress_n_ham.yaml +31 -0
- mettagrid/mapgen/scenes/dcss/convchain/spicycebolla_green_bress_n_ham_2.yaml +31 -0
- mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_a.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_b.yaml +33 -0
- mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_c.yaml +19 -0
- mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_d.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_e.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_f.yaml +15 -0
- mettagrid/mapgen/scenes/dcss/convchain/wander_arrival_chamber.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/wander_arrival_desolate.yaml +21 -0
- mettagrid/mapgen/scenes/dcss/convchain/wheals_arrival_linesprint.yaml +17 -0
- mettagrid/mapgen/scenes/dcss/convchain/wheals_arrival_shading.yaml +13 -0
- mettagrid/mapgen/scenes/dcss/convchain/zelgadis_glass_arrival_small.yaml +23 -0
- mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_choice.yaml +10 -0
- mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_double_pillar.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_feature_with_door.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_flooded_fountain.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_single_pillar.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_underground_garden.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/co_arrival_square_in_a_square_in_a_square.yaml +38 -0
- mettagrid/mapgen/scenes/dcss/wfc/co_arrival_two_rings.yaml +36 -0
- mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_hothouse.yaml +38 -0
- mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_planthouse.yaml +36 -0
- mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_waterhouse.yaml +40 -0
- mettagrid/mapgen/scenes/dcss/wfc/doesnt_arrival_eight_statues.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/dolorous_arrival_somebody's_watching_me.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_boxes_within_box.yaml +32 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_boxorama.yaml +32 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_line_fractal.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_long_road.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_radiant.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_rooms_a.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_rooms_with_view.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_shelter.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_snail.yaml +38 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_ternary.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_three_bigger_balls.yaml +44 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_three_smaller_balls.yaml +36 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_a.yaml +2 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_b.yaml +6 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_c.yaml +8 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_d.yaml +10 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_e.yaml +10 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_f.yaml +12 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_g.yaml +12 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_h.yaml +12 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_i.yaml +6 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_j.yaml +10 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_k.yaml +6 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_triangle_fractal.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_windows_large_door.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/dpeg_chamrin_arrival_tetris.yaml +40 -0
- mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_angles.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_boulevard.yaml +32 -0
- mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_nine_rooms.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/ebering_hopf_link.yaml +24 -0
- mettagrid/mapgen/scenes/dcss/wfc/ebering_trefoil_3fold.yaml +24 -0
- mettagrid/mapgen/scenes/dcss/wfc/ebering_trefoil_twist.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_druids_welcome.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_tree_alley.yaml +10 -0
- mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_water_cross.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_water_star.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_blinker_ship.yaml +38 -0
- mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_huge.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_large.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_medium.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_small.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/giann_bridges.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/giann_forest_graveyard.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/giann_horns.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/giann_wishing_wells.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/grunt_arrival_crossed_arrows.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/grunt_arrival_lava_bath.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/ldierk_walled_garden.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/ldierk_walled_garden_2.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_cross.yaml +32 -0
- mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_funnel.yaml +32 -0
- mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_lava_pool.yaml +32 -0
- mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_chessboard.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_flooded_house.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_lavapool.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_maybe_door_vault.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_statue_moat.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/lightli_iron_boxes.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/lightli_molten_gateway.yaml +32 -0
- mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_grand_opening.yaml +34 -0
- mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_refuge.yaml +34 -0
- mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_spirals.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_diagonal_passages.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_doors.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_four_houses.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_open_corners.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_plants_in_alcoves.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_pointy.yaml +28 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_radiant_lines.yaml +42 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_three_doors.yaml +8 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_up_and_down.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_wavy_path.yaml +24 -0
- mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_arrow.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue.yaml +12 -0
- mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue_2.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue_3.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_large.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_med.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_small.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_square_statues.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/mushboom_english_gardens.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/ncdulo_halloftheorcs.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/ncdulo_lavacross.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/ncdulo_smallfort.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/ncdulo_watergridlock.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/ncdulo_wetmaze.yaml +20 -0
- mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_crosshair.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_depleted_hourglass.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_water_spiral.yaml +36 -0
- mettagrid/mapgen/scenes/dcss/wfc/onia_arrival_mini_spirals.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/onia_arrival_pyramid.yaml +28 -0
- mettagrid/mapgen/scenes/dcss/wfc/pf_arrival_petrified_forest.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_basics.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_conway.yaml +28 -0
- mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_dodecagon.yaml +50 -0
- mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_heroes.yaml +38 -0
- mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_radial01.yaml +34 -0
- mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_radial02.yaml +42 -0
- mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_whirlpool.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/reono_arrival_forest_river.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/reono_arrival_mine.yaml +26 -0
- mettagrid/mapgen/scenes/dcss/wfc/roderic_chinese_lattice_arrival.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/roderic_crossed_star.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/roderic_dead_forest.yaml +36 -0
- mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_a.yaml +6 -0
- mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_b.yaml +10 -0
- mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_c.yaml +12 -0
- mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_d.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_e.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_checkerplants.yaml +24 -0
- mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_forest.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_gate.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_hexagon.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_simple_crosswalls.yaml +22 -0
- mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_simple_fountains.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_star.yaml +28 -0
- mettagrid/mapgen/scenes/dcss/wfc/spicycebolla_green_bress_n_ham.yaml +28 -0
- mettagrid/mapgen/scenes/dcss/wfc/spicycebolla_green_bress_n_ham_2.yaml +28 -0
- mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_a.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_b.yaml +30 -0
- mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_c.yaml +16 -0
- mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_d.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_e.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_f.yaml +12 -0
- mettagrid/mapgen/scenes/dcss/wfc/wander_arrival_chamber.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/wander_arrival_desolate.yaml +18 -0
- mettagrid/mapgen/scenes/dcss/wfc/wheals_arrival_linesprint.yaml +14 -0
- mettagrid/mapgen/scenes/dcss/wfc/wheals_arrival_shading.yaml +10 -0
- mettagrid/mapgen/scenes/dcss/wfc/zelgadis_glass_arrival_small.yaml +20 -0
- mettagrid/mapgen/scenes/grid_altars.py +117 -0
- mettagrid/mapgen/scenes/inline_ascii.py +41 -0
- mettagrid/mapgen/scenes/layout.py +30 -0
- mettagrid/mapgen/scenes/make_connected.py +162 -0
- mettagrid/mapgen/scenes/maze.py +211 -0
- mettagrid/mapgen/scenes/mean_distance.py +47 -0
- mettagrid/mapgen/scenes/mirror.py +130 -0
- mettagrid/mapgen/scenes/multi_left_and_right.py +105 -0
- mettagrid/mapgen/scenes/nop.py +14 -0
- mettagrid/mapgen/scenes/radial_maze.py +49 -0
- mettagrid/mapgen/scenes/random.py +64 -0
- mettagrid/mapgen/scenes/random_dcss_scene.py +46 -0
- mettagrid/mapgen/scenes/random_objects.py +33 -0
- mettagrid/mapgen/scenes/random_scene.py +30 -0
- mettagrid/mapgen/scenes/random_yaml_scene.py +30 -0
- mettagrid/mapgen/scenes/remove_agents.py +25 -0
- mettagrid/mapgen/scenes/room_grid.py +76 -0
- mettagrid/mapgen/scenes/spiral.py +103 -0
- mettagrid/mapgen/scenes/transplant_scene.py +41 -0
- mettagrid/mapgen/scenes/varied_terrain.py +373 -0
- mettagrid/mapgen/scenes/wfc.py +268 -0
- mettagrid/mapgen/scenes/yaml.py +20 -0
- mettagrid/mapgen/tools/dcss_import.py +123 -0
- mettagrid/mapgen/tools/gen.py +94 -0
- mettagrid/mapgen/tools/gen_scene.py +51 -0
- mettagrid/mapgen/tools/view.py +25 -0
- mettagrid/mapgen/types.py +81 -0
- mettagrid/mapgen/utils/ascii_grid.py +55 -0
- mettagrid/mapgen/utils/draw.py +32 -0
- mettagrid/mapgen/utils/make_scene_config.py +32 -0
- mettagrid/mapgen/utils/pattern.py +181 -0
- mettagrid/mapgen/utils/show.py +21 -0
- mettagrid/mapgen/utils/storable_map.py +122 -0
- mettagrid/mapgen/utils/thumbnail.py +360 -0
- mettagrid/mettagrid_c.pyi +254 -0
- mettagrid/mettagrid_c.so +0 -0
- mettagrid/mettascope.py +73 -0
- mettagrid/profiling/__init__.py +1 -0
- mettagrid/profiling/memory_monitor.py +242 -0
- mettagrid/profiling/stopwatch.py +711 -0
- mettagrid/profiling/system_monitor.py +355 -0
- mettagrid/py.typed +0 -0
- mettagrid/renderer/assets/Inter-Regular.ttf +0 -0
- mettagrid/renderer/assets/altar.png +0 -0
- mettagrid/renderer/assets/atlas.json +920 -0
- mettagrid/renderer/assets/atlas.png +0 -0
- mettagrid/renderer/assets/converter.png +0 -0
- mettagrid/renderer/assets/generator.png +0 -0
- mettagrid/renderer/assets/items.png +0 -0
- mettagrid/renderer/assets/monsters.png +0 -0
- mettagrid/renderer/assets/ore-0.png +0 -0
- mettagrid/renderer/assets/ore-1.png +0 -0
- mettagrid/renderer/assets/ore-2.png +0 -0
- mettagrid/renderer/assets/ore-3.png +0 -0
- mettagrid/renderer/assets/ore-4.png +0 -0
- mettagrid/renderer/assets/ore-5.png +0 -0
- mettagrid/renderer/assets/ore-6.png +0 -0
- mettagrid/renderer/assets/puffer_chars.png +0 -0
- mettagrid/renderer/assets/wall.png +0 -0
- mettagrid/renderer/miniscope/__init__.py +5 -0
- mettagrid/renderer/miniscope/buffer.py +144 -0
- mettagrid/renderer/miniscope/info_panels.py +157 -0
- mettagrid/renderer/miniscope/interactive.py +394 -0
- mettagrid/renderer/miniscope/renderer.py +172 -0
- mettagrid/renderer/miniscope/symbols.py +86 -0
- mettagrid/test_support/__init__.py +7 -0
- mettagrid/test_support/actions.py +426 -0
- mettagrid/test_support/mapgen.py +77 -0
- mettagrid/test_support/observation_helper.py +50 -0
- mettagrid/test_support/orientation.py +100 -0
- mettagrid/test_support/token_types.py +18 -0
- mettagrid/types.py +38 -0
- mettagrid/util/__init__.py +0 -0
- mettagrid/util/char_encoder.py +67 -0
- mettagrid/util/debug.py +501 -0
- mettagrid/util/dict_utils.py +10 -0
- mettagrid/util/diversity.py +71 -0
- mettagrid/util/grid_object_formatter.py +95 -0
- mettagrid/util/module.py +12 -0
- mettagrid/util/replay_writer.py +50 -0
- mettagrid/util/stats_writer.py +47 -0
- mettagrid-0.2.0.15.dist-info/METADATA +247 -0
- mettagrid-0.2.0.15.dist-info/RECORD +411 -0
- mettagrid-0.2.0.15.dist-info/WHEEL +6 -0
- mettagrid-0.2.0.15.dist-info/entry_points.txt +2 -0
- mettagrid-0.2.0.15.dist-info/licenses/LICENSE +21 -0
- mettagrid-0.2.0.15.dist-info/top_level.txt +1 -0
mettagrid/__init__.py
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MettaGrid - Multi-agent reinforcement learning grid environments.
|
|
3
|
+
|
|
4
|
+
This module provides various environment adapters for different RL frameworks:
|
|
5
|
+
- MettaGridCore: Core C++ wrapper (no training features)
|
|
6
|
+
- MettaGridEnv: Training environment (PufferLib-based with stats/replay)
|
|
7
|
+
- MettaGridGymEnv: Gymnasium adapter
|
|
8
|
+
- MettaGridPettingZooEnv: PettingZoo adapter
|
|
9
|
+
|
|
10
|
+
All adapters inherit from MettaGridCore and provide framework-specific interfaces.
|
|
11
|
+
For PufferLib integration, use PufferLib's MettaPuff wrapper directly.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import importlib
|
|
17
|
+
from typing import TYPE_CHECKING, Any, Dict, Tuple
|
|
18
|
+
|
|
19
|
+
# Map attribute names to (module, attribute) for lazy loading.
|
|
20
|
+
_LAZY_ATTRS: Dict[str, Tuple[str, str]] = {
|
|
21
|
+
# Config
|
|
22
|
+
"MettaGridConfig": ("mettagrid.config.mettagrid_config", "MettaGridConfig"),
|
|
23
|
+
# Core classes
|
|
24
|
+
"MettaGridCore": ("mettagrid.core", "MettaGridCore"),
|
|
25
|
+
"MettaGridAction": ("mettagrid.core", "MettaGridAction"),
|
|
26
|
+
"MettaGridObservation": ("mettagrid.core", "MettaGridObservation"),
|
|
27
|
+
# Main environment (backward compatible)
|
|
28
|
+
"MettaGridEnv": ("mettagrid.envs.mettagrid_env", "MettaGridEnv"),
|
|
29
|
+
# Environment adapters
|
|
30
|
+
"MettaGridGymEnv": ("mettagrid.envs.gym_env", "MettaGridGymEnv"),
|
|
31
|
+
"MettaGridPettingZooEnv": (
|
|
32
|
+
"mettagrid.envs.pettingzoo_env",
|
|
33
|
+
"MettaGridPettingZooEnv",
|
|
34
|
+
),
|
|
35
|
+
# Data types (from C++)
|
|
36
|
+
"dtype_actions": ("mettagrid.mettagrid_c", "dtype_actions"),
|
|
37
|
+
"dtype_observations": ("mettagrid.mettagrid_c", "dtype_observations"),
|
|
38
|
+
"dtype_rewards": ("mettagrid.mettagrid_c", "dtype_rewards"),
|
|
39
|
+
"dtype_terminals": ("mettagrid.mettagrid_c", "dtype_terminals"),
|
|
40
|
+
"dtype_truncations": ("mettagrid.mettagrid_c", "dtype_truncations"),
|
|
41
|
+
"dtype_masks": ("mettagrid.mettagrid_c", "dtype_masks"),
|
|
42
|
+
"dtype_success": ("mettagrid.mettagrid_c", "dtype_success"),
|
|
43
|
+
# Type definitions
|
|
44
|
+
"validate_observation_space": (
|
|
45
|
+
"mettagrid.types",
|
|
46
|
+
"validate_observation_space",
|
|
47
|
+
),
|
|
48
|
+
"validate_action_space": ("mettagrid.types", "validate_action_space"),
|
|
49
|
+
"get_observation_shape": ("mettagrid.types", "get_observation_shape"),
|
|
50
|
+
"get_action_nvec": ("mettagrid.types", "get_action_nvec"),
|
|
51
|
+
# Supporting classes
|
|
52
|
+
"GameMap": ("mettagrid.map_builder.map_builder", "GameMap"),
|
|
53
|
+
"ReplayWriter": ("mettagrid.util.replay_writer", "ReplayWriter"),
|
|
54
|
+
"StatsWriter": ("mettagrid.util.stats_writer", "StatsWriter"),
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if TYPE_CHECKING:
|
|
58
|
+
from mettagrid.config.mettagrid_config import MettaGridConfig
|
|
59
|
+
from mettagrid.core import MettaGridAction, MettaGridCore, MettaGridObservation
|
|
60
|
+
from mettagrid.envs.gym_env import MettaGridGymEnv
|
|
61
|
+
from mettagrid.envs.mettagrid_env import MettaGridEnv
|
|
62
|
+
from mettagrid.envs.pettingzoo_env import MettaGridPettingZooEnv
|
|
63
|
+
from mettagrid.map_builder.map_builder import GameMap
|
|
64
|
+
from mettagrid.mettagrid_c import (
|
|
65
|
+
dtype_actions,
|
|
66
|
+
dtype_masks,
|
|
67
|
+
dtype_observations,
|
|
68
|
+
dtype_rewards,
|
|
69
|
+
dtype_success,
|
|
70
|
+
dtype_terminals,
|
|
71
|
+
dtype_truncations,
|
|
72
|
+
)
|
|
73
|
+
from mettagrid.types import (
|
|
74
|
+
get_action_nvec,
|
|
75
|
+
get_observation_shape,
|
|
76
|
+
validate_action_space,
|
|
77
|
+
validate_observation_space,
|
|
78
|
+
)
|
|
79
|
+
from mettagrid.util.replay_writer import ReplayWriter
|
|
80
|
+
from mettagrid.util.stats_writer import StatsWriter
|
|
81
|
+
|
|
82
|
+
try:
|
|
83
|
+
from mettagrid import mettascope
|
|
84
|
+
except (ImportError, OSError):
|
|
85
|
+
mettascope = None
|
|
86
|
+
|
|
87
|
+
__all__ = [
|
|
88
|
+
# Config
|
|
89
|
+
"MettaGridConfig",
|
|
90
|
+
# Core classes
|
|
91
|
+
"MettaGridCore",
|
|
92
|
+
# Main environment (backward compatible)
|
|
93
|
+
"MettaGridEnv",
|
|
94
|
+
# Environment adapters
|
|
95
|
+
"MettaGridGymEnv",
|
|
96
|
+
"MettaGridPettingZooEnv",
|
|
97
|
+
# Data types (from C++)
|
|
98
|
+
"dtype_actions",
|
|
99
|
+
"dtype_observations",
|
|
100
|
+
"dtype_rewards",
|
|
101
|
+
"dtype_terminals",
|
|
102
|
+
"dtype_truncations",
|
|
103
|
+
"dtype_masks",
|
|
104
|
+
"dtype_success",
|
|
105
|
+
# Type definitions
|
|
106
|
+
"MettaGridObservation",
|
|
107
|
+
"MettaGridAction",
|
|
108
|
+
"validate_observation_space",
|
|
109
|
+
"validate_action_space",
|
|
110
|
+
"get_observation_shape",
|
|
111
|
+
"get_action_nvec",
|
|
112
|
+
# Supporting classes
|
|
113
|
+
"GameMap",
|
|
114
|
+
"ReplayWriter",
|
|
115
|
+
"StatsWriter",
|
|
116
|
+
# Optional visualization module
|
|
117
|
+
"mettascope",
|
|
118
|
+
]
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def __getattr__(name: str) -> Any: # pragma: no cover - thin import wrapper
|
|
122
|
+
"""Dynamically import public attributes on first access."""
|
|
123
|
+
|
|
124
|
+
if name == "mettascope":
|
|
125
|
+
try:
|
|
126
|
+
module = importlib.import_module("mettagrid.mettascope")
|
|
127
|
+
except (ImportError, OSError):
|
|
128
|
+
module = None
|
|
129
|
+
globals()[name] = module
|
|
130
|
+
return module
|
|
131
|
+
|
|
132
|
+
try:
|
|
133
|
+
module_name, attribute_name = _LAZY_ATTRS[name]
|
|
134
|
+
except KeyError as exc: # pragma: no cover - mirrors built-in behaviour
|
|
135
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}") from exc
|
|
136
|
+
|
|
137
|
+
module = importlib.import_module(module_name)
|
|
138
|
+
attr = getattr(module, attribute_name)
|
|
139
|
+
globals()[name] = attr
|
|
140
|
+
return attr
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def __dir__() -> list[str]:
|
|
144
|
+
"""Expose lazy attributes in dir() results."""
|
|
145
|
+
|
|
146
|
+
return sorted({*__all__, *globals().keys()})
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
from typing import Literal
|
|
2
|
+
|
|
3
|
+
from mettagrid.config.mettagrid_config import AssemblerConfig, ChestConfig, ConverterConfig, RecipeConfig, WallConfig
|
|
4
|
+
|
|
5
|
+
wall = WallConfig(type_id=1)
|
|
6
|
+
block = WallConfig(type_id=14, swappable=True)
|
|
7
|
+
|
|
8
|
+
altar = ConverterConfig(
|
|
9
|
+
type_id=8,
|
|
10
|
+
input_resources={"battery_red": 3},
|
|
11
|
+
output_resources={"heart": 1},
|
|
12
|
+
cooldown=10,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def make_mine(color: str, type_id: int) -> ConverterConfig:
|
|
17
|
+
return ConverterConfig(
|
|
18
|
+
type_id=type_id,
|
|
19
|
+
output_resources={f"ore_{color}": 1},
|
|
20
|
+
cooldown=50,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
mine_red = make_mine("red", 2)
|
|
25
|
+
mine_blue = make_mine("blue", 3)
|
|
26
|
+
mine_green = make_mine("green", 4)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def make_generator(color: str, type_id: int) -> ConverterConfig:
|
|
30
|
+
return ConverterConfig(
|
|
31
|
+
type_id=type_id,
|
|
32
|
+
input_resources={f"ore_{color}": 1},
|
|
33
|
+
output_resources={f"battery_{color}": 1},
|
|
34
|
+
cooldown=25,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
generator_red = make_generator("red", 5)
|
|
39
|
+
generator_blue = make_generator("blue", 6)
|
|
40
|
+
generator_green = make_generator("green", 7)
|
|
41
|
+
|
|
42
|
+
lasery = ConverterConfig(
|
|
43
|
+
type_id=15,
|
|
44
|
+
input_resources={"battery_red": 1, "ore_red": 2},
|
|
45
|
+
output_resources={"laser": 1},
|
|
46
|
+
cooldown=10,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
armory = ConverterConfig(
|
|
50
|
+
type_id=16,
|
|
51
|
+
input_resources={"ore_red": 3},
|
|
52
|
+
output_resources={"armor": 1},
|
|
53
|
+
cooldown=10,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
# Assembler building definitions
|
|
57
|
+
assembler_altar = AssemblerConfig(
|
|
58
|
+
type_id=8,
|
|
59
|
+
recipes=[
|
|
60
|
+
(
|
|
61
|
+
["Any"],
|
|
62
|
+
RecipeConfig(
|
|
63
|
+
input_resources={"battery_red": 3},
|
|
64
|
+
output_resources={"heart": 1},
|
|
65
|
+
cooldown=10,
|
|
66
|
+
),
|
|
67
|
+
)
|
|
68
|
+
],
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def make_assembler_mine(color: str, type_id: int) -> AssemblerConfig:
|
|
73
|
+
return AssemblerConfig(
|
|
74
|
+
type_id=type_id,
|
|
75
|
+
recipes=[
|
|
76
|
+
(
|
|
77
|
+
["Any"],
|
|
78
|
+
RecipeConfig(
|
|
79
|
+
output_resources={f"ore_{color}": 1},
|
|
80
|
+
cooldown=50,
|
|
81
|
+
),
|
|
82
|
+
)
|
|
83
|
+
],
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
assembler_mine_red = make_assembler_mine("red", 2)
|
|
88
|
+
assembler_mine_blue = make_assembler_mine("blue", 3)
|
|
89
|
+
assembler_mine_green = make_assembler_mine("green", 4)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def make_assembler_generator(color: str, type_id: int) -> AssemblerConfig:
|
|
93
|
+
return AssemblerConfig(
|
|
94
|
+
type_id=type_id,
|
|
95
|
+
recipes=[
|
|
96
|
+
(
|
|
97
|
+
["Any"],
|
|
98
|
+
RecipeConfig(
|
|
99
|
+
input_resources={f"ore_{color}": 1},
|
|
100
|
+
output_resources={f"battery_{color}": 1},
|
|
101
|
+
cooldown=25,
|
|
102
|
+
),
|
|
103
|
+
)
|
|
104
|
+
],
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
assembler_generator_red = make_assembler_generator("red", 5)
|
|
109
|
+
assembler_generator_blue = make_assembler_generator("blue", 6)
|
|
110
|
+
assembler_generator_green = make_assembler_generator("green", 7)
|
|
111
|
+
|
|
112
|
+
assembler_lasery = AssemblerConfig(
|
|
113
|
+
type_id=15,
|
|
114
|
+
recipes=[
|
|
115
|
+
(
|
|
116
|
+
["Any"],
|
|
117
|
+
RecipeConfig(
|
|
118
|
+
input_resources={"battery_red": 1, "ore_red": 2},
|
|
119
|
+
output_resources={"laser": 1},
|
|
120
|
+
cooldown=10,
|
|
121
|
+
),
|
|
122
|
+
)
|
|
123
|
+
],
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
assembler_armory = AssemblerConfig(
|
|
127
|
+
type_id=16,
|
|
128
|
+
recipes=[
|
|
129
|
+
(
|
|
130
|
+
["Any"],
|
|
131
|
+
RecipeConfig(
|
|
132
|
+
input_resources={"ore_red": 3},
|
|
133
|
+
output_resources={"armor": 1},
|
|
134
|
+
cooldown=10,
|
|
135
|
+
),
|
|
136
|
+
)
|
|
137
|
+
],
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
assembler_lab = AssemblerConfig(
|
|
141
|
+
type_id=17,
|
|
142
|
+
recipes=[
|
|
143
|
+
(
|
|
144
|
+
["Any"],
|
|
145
|
+
RecipeConfig(
|
|
146
|
+
input_resources={"battery_red": 1, "ore_red": 2},
|
|
147
|
+
output_resources={"laser": 1},
|
|
148
|
+
cooldown=10,
|
|
149
|
+
),
|
|
150
|
+
)
|
|
151
|
+
],
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
assembler_factory = AssemblerConfig(
|
|
155
|
+
type_id=18,
|
|
156
|
+
recipes=[
|
|
157
|
+
(
|
|
158
|
+
["Any"],
|
|
159
|
+
RecipeConfig(
|
|
160
|
+
input_resources={"battery_red": 1, "ore_red": 2},
|
|
161
|
+
output_resources={"laser": 1},
|
|
162
|
+
cooldown=10,
|
|
163
|
+
),
|
|
164
|
+
)
|
|
165
|
+
],
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
assembler_temple = AssemblerConfig(
|
|
169
|
+
type_id=19,
|
|
170
|
+
recipes=[
|
|
171
|
+
(
|
|
172
|
+
["Any"],
|
|
173
|
+
RecipeConfig(
|
|
174
|
+
input_resources={"battery_red": 1, "ore_red": 2},
|
|
175
|
+
output_resources={"laser": 1},
|
|
176
|
+
cooldown=10,
|
|
177
|
+
),
|
|
178
|
+
)
|
|
179
|
+
],
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
# Chest building definitions. Maybe not needed beyond the raw config?
|
|
184
|
+
def make_chest(
|
|
185
|
+
resource_type: str,
|
|
186
|
+
type_id: int,
|
|
187
|
+
deposit_positions: list[Literal["NW", "N", "NE", "W", "E", "SW", "S", "SE"]] | None = None,
|
|
188
|
+
withdrawal_positions: list[Literal["NW", "N", "NE", "W", "E", "SW", "S", "SE"]] | None = None,
|
|
189
|
+
) -> ChestConfig:
|
|
190
|
+
"""Create a chest configuration for a specific resource type."""
|
|
191
|
+
if deposit_positions is None:
|
|
192
|
+
deposit_positions = [] # Default to no deposit positions
|
|
193
|
+
if withdrawal_positions is None:
|
|
194
|
+
withdrawal_positions = [] # Default to no withdrawal positions
|
|
195
|
+
|
|
196
|
+
return ChestConfig(
|
|
197
|
+
type_id=type_id,
|
|
198
|
+
resource_type=resource_type,
|
|
199
|
+
deposit_positions=deposit_positions,
|
|
200
|
+
withdrawal_positions=withdrawal_positions,
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
# Example chest configurations
|
|
205
|
+
chest_heart = make_chest("heart", 20, deposit_positions=["N"], withdrawal_positions=["S"])
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
from mettagrid.config.mettagrid_config import ConverterConfig, WallConfig
|
|
2
|
+
|
|
3
|
+
wall = WallConfig(type_id=1)
|
|
4
|
+
block = WallConfig(type_id=14, swappable=True)
|
|
5
|
+
|
|
6
|
+
mine_red = ConverterConfig(
|
|
7
|
+
type_id=2,
|
|
8
|
+
input_resources={},
|
|
9
|
+
output_resources={},
|
|
10
|
+
cooldown=5,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
mine_blue = ConverterConfig(
|
|
14
|
+
type_id=3,
|
|
15
|
+
input_resources={},
|
|
16
|
+
output_resources={},
|
|
17
|
+
cooldown=5,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
mine_green = ConverterConfig(
|
|
21
|
+
type_id=4,
|
|
22
|
+
input_resources={},
|
|
23
|
+
output_resources={},
|
|
24
|
+
cooldown=5,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
generator_red = ConverterConfig(
|
|
28
|
+
type_id=5,
|
|
29
|
+
input_resources={},
|
|
30
|
+
output_resources={},
|
|
31
|
+
cooldown=5,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
generator_blue = ConverterConfig(
|
|
35
|
+
type_id=6,
|
|
36
|
+
input_resources={},
|
|
37
|
+
output_resources={},
|
|
38
|
+
cooldown=5,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
generator_green = ConverterConfig(
|
|
42
|
+
type_id=7,
|
|
43
|
+
input_resources={},
|
|
44
|
+
output_resources={},
|
|
45
|
+
cooldown=5,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
altar = ConverterConfig(
|
|
49
|
+
type_id=8,
|
|
50
|
+
input_resources={},
|
|
51
|
+
output_resources={},
|
|
52
|
+
cooldown=5,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
lasery = ConverterConfig(
|
|
57
|
+
type_id=15,
|
|
58
|
+
input_resources={},
|
|
59
|
+
output_resources={},
|
|
60
|
+
cooldown=5,
|
|
61
|
+
)
|
|
62
|
+
armory = ConverterConfig(
|
|
63
|
+
type_id=16,
|
|
64
|
+
input_resources={},
|
|
65
|
+
output_resources={},
|
|
66
|
+
cooldown=5,
|
|
67
|
+
)
|
|
68
|
+
lab = ConverterConfig(
|
|
69
|
+
type_id=17,
|
|
70
|
+
input_resources={},
|
|
71
|
+
output_resources={},
|
|
72
|
+
cooldown=5,
|
|
73
|
+
)
|
|
74
|
+
factory = ConverterConfig(
|
|
75
|
+
type_id=18,
|
|
76
|
+
input_resources={},
|
|
77
|
+
output_resources={},
|
|
78
|
+
cooldown=5,
|
|
79
|
+
)
|
|
80
|
+
temple = ConverterConfig(
|
|
81
|
+
type_id=19,
|
|
82
|
+
input_resources={},
|
|
83
|
+
output_resources={},
|
|
84
|
+
cooldown=5,
|
|
85
|
+
)
|