miniworld-maze 1.0.0__tar.gz → 1.2.0__tar.gz

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 miniworld-maze might be problematic. Click here for more details.

Files changed (293) hide show
  1. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/LICENSE +2 -2
  2. miniworld_maze-1.2.0/PKG-INFO +261 -0
  3. miniworld_maze-1.2.0/README.md +200 -0
  4. miniworld_maze-1.2.0/examples/basic_usage.py +37 -0
  5. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/examples/benchmark_rendering.py +140 -98
  6. {miniworld_maze-1.0.0/src/miniworld_maze/tools → miniworld_maze-1.2.0/examples}/generate_observations.py +49 -22
  7. miniworld_maze-1.2.0/examples/live_control_opencv.py +733 -0
  8. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/examples/observation_level_demo.py +22 -18
  9. miniworld_maze-1.2.0/examples/save_topdown_views.py +215 -0
  10. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/pyproject.toml +3 -31
  11. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/__init__.py +17 -9
  12. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/constants.py +55 -14
  13. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/__init__.py +1 -1
  14. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/unified_env.py +45 -29
  15. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/environments/__init__.py +0 -3
  16. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/environments/base_grid_rooms.py +213 -2
  17. miniworld_maze-1.2.0/src/miniworld_maze/environments/factory.py +42 -0
  18. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/environments/nine_rooms.py +8 -11
  19. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/environments/spiral_nine_rooms.py +8 -11
  20. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/environments/twenty_five_rooms.py +8 -27
  21. miniworld_maze-1.2.0/src/miniworld_maze/tools/__init__.py +3 -0
  22. miniworld_maze-1.2.0/src/miniworld_maze/utils.py +286 -0
  23. miniworld_maze-1.0.0/PKG-INFO +0 -108
  24. miniworld_maze-1.0.0/README.md +0 -45
  25. miniworld_maze-1.0.0/examples/generate_observations.py +0 -187
  26. miniworld_maze-1.0.0/examples/live_control_opencv.py +0 -574
  27. miniworld_maze-1.0.0/src/miniworld_maze/environments/factory.py +0 -155
  28. miniworld_maze-1.0.0/src/miniworld_maze/tools/__init__.py +0 -5
  29. miniworld_maze-1.0.0/src/miniworld_maze/wrappers/__init__.py +0 -5
  30. miniworld_maze-1.0.0/src/miniworld_maze/wrappers/image_transforms.py +0 -40
  31. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/examples/README.md +0 -0
  32. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/__init__.py +0 -0
  33. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/README.md +0 -0
  34. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/base_env.py +0 -0
  35. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/entities/__init__.py +0 -0
  36. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/entities/agent.py +0 -0
  37. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/entities/base_entity.py +0 -0
  38. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/entities/objects.py +0 -0
  39. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/entity_manager.py +0 -0
  40. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/envs/__init__.py +0 -0
  41. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/math.py +0 -0
  42. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/objmesh.py +0 -0
  43. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/occlusion_queries.py +0 -0
  44. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/opengl.py +0 -0
  45. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/params.py +0 -0
  46. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/random.py +0 -0
  47. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/rendering/__init__.py +0 -0
  48. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/rendering/drawing.py +0 -0
  49. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/rendering/framebuffer.py +0 -0
  50. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/rendering/texture.py +0 -0
  51. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/rendering_engine.py +0 -0
  52. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/room.py +0 -0
  53. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/texture_utils.py +0 -0
  54. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/airduct_grate_1.png +0 -0
  55. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/asphalt_1.png +0 -0
  56. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/beanpaste_1.png +0 -0
  57. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/beige_1.png +0 -0
  58. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/black_1.png +0 -0
  59. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/blueberry_1.png +0 -0
  60. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/brick_wall_1.png +0 -0
  61. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/cardboard_1.png +0 -0
  62. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/cardboard_2.png +0 -0
  63. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/cardboard_3.png +0 -0
  64. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/cardboard_4.png +0 -0
  65. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/ceiling_tile_noborder_1.png +0 -0
  66. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/ceiling_tiles_1.png +0 -0
  67. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/cinder_blocks_1.png +0 -0
  68. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/cobaltgreen_1.png +0 -0
  69. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/concrete_1.png +0 -0
  70. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/concrete_2.png +0 -0
  71. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/concrete_3.png +0 -0
  72. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/concrete_4.png +0 -0
  73. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/concrete_tiles_1.png +0 -0
  74. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/copperred_1.png +0 -0
  75. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/crimson_1.png +0 -0
  76. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/door_doom_1.png +0 -0
  77. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/door_doom_2.png +0 -0
  78. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/door_garage_red.png +0 -0
  79. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/door_garage_white.png +0 -0
  80. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/door_steel_brown.png +0 -0
  81. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/door_steel_grey.png +0 -0
  82. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/door_steel_red.png +0 -0
  83. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/drywall_1.png +0 -0
  84. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/floor_tiles_bw_1.png +0 -0
  85. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/floor_tiles_white.png +0 -0
  86. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/grass_1.png +0 -0
  87. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/grass_2.png +0 -0
  88. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lava_1.png +0 -0
  89. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lava_2.png +0 -0
  90. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lemongrass_1.png +0 -0
  91. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lightbeige_1.png +0 -0
  92. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lightcobaltgreen_1.png +0 -0
  93. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lightgray_1.png +0 -0
  94. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lightnavyblue_1.png +0 -0
  95. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lightskyblue_1.png +0 -0
  96. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/lime_1.png +0 -0
  97. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/logo_mila_1.png +0 -0
  98. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/magenta_1.png +0 -0
  99. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/marble_1.png +0 -0
  100. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/marble_2.png +0 -0
  101. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/metal_grill_1.png +0 -0
  102. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/metal_grill_2.png +0 -0
  103. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/morningglory_1.png +0 -0
  104. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/navyblue_1.png +0 -0
  105. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/oakbrown_1.png +0 -0
  106. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/orange_1.png +0 -0
  107. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/orchid_1.png +0 -0
  108. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/picket_fence_1.png +0 -0
  109. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/adelaide_hanscom1.license +0 -0
  110. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/adelaide_hanscom1.png +0 -0
  111. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alessandro_allori1.license +0 -0
  112. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alessandro_allori1.png +0 -0
  113. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alessandro_allori2.license +0 -0
  114. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alessandro_allori2.png +0 -0
  115. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alexandre_cabanel1.license +0 -0
  116. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alexandre_cabanel1.png +0 -0
  117. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alexei_harlamov1.license +0 -0
  118. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alexei_harlamov1.png +0 -0
  119. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alexey_petrovich_antropov1.license +0 -0
  120. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alexey_petrovich_antropov1.png +0 -0
  121. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alice_pike_barney1.license +0 -0
  122. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/alice_pike_barney1.png +0 -0
  123. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/aman_theodor1.license +0 -0
  124. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/aman_theodor1.png +0 -0
  125. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/antonello_messina1.license +0 -0
  126. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/antonello_messina1.png +0 -0
  127. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/antonio_herrera_toro1.license +0 -0
  128. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/antonio_herrera_toro1.png +0 -0
  129. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/benjamin-constant1.license +0 -0
  130. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/benjamin-constant1.png +0 -0
  131. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/benoist_marie-guillemine1.license +0 -0
  132. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/benoist_marie-guillemine1.png +0 -0
  133. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/bouguereau_william-adolphe1.license +0 -0
  134. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/bouguereau_william-adolphe1.png +0 -0
  135. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/byron1.license +0 -0
  136. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/byron1.png +0 -0
  137. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/carl_fredric_breda1.license +0 -0
  138. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/carl_fredric_breda1.png +0 -0
  139. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/carl_fredric_breda2.license +0 -0
  140. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/carl_fredric_breda2.png +0 -0
  141. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/cramacj_lucas1.license +0 -0
  142. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/cramacj_lucas1.png +0 -0
  143. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/cranach_lucas2.license +0 -0
  144. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/cranach_lucas2.png +0 -0
  145. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/cristobal_rojas1.license +0 -0
  146. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/cristobal_rojas1.png +0 -0
  147. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/delacroix_eugene_ferdinand_victor1.license +0 -0
  148. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/delacroix_eugene_ferdinand_victor1.png +0 -0
  149. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/domenikos_theotokopoulos1.license +0 -0
  150. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/domenikos_theotokopoulos1.png +0 -0
  151. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/edmund_blair_leighton1.license +0 -0
  152. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/edmund_blair_leighton1.png +0 -0
  153. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/edmund_blair_leighton2.license +0 -0
  154. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/edmund_blair_leighton2.png +0 -0
  155. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/edwin_longsden_long1.license +0 -0
  156. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/edwin_longsden_long1.png +0 -0
  157. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/falero_luis_ricardo1.license +0 -0
  158. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/falero_luis_ricardo1.png +0 -0
  159. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/felix_bonfils1.license +0 -0
  160. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/felix_bonfils1.png +0 -0
  161. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francesco_hayez1.license +0 -0
  162. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francesco_hayez1.png +0 -0
  163. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francisco_goya_lucientes1.license +0 -0
  164. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francisco_goya_lucientes1.png +0 -0
  165. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francisco_goya_lucientes2.license +0 -0
  166. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francisco_goya_lucientes2.png +0 -0
  167. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francisco_zurbaran1.license +0 -0
  168. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/francisco_zurbaran1.png +0 -0
  169. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/franz_von_defregger1.license +0 -0
  170. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/franz_von_defregger1.png +0 -0
  171. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/franz_von_defregger2.license +0 -0
  172. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/franz_von_defregger2.png +0 -0
  173. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/franz_von_defregger3.license +0 -0
  174. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/franz_von_defregger3.png +0 -0
  175. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/frederic_westin1.license +0 -0
  176. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/frederic_westin1.png +0 -0
  177. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/frederic_yates1.license +0 -0
  178. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/frederic_yates1.png +0 -0
  179. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/frederick_leighton1.license +0 -0
  180. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/frederick_leighton1.png +0 -0
  181. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/gaston_bussiere1.license +0 -0
  182. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/gaston_bussiere1.png +0 -0
  183. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/george_henry_hall1.license +0 -0
  184. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/george_henry_hall1.png +0 -0
  185. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/giovanni_battista_tiepolo1.license +0 -0
  186. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/giovanni_battista_tiepolo1.png +0 -0
  187. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/giovanni_bellini1.license +0 -0
  188. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/giovanni_bellini1.png +0 -0
  189. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/hans_holbein1.license +0 -0
  190. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/hans_holbein1.png +0 -0
  191. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/hayez_francesco1.license +0 -0
  192. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/hayez_francesco1.png +0 -0
  193. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/henryk_siemiradzki1.license +0 -0
  194. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/henryk_siemiradzki1.png +0 -0
  195. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/ilja_jefimowitsch_repin1.license +0 -0
  196. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/ilja_jefimowitsch_repin1.png +0 -0
  197. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/james_carrol_beckwith1.license +0 -0
  198. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/james_carrol_beckwith1.png +0 -0
  199. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-baptiste-camille_corot1.license +0 -0
  200. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-baptiste-camille_corot1.png +0 -0
  201. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-baptiste-camille_corot2.license +0 -0
  202. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-baptiste-camille_corot2.png +0 -0
  203. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome1.license +0 -0
  204. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome1.png +0 -0
  205. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome2.license +0 -0
  206. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome2.png +0 -0
  207. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome3.license +0 -0
  208. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome3.png +0 -0
  209. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome4.license +0 -0
  210. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/jean-leon_gerome4.png +0 -0
  211. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/john_william_godward1.license +0 -0
  212. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/john_william_godward1.png +0 -0
  213. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/john_william_godward2.license +0 -0
  214. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/john_william_godward2.png +0 -0
  215. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/john_william_godward3.license +0 -0
  216. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/john_william_godward3.png +0 -0
  217. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/julije_klovic1.license +0 -0
  218. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/julije_klovic1.png +0 -0
  219. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/juriaen_streek1.license +0 -0
  220. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/juriaen_streek1.png +0 -0
  221. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/kiprenskij_orest_adamovic1.license +0 -0
  222. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/kiprenskij_orest_adamovic1.png +0 -0
  223. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/konstantin_makovsky1.license +0 -0
  224. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/konstantin_makovsky1.png +0 -0
  225. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/lefebvre_jules_joseph1.license +0 -0
  226. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/lefebvre_jules_joseph1.png +0 -0
  227. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/leon-francois_comerre1.license +0 -0
  228. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/leon-francois_comerre1.png +0 -0
  229. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/leopold_loffler1.license +0 -0
  230. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/leopold_loffler1.png +0 -0
  231. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/lewis_john_frederick1.license +0 -0
  232. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/lewis_john_frederick1.png +0 -0
  233. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/madrazo_garreta_raimundo1.license +0 -0
  234. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/madrazo_garreta_raimundo1.png +0 -0
  235. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/marie_bashkirtseff1.license +0 -0
  236. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/marie_bashkirtseff1.png +0 -0
  237. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/moritz_kellerhoven1.license +0 -0
  238. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/moritz_kellerhoven1.png +0 -0
  239. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/nathaniel_jocelyn1.license +0 -0
  240. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/nathaniel_jocelyn1.png +0 -0
  241. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/nikolai_alexandrowitsch_jaroschenko1.license +0 -0
  242. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/nikolai_alexandrowitsch_jaroschenko1.png +0 -0
  243. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/nils_johan_olsson_blommer1.license +0 -0
  244. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/nils_johan_olsson_blommer1.png +0 -0
  245. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/paolo_veronese1.license +0 -0
  246. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/paolo_veronese1.png +0 -0
  247. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/parmigianino1.license +0 -0
  248. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/parmigianino1.png +0 -0
  249. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/paul_cesar_helleu1.license +0 -0
  250. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/paul_cesar_helleu1.png +0 -0
  251. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/regnault_henri1.license +0 -0
  252. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/regnault_henri1.png +0 -0
  253. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/richard_bergh1.license +0 -0
  254. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/richard_bergh1.png +0 -0
  255. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/richard_bergh2.license +0 -0
  256. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/richard_bergh2.png +0 -0
  257. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/robert_dampier1.license +0 -0
  258. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/robert_dampier1.png +0 -0
  259. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/robert_lefevre1.license +0 -0
  260. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/robert_lefevre1.png +0 -0
  261. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/robert_leopold1.license +0 -0
  262. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/robert_leopold1.png +0 -0
  263. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/sichel_nathanael1.license +0 -0
  264. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/sichel_nathanael1.png +0 -0
  265. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/svetoslav_roerich1.license +0 -0
  266. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/svetoslav_roerich1.png +0 -0
  267. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/velazquez_diego1.license +0 -0
  268. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/velazquez_diego1.png +0 -0
  269. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/viktor_vasnetsov1.license +0 -0
  270. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/viktor_vasnetsov1.png +0 -0
  271. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/william-adolphe_bouguereau1.license +0 -0
  272. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/portraits/william-adolphe_bouguereau1.png +0 -0
  273. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/realblueberry_1.png +0 -0
  274. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/redbean_1.png +0 -0
  275. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/rock_1.png +0 -0
  276. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/seablue_1.png +0 -0
  277. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/silver_1.png +0 -0
  278. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/skyblue_1.png +0 -0
  279. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/slime_1.png +0 -0
  280. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/stucco_1.png +0 -0
  281. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/sunnyyellow_1.png +0 -0
  282. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/turquoise_1.png +0 -0
  283. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/violet_1.png +0 -0
  284. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/water_1.png +0 -0
  285. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/water_2.png +0 -0
  286. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/water_3.png +0 -0
  287. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/white_1.png +0 -0
  288. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/wood_1.png +0 -0
  289. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/wood_2.png +0 -0
  290. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/textures/wood_planks_1.png +0 -0
  291. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/utils.py +0 -0
  292. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/miniworld_gymnasium/wrappers.py +0 -0
  293. {miniworld_maze-1.0.0 → miniworld_maze-1.2.0}/src/miniworld_maze/core/observation_types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 DrStrategy Research Team
3
+ Copyright (c) 2025 Tim Joseph
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
@@ -0,0 +1,261 @@
1
+ Metadata-Version: 2.3
2
+ Name: miniworld-maze
3
+ Version: 1.2.0
4
+ Summary: Multi-room maze environments from the DrStrategy paper. Provides NineRooms-v0, SpiralNineRooms-v0, and TwentyFiveRooms-v0 gymnasium environments.
5
+ Keywords: reinforcement-learning,environment,gymnasium,multi-room-maze,drstrategy,maze-navigation,partial-observability,3d-environments
6
+ Author: Tim Joseph
7
+ Author-email: Tim Joseph <tim@mctigger.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2025 Tim Joseph
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ Classifier: Development Status :: 4 - Beta
30
+ Classifier: Intended Audience :: Science/Research
31
+ Classifier: Intended Audience :: Developers
32
+ Classifier: Operating System :: OS Independent
33
+ Classifier: Programming Language :: Python :: 3
34
+ Classifier: Programming Language :: Python :: 3.8
35
+ Classifier: Programming Language :: Python :: 3.9
36
+ Classifier: Programming Language :: Python :: 3.10
37
+ Classifier: Programming Language :: Python :: 3.11
38
+ Classifier: Programming Language :: Python :: 3.12
39
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
40
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
41
+ Classifier: Environment :: Console
42
+ Classifier: Typing :: Typed
43
+ Requires-Dist: gymnasium>=1.0.0,<2.0.0
44
+ Requires-Dist: numpy>=1.20.0,<3.0.0
45
+ Requires-Dist: opencv-python>=4.5.0,<5.0.0
46
+ Requires-Dist: pillow>=8.0.0,<11.0.0
47
+ Requires-Dist: pyopengl>=3.1.0,<4.0.0
48
+ Requires-Dist: pyglet>=1.5.0,<2.0.0
49
+ Requires-Dist: ruff>=0.1.0,<1.0.0 ; extra == 'dev'
50
+ Requires-Dist: build>=0.8.0,<2.0.0 ; extra == 'dev'
51
+ Requires-Dist: twine>=4.0.0,<6.0.0 ; extra == 'dev'
52
+ Requires-Dist: mujoco>=2.3.0,<4.0.0 ; extra == 'mujoco'
53
+ Requires-Python: >=3.8
54
+ Project-URL: Bug Tracker, https://github.com/mctigger/miniworld-maze/issues
55
+ Project-URL: Documentation, https://github.com/mctigger/miniworld-maze#readme
56
+ Project-URL: Homepage, https://github.com/mctigger/miniworld-maze
57
+ Project-URL: Repository, https://github.com/mctigger/miniworld-maze
58
+ Provides-Extra: dev
59
+ Provides-Extra: mujoco
60
+ Description-Content-Type: text/markdown
61
+
62
+ # MiniWorld DrStrategy - Multi-Room Maze Environment
63
+
64
+ A refactored implementation of Dr. Strategy's MiniWorld-based maze environments with updated dependencies and modern Python packaging. Based on the now-deprecated [MiniWorld](https://github.com/Farama-Foundation/Miniworld) project and the original [DrStrategy implementation](https://github.com/ahn-ml/drstrategy).
65
+
66
+ ## Environment Observations
67
+
68
+ ### Environment Views
69
+ Full environment layout and render-on-position views:
70
+
71
+ | Full Environment | Partial Top-Down Observations | Partial First-Person Observations |
72
+ |---|---|---|
73
+ | ![Full View Clean](assets/images/full_view_clean.png) | ![Top Middle TD](assets/images/render_on_pos_1_top_middle_room_topdown.png) ![Center TD](assets/images/render_on_pos_3_environment_center_topdown.png) | ![Top Middle FP](assets/images/render_on_pos_1_top_middle_room_firstperson.png) ![Center FP](assets/images/render_on_pos_3_environment_center_firstperson.png) |
74
+
75
+ ## Installation
76
+
77
+ ```bash
78
+ pip install miniworld-maze
79
+ ```
80
+
81
+ ## Usage
82
+
83
+ ### Registered Environments
84
+
85
+ This package registers the following gymnasium environments:
86
+
87
+ | Environment ID | Description | Rooms | Max Steps |
88
+ |---|---|---|---|
89
+ | `NineRooms-v0` | Standard 3×3 grid with adjacent room connections | 9 | 1000 |
90
+ | `SpiralNineRooms-v0` | 3×3 grid with spiral connection pattern | 9 | 1000 |
91
+ | `TwentyFiveRooms-v0` | Large 5×5 grid with complex navigation | 25 | 1000 |
92
+
93
+ All environments use `TOP_DOWN_PARTIAL` observation level and factory default room/door sizes by default.
94
+
95
+ ### Basic Usage
96
+
97
+ See `examples/basic_usage.py` for a complete working example:
98
+
99
+ ```python
100
+ #!/usr/bin/env python3
101
+ """
102
+ Basic usage example for miniworld-maze environments.
103
+
104
+ This is a minimal example showing how to create and interact with the environment.
105
+ """
106
+
107
+ import gymnasium as gym
108
+ import miniworld_maze # noqa: F401
109
+
110
+
111
+ def main():
112
+ # Create environment using gymnasium registry
113
+ env = gym.make("NineRooms-v0", obs_width=64, obs_height=64)
114
+ obs, info = env.reset()
115
+
116
+ # obs is a dictionary containing:
117
+ # - 'observation': (64, 64, 3) RGB image array
118
+ # - 'desired_goal': (64, 64, 3) RGB image of the goal state
119
+ # - 'achieved_goal': (64, 64, 3) RGB image of the current state
120
+
121
+ # Take a few random actions
122
+ for step in range(10):
123
+ action = env.action_space.sample()
124
+ obs, reward, terminated, truncated, info = env.step(action)
125
+
126
+ print(f"Step {step + 1}: reward={reward:.3f}, terminated={terminated}")
127
+
128
+ if terminated or truncated:
129
+ obs, info = env.reset()
130
+
131
+ env.close()
132
+ print("Environment closed successfully!")
133
+
134
+
135
+ if __name__ == "__main__":
136
+ main()
137
+ ```
138
+
139
+ ### Headless Environments
140
+
141
+ When running in headless environments (servers, CI/CD, Docker containers) or when encountering X11/OpenGL context issues, you need to enable headless rendering:
142
+
143
+ ```bash
144
+ # Set environment variable before running Python
145
+ export PYGLET_HEADLESS=1
146
+ python your_script.py
147
+ ```
148
+
149
+ Or in your Python code (must be set before importing the library):
150
+
151
+ ```python
152
+ import os
153
+ os.environ['PYGLET_HEADLESS'] = '1'
154
+
155
+ import miniworld_maze
156
+ # ... rest of your code
157
+ ```
158
+
159
+ This configures the underlying pyglet library to use EGL rendering instead of X11, allowing the environments to run without a display server.
160
+
161
+ ## Environment Variants
162
+
163
+ ### Available Environments
164
+
165
+ The package provides three main environment variants, each with different room layouts and connection patterns:
166
+
167
+ #### 1. NineRooms (3×3 Grid)
168
+ ```
169
+ -------------
170
+ | 0 | 1 | 2 |
171
+ -------------
172
+ | 3 | 4 | 5 |
173
+ -------------
174
+ | 6 | 7 | 8 |
175
+ -------------
176
+ ```
177
+ A standard 3×3 grid where adjacent rooms are connected. The agent can navigate between rooms through doorways, with connections forming a fully connected grid pattern.
178
+
179
+ #### 2. SpiralNineRooms (3×3 Spiral Pattern)
180
+ ```
181
+ -------------
182
+ | 0 | 1 | 2 |
183
+ -------------
184
+ | 3 | 4 | 5 |
185
+ -------------
186
+ | 6 | 7 | 8 |
187
+ -------------
188
+ ```
189
+ Same room layout as NineRooms but with a spiral connection pattern. Only specific room pairs are connected, creating a more challenging navigation task with fewer available paths.
190
+
191
+ #### 3. TwentyFiveRooms (5×5 Grid)
192
+ ```
193
+ ---------------------
194
+ | 0 | 1 | 2 | 3 | 4 |
195
+ ---------------------
196
+ | 5 | 6 | 7 | 8 | 9 |
197
+ ---------------------
198
+ |10 |11 |12 |13 |14 |
199
+ ---------------------
200
+ |15 |16 |17 |18 |19 |
201
+ ---------------------
202
+ |20 |21 |22 |23 |24 |
203
+ ---------------------
204
+ ```
205
+ A larger 5×5 grid environment with 25 rooms, providing more complex navigation challenges and longer episode lengths.
206
+
207
+ ### Observation Types
208
+
209
+ Each environment supports three different observation modes:
210
+
211
+ - **`TOP_DOWN_PARTIAL`** (default): Agent-centered partial top-down view with limited visibility range (POMDP)
212
+ - **`TOP_DOWN_FULL`**: Complete top-down view showing the entire environment
213
+ - **`FIRST_PERSON`**: 3D first-person perspective view from the agent's current position
214
+
215
+ ### Action Space
216
+
217
+ - **Discrete Actions** (default): 7 discrete actions (turn left/right, move forward/backward, strafe left/right, no-op)
218
+ - **Continuous Actions**: Continuous control with `continuous=True` parameter
219
+
220
+ ### Environment Configuration
221
+
222
+ All environments can be customized with the following parameters:
223
+
224
+ ```python
225
+ import gymnasium as gym
226
+ from miniworld_maze import ObservationLevel
227
+ import miniworld_maze # noqa: F401
228
+
229
+ env = gym.make(
230
+ "NineRooms-v0", # Environment variant
231
+ obs_level=ObservationLevel.TOP_DOWN_PARTIAL, # Observation type
232
+ obs_width=64, # Observation image width
233
+ obs_height=64, # Observation image height
234
+ room_size=5, # Size of each room in environment units
235
+ door_size=2, # Size of doors between rooms
236
+ agent_mode="empty", # Agent rendering: "empty", "circle", "triangle"
237
+ )
238
+ ```
239
+
240
+ ### Observation Format
241
+
242
+ The environment returns observations in dictionary format:
243
+
244
+ ```python
245
+ obs = {
246
+ 'observation': np.ndarray, # (64, 64, 3) RGB image of current view
247
+ 'desired_goal': np.ndarray, # (64, 64, 3) RGB image of goal location
248
+ 'achieved_goal': np.ndarray, # (64, 64, 3) RGB image of current state
249
+ }
250
+ ```
251
+
252
+ ### Reward Structure
253
+
254
+ - **Goal reaching**: Positive reward when agent reaches the goal location
255
+ - **Step penalty**: Small negative reward per step to encourage efficiency
256
+ - **Episode termination**: When goal is reached or maximum steps exceeded
257
+
258
+
259
+ ## License
260
+
261
+ MIT License - see LICENSE file for details.
@@ -0,0 +1,200 @@
1
+ # MiniWorld DrStrategy - Multi-Room Maze Environment
2
+
3
+ A refactored implementation of Dr. Strategy's MiniWorld-based maze environments with updated dependencies and modern Python packaging. Based on the now-deprecated [MiniWorld](https://github.com/Farama-Foundation/Miniworld) project and the original [DrStrategy implementation](https://github.com/ahn-ml/drstrategy).
4
+
5
+ ## Environment Observations
6
+
7
+ ### Environment Views
8
+ Full environment layout and render-on-position views:
9
+
10
+ | Full Environment | Partial Top-Down Observations | Partial First-Person Observations |
11
+ |---|---|---|
12
+ | ![Full View Clean](assets/images/full_view_clean.png) | ![Top Middle TD](assets/images/render_on_pos_1_top_middle_room_topdown.png) ![Center TD](assets/images/render_on_pos_3_environment_center_topdown.png) | ![Top Middle FP](assets/images/render_on_pos_1_top_middle_room_firstperson.png) ![Center FP](assets/images/render_on_pos_3_environment_center_firstperson.png) |
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ pip install miniworld-maze
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ### Registered Environments
23
+
24
+ This package registers the following gymnasium environments:
25
+
26
+ | Environment ID | Description | Rooms | Max Steps |
27
+ |---|---|---|---|
28
+ | `NineRooms-v0` | Standard 3×3 grid with adjacent room connections | 9 | 1000 |
29
+ | `SpiralNineRooms-v0` | 3×3 grid with spiral connection pattern | 9 | 1000 |
30
+ | `TwentyFiveRooms-v0` | Large 5×5 grid with complex navigation | 25 | 1000 |
31
+
32
+ All environments use `TOP_DOWN_PARTIAL` observation level and factory default room/door sizes by default.
33
+
34
+ ### Basic Usage
35
+
36
+ See `examples/basic_usage.py` for a complete working example:
37
+
38
+ ```python
39
+ #!/usr/bin/env python3
40
+ """
41
+ Basic usage example for miniworld-maze environments.
42
+
43
+ This is a minimal example showing how to create and interact with the environment.
44
+ """
45
+
46
+ import gymnasium as gym
47
+ import miniworld_maze # noqa: F401
48
+
49
+
50
+ def main():
51
+ # Create environment using gymnasium registry
52
+ env = gym.make("NineRooms-v0", obs_width=64, obs_height=64)
53
+ obs, info = env.reset()
54
+
55
+ # obs is a dictionary containing:
56
+ # - 'observation': (64, 64, 3) RGB image array
57
+ # - 'desired_goal': (64, 64, 3) RGB image of the goal state
58
+ # - 'achieved_goal': (64, 64, 3) RGB image of the current state
59
+
60
+ # Take a few random actions
61
+ for step in range(10):
62
+ action = env.action_space.sample()
63
+ obs, reward, terminated, truncated, info = env.step(action)
64
+
65
+ print(f"Step {step + 1}: reward={reward:.3f}, terminated={terminated}")
66
+
67
+ if terminated or truncated:
68
+ obs, info = env.reset()
69
+
70
+ env.close()
71
+ print("Environment closed successfully!")
72
+
73
+
74
+ if __name__ == "__main__":
75
+ main()
76
+ ```
77
+
78
+ ### Headless Environments
79
+
80
+ When running in headless environments (servers, CI/CD, Docker containers) or when encountering X11/OpenGL context issues, you need to enable headless rendering:
81
+
82
+ ```bash
83
+ # Set environment variable before running Python
84
+ export PYGLET_HEADLESS=1
85
+ python your_script.py
86
+ ```
87
+
88
+ Or in your Python code (must be set before importing the library):
89
+
90
+ ```python
91
+ import os
92
+ os.environ['PYGLET_HEADLESS'] = '1'
93
+
94
+ import miniworld_maze
95
+ # ... rest of your code
96
+ ```
97
+
98
+ This configures the underlying pyglet library to use EGL rendering instead of X11, allowing the environments to run without a display server.
99
+
100
+ ## Environment Variants
101
+
102
+ ### Available Environments
103
+
104
+ The package provides three main environment variants, each with different room layouts and connection patterns:
105
+
106
+ #### 1. NineRooms (3×3 Grid)
107
+ ```
108
+ -------------
109
+ | 0 | 1 | 2 |
110
+ -------------
111
+ | 3 | 4 | 5 |
112
+ -------------
113
+ | 6 | 7 | 8 |
114
+ -------------
115
+ ```
116
+ A standard 3×3 grid where adjacent rooms are connected. The agent can navigate between rooms through doorways, with connections forming a fully connected grid pattern.
117
+
118
+ #### 2. SpiralNineRooms (3×3 Spiral Pattern)
119
+ ```
120
+ -------------
121
+ | 0 | 1 | 2 |
122
+ -------------
123
+ | 3 | 4 | 5 |
124
+ -------------
125
+ | 6 | 7 | 8 |
126
+ -------------
127
+ ```
128
+ Same room layout as NineRooms but with a spiral connection pattern. Only specific room pairs are connected, creating a more challenging navigation task with fewer available paths.
129
+
130
+ #### 3. TwentyFiveRooms (5×5 Grid)
131
+ ```
132
+ ---------------------
133
+ | 0 | 1 | 2 | 3 | 4 |
134
+ ---------------------
135
+ | 5 | 6 | 7 | 8 | 9 |
136
+ ---------------------
137
+ |10 |11 |12 |13 |14 |
138
+ ---------------------
139
+ |15 |16 |17 |18 |19 |
140
+ ---------------------
141
+ |20 |21 |22 |23 |24 |
142
+ ---------------------
143
+ ```
144
+ A larger 5×5 grid environment with 25 rooms, providing more complex navigation challenges and longer episode lengths.
145
+
146
+ ### Observation Types
147
+
148
+ Each environment supports three different observation modes:
149
+
150
+ - **`TOP_DOWN_PARTIAL`** (default): Agent-centered partial top-down view with limited visibility range (POMDP)
151
+ - **`TOP_DOWN_FULL`**: Complete top-down view showing the entire environment
152
+ - **`FIRST_PERSON`**: 3D first-person perspective view from the agent's current position
153
+
154
+ ### Action Space
155
+
156
+ - **Discrete Actions** (default): 7 discrete actions (turn left/right, move forward/backward, strafe left/right, no-op)
157
+ - **Continuous Actions**: Continuous control with `continuous=True` parameter
158
+
159
+ ### Environment Configuration
160
+
161
+ All environments can be customized with the following parameters:
162
+
163
+ ```python
164
+ import gymnasium as gym
165
+ from miniworld_maze import ObservationLevel
166
+ import miniworld_maze # noqa: F401
167
+
168
+ env = gym.make(
169
+ "NineRooms-v0", # Environment variant
170
+ obs_level=ObservationLevel.TOP_DOWN_PARTIAL, # Observation type
171
+ obs_width=64, # Observation image width
172
+ obs_height=64, # Observation image height
173
+ room_size=5, # Size of each room in environment units
174
+ door_size=2, # Size of doors between rooms
175
+ agent_mode="empty", # Agent rendering: "empty", "circle", "triangle"
176
+ )
177
+ ```
178
+
179
+ ### Observation Format
180
+
181
+ The environment returns observations in dictionary format:
182
+
183
+ ```python
184
+ obs = {
185
+ 'observation': np.ndarray, # (64, 64, 3) RGB image of current view
186
+ 'desired_goal': np.ndarray, # (64, 64, 3) RGB image of goal location
187
+ 'achieved_goal': np.ndarray, # (64, 64, 3) RGB image of current state
188
+ }
189
+ ```
190
+
191
+ ### Reward Structure
192
+
193
+ - **Goal reaching**: Positive reward when agent reaches the goal location
194
+ - **Step penalty**: Small negative reward per step to encourage efficiency
195
+ - **Episode termination**: When goal is reached or maximum steps exceeded
196
+
197
+
198
+ ## License
199
+
200
+ MIT License - see LICENSE file for details.
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Basic usage example for miniworld-maze environments.
4
+
5
+ This is a minimal example showing how to create and interact with the environment.
6
+ """
7
+
8
+ import gymnasium as gym
9
+ import miniworld_maze # noqa: F401
10
+
11
+
12
+ def main():
13
+ # Create environment using gymnasium registry
14
+ env = gym.make("NineRooms-v0", obs_width=64, obs_height=64)
15
+ obs, info = env.reset()
16
+
17
+ # obs is a dictionary containing:
18
+ # - 'observation': (64, 64, 3) RGB image array
19
+ # - 'desired_goal': (64, 64, 3) RGB image of the goal state
20
+ # - 'achieved_goal': (64, 64, 3) RGB image of the current state
21
+
22
+ # Take a few random actions
23
+ for step in range(10):
24
+ action = env.action_space.sample()
25
+ obs, reward, terminated, truncated, info = env.step(action)
26
+
27
+ print(f"Step {step + 1}: reward={reward:.3f}, terminated={terminated}")
28
+
29
+ if terminated or truncated:
30
+ obs, info = env.reset()
31
+
32
+ env.close()
33
+ print("Environment closed successfully!")
34
+
35
+
36
+ if __name__ == "__main__":
37
+ main()