spawnpoint-studio 0.3.0__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.0/compiler/spawnpoint_studio.egg-info → spawnpoint_studio-0.3.2}/PKG-INFO +7 -2
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/README.md +6 -1
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/analyze.py +5 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cli.py +8 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/graph.py +1 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/llm_server.py +1 -1
- {spawnpoint_studio-0.3.0 → 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.0 → 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.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/assemble.py +81 -7
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/edits.py +1 -1
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/prompts.py +20 -3
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2/compiler/spawnpoint_studio.egg-info}/PKG-INFO +7 -2
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/SOURCES.txt +4 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_sprites.py +303 -3
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_studio.py +4 -2
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/projectile_component.gd +4 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/build.gd +1 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/pyproject.toml +1 -1
- spawnpoint_studio-0.3.0/compiler/spawnpoint/sprites/cartoon.py +0 -477
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/LICENSE +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/MANIFEST.in +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/__init__.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/build.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/__init__.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/server.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/static/app.css +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/static/app.js +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/cockpit/static/index.html +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/demo.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/demo_touch.js +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/diagnostics.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/expr.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/gif.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/godot.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/level.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/manifest.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/__init__.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/report.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/runner.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/playtest/tuner.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/project.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/py.typed +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/rules.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sfx.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/__init__.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/contour.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/importer.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/motion.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/palettes.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/resolve.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/scenery.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/spriteset.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/sprites/tiles.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/__init__.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/brief.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/creative.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/dataset.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/genres.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/levelgen.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/llm.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/orchestrator.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/web.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio/webcheck.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint/studio_cli.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/dependency_links.txt +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/entry_points.txt +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/requires.txt +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/spawnpoint_studio.egg-info/top_level.txt +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/conftest.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_ai_sprites.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_analyze.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_cockpit.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_demo.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_e2e.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_expr.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_genres.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_gif.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_godot_library.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_graph.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_level.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_live_llm.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_manifest.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_playtest.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_rules.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_sfx.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/compiler/tests/test_web.py +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/castle_defense.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/coin_hopper.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/dino_eggs.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/knight_quest.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/neon_arena.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/night_survivor.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/ninja_rescue.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/pixel_arena.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/pixel_hopper.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/star_run.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/examples/sunny_farm.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/aim_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/animator_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/base_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/bubble_board_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/chase_ai_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/collectible_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/crop_pest_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/experience_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/farm_plot_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/farmer_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/flight_path_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/gate_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/ground_patch_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/health_bar_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/health_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/hitbox_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/hurtbox_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/juice_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/level_up_menu_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/market_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/path_follower_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/patrol_ai_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/platformer_movement_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/player_input_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/shmup_ship_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/spawner_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/stomp_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/top_down_movement_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/tower_brain_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/tower_builder_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/tower_slot_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/trigger_zone_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/wave_spawner_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/weapon_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/components/xp_orb_component.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/manifest.json +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/camera_rig.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/cockpit.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/entity_core.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/fx.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/game_state.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/hud.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/level.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/sfx.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/sp.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/runtime/world.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/shaders/flash.gdshader +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/shaders/floor_grid.gdshader +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/build.tscn +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/capture.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/capture.tscn +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/dump_manifest.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/dump_manifest.tscn +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/playtest.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/playtest.tscn +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/playtest_nav.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/record.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/record.tscn +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/smoke.gd +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/godot/addons/spawn_point/tools/smoke.tscn +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/setup.cfg +0 -0
- {spawnpoint_studio-0.3.0 → spawnpoint_studio-0.3.2}/setup.py +0 -0
{spawnpoint_studio-0.3.0/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
|
|
@@ -156,7 +156,7 @@ Only what you asked for changes, and the level layout is kept. Prompts can be in
|
|
|
156
156
|
**The model.** [SpawnPoint-Coder-7B](https://huggingface.co/smoky1496/SpawnPoint-Coder-7B-AWQ) is a 7B model
|
|
157
157
|
fine-tuned to generate Godot 4 games through this pipeline: it writes the game design, tweaks and entity
|
|
158
158
|
edits as strict JSON, and the compiler turns that into Godot scenes and GDScript. It runs on a single 12 GB
|
|
159
|
-
GPU (AWQ 4-bit). v5
|
|
159
|
+
GPU (AWQ 4-bit). v5 added **side-scrolling shooters** (flight patterns, power-ups, a boss), **Vietnamese prompts read directly** and a small per-genre format instead of one big form; v5.1 fixes prompts that name the hero only indirectly ("a tank shooting monsters"). The downloadable AWQ build gets 88% of a sealed set of 16 human-written prompts for shooters and the v4 fixes fully right, and 80% of 30 human-written game ideas in English and Vietnamese (v4: 87% on those 30; the model card lists every number and where v5.1 is behind). The GGUF Q4_K_M build scores 83% on those 30. Older models still work with `SPAWNPOINT_BRIEF_FORMAT=v4`. It is tuned for the 2D game kinds Spawn Point builds; other genres are no better than a general 7B coder. `spawnpoint llm up` downloads and serves it: the AWQ build on vLLM when
|
|
160
160
|
Docker and an NVIDIA GPU are present, otherwise the [GGUF build](https://huggingface.co/smoky1496/SpawnPoint-Coder-7B-GGUF)
|
|
161
161
|
(Q4_K_M, ~4.7 GB) in Ollama. Force one with `--backend vllm|ollama`.
|
|
162
162
|
|
|
@@ -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
|
|
@@ -132,7 +132,7 @@ Only what you asked for changes, and the level layout is kept. Prompts can be in
|
|
|
132
132
|
**The model.** [SpawnPoint-Coder-7B](https://huggingface.co/smoky1496/SpawnPoint-Coder-7B-AWQ) is a 7B model
|
|
133
133
|
fine-tuned to generate Godot 4 games through this pipeline: it writes the game design, tweaks and entity
|
|
134
134
|
edits as strict JSON, and the compiler turns that into Godot scenes and GDScript. It runs on a single 12 GB
|
|
135
|
-
GPU (AWQ 4-bit). v5
|
|
135
|
+
GPU (AWQ 4-bit). v5 added **side-scrolling shooters** (flight patterns, power-ups, a boss), **Vietnamese prompts read directly** and a small per-genre format instead of one big form; v5.1 fixes prompts that name the hero only indirectly ("a tank shooting monsters"). The downloadable AWQ build gets 88% of a sealed set of 16 human-written prompts for shooters and the v4 fixes fully right, and 80% of 30 human-written game ideas in English and Vietnamese (v4: 87% on those 30; the model card lists every number and where v5.1 is behind). The GGUF Q4_K_M build scores 83% on those 30. Older models still work with `SPAWNPOINT_BRIEF_FORMAT=v4`. It is tuned for the 2D game kinds Spawn Point builds; other genres are no better than a general 7B coder. `spawnpoint llm up` downloads and serves it: the AWQ build on vLLM when
|
|
136
136
|
Docker and an NVIDIA GPU are present, otherwise the [GGUF build](https://huggingface.co/smoky1496/SpawnPoint-Coder-7B-GGUF)
|
|
137
137
|
(Q4_K_M, ~4.7 GB) in Ollama. Force one with `--backend vllm|ollama`.
|
|
138
138
|
|
|
@@ -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):
|
|
@@ -19,7 +19,7 @@ IMAGE = os.environ.get("VLLM_IMAGE", "vllm/vllm-openai:v0.10.2") # CUDA 12.8: N
|
|
|
19
19
|
DEFAULT_MODEL = "smoky1496/SpawnPoint-Coder-7B-AWQ"
|
|
20
20
|
MODEL = os.environ.get("SPAWNPOINT_MODEL", DEFAULT_MODEL)
|
|
21
21
|
# This Spawn Point version speaks the v5 per-genre format: pin the weights that do, whatever the repo's main becomes.
|
|
22
|
-
REVISION = os.environ.get("SPAWNPOINT_MODEL_REVISION") or ("v5-release" if MODEL == DEFAULT_MODEL else "")
|
|
22
|
+
REVISION = os.environ.get("SPAWNPOINT_MODEL_REVISION") or ("v5.1-release" if MODEL == DEFAULT_MODEL else "")
|
|
23
23
|
SERVED = "SpawnPoint-Coder-7B"
|
|
24
24
|
OLLAMA_MODEL = os.environ.get("SPAWNPOINT_OLLAMA_MODEL", "hf.co/smoky1496/SpawnPoint-Coder-7B-GGUF:Q4_K_M")
|
|
25
25
|
OLLAMA_PORT = 11434
|
|
@@ -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
|
|