spawnpoint-studio 0.3.1__tar.gz → 0.3.3__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.
Files changed (166) hide show
  1. {spawnpoint_studio-0.3.1/compiler/spawnpoint_studio.egg-info → spawnpoint_studio-0.3.3}/PKG-INFO +16 -8
  2. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/README.md +15 -7
  3. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/analyze.py +5 -0
  4. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/cli.py +17 -0
  5. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/graph.py +1 -0
  6. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/ai.py +6 -0
  7. spawnpoint_studio-0.3.3/compiler/spawnpoint/sprites/cartoon.py +1013 -0
  8. spawnpoint_studio-0.3.3/compiler/spawnpoint/sprites/cartoon_monsters.py +152 -0
  9. spawnpoint_studio-0.3.3/compiler/spawnpoint/sprites/chibi.py +612 -0
  10. spawnpoint_studio-0.3.3/compiler/spawnpoint/sprites/creatures.py +337 -0
  11. spawnpoint_studio-0.3.3/compiler/spawnpoint/sprites/gallery.py +108 -0
  12. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/generate.py +235 -38
  13. spawnpoint_studio-0.3.3/compiler/spawnpoint/sprites/items.py +205 -0
  14. spawnpoint_studio-0.3.3/compiler/spawnpoint/sprites/monsters.py +220 -0
  15. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/assemble.py +94 -12
  16. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/edits.py +1 -1
  17. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/prompts.py +21 -3
  18. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3/compiler/spawnpoint_studio.egg-info}/PKG-INFO +16 -8
  19. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint_studio.egg-info/SOURCES.txt +6 -0
  20. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_sprites.py +323 -5
  21. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_studio.py +6 -3
  22. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/castle_defense.json +2 -1
  23. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/coin_hopper.json +3 -2
  24. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/dino_eggs.json +2 -1
  25. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/knight_quest.json +4 -2
  26. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/neon_arena.json +3 -2
  27. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/night_survivor.json +3 -2
  28. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/ninja_rescue.json +3 -2
  29. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/pixel_arena.json +3 -2
  30. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/pixel_hopper.json +3 -2
  31. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/star_run.json +2 -1
  32. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/examples/sunny_farm.json +3 -2
  33. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/projectile_component.gd +4 -0
  34. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/build.gd +1 -0
  35. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/pyproject.toml +1 -1
  36. spawnpoint_studio-0.3.1/compiler/spawnpoint/sprites/cartoon.py +0 -477
  37. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/LICENSE +0 -0
  38. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/MANIFEST.in +0 -0
  39. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/__init__.py +0 -0
  40. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/build.py +0 -0
  41. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/cockpit/__init__.py +0 -0
  42. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/cockpit/server.py +0 -0
  43. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/cockpit/static/app.css +0 -0
  44. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/cockpit/static/app.js +0 -0
  45. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/cockpit/static/index.html +0 -0
  46. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/demo.py +0 -0
  47. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/demo_touch.js +0 -0
  48. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/diagnostics.py +0 -0
  49. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/expr.py +0 -0
  50. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/gif.py +0 -0
  51. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/godot.py +0 -0
  52. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/level.py +0 -0
  53. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/llm_server.py +0 -0
  54. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/manifest.py +0 -0
  55. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/playtest/__init__.py +0 -0
  56. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/playtest/report.py +0 -0
  57. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/playtest/runner.py +0 -0
  58. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/playtest/tuner.py +0 -0
  59. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/project.py +0 -0
  60. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/py.typed +0 -0
  61. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/rules.py +0 -0
  62. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sfx.py +0 -0
  63. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/__init__.py +0 -0
  64. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/contour.py +0 -0
  65. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/importer.py +0 -0
  66. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/motion.py +0 -0
  67. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/palettes.py +0 -0
  68. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/resolve.py +0 -0
  69. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/scenery.py +0 -0
  70. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/spriteset.py +0 -0
  71. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/sprites/tiles.py +0 -0
  72. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/__init__.py +0 -0
  73. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/brief.py +0 -0
  74. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/creative.py +0 -0
  75. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/dataset.py +0 -0
  76. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/genres.py +0 -0
  77. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/levelgen.py +0 -0
  78. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/llm.py +0 -0
  79. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/orchestrator.py +0 -0
  80. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/web.py +0 -0
  81. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio/webcheck.py +0 -0
  82. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint/studio_cli.py +0 -0
  83. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint_studio.egg-info/dependency_links.txt +0 -0
  84. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint_studio.egg-info/entry_points.txt +0 -0
  85. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint_studio.egg-info/requires.txt +0 -0
  86. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/spawnpoint_studio.egg-info/top_level.txt +0 -0
  87. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/conftest.py +0 -0
  88. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_ai_sprites.py +0 -0
  89. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_analyze.py +0 -0
  90. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_cockpit.py +0 -0
  91. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_demo.py +0 -0
  92. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_e2e.py +0 -0
  93. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_expr.py +0 -0
  94. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_genres.py +0 -0
  95. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_gif.py +0 -0
  96. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_godot_library.py +0 -0
  97. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_graph.py +0 -0
  98. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_level.py +0 -0
  99. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_live_llm.py +0 -0
  100. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_manifest.py +0 -0
  101. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_playtest.py +0 -0
  102. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_rules.py +0 -0
  103. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_sfx.py +0 -0
  104. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/compiler/tests/test_web.py +0 -0
  105. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/aim_component.gd +0 -0
  106. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/animator_component.gd +0 -0
  107. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/base_component.gd +0 -0
  108. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/bubble_board_component.gd +0 -0
  109. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/chase_ai_component.gd +0 -0
  110. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/collectible_component.gd +0 -0
  111. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/crop_pest_component.gd +0 -0
  112. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/experience_component.gd +0 -0
  113. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/farm_plot_component.gd +0 -0
  114. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/farmer_component.gd +0 -0
  115. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/flight_path_component.gd +0 -0
  116. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/gate_component.gd +0 -0
  117. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/ground_patch_component.gd +0 -0
  118. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/health_bar_component.gd +0 -0
  119. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/health_component.gd +0 -0
  120. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/hitbox_component.gd +0 -0
  121. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/hurtbox_component.gd +0 -0
  122. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/juice_component.gd +0 -0
  123. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/level_up_menu_component.gd +0 -0
  124. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/market_component.gd +0 -0
  125. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/path_follower_component.gd +0 -0
  126. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/patrol_ai_component.gd +0 -0
  127. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/platformer_movement_component.gd +0 -0
  128. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/player_input_component.gd +0 -0
  129. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/shmup_ship_component.gd +0 -0
  130. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/spawner_component.gd +0 -0
  131. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/stomp_component.gd +0 -0
  132. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/top_down_movement_component.gd +0 -0
  133. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/tower_brain_component.gd +0 -0
  134. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/tower_builder_component.gd +0 -0
  135. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/tower_slot_component.gd +0 -0
  136. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/trigger_zone_component.gd +0 -0
  137. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/wave_spawner_component.gd +0 -0
  138. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/weapon_component.gd +0 -0
  139. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/components/xp_orb_component.gd +0 -0
  140. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/manifest.json +0 -0
  141. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/camera_rig.gd +0 -0
  142. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/cockpit.gd +0 -0
  143. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/entity_core.gd +0 -0
  144. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/fx.gd +0 -0
  145. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/game_state.gd +0 -0
  146. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/hud.gd +0 -0
  147. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/level.gd +0 -0
  148. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/sfx.gd +0 -0
  149. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/sp.gd +0 -0
  150. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/runtime/world.gd +0 -0
  151. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/shaders/flash.gdshader +0 -0
  152. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/shaders/floor_grid.gdshader +0 -0
  153. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/build.tscn +0 -0
  154. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/capture.gd +0 -0
  155. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/capture.tscn +0 -0
  156. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/dump_manifest.gd +0 -0
  157. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/dump_manifest.tscn +0 -0
  158. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/playtest.gd +0 -0
  159. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/playtest.tscn +0 -0
  160. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/playtest_nav.gd +0 -0
  161. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/record.gd +0 -0
  162. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/record.tscn +0 -0
  163. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/smoke.gd +0 -0
  164. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/godot/addons/spawn_point/tools/smoke.tscn +0 -0
  165. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/setup.cfg +0 -0
  166. {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spawnpoint-studio
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Turn a sentence into a juicy, playable Godot 4 game — locally, on a consumer GPU.
5
5
  Author: smoky1496
6
6
  License: MIT
@@ -33,7 +33,7 @@ Dynamic: license-file
33
33
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
34
34
 
35
35
  <p align="center">
36
- <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/knight-quest.gif" width="48%" alt="Knight's Quest: a cartoon-style sword platformer">
36
+ <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/knight-quest.gif" width="48%" alt="Knight's Quest: a sword platformer">
37
37
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/castle-defense.gif" width="48%" alt="Castle Defense: a tower defense game">
38
38
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/ninja-rescue.gif" width="48%" alt="Ninja Rescue: a platformer where a ninja frees his mother">
39
39
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/dino-eggs.gif" width="48%" alt="Dino Eggs: a bubble shooter with dinosaur eggs">
@@ -42,10 +42,10 @@ Dynamic: license-file
42
42
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/star-run.gif" width="48%" alt="Star Run: a side-scrolling shooter with power-ups and a boss">
43
43
  </p>
44
44
  <p align="center"><sub>Seven of the demo games, each one a small JSON graph in <code>examples/</code> built from the
45
- same component library: generated cartoon or pixel art, collision traced from the sprites, juice on by default.
45
+ same component library: generated pixel art, collision traced from the sprites, juice on by default.
46
46
  Recorded with <code>spawnpoint gif</code> (autopilot).</sub></p>
47
47
 
48
- <p align="center"><b><a href="https://leluong141996-dev.github.io/Spawn-Point/">▶ Play the demos in your browser</a></b>: a Mario-style platformer, a cartoon
48
+ <p align="center"><b><a href="https://leluong141996-dev.github.io/Spawn-Point/">▶ Play the demos in your browser</a></b>: a Mario-style platformer, a
49
49
  knight with a sword, tower defense, a ninja rescue, a dinosaur-egg bubble shooter, a survivor with level-ups, a farming
50
50
  game, an arena shooter and a side-scrolling space shooter. No install needed, and
51
51
  they work on phones too (touch controls).</p>
@@ -169,10 +169,12 @@ use `--no-web` to skip and play natively with `spawnpoint run`.
169
169
 
170
170
  ## Sprites: generated or your own
171
171
 
172
- Layer 2 replaces placeholder shapes with **procedural sprites** — no assets, no GPU — in one of two art styles:
173
- **pixel art** (the default) or **cartoon** (`"art_style": "cartoon"` in the graph settings, or "cartoon style" in
174
- the prompt): smooth shaded sprites with a sticker outline, rounded tiles, and a parallax sky with hills, clouds and
175
- trees. The
172
+ Layer 2 replaces placeholder shapes with **procedural pixel art** — no assets, no GPU: chibi people with big heads, monsters with faces (a biting plant, a mushroom, a snail, a flame spirit, a reaper, an alien, a dragon, a ghost...), items, props, themed tiles and a parallax sky. Spawn Point makes pixel art games only. (A graph can still ask for the smooth `"art_style": "cartoon"` look by hand, but games made from a prompt are always pixel art.)
173
+
174
+ <p align="center"><img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/parade-heroes.gif" width="48%" alt="Animated heroes: knight, wizard, ranger, viking, king, princess, ninja..."> <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/parade-monsters.gif" width="48%" alt="Animated monsters: slime, frog, biting plant, mushroom, snail, flame..."></p>
175
+ <p align="center"><sub>Every character and monster is drawn by plain Python from its name (<code>spawnpoint sprites parade --set heroes|monsters|items</code>).</sub></p>
176
+
177
+ The
176
178
  kind follows the entity (`Goblin` → humanoid, `FireBat` → flyer, `LaserBot` → robot, `Crystal` → gem…)
177
179
  and details follow the name (`Ninja` → mask, `Fox` → ears and tail, `Spider` → legs, a sword-wielder holds a sword).
178
180
  Every sprite has idle / run / jump / fall / hurt animations driven automatically by an `Animator` component, plus
@@ -204,8 +206,14 @@ spawnpoint sprites import hero.png --grid 32x32 --anim idle=0-3 --anim run=4-9
204
206
  spawnpoint sprites import sheet.png --rows idle,run,jump # auto-sliced by transparent gutters
205
207
  spawnpoint sprites import kenney_frames/ # idle_0.png, walk_1.png, ...
206
208
  spawnpoint sprites preview assets/sprites/Knight.sprite.json # contact sheet + collision outline
209
+ spawnpoint sprites gallery --style fine -o gallery.png # every kind on one sheet, for review
210
+ spawnpoint sprites parade --set monsters -o monsters.gif # an animated sheet of characters, monsters or items
207
211
  ```
208
212
 
213
+ Names pick the art: `Knight` gets a helmet and shield, `SkeletonArcher` a skull and a bow (and shoots
214
+ arrows), `HealthPotion` is a potion, `GoldKey` a key. Layer 2 scatters trees, bushes and rocks that
215
+ match the palette, drawn behind everything and without collision.
216
+
209
217
  Record a clip of any built game to share it (a window opens for a few seconds; autopilot plays):
210
218
 
211
219
  ```bash
@@ -9,7 +9,7 @@
9
9
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
10
10
 
11
11
  <p align="center">
12
- <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/knight-quest.gif" width="48%" alt="Knight's Quest: a cartoon-style sword platformer">
12
+ <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/knight-quest.gif" width="48%" alt="Knight's Quest: a sword platformer">
13
13
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/castle-defense.gif" width="48%" alt="Castle Defense: a tower defense game">
14
14
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/ninja-rescue.gif" width="48%" alt="Ninja Rescue: a platformer where a ninja frees his mother">
15
15
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/dino-eggs.gif" width="48%" alt="Dino Eggs: a bubble shooter with dinosaur eggs">
@@ -18,10 +18,10 @@
18
18
  <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/star-run.gif" width="48%" alt="Star Run: a side-scrolling shooter with power-ups and a boss">
19
19
  </p>
20
20
  <p align="center"><sub>Seven of the demo games, each one a small JSON graph in <code>examples/</code> built from the
21
- same component library: generated cartoon or pixel art, collision traced from the sprites, juice on by default.
21
+ same component library: generated pixel art, collision traced from the sprites, juice on by default.
22
22
  Recorded with <code>spawnpoint gif</code> (autopilot).</sub></p>
23
23
 
24
- <p align="center"><b><a href="https://leluong141996-dev.github.io/Spawn-Point/">▶ Play the demos in your browser</a></b>: a Mario-style platformer, a cartoon
24
+ <p align="center"><b><a href="https://leluong141996-dev.github.io/Spawn-Point/">▶ Play the demos in your browser</a></b>: a Mario-style platformer, a
25
25
  knight with a sword, tower defense, a ninja rescue, a dinosaur-egg bubble shooter, a survivor with level-ups, a farming
26
26
  game, an arena shooter and a side-scrolling space shooter. No install needed, and
27
27
  they work on phones too (touch controls).</p>
@@ -145,10 +145,12 @@ use `--no-web` to skip and play natively with `spawnpoint run`.
145
145
 
146
146
  ## Sprites: generated or your own
147
147
 
148
- Layer 2 replaces placeholder shapes with **procedural sprites** — no assets, no GPU — in one of two art styles:
149
- **pixel art** (the default) or **cartoon** (`"art_style": "cartoon"` in the graph settings, or "cartoon style" in
150
- the prompt): smooth shaded sprites with a sticker outline, rounded tiles, and a parallax sky with hills, clouds and
151
- trees. The
148
+ Layer 2 replaces placeholder shapes with **procedural pixel art** — no assets, no GPU: chibi people with big heads, monsters with faces (a biting plant, a mushroom, a snail, a flame spirit, a reaper, an alien, a dragon, a ghost...), items, props, themed tiles and a parallax sky. Spawn Point makes pixel art games only. (A graph can still ask for the smooth `"art_style": "cartoon"` look by hand, but games made from a prompt are always pixel art.)
149
+
150
+ <p align="center"><img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/parade-heroes.gif" width="48%" alt="Animated heroes: knight, wizard, ranger, viking, king, princess, ninja..."> <img src="https://raw.githubusercontent.com/leluong141996-dev/Spawn-Point/main/docs/media/parade-monsters.gif" width="48%" alt="Animated monsters: slime, frog, biting plant, mushroom, snail, flame..."></p>
151
+ <p align="center"><sub>Every character and monster is drawn by plain Python from its name (<code>spawnpoint sprites parade --set heroes|monsters|items</code>).</sub></p>
152
+
153
+ The
152
154
  kind follows the entity (`Goblin` → humanoid, `FireBat` → flyer, `LaserBot` → robot, `Crystal` → gem…)
153
155
  and details follow the name (`Ninja` → mask, `Fox` → ears and tail, `Spider` → legs, a sword-wielder holds a sword).
154
156
  Every sprite has idle / run / jump / fall / hurt animations driven automatically by an `Animator` component, plus
@@ -180,8 +182,14 @@ spawnpoint sprites import hero.png --grid 32x32 --anim idle=0-3 --anim run=4-9
180
182
  spawnpoint sprites import sheet.png --rows idle,run,jump # auto-sliced by transparent gutters
181
183
  spawnpoint sprites import kenney_frames/ # idle_0.png, walk_1.png, ...
182
184
  spawnpoint sprites preview assets/sprites/Knight.sprite.json # contact sheet + collision outline
185
+ spawnpoint sprites gallery --style fine -o gallery.png # every kind on one sheet, for review
186
+ spawnpoint sprites parade --set monsters -o monsters.gif # an animated sheet of characters, monsters or items
183
187
  ```
184
188
 
189
+ Names pick the art: `Knight` gets a helmet and shield, `SkeletonArcher` a skull and a bow (and shoots
190
+ arrows), `HealthPotion` is a potion, `GoldKey` a key. Layer 2 scatters trees, bushes and rocks that
191
+ match the palette, drawn behind everything and without collision.
192
+
185
193
  Record a clip of any built game to share it (a window opens for a few seconds; autopilot plays):
186
194
 
187
195
  ```bash
@@ -347,6 +347,7 @@ class _Analyzer:
347
347
  "eye": ent.body == "character" and sprite is None,
348
348
  "pivot": "bottom" if g.genre == "platformer" and ent.body == "character" else "center",
349
349
  "sprite": sprite_resolve.plan_entry(name, sprite) if sprite is not None else None,
350
+ "z": -1 if ent.decor else 0,
350
351
  })
351
352
  entities[-1]["components"] = comps
352
353
 
@@ -413,6 +414,8 @@ class _Analyzer:
413
414
  }
414
415
 
415
416
  def _layer(self, ent: Entity, team: str) -> int:
417
+ if ent.decor:
418
+ return 0
416
419
  if ent.body == "character":
417
420
  return {"player": L_PLAYER, "enemy": L_ENEMY}.get(team, 0)
418
421
  if ent.body == "static":
@@ -420,6 +423,8 @@ class _Analyzer:
420
423
  return 0 if "Projectile" in ent.components else L_PICKUP
421
424
 
422
425
  def _mask(self, ent: Entity) -> int:
426
+ if ent.decor:
427
+ return 0
423
428
  if ent.body == "character":
424
429
  return L_WORLD
425
430
  if ent.body == "static":
@@ -121,6 +121,12 @@ def main(argv: list[str] | None = None) -> int:
121
121
  sv2.add_argument("sprite", type=Path)
122
122
  sv2.add_argument("-o", "--out", type=Path)
123
123
  sps.add_parser("kinds", help="list the procedural sprite kinds")
124
+ sga = sps.add_parser("gallery", help="render one contact sheet of every procedural kind, for review")
125
+ sga.add_argument("--style", choices=["pixel", "fine", "cartoon"], default="fine")
126
+ sga.add_argument("-o", "--out", type=Path, default=Path("sprite-gallery.png"))
127
+ spa = sps.add_parser("parade", help="render an animated sheet (GIF) of characters, monsters or items")
128
+ spa.add_argument("--set", dest="which", choices=["heroes", "monsters", "items"], default="heroes")
129
+ spa.add_argument("-o", "--out", type=Path, default=Path("sprite-parade.gif"))
124
130
 
125
131
  ds = sub.add_parser("dataset", help="recorded fine-tuning data")
126
132
  ds.add_argument("action", choices=["stats", "path"])
@@ -272,6 +278,17 @@ def _sprites(args) -> int:
272
278
  for k, spec in gen.KINDS.items():
273
279
  print(f"{k:<8} {spec.size[0]}x{spec.size[1]} px animations: {', '.join(spec.anims)}")
274
280
  return 0
281
+ if args.sprites_cmd == "parade":
282
+ from .sprites.gallery import parade
283
+ frames = parade(args.which)
284
+ frames[0].save(args.out, save_all=True, append_images=frames[1:], duration=100, loop=0, optimize=True)
285
+ print(f"Wrote {args.out}")
286
+ return 0
287
+ if args.sprites_cmd == "gallery":
288
+ from .sprites.gallery import gallery
289
+ gallery(args.style).save(args.out)
290
+ print(f"Wrote {args.out}")
291
+ return 0
275
292
  if args.sprites_cmd == "preview":
276
293
  s = load(args.sprite)
277
294
  out = args.out or args.sprite.with_suffix("").with_suffix(".preview.png")
@@ -75,6 +75,7 @@ class Entity(_Model):
75
75
  sprite: Union[str, SpriteRef, None] = None
76
76
  components: dict[str, dict[str, Any]] = Field(default_factory=dict)
77
77
  juice: Union[Literal["none"], dict[str, Any], None] = None
78
+ decor: bool = Field(default=False, description="scenery (trees, bushes, rocks): drawn behind everything, no collision")
78
79
 
79
80
 
80
81
  class Level(_Model):
@@ -42,6 +42,12 @@ KIND_HINT = {
42
42
  "heart": "a single heart pickup", "orb": "a single glowing orb", "door": "a tall wooden door",
43
43
  "exit": "a glowing exit doorway", "portal": "a swirling magic portal", "spikes": "a row of metal spikes",
44
44
  "bullet": "a small glowing projectile",
45
+ "beast": "a small four-legged animal, side view", "spider": "a small spider, side view",
46
+ "dragon": "a small winged dragon, side view", "ghost": "a small floating ghost", "snake": "a small snake, side view",
47
+ "key": "a single golden key", "potion": "a single potion bottle with a cork", "scroll": "a single rolled paper scroll",
48
+ "bomb": "a single round black bomb with a lit fuse", "chest": "a single wooden treasure chest",
49
+ "arrow": "a single arrow pointing right", "tree": "a single tree", "bush": "a single round bush",
50
+ "rock": "a single boulder",
45
51
  }
46
52
 
47
53