@inneranimalmedia/agentsam-sdk 2.6.7 → 2.6.9
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.
- package/README.md +37 -0
- package/apps/README.md +25 -0
- package/apps/cad-creator/shared/cad/package.json +1 -1
- package/apps/client-cms-editor/backend/package.json +4 -6
- package/apps/client-cms-editor/frontend/package.json +6 -8
- package/apps/client-cms-editor/frontend/tsconfig.json +27 -8
- package/apps/client-cms-editor/package.json +1 -1
- package/apps/client-cms-editor/shared/cms/package.json +4 -6
- package/docs/LOCAL_ENGINE_COMPUTE_AUDIT_PLAN.md +299 -0
- package/docs/REPO_FILE_MAP.txt +132 -0
- package/migrations/d1/0018_goap_control_plane_remaster.sql +40 -0
- package/migrations/d1/0019_agentsam_agent_run_plan_todo.sql +14 -0
- package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +20 -9
- package/migrations/runtime/0002_goap_blackboard_v1.sql +15 -0
- package/migrations/runtime/0004_agent_run_plan_linkage.sql +8 -0
- package/native/agentsam-machine/cli/Cargo.toml +8 -1
- package/native/agentsam-machine/cli/README.md +21 -0
- package/native/agentsam-machine/core/Cargo.toml +7 -0
- package/native/agentsam-machine/core/README.md +14 -0
- package/native/agentsam-machine/core/build.rs +33 -0
- package/native/agentsam-machine/core/contracts/source-types.v1.json +353 -0
- package/native/agentsam-machine/core/src/lib.rs +6 -0
- package/native/agentsam-machine/core/src/source_types.rs +2 -2
- package/package.json +31 -10
- package/packages/agentsam-brand/package.json +1 -1
- package/packages/agentsam-contracts/package.json +71 -20
- package/packages/agentsam-contracts/scripts/build.mjs +18 -0
- package/packages/agentsam-contracts/test/contracts.test.mjs +4 -1
- package/packages/agentsam-contracts/test/repository.test.mjs +4 -1
- package/packages/agentsam-contracts/tsconfig.build.json +10 -0
- package/packages/agentsam-errors/package.json +3 -2
- package/packages/agentsam-errors/src/index.js +1 -0
- package/packages/agentsam-errors/src/tool.js +56 -0
- package/packages/agentsam-errors/test/tool.test.mjs +58 -0
- package/packages/agentsam-goap/README.md +52 -0
- package/packages/agentsam-goap/package.json +37 -0
- package/packages/agentsam-goap/src/adapters/d1-sqlite.js +570 -0
- package/packages/agentsam-goap/src/adapters/memory.js +199 -0
- package/packages/agentsam-goap/src/contracts.js +226 -0
- package/packages/agentsam-goap/src/control-plane.js +112 -0
- package/packages/agentsam-goap/src/errors.js +157 -0
- package/packages/agentsam-goap/src/index.js +5 -0
- package/packages/agentsam-goap/src/world.js +202 -0
- package/packages/agentsam-goap/test/goap-control-plane.test.mjs +245 -0
- package/packages/agentsam-goap/test/world.test.mjs +79 -0
- package/packages/agentsam-knowledge/package.json +3 -2
- package/packages/agentsam-nav/package.json +1 -1
- package/packages/agentsam-queue-control/package.json +1 -1
- package/packages/agentsam-rapid-rust/src/main.rs +1 -0
- package/packages/agentsam-repository/package.json +3 -2
- package/packages/agentsam-repository/src/goap.js +13 -14
- package/packages/agentsam-repository/src/tickets.js +15 -22
- package/packages/agentsam-repository/test/goap-tickets-workspace-state.test.mjs +19 -8
- package/packages/agentsam-vault/package.json +8 -5
- package/packages/agentsam-workbench/package.json +44 -17
- package/packages/connectors/cloudflare/package.json +4 -2
- package/packages/heuristic-theme/package.json +1 -1
- package/packages/identity/package.json +4 -3
- package/packages/identity/tests/lane1-packed-consumer.test.mjs +10 -2
- package/packages/providers/completeful/package.json +1 -1
- package/packages/theme-church-site/README.md +2 -2
- package/packages/theme-church-site/package.json +3 -4
- package/packages/theme-church-site/src/index.js +1 -1
- package/packages/theme-church-site/test/theme.test.mjs +1 -1
- package/packages/theme-companions-site/README.md +2 -2
- package/packages/theme-companions-site/package.json +3 -4
- package/packages/theme-companions-site/src/index.js +1 -1
- package/packages/theme-companions-site/test/theme.test.mjs +1 -1
- package/packages/theme-floors-site/README.md +2 -2
- package/packages/theme-floors-site/package.json +3 -4
- package/packages/theme-floors-site/src/index.js +1 -1
- package/packages/theme-floors-site/test/theme.test.mjs +1 -1
- package/packages/theme-fuelnfree-site/README.md +2 -2
- package/packages/theme-fuelnfree-site/package.json +3 -4
- package/packages/theme-fuelnfree-site/src/index.js +1 -1
- package/packages/theme-fuelnfree-site/test/theme.test.mjs +1 -1
- package/packages/theme-handyman-site/README.md +2 -2
- package/packages/theme-handyman-site/package.json +3 -4
- package/packages/theme-handyman-site/src/index.js +1 -1
- package/packages/theme-handyman-site/test/theme.test.mjs +1 -1
- package/packages/theme-insurance-site/README.md +2 -2
- package/packages/theme-insurance-site/package.json +3 -4
- package/packages/theme-insurance-site/src/index.js +1 -1
- package/packages/theme-insurance-site/test/theme.test.mjs +1 -1
- package/packages/theme-scenes/package.json +1 -1
- package/packages/theme-shinshu-site/README.md +2 -2
- package/packages/theme-shinshu-site/package.json +3 -4
- package/packages/theme-shinshu-site/src/index.js +1 -1
- package/packages/theme-shinshu-site/test/theme.test.mjs +1 -1
- package/packages/work-graph/package.json +3 -2
- package/protocol/local-engine/benchmark.v1.schema.json +14 -0
- package/protocol/local-engine/engine.v1.schema.json +17 -0
- package/python/agentsam_sdk/repository/intelligence/discovery.py +27 -2
- package/python/agentsam_sdk/repository/intelligence/git.py +4 -0
- package/python/tests/test_repository_intelligence.py +30 -0
- package/src/cli/command-catalog.js +3 -1
- package/src/cli.js +20 -1
- package/src/commands/app.js +10 -0
- package/src/commands/engine.js +10 -0
- package/src/commands/goap-world.js +134 -0
- package/src/commands/goap.js +11 -4
- package/src/commands/machine-binary.js +33 -27
- package/src/commands/machine-runtime.js +266 -0
- package/src/commands/machine.js +155 -51
- package/src/commands/package.js +537 -0
- package/src/commands/plan-ledger.js +370 -0
- package/src/commands/plan.js +183 -0
- package/src/commands/runtime.js +25 -10
- package/src/commands/setup.js +30 -6
- package/src/commands/skill.js +78 -17
- package/src/commands/terminal.js +20 -8
- package/src/errors/contract.js +4 -4
- package/src/errors/diagnostic.js +1 -1
- package/src/errors/index.js +1 -1
- package/src/index.js +20 -0
- package/src/indexing/ingest/materials.js +237 -30
- package/src/knowledge/source.js +1 -1
- package/src/lib/setup/runtime.js +4 -2
- package/src/lib/slash-commands.js +1 -1
- package/src/local/runtime-store.js +24 -2
- package/src/local/sqlite.js +17 -0
- package/src/local-engine/assets.js +37 -0
- package/src/local-engine/audit.js +133 -0
- package/src/local-engine/benchmark.js +26 -0
- package/src/local-engine/contracts.js +101 -0
- package/src/local-engine/engines.js +142 -0
- package/src/local-engine/index.js +18 -0
- package/src/local-engine/runtime.js +39 -0
- package/src/sam/operations/package-audit.js +41 -0
- package/src/sam/seed.js +2 -0
- package/skills/grok-auth/SKILL.md +0 -110
- package/skills/grok-auth/agentsam.skill.json +0 -25
- package/skills/grok-auth/references/grok-identity.md +0 -64
- package/skills/grok-auth/references/per-user-data.md +0 -49
- package/skills/grok-auth/references/prewired-and-env.md +0 -54
- package/skills/grok-auth/references/session-ui.md +0 -133
- package/skills/grok-auth/references/sign-in-methods.md +0 -55
- package/skills/grok-auth/references/wiring.md +0 -71
- package/skills/grok-building-games/SKILL.md +0 -213
- package/skills/grok-building-games/agentsam.skill.json +0 -25
- package/skills/grok-building-games/references/3d-libs.md +0 -64
- package/skills/grok-building-games/references/ai-pathfinding.md +0 -122
- package/skills/grok-building-games/references/audio.md +0 -129
- package/skills/grok-building-games/references/babylon.md +0 -202
- package/skills/grok-building-games/references/collision-physics.md +0 -122
- package/skills/grok-building-games/references/ecs-architecture.md +0 -111
- package/skills/grok-building-games/references/game-feel-juice.md +0 -110
- package/skills/grok-building-games/references/genres/board-card-chess.md +0 -89
- package/skills/grok-building-games/references/genres/endless-runner.md +0 -83
- package/skills/grok-building-games/references/genres/fps.md +0 -105
- package/skills/grok-building-games/references/genres/platformer-2d.md +0 -97
- package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +0 -131
- package/skills/grok-building-games/references/genres/racing-kart.md +0 -106
- package/skills/grok-building-games/references/genres/topdown-twin-stick.md +0 -97
- package/skills/grok-building-games/references/genres/tower-defense.md +0 -84
- package/skills/grok-building-games/references/genres/voxel-minecraft.md +0 -89
- package/skills/grok-building-games/references/input.md +0 -139
- package/skills/grok-building-games/references/phaser.md +0 -277
- package/skills/grok-building-games/references/procedural-generation.md +0 -141
- package/skills/grok-building-games/references/save-persistence.md +0 -108
- package/skills/grok-building-games/references/threejs-foundational.md +0 -148
- package/skills/grok-controls/SKILL.md +0 -274
- package/skills/grok-controls/agentsam.skill.json +0 -25
- package/skills/grok-design-ui/SKILL.md +0 -122
- package/skills/grok-design-ui/agentsam.skill.json +0 -25
- package/skills/grok-design-ui/references/animations.md +0 -379
- package/skills/grok-design-ui/references/performance.md +0 -88
- package/skills/grok-design-ui/references/refined-ui.md +0 -384
- package/skills/grok-design-ui/references/surfaces.md +0 -247
- package/skills/grok-design-ui/references/typography.md +0 -123
- package/skills/grok-game-animation-frames/SKILL.md +0 -84
- package/skills/grok-game-animation-frames/agentsam.skill.json +0 -25
- package/skills/grok-game-asset-core/SKILL.md +0 -69
- package/skills/grok-game-asset-core/agentsam.skill.json +0 -25
- package/skills/grok-game-character-consistency/SKILL.md +0 -69
- package/skills/grok-game-character-consistency/agentsam.skill.json +0 -25
- package/skills/grok-game-tilesets/SKILL.md +0 -65
- package/skills/grok-game-tilesets/agentsam.skill.json +0 -25
- package/skills/grok-game-ui-icons/SKILL.md +0 -56
- package/skills/grok-game-ui-icons/agentsam.skill.json +0 -25
- package/skills/grok-generate2dmap/LICENSE +0 -21
- package/skills/grok-generate2dmap/SKILL.md +0 -120
- package/skills/grok-generate2dmap/SOURCE.md +0 -6
- package/skills/grok-generate2dmap/agentsam.skill.json +0 -25
- package/skills/grok-generate2dmap/references/deliverables.md +0 -101
- package/skills/grok-generate2dmap/references/layered-map-contract.md +0 -209
- package/skills/grok-generate2dmap/references/map-strategies.md +0 -341
- package/skills/grok-generate2dmap/references/object-production-gate.md +0 -24
- package/skills/grok-generate2dmap/references/pipeline.md +0 -149
- package/skills/grok-generate2dmap/references/prop-pack-contract.md +0 -174
- package/skills/grok-generate2dmap/references/side-scroll-stages.md +0 -29
- package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +0 -157
- package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +0 -369
- package/skills/grok-generate2dsprite/LICENSE +0 -21
- package/skills/grok-generate2dsprite/SKILL.md +0 -313
- package/skills/grok-generate2dsprite/SOURCE.md +0 -6
- package/skills/grok-generate2dsprite/agentsam.skill.json +0 -25
- package/skills/grok-generate2dsprite/references/modes.md +0 -124
- package/skills/grok-generate2dsprite/references/prompt-rules.md +0 -315
- package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +0 -1031
- package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +0 -109
- package/skills/grok-imagine/SKILL.md +0 -201
- package/skills/grok-imagine/agentsam.skill.json +0 -25
- package/skills/grok-multiplayer-p2p/SKILL.md +0 -111
- package/skills/grok-multiplayer-p2p/agentsam.skill.json +0 -25
- package/skills/grok-multiplayer-p2p/references/react-binding.md +0 -144
- package/skills/grok-multiplayer-p2p/references/signaling-relay.md +0 -269
- package/skills/grok-neon/SKILL.md +0 -157
- package/skills/grok-neon/agentsam.skill.json +0 -25
- package/skills/grok-og/SKILL.md +0 -102
- package/skills/grok-og/agentsam.skill.json +0 -25
- package/skills/grok-og/references/brand-pass.md +0 -53
- package/skills/grok-og/references/custom-card.md +0 -107
- package/skills/grok-og/references/favicon-and-icons.md +0 -48
- package/skills/grok-og/references/og-type-contract.md +0 -18
- package/skills/grok-og/references/placeholder-card.md +0 -21
- package/skills/grok-og/references/x-banner.md +0 -41
- package/skills/grok-threejs/SKILL.md +0 -67
- package/skills/grok-threejs/agentsam.skill.json +0 -25
- package/skills/grok-threejs/references/llms-full.txt +0 -2780
- package/skills/grok-video2dsprite/LICENSE +0 -21
- package/skills/grok-video2dsprite/SKILL.md +0 -236
- package/skills/grok-video2dsprite/SOURCE.md +0 -6
- package/skills/grok-video2dsprite/agentsam.skill.json +0 -25
- package/skills/grok-video2dsprite/references/pipeline.md +0 -90
- package/skills/grok-video2dsprite/references/prompt-rules.md +0 -63
- package/skills/grok-video2dsprite/scripts/video2dsprite.py +0 -490
- package/skills/grok-xai-api/SKILL.md +0 -152
- package/skills/grok-xai-api/agentsam.skill.json +0 -25
- package/test/account-session.test.mjs +0 -101
- package/test/agent-capabilities.test.mjs +0 -67
- package/test/app-authority-context.test.mjs +0 -32
- package/test/app-building-skills.test.mjs +0 -61
- package/test/apps-scaffold-contract.test.mjs +0 -115
- package/test/blender-cad.test.mjs +0 -146
- package/test/cad-docker.test.mjs +0 -96
- package/test/capabilities.test.mjs +0 -133
- package/test/cli/api-key-env-whoami.test.mjs +0 -129
- package/test/cli/catalog-authority.test.mjs +0 -64
- package/test/cli/codebaseindex-plan-ux.test.mjs +0 -37
- package/test/cli/eval-live.test.mjs +0 -219
- package/test/cli/go.test.mjs +0 -128
- package/test/cli/local-vault-and-provider-setup.test.mjs +0 -268
- package/test/cli/machine-command.test.mjs +0 -34
- package/test/cli/mcp-client.test.mjs +0 -256
- package/test/cli/preferences-runtime.test.mjs +0 -11
- package/test/cli/runtime-persist.test.mjs +0 -56
- package/test/cli/runtime-ui.test.mjs +0 -141
- package/test/cli/rust-command.test.mjs +0 -21
- package/test/cli/skill-npm-and-env.test.mjs +0 -52
- package/test/cli/status-actions.test.mjs +0 -88
- package/test/cli/wireframes-go-registry.test.mjs +0 -139
- package/test/cli-preferences.test.mjs +0 -46
- package/test/cloudflare-connector.test.mjs +0 -93
- package/test/cloudflare-runtime.test.mjs +0 -82
- package/test/context.test.mjs +0 -159
- package/test/credentials-audit.test.mjs +0 -113
- package/test/deploy-health-scan.test.mjs +0 -95
- package/test/deploy-receipt.test.mjs +0 -91
- package/test/dockerize.test.mjs +0 -93
- package/test/error-diagnostics.test.mjs +0 -124
- package/test/eval-context.test.mjs +0 -37
- package/test/execution-approvals.test.mjs +0 -27
- package/test/fixtures/cad/courtyard-house.json +0 -208
- package/test/fixtures/knowledge-rpc-worker.mjs +0 -16
- package/test/fixtures/project-authority/customer-app/.agentsam/app.json +0 -5
- package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +0 -1
- package/test/fixtures/project-authority/customer-app/wrangler.toml +0 -17
- package/test/gcloud-auth.test.mjs +0 -111
- package/test/go/build-source-identity.test.mjs +0 -31
- package/test/go/cloudflare-probe.test.mjs +0 -317
- package/test/go/distribution.test.mjs +0 -28
- package/test/google-cloud-connection.test.mjs +0 -83
- package/test/google-cloud-inventory.test.mjs +0 -64
- package/test/indexing-provider.test.mjs +0 -29
- package/test/init-options.test.mjs +0 -35
- package/test/integration/ai-access-onboarding.test.mjs +0 -47
- package/test/integration/app-command.test.mjs +0 -85
- package/test/integration/autorag-project-authority.integration.test.mjs +0 -51
- package/test/integration/autorag-runtime-discovery.test.mjs +0 -107
- package/test/integration/cad-discovery.test.mjs +0 -158
- package/test/integration/cad-docker-executor.test.mjs +0 -249
- package/test/integration/cad-execution.test.mjs +0 -184
- package/test/integration/cad-project-app.test.mjs +0 -31
- package/test/integration/cad-project-d1.test.mjs +0 -25
- package/test/integration/cad-project-native.test.mjs +0 -24
- package/test/integration/cad-project-workflow.test.mjs +0 -9
- package/test/integration/cad-project.test.mjs +0 -85
- package/test/integration/cli-help.test.mjs +0 -41
- package/test/integration/cms-app-scaffold.test.mjs +0 -77
- package/test/integration/cms-site-tenancy-contract.test.mjs +0 -268
- package/test/integration/codebaseindex-ingest.test.mjs +0 -255
- package/test/integration/core-client.integration.test.mjs +0 -55
- package/test/integration/database-hosted-honesty.test.mjs +0 -49
- package/test/integration/desktop-keychain-boundary.test.mjs +0 -45
- package/test/integration/error-runtime-rpc.test.mjs +0 -71
- package/test/integration/features-resolve.test.mjs +0 -147
- package/test/integration/hosted-work-host-authority.test.mjs +0 -47
- package/test/integration/icon-registry.test.mjs +0 -67
- package/test/integration/ingest-discover-models.test.mjs +0 -30
- package/test/integration/inspect-path-cli.test.mjs +0 -46
- package/test/integration/install-script.test.mjs +0 -110
- package/test/integration/inventory-core.test.mjs +0 -53
- package/test/integration/inventory-eligibility.test.mjs +0 -59
- package/test/integration/inventory-evidence.test.mjs +0 -125
- package/test/integration/knowledge-rpc.test.mjs +0 -112
- package/test/integration/local-fs.test.mjs +0 -113
- package/test/integration/local-provider-bridge.test.mjs +0 -65
- package/test/integration/local-studio-settings-production.test.mjs +0 -40
- package/test/integration/lockfile-sync.test.mjs +0 -26
- package/test/integration/merkle-cli.test.mjs +0 -61
- package/test/integration/merkle-persistence-identity.test.mjs +0 -48
- package/test/integration/plugins-cloudflare.integration.test.mjs +0 -28
- package/test/integration/provider-env-cli.test.mjs +0 -60
- package/test/integration/provider-factory.test.mjs +0 -197
- package/test/integration/repository-company-graph.test.mjs +0 -90
- package/test/integration/runtime-migrations.test.mjs +0 -87
- package/test/integration/runtime-status.integration.test.mjs +0 -227
- package/test/integration/sam-activity-recovery.test.mjs +0 -147
- package/test/integration/sam-decision.test.mjs +0 -584
- package/test/integration/sam-kernel.test.mjs +0 -99
- package/test/integration/sam-planning-astar.test.mjs +0 -279
- package/test/integration/scaffold-cloudflare.test.mjs +0 -46
- package/test/integration/skill-runtime.test.mjs +0 -240
- package/test/integration/storage-architecture.test.mjs +0 -154
- package/test/integration/store-discovery.test.mjs +0 -44
- package/test/integration/studio-fs-pty-e2e.test.mjs +0 -294
- package/test/integration/terminal-exec.integration.test.mjs +0 -86
- package/test/integration/theme-package-registry.test.mjs +0 -31
- package/test/integration/tool-runtime.test.mjs +0 -124
- package/test/integration/tool-schema.test.mjs +0 -59
- package/test/jr-dev-skill.test.mjs +0 -26
- package/test/knowledge-context-pack.test.mjs +0 -19
- package/test/knowledge-postgres.test.mjs +0 -40
- package/test/knowledge-service.test.mjs +0 -110
- package/test/knowledge.test.mjs +0 -206
- package/test/live/terminal-transport.live.test.mjs +0 -24
- package/test/local-sessions.test.mjs +0 -57
- package/test/local-studio-deploy.test.mjs +0 -83
- package/test/loopback-oauth.test.mjs +0 -53
- package/test/merkle-render.test.mjs +0 -31
- package/test/mini.test.mjs +0 -140
- package/test/model-catalog.test.mjs +0 -70
- package/test/models.test.mjs +0 -309
- package/test/npm10-lock.test.mjs +0 -29
- package/test/ollama.test.mjs +0 -137
- package/test/open-url.test.mjs +0 -64
- package/test/openai-responses.test.mjs +0 -155
- package/test/portable-context.test.mjs +0 -94
- package/test/project-config.test.mjs +0 -81
- package/test/project-rules.test.mjs +0 -44
- package/test/provider-credentials.test.mjs +0 -106
- package/test/rehydrate.test.mjs +0 -25
- package/test/release-hygiene.test.mjs +0 -42
- package/test/repository-snapshot-view.test.mjs +0 -112
- package/test/responses-runner.test.mjs +0 -465
- package/test/runtime-activity.test.mjs +0 -98
- package/test/sdk-worker-contract.test.mjs +0 -72
- package/test/security.test.mjs +0 -266
- package/test/setup-planner.test.mjs +0 -74
- package/test/setup-runtime.test.mjs +0 -51
- package/test/shell.test.mjs +0 -281
- package/test/skills.test.mjs +0 -22
- package/test/smoke.mjs +0 -122
- package/test/telemetry.test.mjs +0 -79
- package/test/terminal/local-pty.mock.test.mjs +0 -153
- package/test/terminal-machine-identity.test.mjs +0 -88
- package/test/theme-portability.test.mjs +0 -14
- package/test/tools-search.test.mjs +0 -73
- package/test/unit/website-assets-bindings.test.mjs +0 -60
- package/test/whoami-resume.test.mjs +0 -157
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
# Map Pipeline Selection
|
|
2
|
-
|
|
3
|
-
Choose maps by first selecting a product-level `map_mode`, then mapping that mode to pipeline axes. Avoid treating `hybrid` as a top-level strategy; most real 2D maps are hybrid combinations of visual art, objects, and collision metadata.
|
|
4
|
-
|
|
5
|
-
## Core Map Modes
|
|
6
|
-
|
|
7
|
-
Use these modes as the first decision layer:
|
|
8
|
-
|
|
9
|
-
- `tile_mode`: editable tile/grid maps. Use for Pokemon-like routes, top-down RPG towns, monster-taming exploration, platformer tilemaps, tactical maps, factory maps, and projects that already use Tiled, LDtk, Godot TileMap, Unity Tilemap, or Phaser tilemaps.
|
|
10
|
-
- `scene_mode`: foundation/base map plus separate props. Use for tower defense, survivors-like arenas, cozy/top-down showcase maps, visual adventure scenes, and base-map-plus-props requests.
|
|
11
|
-
- `side_scroll_mode`: parallax side-scroller scenes. Use for Mega Man-like, action platformer, Metroidvania side rooms, runners, side-view shooters, and brawlers.
|
|
12
|
-
- `grid_mode`: rule-heavy grid scenes. Use for tactical RPGs, factory/automation games, board/card battlers, build grids, terrain-cost maps, and resource maps.
|
|
13
|
-
- `room_chunk_mode`: modular room/chunk generation. Use for roguelike rooms, dungeon chunks, procedural level assembly, and Metroidvania room networks.
|
|
14
|
-
- `baked_scene_mode`: fixed visual backgrounds. Use only for title screens, visual novel backgrounds, point-and-click scenes, boss arena concept art, non-playable showcase images, or explicit flat-image requests.
|
|
15
|
-
|
|
16
|
-
Modes are not final file formats. After choosing a mode, still define `visual_model`, `runtime_object_model`, `collision_model`, and `engine_target`.
|
|
17
|
-
|
|
18
|
-
## Genre Routing Table
|
|
19
|
-
|
|
20
|
-
| User asks for | Default mode | Notes |
|
|
21
|
-
| --- | --- | --- |
|
|
22
|
-
| Pokemon-like, monster-taming RPG, top-down RPG route/town | `tile_mode` | Add props, encounter zones, exits, NPC/actor spawn markers, and collision. |
|
|
23
|
-
| Tower defense, Kingdom Rush-like | `scene_mode` | Add path metadata, build slots, spawn/exit hooks, blockers, and optional engine scene scaffold. |
|
|
24
|
-
| Survivors-like arena | `scene_mode` or `tile_mode` | Use sparse blockers, spawn zones/rings, camera bounds, and props. |
|
|
25
|
-
| Mega Man-like, side-view action, platformer, runner | `side_scroll_mode` | Use parallax layers plus platform/object/collision metadata. |
|
|
26
|
-
| Metroidvania | `side_scroll_mode` or `room_chunk_mode` | Use room/chunk exits and camera bounds; use tilemap when the engine expects grid collision. |
|
|
27
|
-
| Beat-em-up / brawler | `side_scroll_mode` | Use parallax/background depth plus a walkable belt polygon, enemy wave zones, and props. |
|
|
28
|
-
| Tactical RPG, grid strategy | `grid_mode` | Store terrain, move cost, defense/effects, unit slots, and collision. |
|
|
29
|
-
| Factory / automation | `grid_mode` | Store buildable cells, resource nodes, machine slots, belts/conveyors, and item lanes. |
|
|
30
|
-
| Card/board battler or UI-heavy game | `grid_mode` | Store board slots, UI zones, interaction regions, and background art. |
|
|
31
|
-
| Roguelike room, procedural dungeon, modular rooms | `room_chunk_mode` | Store chunk sockets, exits, collision, spawn markers, and seam validation. |
|
|
32
|
-
| Visual novel, title screen, fixed battle background | `baked_scene_mode` | Use only when no runtime editing/collision is needed. |
|
|
33
|
-
|
|
34
|
-
## Playable Map Default
|
|
35
|
-
|
|
36
|
-
When the user asks for a playable game map, level, stage, room, prototype, or engine scene, the runtime map must not be only a flattened generated image. A single baked image can be used as a background, in-world reference mockup, or QA preview, but playable output needs explicit runtime structure:
|
|
37
|
-
|
|
38
|
-
- top-down maps: ground/base layer plus separate props, object placement, collision, zones, exits, and spawn data
|
|
39
|
-
- side-view scrolling/action stages: background/parallax layers plus an in-world stage reference mockup, platform objects or walkable lanes, terrain chunks, foreground occluders, hazards, doors, pickups, checkpoints, scene hooks, camera bounds, and collision
|
|
40
|
-
- tile/editor workflows: generated or supplied tileset art plus tile layers, object layers, collision, zones, and engine-native scene/map data
|
|
41
|
-
|
|
42
|
-
If the request mentions "game", "playable", "prototype", "level", "stage", "side-view action", "side-scroller", "platformer", "Megaman-like", "RPG exploration", "tower defense", or engine integration, start from the nearest playable preset below instead of `baked_raster`.
|
|
43
|
-
|
|
44
|
-
## Mode Deliverable Contracts
|
|
45
|
-
|
|
46
|
-
### `tile_mode`
|
|
47
|
-
|
|
48
|
-
Deliver tileset art, map data, tile layers, object layers, collision, exits, and a preview. Good output formats include Tiled JSON, LDtk, Godot TileMap, Unity Tilemap, Phaser tilemaps, or project-native JSON.
|
|
49
|
-
|
|
50
|
-
Use `generate2dsprite` only when reusable transparent props, NPCs, animated objects, or non-tile scene objects are actually needed. A pure terrain map can stay tileset + map data + collision metadata.
|
|
51
|
-
|
|
52
|
-
### `scene_mode`
|
|
53
|
-
|
|
54
|
-
Deliver a foundation-only base map, an in-world dressed reference, final separate props/interactables/blockers, placement metadata, collision/zones/exits/camera bounds, and a composed QA preview.
|
|
55
|
-
|
|
56
|
-
This is the default for beautiful top-down demos, tower defense scenes, survivors-like arenas, and base-map-plus-props workflows.
|
|
57
|
-
|
|
58
|
-
### `side_scroll_mode`
|
|
59
|
-
|
|
60
|
-
Deliver scenery-only parallax layers plus separate playable foreground objects. Typical visual layers:
|
|
61
|
-
|
|
62
|
-
- `sky`
|
|
63
|
-
- `far_bg`
|
|
64
|
-
- `mid_bg`
|
|
65
|
-
- `near_bg`
|
|
66
|
-
- optional `foreground_overlay`
|
|
67
|
-
|
|
68
|
-
Then deliver platform tiles/objects, terrain chunks, hazards, doors, checkpoints, pickups, exits, camera bounds, scroll factors, collision, scene hooks, and a QA preview. Parallax layers create depth; they are not collision sources.
|
|
69
|
-
|
|
70
|
-
Choose one `stage_canvas` before generation. The primary parallax plates, stage reference, and QA preview must share the same pixel dimensions, aspect ratio, camera framing, horizon, and top-left anchor. Default to the project camera aspect ratio; when unknown, use a 16:9 side-scroller canvas such as `1536x864`.
|
|
71
|
-
|
|
72
|
-
For brawlers, use the same mode but replace jump-platform geometry with a walkable belt polygon, foreground/background props, enemy wave zones, and camera locks.
|
|
73
|
-
|
|
74
|
-
### `grid_mode`
|
|
75
|
-
|
|
76
|
-
Deliver grid dimensions, cell size, tiles/cells, terrain metadata, walkable/buildable flags, movement cost, resource or terrain effects, collision, object layers, and a preview with optional debug overlay.
|
|
77
|
-
|
|
78
|
-
Prioritize validation over beauty. The map must be readable by game logic.
|
|
79
|
-
|
|
80
|
-
### `room_chunk_mode`
|
|
81
|
-
|
|
82
|
-
Deliver reusable room/chunk art or tile/object layers, chunk dimensions, exits, connection sockets, collision, spawn markers, camera bounds, and seam validation. If multiple chunks exist, also deliver an assembled layout preview.
|
|
83
|
-
|
|
84
|
-
### `baked_scene_mode`
|
|
85
|
-
|
|
86
|
-
Deliver a fixed image plus optional coarse collision/zones only. Do not use this mode for editable or playable maps unless the user explicitly requests a flat background.
|
|
87
|
-
|
|
88
|
-
## Visual Asset Source
|
|
89
|
-
|
|
90
|
-
Default to built-in image generation for visual assets. Base maps, in-world reference mockups, dressed references, stage references, prop sheets, prop sprites, tileset art, parallax layers, and battle backgrounds should come from `imagine_text_to_image` unless the user supplies existing art or explicitly asks for procedural placeholders.
|
|
91
|
-
|
|
92
|
-
Scripts may slice, assemble, chroma-key, validate, compose previews, create metadata, and emit engine files. They must not replace image generation as the creative art source for final map visuals. Engine outputs such as Godot `.tscn`, Tiled JSON, LDtk data, or Unity placement data should wire up image-generated or user-supplied assets.
|
|
93
|
-
|
|
94
|
-
## In-World Reference Mockups
|
|
95
|
-
|
|
96
|
-
Use an in-world reference mockup whenever object placement must be visually coherent but the final runtime needs separate objects.
|
|
97
|
-
|
|
98
|
-
- Top-down layered maps use `assets/map/<name>-dressed-reference.png`: base map plus proposed props rendered as natural game-world objects.
|
|
99
|
-
- Side-view scrolling/action stages use `assets/map/<name>-stage-reference.png`: background/parallax base plus proposed platforms or walkable lanes, hazards, pickups, doors, checkpoints, gates, and exits rendered as natural game-world objects or subtle in-world blockout geometry.
|
|
100
|
-
- Reference mockups must preserve exact camera, framing, dimensions, terrain/background, entrances, exits, and collision-relevant boundaries from the base image.
|
|
101
|
-
- Reference mockups should include at most 9 distinct visible runtime prop/object candidates unless the user explicitly asks for a larger pass. Repeated placements of the same object count as one candidate and should be repeated later in placement metadata.
|
|
102
|
-
- Reference mockups are planning artifacts only. Do not ship them as runtime maps, infer collision from their pixels, or cut final platform/prop assets out of them.
|
|
103
|
-
- Final output must still use separate props/platform objects, scene-object metadata, collision, zones, scene hooks, tile/object layers, or engine-native nodes.
|
|
104
|
-
- Character, enemy, boss, projectile, player, NPC, and animation sprites are outside the map deliverable. Store actor spawn markers and encounter/arena hooks as metadata only, then use `$generate2dsprite` if those actor assets are needed.
|
|
105
|
-
- Do not create annotated diagrams. Reference mockups must not contain circles, arrows, outlines, labels, numbers, UI callouts, text, captions, legends, highlighted boxes, highlighted zones, measurement lines, or explanatory overlays.
|
|
106
|
-
- Do not stop after the reference mockup. Reference-only output is incomplete unless the user explicitly asked for a reference-only concept image.
|
|
107
|
-
|
|
108
|
-
## Visual Reference Handoff
|
|
109
|
-
|
|
110
|
-
Reference mockups must be generated from the actual base/background image, passed to the image model as a real reference:
|
|
111
|
-
|
|
112
|
-
1. Save the base/background image first and keep its sandbox `file_path`.
|
|
113
|
-
2. Pass that `file_path` on the reference-mockup `imagine_image_to_image` call. Also call `read_file` on the saved image so you can see it yourself.
|
|
114
|
-
3. The image prompt must explicitly say to use the provided reference image as the visual reference.
|
|
115
|
-
4. The prompt must name concrete features from the viewed image to preserve: camera framing, dimensions, horizon, terrain boundaries, road/water shapes, entrances, exits, major silhouettes, and landmark positions.
|
|
116
|
-
5. The prompt must ask for an in-world reference mockup, not an annotated planning diagram.
|
|
117
|
-
6. The prompt should render only visible scene objects: props, platforms, terrain chunks, hazards, gates, pickups, checkpoints, doors, exits, foreground occluders, or subtle blockout geometry.
|
|
118
|
-
7. Non-visual data such as player spawns, actor spawn markers, camera bounds, patrol hints, and encounter/arena triggers must be written later as scene-hook metadata, not drawn into the image.
|
|
119
|
-
|
|
120
|
-
Do not rely on filenames, paths, vague phrasing such as "based on this map", or the image merely being visible in conversation. If the base/background is not wired into the call as a sandbox `file_path`, stop and pass it before generating the dressed reference or stage reference.
|
|
121
|
-
|
|
122
|
-
## Layer Separation Contract
|
|
123
|
-
|
|
124
|
-
For any playable or editable layered map, the first generated base/background/foundation image must not bake in objects that the runtime should control separately. This applies across top-down RPG maps, monster-taming maps, tactical arenas, tower-defense lanes, side-view platformers, parallax stages, tile/editor workflows, clean HD, pixel-inspired, and retro pixel art.
|
|
125
|
-
|
|
126
|
-
Allowed in the base/background/foundation layer:
|
|
127
|
-
|
|
128
|
-
- top-down or 3/4 maps: ground material, paths, roads, water, cliffs, low terrain markings, floor patterns, and terrain boundaries
|
|
129
|
-
- tactical or tower-defense maps: ground, lanes, roads, build pads, lane markings, terrain zones, and non-interactive floor detail
|
|
130
|
-
- side-view stages: sky, far/mid scenery, distant buildings, distant terrain silhouettes, atmosphere, and non-colliding depth
|
|
131
|
-
- tilemaps: tileset art and editable tile layers, not a flattened full-scene background
|
|
132
|
-
|
|
133
|
-
Not allowed in the runtime base/background/foundation layer unless the user explicitly asks for a single baked image:
|
|
134
|
-
|
|
135
|
-
- tall props, buildings, trees, rocks, crates, signs, doors, gates, pickups, chests, checkpoints, hazards, traps, turrets, tower objects, ladders, foreground occluders, destructibles, actors, enemies, NPCs, bosses, player characters, UI, labels, or any object that needs collision, interaction, replacement, reuse, y-sorting, animation, engine editing, or independent render order
|
|
136
|
-
|
|
137
|
-
If a generated base/background contains runtime-controlled objects, regenerate a cleaner foundation-only base or demote that image to a concept/reference artifact. Proposed objects belong in the in-world reference mockup, then in final separate props, platform objects, object layers, tile layers, collision, zones, and scene-hook metadata.
|
|
138
|
-
|
|
139
|
-
## Side-Scroll Parallax Contract
|
|
140
|
-
|
|
141
|
-
`side_scroll_mode` uses parallax background as a core stage-building method. It should produce a layered depth stack, not one crowded full-stage painting.
|
|
142
|
-
|
|
143
|
-
Typical layer responsibilities:
|
|
144
|
-
|
|
145
|
-
- `sky`: sky, moon/sun, far atmosphere; scroll factor near `0.0` to `0.1`.
|
|
146
|
-
- `far_bg`: mountains, skyline, far castle/factory silhouettes; slow scroll factor.
|
|
147
|
-
- `mid_bg`: readable landmarks and large distant structures; medium scroll factor.
|
|
148
|
-
- `near_bg`: near non-colliding scenery behind gameplay objects; faster scroll factor but still not collision.
|
|
149
|
-
- `foreground_overlay`: optional fog, chains, pipes, silhouettes, smoke, or framing elements that render above actors but do not define gameplay collision.
|
|
150
|
-
|
|
151
|
-
Generate parallax layers as scenery-only art. Platforms, walkable floors, ladders, hazards, gates, doors, pickups, checkpoints, and collision-critical props belong in platform/object/tile layers, not in parallax backgrounds.
|
|
152
|
-
|
|
153
|
-
All primary parallax plates must use the same `stage_canvas`. If image generation returns inconsistent dimensions, regenerate or normalize the generated layer before runtime use. Do not rely on the engine to guess scaling between mismatched layer sizes. Repeatable strips may have different source widths only when metadata records display size, anchor, scale, repeat axis, and loop policy.
|
|
154
|
-
|
|
155
|
-
The final side-scroller should feel deeper than a single flat image: distant layers move slowly, near layers move faster, and gameplay objects stay on their own runtime layer.
|
|
156
|
-
|
|
157
|
-
## Side-View Background Separation
|
|
158
|
-
|
|
159
|
-
For playable side-view scrolling/action stages, the general layer separation contract becomes stricter: the background is scenery-only. It should be a far/mid depth plate that separate runtime objects can stack over cleanly.
|
|
160
|
-
|
|
161
|
-
Allowed in the background:
|
|
162
|
-
|
|
163
|
-
- sky, clouds, mountains, distant city/castle silhouettes, far walls, smoke, weather, atmospheric depth, and non-colliding distant landmarks
|
|
164
|
-
- optional separate parallax midground/foreground layers when they are not gameplay geometry
|
|
165
|
-
|
|
166
|
-
Not allowed in the runtime background:
|
|
167
|
-
|
|
168
|
-
- walkable floors, platform tops, terrain chunks, ladders, spike traps, pickups, crates, doors, gates, checkpoints, near fences, near walls, foreground barricades, enemies, player characters, UI, labels, or any object that should be edited, collided with, reused, or rendered independently
|
|
169
|
-
|
|
170
|
-
If a generated side-view background contains obvious foreground gameplay geometry, reject it as a runtime background and regenerate a cleaner scenery-only background. Do not set flattened `stage-reference` or `stage-preview` images as the runtime background.
|
|
171
|
-
|
|
172
|
-
## Post-Reference Object Production
|
|
173
|
-
|
|
174
|
-
After a dressed reference or stage reference exists, continue into final runtime production:
|
|
175
|
-
|
|
176
|
-
1. Make both the original base/background and the dressed/stage reference mockup visible in conversation context. For local files, call `read_file` on both images immediately before object-list extraction or object/prop generation.
|
|
177
|
-
2. Create a concrete object list from the visible reference mockup while cross-checking the original base/background: object id, type, approximate position, approximate size, render layer, collision role, and asset strategy.
|
|
178
|
-
3. For each visible runtime object, generate a separate transparent asset, extract it from a generated pack, or represent it as a tile/object layer when the engine/editor pipeline is tile-based.
|
|
179
|
-
4. For object/prop generation that must match the map style, pass the base/background and/or reference mockup sandbox paths, and state in the prompt that the provided reference images are the visual context. The generated asset must match the original map style and correspond to an object visible in the reference mockup.
|
|
180
|
-
5. Generate or define the final props, platforms, terrain chunks, hazards, pickups, doors, gates, checkpoints, exits, foreground occluders, and other visible scene objects. Do not rely on the reference image as the runtime art for these objects.
|
|
181
|
-
6. Write placement metadata, object layers, collision data, scene hooks, camera bounds, exits, and zones.
|
|
182
|
-
7. Compose a QA preview from the original base/background plus the final runtime objects.
|
|
183
|
-
|
|
184
|
-
For playable maps, layered maps with props, side-view stages, engine scenes, and requests for separate/editable props, stopping after the reference mockup is a failed/incomplete run.
|
|
185
|
-
|
|
186
|
-
For prop packs or object packs generated after a reference mockup, derive the object list and prompt from the visible reference mockup and original base/background. Do not generate generic props from memory or filenames.
|
|
187
|
-
|
|
188
|
-
## Visual Model
|
|
189
|
-
|
|
190
|
-
### `baked_raster`
|
|
191
|
-
|
|
192
|
-
Use when:
|
|
193
|
-
|
|
194
|
-
- the scene is static, decorative, fixed-screen, or visual-first
|
|
195
|
-
- the game needs a battle background, title scene, menu backdrop, cutscene, or quick prototype
|
|
196
|
-
- collision is absent or can be represented by a few invisible shapes
|
|
197
|
-
- the user explicitly asks for a single flat image or background
|
|
198
|
-
|
|
199
|
-
Deliver one image generated or edited through image generation, plus optional collision/zones metadata.
|
|
200
|
-
|
|
201
|
-
Do not use this as the final runtime map for platformers, RPG exploration, tower defense, or any scene where props, platforms, hazards, exits, or interactables must be edited, collided with, reused, or rendered independently.
|
|
202
|
-
|
|
203
|
-
### `layered_raster`
|
|
204
|
-
|
|
205
|
-
Use when:
|
|
206
|
-
|
|
207
|
-
- a hand-painted or generated base map is best, but tall objects need collision, occlusion, interaction, reuse, or later editing
|
|
208
|
-
- the scene is an RPG town, shrine, dungeon room, field, interior, or monster-taming exploration map
|
|
209
|
-
- y-sorted actors should walk in front of and behind props
|
|
210
|
-
|
|
211
|
-
Deliver an image-generated ground-only base image, separate image-generated props, placement metadata, collision/zones metadata, and a flattened preview.
|
|
212
|
-
|
|
213
|
-
The base image must be foundation-only: terrain, roads, water, floor markings, and boundaries are allowed; tall props, buildings, trees, signs, doors, chests, pickups, actors, hazards, and occluders must be separate assets or object/tile layers.
|
|
214
|
-
|
|
215
|
-
### `tilemap`
|
|
216
|
-
|
|
217
|
-
Use when:
|
|
218
|
-
|
|
219
|
-
- the engine/editor already uses Tiled, LDtk, Phaser tilemaps, Godot TileMap, Unity Tilemap, or similar tooling
|
|
220
|
-
- the user asks for tiles, tilesets, tile collision, autotiling, or editable grid-perfect maps
|
|
221
|
-
- procedural generation, large maps, or editor workflows matter
|
|
222
|
-
|
|
223
|
-
Deliver image-generated or user-supplied tileset images, engine-native map data, tile layers, object layers, and tile/object collision. Do not script-draw the tileset as final art unless the user explicitly asked for procedural placeholders.
|
|
224
|
-
|
|
225
|
-
Do not flatten tile layers, object layers, collision-relevant props, pickups, doors, hazards, or interactables into one runtime background image.
|
|
226
|
-
|
|
227
|
-
### `layered_tilemap`
|
|
228
|
-
|
|
229
|
-
Use when:
|
|
230
|
-
|
|
231
|
-
- the game needs multiple tile layers such as ground, decor, walls, overhead, and foreground
|
|
232
|
-
- actors need to pass under selected tile layers
|
|
233
|
-
- collision and triggers are tile/object-layer driven
|
|
234
|
-
|
|
235
|
-
Deliver image-generated or user-supplied tileset art, layered tile data, and a render-order contract.
|
|
236
|
-
|
|
237
|
-
### `parallax_layers`
|
|
238
|
-
|
|
239
|
-
Use when:
|
|
240
|
-
|
|
241
|
-
- the map is a side-scroller, platformer, runner, shooter, side-view brawler, scrolling action stage, or scrolling backdrop
|
|
242
|
-
- background depth matters more than top-down collision
|
|
243
|
-
|
|
244
|
-
Deliver image-generated background, midground, foreground, and scroll-speed metadata.
|
|
245
|
-
|
|
246
|
-
For a playable side-view scrolling/action stage, parallax layers are only the scenery. Generate an in-world stage reference mockup from the visible background using the visual reference handoff, then continue through post-reference object production. The playable stage still needs separate runtime objects for platforms or walkable lanes, terrain chunks, hazards, pickups, doors, checkpoints, gates, exits, scene hooks, camera bounds, and explicit collision.
|
|
247
|
-
|
|
248
|
-
The runtime background for this preset must be scenery-only. Put collidable foreground geometry and reusable gameplay objects into `platform_objects`, tile/object layers, or engine-native nodes instead of baking them into the background image.
|
|
249
|
-
|
|
250
|
-
For `side_scroll_mode`, use named parallax layers (`sky`, `far_bg`, `mid_bg`, `near_bg`, optional `foreground_overlay`) plus explicit scroll factors, shared `stage_canvas`, and loop/repeat policy. Do not treat a single scenery background as a complete side-scroller background stack unless the user explicitly asks for a flat/non-parallax background.
|
|
251
|
-
|
|
252
|
-
## Runtime Object Model
|
|
253
|
-
|
|
254
|
-
- `none`: the map is just a background or tile layers.
|
|
255
|
-
- `separate_props`: props are independent sprites but do not require y-sort.
|
|
256
|
-
- `platform_objects`: platforms, walkable lanes, terrain chunks, walls, hazards, foreground blockers, and other collidable stage geometry are independent runtime objects with placement and collision data.
|
|
257
|
-
- `y_sorted_props`: props and actors sort by base `y`; use for top-down RPG scenes.
|
|
258
|
-
- `interactive_scene_objects`: doors, pickups, switches, checkpoints, gates, destructibles, signs, exits, and other non-character scene objects with interaction or state.
|
|
259
|
-
- `foreground_occluders`: selected overlays always draw over actors.
|
|
260
|
-
- `scene_hooks`: metadata-only markers such as player spawn, actor spawn markers, encounter zones, patrol hints, arena triggers, camera bounds, exit links, and checkpoint ids. These do not require generated actor art.
|
|
261
|
-
|
|
262
|
-
Use the simplest model that can express collision and occlusion correctly.
|
|
263
|
-
|
|
264
|
-
## Collision Model
|
|
265
|
-
|
|
266
|
-
- `none`: visual-only maps and simple backgrounds.
|
|
267
|
-
- `coarse_shapes`: a few rectangles/ellipses for fixed arenas or decorative maps.
|
|
268
|
-
- `precise_shapes`: explicit blockers and walk bounds for layered RPG maps.
|
|
269
|
-
- `tile_collision`: collision stored per tile or tile layer.
|
|
270
|
-
- `polygon_walkmesh`: irregular walkable regions or constrained path maps.
|
|
271
|
-
- `trigger_zones`: encounter/rest/exit/dialogue areas; often combined with another collision model.
|
|
272
|
-
|
|
273
|
-
Do not infer collision from prop PNG bounds automatically. Use explicit blockers for prop bases and explicit walkable zones for navigation.
|
|
274
|
-
|
|
275
|
-
## Engine Target
|
|
276
|
-
|
|
277
|
-
- `raw_canvas`: use PNG assets, JSON metadata, and project-specific render code.
|
|
278
|
-
- `Phaser`: prefer atlas/tilemap JSON when the project already uses Phaser loaders; visual assets still come from image generation or existing art.
|
|
279
|
-
- `Tiled_JSON`: produce Tiled-compatible tilesets, layers, objects, and custom properties around image-generated or existing tileset art.
|
|
280
|
-
- `LDtk`: produce or adapt to LDtk entity/layer concepts if the project uses LDtk, while preserving image-generated or existing art as the visual source.
|
|
281
|
-
- `Godot_TileMap`: produce tile layers and scene metadata matching Godot's structure after generating or selecting the visual tileset art.
|
|
282
|
-
- `Unity_Tilemap`: produce tileset/sprite assets and placement data for Unity workflows after generating or selecting the visual art.
|
|
283
|
-
- project-native: preserve existing schema when a game already has one.
|
|
284
|
-
|
|
285
|
-
## Presets
|
|
286
|
-
|
|
287
|
-
### Fixed Battle Background
|
|
288
|
-
|
|
289
|
-
- `visual_model`: `baked_raster`
|
|
290
|
-
- `runtime_object_model`: `none`
|
|
291
|
-
- `collision_model`: `none` or `coarse_shapes`
|
|
292
|
-
- Typical deliverables: one PNG, optional zones.
|
|
293
|
-
|
|
294
|
-
### RPG Exploration Scene
|
|
295
|
-
|
|
296
|
-
- `visual_model`: `layered_raster`
|
|
297
|
-
- `runtime_object_model`: `y_sorted_props`
|
|
298
|
-
- `collision_model`: `precise_shapes + trigger_zones`
|
|
299
|
-
- Typical deliverables: base map, prop images, placement JSON, collision JSON, preview.
|
|
300
|
-
|
|
301
|
-
### Monster Grassland
|
|
302
|
-
|
|
303
|
-
- `visual_model`: `layered_raster`
|
|
304
|
-
- `runtime_object_model`: `y_sorted_props + interactive_scene_objects + scene_hooks`
|
|
305
|
-
- `collision_model`: `precise_shapes + trigger_zones`
|
|
306
|
-
- Good prop-pack candidates: rocks, shrubs, flowers, signs, small logs.
|
|
307
|
-
|
|
308
|
-
### Tile-Based Dungeon
|
|
309
|
-
|
|
310
|
-
- `visual_model`: `layered_tilemap`
|
|
311
|
-
- `runtime_object_model`: `interactive_scene_objects + scene_hooks`
|
|
312
|
-
- `collision_model`: `tile_collision + trigger_zones`
|
|
313
|
-
- Use only when the engine/editor supports tilemaps.
|
|
314
|
-
|
|
315
|
-
### Side-View Scrolling Stage
|
|
316
|
-
|
|
317
|
-
- `visual_model`: `parallax_layers`
|
|
318
|
-
- `runtime_object_model`: `platform_objects + interactive_scene_objects + scene_hooks + foreground_occluders`
|
|
319
|
-
- `collision_model`: `precise_shapes` or engine-native platform/object collision
|
|
320
|
-
- Typical deliverables: shared `stage_canvas`, separate parallax layers (`sky`, `far_bg`, `mid_bg`, `near_bg`, optional `foreground_overlay`) matching that canvas, scroll factors, in-world stage reference mockup, separate platform/terrain sprites, foreground pieces, hazards, pickups, doors, checkpoints, gates, exits, scene-hook metadata, camera bounds, collision metadata, and a stage preview.
|
|
321
|
-
|
|
322
|
-
### Side-View Action / Platformer Stage
|
|
323
|
-
|
|
324
|
-
- `visual_model`: `parallax_layers` or `layered_tilemap` if the engine/editor already uses tiles
|
|
325
|
-
- `runtime_object_model`: `platform_objects + interactive_scene_objects + scene_hooks + foreground_occluders`
|
|
326
|
-
- `collision_model`: `precise_shapes` or engine-native platform/object collision
|
|
327
|
-
- Applies to Megaman-like, Castlevania-like, Contra-like, side-view action, runner, shooter, and brawler stages across pixel art, clean HD, and project-native styles.
|
|
328
|
-
- Required deliverables: shared `stage_canvas`, background/parallax art that matches that canvas, in-world stage reference mockup, separate platform or terrain-chunk sprites, hazard sprites, scene object placement data, scene-hook metadata, pickups/doors/checkpoints/gates when present, collision data, camera bounds, and a QA preview.
|
|
329
|
-
- The stage reference should plan no more than 9 distinct visible object candidates unless the user requests a larger pass. Use repeats in metadata rather than asking the image model to invent many unrelated props at once.
|
|
330
|
-
- Anti-pattern: one generated full-stage PNG plus collision rectangles. That is a background with hitboxes, not a playable stage.
|
|
331
|
-
|
|
332
|
-
## Escalation Heuristic
|
|
333
|
-
|
|
334
|
-
Start with the smallest playable bundle that works:
|
|
335
|
-
|
|
336
|
-
1. non-playable background: `baked_scene_mode`
|
|
337
|
-
2. beautiful top-down or tower-defense demo: `scene_mode`
|
|
338
|
-
3. editable top-down/platform/grid map: `tile_mode`
|
|
339
|
-
4. playable side-view scrolling/action stage: `side_scroll_mode`
|
|
340
|
-
5. tactical/factory/board rules-first scene: `grid_mode`
|
|
341
|
-
6. procedural/modular room assembly: `room_chunk_mode`
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Post-Reference Object Production Gate
|
|
2
|
-
|
|
3
|
-
An in-world reference mockup is never the final deliverable by itself. After generating `dressed-reference` or `stage-reference`, continue with:
|
|
4
|
-
|
|
5
|
-
1. Make both images visible in conversation context before any object/prop generation:
|
|
6
|
-
- the original `base` or `background`
|
|
7
|
-
- the generated `dressed-reference` or `stage-reference` mockup
|
|
8
|
-
2. If either image is a local file, call `read_file` on it immediately before writing object lists or object/prop image prompts. Do not rely on file paths alone.
|
|
9
|
-
3. Create a concrete object list from the visible reference mockup while cross-checking the original base/background: object id, type, approximate position, approximate size, render layer, collision role, and asset strategy.
|
|
10
|
-
- If the reference contains more than 9 distinct visible runtime object candidates, reduce the generated asset list to the 9 most gameplay-relevant candidates first, then represent extra repeats or low-value decorations through placement metadata or a later asset pass.
|
|
11
|
-
- Classify every object before generation. Compact decorative props may be batched; wide/long, tall/large, collision-bearing, and tileset/strip objects must use one-by-one, strip, custom wide pack, tile/object-layer, or engine-native strategies.
|
|
12
|
-
4. For each visible runtime object, choose exactly one asset strategy:
|
|
13
|
-
- generate a separate transparent asset with `$generate2dsprite` or direct `imagine_text_to_image`
|
|
14
|
-
- extract it from a generated prop/object pack
|
|
15
|
-
- represent it as a tile/object layer if the engine/editor pipeline is tile-based
|
|
16
|
-
5. For every object/prop generation that must match the map style, pass the base/background and/or reference mockup via `imagine_image_to_image` (`file_path`) or `imagine_reference_to_image` (path list for 2+) — and say in the prompt that the provided reference images are the visual context. The generated asset must match the original map style and correspond to an object visible in the reference mockup.
|
|
17
|
-
6. Generate or define the final platforms, terrain chunks, props, hazards, pickups, doors, gates, checkpoints, exits, foreground occluders, and other visible scene objects. Do not skip this step just because the reference mockup already contains them visually.
|
|
18
|
-
7. Write placement metadata such as `data/<name>-props.json`, `data/<name>-objects.json`, engine-native object layers, or tile/object data.
|
|
19
|
-
8. Write collision, zones, scene hooks, camera bounds, and exits as structured metadata.
|
|
20
|
-
9. Compose a QA preview from the original base/background plus final runtime objects.
|
|
21
|
-
|
|
22
|
-
Reference-only output is incomplete for any playable map, layered map with props, side-view stage, engine scene, or request that asks for separate props/editable objects. Only stop at a reference mockup if the user explicitly asks for a reference-only concept image.
|
|
23
|
-
|
|
24
|
-
For prop packs or object packs generated after a reference mockup, the prompt must be derived from the visible reference mockup and original base/background, not from memory or filenames. It should list the exact objects being generated and preserve the art style, lighting, perspective, and scale cues from the original base/background.
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
# Map Pipeline: parameters, workflow, and scripts
|
|
2
|
-
|
|
3
|
-
Read this once the `map_mode` is chosen and you are about to produce assets.
|
|
4
|
-
|
|
5
|
-
## Parameter Contract
|
|
6
|
-
|
|
7
|
-
User-facing parameters may be stated in natural language:
|
|
8
|
-
|
|
9
|
-
- `map_mode`: tile_mode | scene_mode | side_scroll_mode | grid_mode | room_chunk_mode | baked_scene_mode
|
|
10
|
-
- `map_kind`: overworld | town | dungeon | shrine | arena | battle_bg | side_scroller | side_view_action | platformer | metroidvania | brawler | tower_defense | survivors_like | tactical | factory | card_board | room_chunk
|
|
11
|
-
- `visual_model`: baked raster | layered raster | tilemap | layered tilemap | parallax
|
|
12
|
-
- `size`: pixel dimensions, tile dimensions, or camera-relative size
|
|
13
|
-
- `stage_canvas`: exact pixel dimensions and aspect ratio for side-scroll/parallax layers, references, and previews
|
|
14
|
-
- `perspective`: top-down | 3/4 top-down | side-view | isometric-like
|
|
15
|
-
- `art_style`: clean_hd | pixel_inspired | retro_pixel | hand_painted | project-native
|
|
16
|
-
- `visual_asset_source`: imagine_text_to_image | existing_assets | procedural_placeholder
|
|
17
|
-
- `collision_precision`: none | coarse | precise | tile | walkmesh
|
|
18
|
-
- `prop_generation`: none | one_by_one | prop_pack_2x2 | prop_pack_3x3 | prop_pack_4x4 | platform_strip_1x3 | platform_strip_1x4 | custom_wide_pack
|
|
19
|
-
- `output_format`: PNG only | layered preview | manifest JSON | engine-native map data
|
|
20
|
-
|
|
21
|
-
When unspecified:
|
|
22
|
-
|
|
23
|
-
- Use `imagine_text_to_image` as the visual asset source.
|
|
24
|
-
- Infer `map_mode` from genre and editing needs before selecting lower-level axes.
|
|
25
|
-
- Use `tile_mode` for Pokemon-like, top-down RPG, monster-taming, editor/grid-perfect, or tilemap requests.
|
|
26
|
-
- Use `scene_mode` for tower defense, survivors-like, cozy/top-down showcase maps, and base-map-plus-props requests.
|
|
27
|
-
- Use `side_scroll_mode` for side-scrollers, platformers, runners, side-view action, brawlers, Metroidvania side rooms, Mega Man-like, Castlevania-like, Contra-like, and parallax background requests.
|
|
28
|
-
- For `side_scroll_mode`, choose a canonical `stage_canvas` before image generation. Use the project camera/viewport aspect when available; otherwise default to a 16:9 side-scroller canvas such as `1536x864`. All primary parallax plates, stage references, and previews must preserve this same size/aspect.
|
|
29
|
-
- Use `grid_mode` for tactical RPGs, factory/automation maps, board/card battlers, build grids, and terrain-cost maps.
|
|
30
|
-
- Use `room_chunk_mode` for modular rooms, roguelike rooms, procedural room assembly, or Metroidvania room-chunk planning.
|
|
31
|
-
- Use `baked_scene_mode` only for non-playable visual scenes or explicitly flat images.
|
|
32
|
-
- Use `baked_raster + coarse_shapes` only for battle backgrounds, title/menu scenes, cutscenes, decorative backdrops, non-playable previews, or when the user explicitly asks for a single flat image.
|
|
33
|
-
- Use `layered_raster + y_sorted_props + precise_shapes` for top-down RPG exploration with tall props, occlusion, interactables, or reusable props; the base must be foundation-only and the props/interactables must remain separate.
|
|
34
|
-
- Use `tilemap` or `layered_tilemap` only when the engine/editor already uses tiles or the user asks for editable tiles; do not flatten gameplay objects into one background image.
|
|
35
|
-
- Use `parallax_layers + platform_objects + interactive_scene_objects + scene_hooks + precise_shapes` for playable side-view scrolling stages, platformers, runners, shooters, and horizontal action scenes; the parallax/background image is scenery-only and is not the runtime map by itself.
|
|
36
|
-
- Use square prop packs only when 4 or more compact small/medium static props share one style and fit comfortably inside equal square cells.
|
|
37
|
-
- Use one-by-one, platform strips, tile/object layers, or custom wide packs for hero props, buildings, gates, irregular large props, wide/tall props, platforms, terrain chunks, bridges, walls, ladders, long hazards, animated props, or props needing strong identity or collision alignment.
|
|
38
|
-
- Use `clean_hd` for generated exploration maps unless the project or user asks for pixel art. This means clean hand-painted top-down 2D RPG game map, HD game asset style, sharp readable terrain shapes, low texture noise, and no chunky pixels.
|
|
39
|
-
- Use `pixel_inspired` only when the user wants a pixel-adjacent look without retro chunkiness.
|
|
40
|
-
- Use `retro_pixel` only when the user explicitly asks for 16-bit, retro JRPG, or classic pixel-art maps.
|
|
41
|
-
|
|
42
|
-
## Workflow
|
|
43
|
-
|
|
44
|
-
1. Inspect the target game.
|
|
45
|
-
- Find camera size, map dimensions, coordinate system, render order, asset loading, collision support, zone data, and existing map formats.
|
|
46
|
-
- Preserve the engine's existing style and data contracts.
|
|
47
|
-
|
|
48
|
-
2. Choose the pipeline axes.
|
|
49
|
-
- Choose `map_mode` first. Use the genre routing table in `map-strategies.md` when the user describes a game type instead of a technical map format.
|
|
50
|
-
- Select `visual_model`, `runtime_object_model`, `collision_model`, and `engine_target`.
|
|
51
|
-
- If the request is for a playable map, stage, level, room, prototype, or game scene, choose a pipeline with explicit runtime objects. Do not downgrade to `baked_raster` unless the user asked for a background-only image.
|
|
52
|
-
- If the request implies a playable side-view scrolling/action stage, such as a side-scroller, platformer, runner, shooter, brawler, scrolling combat stage, Megaman-like stage, Castlevania-like stage, or Contra-like stage, lock the map pipeline to `parallax_layers + platform_objects + interactive_scene_objects + scene_hooks + precise_shapes` unless the engine already requires a tilemap.
|
|
53
|
-
- Select `art_style`. Prefer readable gameplay shapes over decorative texture density.
|
|
54
|
-
- Select `visual_asset_source`. Default to `imagine_text_to_image`; use `existing_assets` only when the project already has suitable art; use `procedural_placeholder` only when explicitly requested.
|
|
55
|
-
- Treat `hybrid` as a result of combining axes, not as a primary category.
|
|
56
|
-
|
|
57
|
-
3. Produce assets.
|
|
58
|
-
- Write the creative prompts manually and use built-in `imagine_text_to_image` for visible map art unless the user explicitly chose existing assets or procedural placeholders.
|
|
59
|
-
- For baked raster maps, generate one background with built-in `imagine_text_to_image`, or edit/use an existing image when supplied, then add optional collision/zones metadata.
|
|
60
|
-
- For playable or editable layered maps, generate a foundation-only base/background first. The base must not contain runtime-controlled props, interactables, hazards, doors, gates, pickups, actors, or foreground occluders. If it does, regenerate or demote it to a reference artifact.
|
|
61
|
-
- For layered raster maps, generate a ground-only/foundation-only base map first. Then perform the visual reference handoff and generate an in-world dressed reference mockup from the visible base before making final props and placements.
|
|
62
|
-
- For tilemaps, generate or reuse tileset art first, then follow the engine/editor format for layers, objects, collision, and scene files. Do not script-draw the tileset as the final art source, and do not flatten object layers into a single runtime image.
|
|
63
|
-
- For `grid_mode`, generate or reuse grid/tileset visual art first, then write cell metadata such as walkable/buildable flags, move cost, terrain effects, resource nodes, and object layers.
|
|
64
|
-
- For `room_chunk_mode`, define chunk dimensions, exits, connection sockets, collision contract, and spawn/trigger metadata before final art assembly. Chunks must be reusable and validated at their seams.
|
|
65
|
-
- For playable side-view scrolling/action stages, define the canonical `stage_canvas` before generating art. Generate named scenery-only parallax layers first: `sky`, `far_bg`, `mid_bg`, `near_bg`, and optional `foreground_overlay`. Every primary parallax layer must use the same pixel dimensions, aspect ratio, camera framing, horizon line, and top-left anchor as the `stage_canvas`; do not accept mismatched image sizes that require guesswork to stack. Do not treat one full-width background image as a complete `side_scroll_mode` background stack unless the user explicitly asks for a flat/non-parallax background. These parallax passes must not contain playable foreground platforms, walkable floors, terrain chunks, hazards, pickups, doors, gates, checkpoints, crates, fences, spikes, or other runtime objects. Then perform the visual reference handoff and generate an in-world stage reference mockup that visually places up to 9 distinct intended platform/object candidates before generating final separate scene objects and metadata.
|
|
66
|
-
- If a side-view background already contains collidable-looking foreground geometry, walkable floors, or reusable gameplay props, reject it as a runtime background and regenerate a cleaner scenery-only background before continuing.
|
|
67
|
-
- Treat the reference mockup as a checkpoint, not a deliverable. Do not stop after generating it. After the relevant `dressed-reference` or `stage-reference` exists, inspect it and continue into the post-reference object production gate (`object-production-gate.md`).
|
|
68
|
-
- Do not present a rerunnable script that creates the whole art pack as the main solution unless the user asked for procedural placeholder art.
|
|
69
|
-
|
|
70
|
-
4. Build metadata.
|
|
71
|
-
- Store prop placement, player spawns, actor spawn marker metadata, interactable scene objects, blockers, walk bounds, encounter zones, exits, camera bounds, and triggers as structured data.
|
|
72
|
-
- For `grid_mode`, store grid dimensions, cell size, tile ids, terrain types, walkable/buildable flags, movement cost, collision, resource nodes, and object/entity slots.
|
|
73
|
-
- For `room_chunk_mode`, store chunk id, size, entrances/exits, connection sockets, collision, spawn markers, camera bounds, and validation hints for seam alignment.
|
|
74
|
-
- For `side_scroll_mode`, store `stage_canvas`, parallax layer source size, display size, anchor, render order, scroll factors, loop/repeat policy, camera bounds, platform collision, hazards, exits, checkpoints, and actor spawn marker metadata.
|
|
75
|
-
- Keep collision independent from pixels unless the target engine explicitly uses tile collision.
|
|
76
|
-
|
|
77
|
-
5. Validate and preview.
|
|
78
|
-
- Compose a flattened preview for layered maps.
|
|
79
|
-
- Validate image sizes, alpha channels, prop pack extraction metadata, JSON parseability, and critical walkability points when collision matters.
|
|
80
|
-
- For `side_scroll_mode`, reject or normalize mismatched primary parallax layer sizes before runtime integration. The stage reference and QA preview must match `stage_canvas` exactly. Deterministic resizing/cropping/padding is allowed only as a normalization step on generated art, not as a way to invent missing art.
|
|
81
|
-
|
|
82
|
-
## Prop Generation Rules
|
|
83
|
-
|
|
84
|
-
Use `$generate2dsprite` for reusable transparent props and visible scene objects, but the agent must write the prop prompt itself using the selected map `art_style`. Do not use a script to generate the creative prompt. For `clean_hd` maps, explicitly request clean hand-painted HD 2D game assets and explicitly forbid pixel art. For `pixel_inspired`, request clean modern pixel-art-inspired props without retro chunkiness. For `retro_pixel`, request 16-bit or retro JRPG pixel art.
|
|
85
|
-
|
|
86
|
-
Before any prop/object image generation, classify each visible runtime object from the reference mockup:
|
|
87
|
-
|
|
88
|
-
- `compact_prop`: small/medium, roughly square or vertical, decorative or simple blocker, no exact alignment requirement
|
|
89
|
-
- `wide_or_long_object`: expected aspect ratio wider than about `1.6:1`, such as platforms, floor pieces, bridges, wall runs, fence rows, long traps, long signs, pipes, rails, ledges, or roads
|
|
90
|
-
- `tall_or_large_object`: expected aspect ratio taller than about `1.6:1` or visually dominant, such as large trees, gates, towers, buildings, banners, doors, statues, or boss-room props
|
|
91
|
-
- `collision_bearing_object`: must line up with collision, walkable edges, build pads, doors, checkpoints, gates, hazards, or engine editor handles
|
|
92
|
-
- `tileset_or_strip_piece`: should repeat seamlessly or assemble from left/middle/right caps, corners, slopes, tops, sides, or tile pieces
|
|
93
|
-
|
|
94
|
-
Generation strategy is determined by that classification:
|
|
95
|
-
|
|
96
|
-
- Only `compact_prop` objects may use square `prop_pack_2x2`, `prop_pack_3x3`, or `prop_pack_4x4`.
|
|
97
|
-
- Do not put `wide_or_long_object`, `tall_or_large_object`, `collision_bearing_object`, or `tileset_or_strip_piece` into square prop packs.
|
|
98
|
-
- Use `one_by_one` for important, large, tall, irregular, identity-sensitive, or collision-aligned objects.
|
|
99
|
-
- Use `platform_strip_1x3` or `platform_strip_1x4` for repeatable floors/platforms: left cap, middle repeat, right cap, plus optional corner/slope/end variant.
|
|
100
|
-
- Use `custom_wide_pack` only for several similar wide objects that share one category and can use wide cells such as `768x256`, `1024x384`, or another explicit non-square cell size.
|
|
101
|
-
- Never mix compact decorative props with platforms, terrain chunks, gates, doors, hazards, or other collision-critical objects in the same generated sheet.
|
|
102
|
-
- If a square pack fails because a wide/tall object touches an edge, do not retry the same square pack with looser QC. Reclassify that object and regenerate it one-by-one, as a platform strip, as a custom wide pack, or as tile/object-layer art.
|
|
103
|
-
|
|
104
|
-
Choose the generation shape deliberately:
|
|
105
|
-
|
|
106
|
-
- `one_by_one`: safest for large, important, animated, or irregular props.
|
|
107
|
-
- `prop_pack_2x2`: 4 related compact props, safest square batch size.
|
|
108
|
-
- `prop_pack_3x3`: 9 compact small/medium props, good quality/time tradeoff.
|
|
109
|
-
- `prop_pack_4x4`: 16 very simple compact small props; fastest but most likely to drift or touch edges.
|
|
110
|
-
- `platform_strip_1x3`: repeatable non-actor platform/floor strip with left cap, middle repeat, and right cap.
|
|
111
|
-
- `platform_strip_1x4`: repeatable non-actor platform/floor strip with left cap, middle repeat, right cap, and one extra slope/corner/end variant. This is not an animation-frame format and must not be used for characters, enemies, creatures, NPCs, summons, or animated body assets.
|
|
112
|
-
- `custom_wide_pack`: several related wide objects using explicit wide cells, not square cells.
|
|
113
|
-
|
|
114
|
-
Prop packs save image-generation calls and prompt overhead, but reduce per-prop control. Use square prop packs for rocks, shrubs, barrels, small signs, lamps, crates, floor ornaments, plants, and repeated compact environmental props. Do not use square prop packs for buildings, gates, trees with wide canopies, bridges, platforms, floors, walls, ladders, long fences, long hazards, character-like statues, hero objects, or anything that must be pixel-perfect or collision-aligned.
|
|
115
|
-
|
|
116
|
-
For layered maps with generated props, prefer this in-world reference mockup pipeline:
|
|
117
|
-
|
|
118
|
-
1. Generate `assets/map/<name>-base.png` as ground-only terrain.
|
|
119
|
-
2. Hand the base to `imagine_image_to_image` as a real reference: pass its sandbox `file_path`. Also `read_file` it so you can see it; do not rely on a path string or prompt text as the reference.
|
|
120
|
-
3. In the dressed-reference prompt, explicitly say: use the provided base image as the visual reference, preserve its camera/framing/dimensions/terrain/road/water/boundaries, and generate an in-world dressed reference mockup.
|
|
121
|
-
4. The dressed reference must show proposed props as natural game-world objects placed on the base. It must not contain circles, arrows, outlines, labels, text, callouts, legends, highlighted boxes, or other annotation graphics.
|
|
122
|
-
5. The dressed reference should contain at most 9 distinct visible prop/object candidates unless the user explicitly asks for more. Prefer the objects that will become final generated props, collision blockers, interactables, or occluders.
|
|
123
|
-
6. Generate `assets/map/<name>-dressed-reference.png` from the visible base. Treat this as a reference mockup, not the final runtime map.
|
|
124
|
-
7. Generate one-by-one props or a prop pack based on the dressed reference.
|
|
125
|
-
8. Place extracted props over the original base and compose a flattened preview.
|
|
126
|
-
9. Validate that base, dressed reference, and preview dimensions match.
|
|
127
|
-
|
|
128
|
-
## Scripts
|
|
129
|
-
|
|
130
|
-
Use the extract script after generating a solid-magenta prop sheet (built-in magenta cleanup is enough for most sheets):
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
python3 .grok/skills/generate2dmap/scripts/extract_prop_pack.py \
|
|
134
|
-
--input assets/props/raw/<name>-sheet.png \
|
|
135
|
-
--rows 3 --cols 3 \
|
|
136
|
-
--labels <comma-separated-labels> \
|
|
137
|
-
--output-dir assets/props \
|
|
138
|
-
--manifest assets/props/<name>-prop-pack.json \
|
|
139
|
-
--component-mode largest
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
Compose a QA preview:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
python3 .grok/skills/generate2dmap/scripts/compose_layered_preview.py \
|
|
146
|
-
--base assets/map/<name>-base.png \
|
|
147
|
-
--placements data/<name>-props.json \
|
|
148
|
-
--output assets/map/<name>-layered-preview.png
|
|
149
|
-
```
|