spawnpoint-studio 0.3.1__tar.gz → 0.3.2__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.
- {spawnpoint_studio-0.3.1/compiler/spawnpoint_studio.egg-info → spawnpoint_studio-0.3.2}/PKG-INFO +6 -1
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/README.md +5 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/analyze.py +5 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cli.py +8 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/graph.py +1 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/ai.py +6 -0
- spawnpoint_studio-0.3.2/compiler/spawnpoint/sprites/cartoon.py +1010 -0
- spawnpoint_studio-0.3.2/compiler/spawnpoint/sprites/chibi.py +612 -0
- spawnpoint_studio-0.3.2/compiler/spawnpoint/sprites/creatures.py +337 -0
- spawnpoint_studio-0.3.2/compiler/spawnpoint/sprites/gallery.py +67 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/generate.py +225 -38
- spawnpoint_studio-0.3.2/compiler/spawnpoint/sprites/items.py +205 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/assemble.py +81 -7
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/edits.py +1 -1
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/prompts.py +20 -3
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2/compiler/spawnpoint_studio.egg-info}/PKG-INFO +6 -1
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/SOURCES.txt +4 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_sprites.py +303 -3
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_studio.py +4 -2
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/projectile_component.gd +4 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/build.gd +1 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/pyproject.toml +1 -1
- spawnpoint_studio-0.3.1/compiler/spawnpoint/sprites/cartoon.py +0 -477
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/LICENSE +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/MANIFEST.in +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/__init__.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/build.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/__init__.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/server.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/static/app.css +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/static/app.js +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/static/index.html +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/demo.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/demo_touch.js +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/diagnostics.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/expr.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/gif.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/godot.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/level.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/llm_server.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/manifest.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/__init__.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/report.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/runner.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/tuner.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/project.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/py.typed +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/rules.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sfx.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/__init__.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/contour.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/importer.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/motion.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/palettes.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/resolve.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/scenery.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/spriteset.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/tiles.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/__init__.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/brief.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/creative.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/dataset.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/genres.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/levelgen.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/llm.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/orchestrator.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/web.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/webcheck.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio_cli.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/dependency_links.txt +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/entry_points.txt +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/requires.txt +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/top_level.txt +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/conftest.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_ai_sprites.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_analyze.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_cockpit.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_demo.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_e2e.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_expr.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_genres.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_gif.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_godot_library.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_graph.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_level.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_live_llm.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_manifest.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_playtest.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_rules.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_sfx.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/compiler/tests/test_web.py +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/castle_defense.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/coin_hopper.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/dino_eggs.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/knight_quest.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/neon_arena.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/night_survivor.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/ninja_rescue.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/pixel_arena.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/pixel_hopper.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/star_run.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/examples/sunny_farm.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/aim_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/animator_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/base_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/bubble_board_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/chase_ai_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/collectible_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/crop_pest_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/experience_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/farm_plot_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/farmer_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/flight_path_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/gate_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/ground_patch_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/health_bar_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/health_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/hitbox_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/hurtbox_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/juice_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/level_up_menu_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/market_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/path_follower_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/patrol_ai_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/platformer_movement_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/player_input_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/shmup_ship_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/spawner_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/stomp_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/top_down_movement_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/tower_brain_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/tower_builder_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/tower_slot_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/trigger_zone_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/wave_spawner_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/weapon_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/xp_orb_component.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/manifest.json +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/camera_rig.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/cockpit.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/entity_core.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/fx.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/game_state.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/hud.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/level.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/sfx.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/sp.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/world.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/shaders/flash.gdshader +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/shaders/floor_grid.gdshader +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/build.tscn +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/capture.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/capture.tscn +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/dump_manifest.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/dump_manifest.tscn +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/playtest.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/playtest.tscn +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/playtest_nav.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/record.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/record.tscn +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/smoke.gd +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/smoke.tscn +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/setup.cfg +0 -0
- {spawnpoint_studio-0.3.1 → spawnpoint_studio-0.3.2}/setup.py +0 -0
{spawnpoint_studio-0.3.1/compiler/spawnpoint_studio.egg-info → spawnpoint_studio-0.3.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spawnpoint-studio
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
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
|
|
@@ -204,8 +204,13 @@ spawnpoint sprites import hero.png --grid 32x32 --anim idle=0-3 --anim run=4-9
|
|
|
204
204
|
spawnpoint sprites import sheet.png --rows idle,run,jump # auto-sliced by transparent gutters
|
|
205
205
|
spawnpoint sprites import kenney_frames/ # idle_0.png, walk_1.png, ...
|
|
206
206
|
spawnpoint sprites preview assets/sprites/Knight.sprite.json # contact sheet + collision outline
|
|
207
|
+
spawnpoint sprites gallery --style cartoon -o gallery.png # every kind on one sheet, for review
|
|
207
208
|
```
|
|
208
209
|
|
|
210
|
+
Names pick the art: `Knight` gets a helmet and shield, `SkeletonArcher` a skull and a bow (and shoots
|
|
211
|
+
arrows), `HealthPotion` is a potion, `GoldKey` a key. Layer 2 scatters trees, bushes and rocks that
|
|
212
|
+
match the palette, drawn behind everything and without collision.
|
|
213
|
+
|
|
209
214
|
Record a clip of any built game to share it (a window opens for a few seconds; autopilot plays):
|
|
210
215
|
|
|
211
216
|
```bash
|
|
@@ -180,8 +180,13 @@ spawnpoint sprites import hero.png --grid 32x32 --anim idle=0-3 --anim run=4-9
|
|
|
180
180
|
spawnpoint sprites import sheet.png --rows idle,run,jump # auto-sliced by transparent gutters
|
|
181
181
|
spawnpoint sprites import kenney_frames/ # idle_0.png, walk_1.png, ...
|
|
182
182
|
spawnpoint sprites preview assets/sprites/Knight.sprite.json # contact sheet + collision outline
|
|
183
|
+
spawnpoint sprites gallery --style cartoon -o gallery.png # every kind on one sheet, for review
|
|
183
184
|
```
|
|
184
185
|
|
|
186
|
+
Names pick the art: `Knight` gets a helmet and shield, `SkeletonArcher` a skull and a bow (and shoots
|
|
187
|
+
arrows), `HealthPotion` is a potion, `GoldKey` a key. Layer 2 scatters trees, bushes and rocks that
|
|
188
|
+
match the palette, drawn behind everything and without collision.
|
|
189
|
+
|
|
185
190
|
Record a clip of any built game to share it (a window opens for a few seconds; autopilot plays):
|
|
186
191
|
|
|
187
192
|
```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,9 @@ 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"))
|
|
124
127
|
|
|
125
128
|
ds = sub.add_parser("dataset", help="recorded fine-tuning data")
|
|
126
129
|
ds.add_argument("action", choices=["stats", "path"])
|
|
@@ -272,6 +275,11 @@ def _sprites(args) -> int:
|
|
|
272
275
|
for k, spec in gen.KINDS.items():
|
|
273
276
|
print(f"{k:<8} {spec.size[0]}x{spec.size[1]} px animations: {', '.join(spec.anims)}")
|
|
274
277
|
return 0
|
|
278
|
+
if args.sprites_cmd == "gallery":
|
|
279
|
+
from .sprites.gallery import gallery
|
|
280
|
+
gallery(args.style).save(args.out)
|
|
281
|
+
print(f"Wrote {args.out}")
|
|
282
|
+
return 0
|
|
275
283
|
if args.sprites_cmd == "preview":
|
|
276
284
|
s = load(args.sprite)
|
|
277
285
|
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
|
|