@playcraft/cli 0.1.33 → 0.1.35-prod
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 +3 -56
- package/dist/agent/local-backend.js +1 -1
- package/dist/cli-root-help.js +0 -2
- package/dist/commands/build.js +4 -9
- package/dist/commands/create.js +33 -26
- package/dist/commands/image.js +6 -2
- package/dist/commands/login.js +42 -84
- package/dist/commands/skills.js +0 -2
- package/dist/commands/tools-3d.js +0 -11
- package/dist/commands/tools-generation.js +109 -68
- package/dist/commands/tools-image-context.js +23 -0
- package/dist/commands/tools.js +2 -2
- package/dist/config.js +4 -59
- package/dist/index.js +3 -36
- package/dist/remix/clone.js +0 -2
- package/dist/remix/init-template.js +0 -2
- package/dist/remix/pull.js +0 -2
- package/dist/remix/push.js +1 -21
- package/dist/utils/agent-api-client.js +30 -185
- package/dist/utils/image-asset-context.js +105 -0
- package/dist/utils/playcraft-http-client.js +4 -6
- package/package.json +5 -14
- package/project-template/.claude/agents/refs/ta-image-generation-detail.md +67 -123
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +105 -44
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
- package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
- package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +36 -39
- package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +59 -59
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +105 -44
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +36 -39
- package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +59 -59
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +105 -44
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +36 -39
- package/dist/auth/account-activation.js +0 -157
- package/dist/auth/messages.js +0 -30
- package/dist/commands/platform-skills.generated.js +0 -19
- package/dist/commands/playable.js +0 -53
- package/dist/commands/tools-batch.js +0 -87
- package/dist/commands/video.js +0 -111
- package/dist/commands/workspace-runtime.js +0 -54
- package/dist/commands/workspace.js +0 -35
- package/dist/project-skills/builtin-import.js +0 -225
- package/dist/project-skills/commands.js +0 -77
- package/dist/project-skills/lifecycle.js +0 -28
- package/dist/project-skills/local-run.js +0 -112
- package/dist/project-skills/local-store.js +0 -221
- package/dist/project-skills/messages.js +0 -80
- package/dist/project-skills/reconcile.js +0 -62
- package/dist/project-skills/remote-cache.js +0 -51
- package/dist/project-skills/validation.js +0 -19
- package/dist/recording/messages.js +0 -40
- package/dist/recording/project-digest.js +0 -85
- package/dist/recording/recorder.js +0 -293
- package/dist/recording/scenario.js +0 -50
- package/dist/utils/environment-endpoints.js +0 -17
- package/dist/utils/tool-operation-journal.js +0 -124
- package/dist/utils/video-evidence-git.js +0 -81
- package/dist/video-replication/client.js +0 -222
- package/dist/video-replication/comparison-evidence.js +0 -149
- package/dist/video-replication/comparison-files.js +0 -57
- package/dist/video-replication/comparison-log.js +0 -72
- package/dist/video-replication/comparison-messages.js +0 -104
- package/dist/video-replication/comparison-output.js +0 -63
- package/dist/video-replication/comparison-preflight.js +0 -66
- package/dist/video-replication/comparison.js +0 -216
- package/dist/video-replication/evidence.js +0 -165
- package/dist/video-replication/media.js +0 -111
- package/dist/video-replication/messages.js +0 -89
- package/dist/workspace/messages.js +0 -35
- package/dist/workspace/transfer-client.js +0 -174
- package/dist/workspace-runtime/codex/app-server.js +0 -965
- package/dist/workspace-runtime/codex/compact.js +0 -46
- package/dist/workspace-runtime/codex/config-toml.js +0 -107
- package/dist/workspace-runtime/codex/jsonrpc-stdio.js +0 -145
- package/dist/workspace-runtime/codex/launcher-client.js +0 -177
- package/dist/workspace-runtime/codex/loopback.js +0 -146
- package/dist/workspace-runtime/codex/mcp-config.js +0 -39
- package/dist/workspace-runtime/codex/model-broker.js +0 -263
- package/dist/workspace-runtime/codex/native-adapter.js +0 -9
- package/dist/workspace-runtime/codex/permissions.js +0 -70
- package/dist/workspace-runtime/codex/work-mode.js +0 -15
- package/dist/workspace-runtime/main.js +0 -10
- package/dist/workspace-runtime/persistence/journal.js +0 -355
- package/dist/workspace-runtime/persistence/native-subagents.js +0 -162
- package/dist/workspace-runtime/persistence/sqlite-client.js +0 -77
- package/dist/workspace-runtime/persistence/sqlite-worker.js +0 -1096
- package/dist/workspace-runtime/previews/output.js +0 -36
- package/dist/workspace-runtime/previews/publish.js +0 -262
- package/dist/workspace-runtime/previews/single-file.js +0 -43
- package/dist/workspace-runtime/processes/managed-writes.js +0 -69
- package/dist/workspace-runtime/production/contracts.js +0 -17
- package/dist/workspace-runtime/production/controller.js +0 -207
- package/dist/workspace-runtime/production/dependencies.js +0 -60
- package/dist/workspace-runtime/production/native.js +0 -203
- package/dist/workspace-runtime/production/processes.js +0 -86
- package/dist/workspace-runtime/production/save-command.js +0 -35
- package/dist/workspace-runtime/production/source-copy.js +0 -91
- package/dist/workspace-runtime/production/stages.js +0 -205
- package/dist/workspace-runtime/production/storage.js +0 -60
- package/dist/workspace-runtime/serve.js +0 -207
- package/dist/workspace-runtime/server/auth.js +0 -21
- package/dist/workspace-runtime/server/connectivity.js +0 -201
- package/dist/workspace-runtime/server/desktop-host.js +0 -429
- package/dist/workspace-runtime/server/desktop-preview-config.js +0 -81
- package/dist/workspace-runtime/server/desktop-preview-service.js +0 -157
- package/dist/workspace-runtime/server/desktop-preview-static.js +0 -53
- package/dist/workspace-runtime/server/desktop-preview.js +0 -189
- package/dist/workspace-runtime/server/dispatch.js +0 -1174
- package/dist/workspace-runtime/server/endpoints.js +0 -19
- package/dist/workspace-runtime/server/execution-group.js +0 -85
- package/dist/workspace-runtime/server/http.js +0 -1127
- package/dist/workspace-runtime/server/lock.js +0 -53
- package/dist/workspace-runtime/server/rfb-watch-gate.js +0 -168
- package/dist/workspace-runtime/server/terminal-host.js +0 -366
- package/dist/workspace-runtime/server/types.js +0 -1
- package/dist/workspace-runtime/server/workspace-transfer.js +0 -99
- package/dist/workspace-runtime/workspaces/archive.js +0 -207
- package/dist/workspace-runtime/workspaces/artifact-events.js +0 -55
- package/dist/workspace-runtime/workspaces/artifact-files.js +0 -197
- package/dist/workspace-runtime/workspaces/artifact-receipts.js +0 -89
- package/dist/workspace-runtime/workspaces/artifacts.js +0 -282
- package/dist/workspace-runtime/workspaces/attachment-content.js +0 -123
- package/dist/workspace-runtime/workspaces/attachments.js +0 -181
- package/dist/workspace-runtime/workspaces/batch-commit.js +0 -142
- package/dist/workspace-runtime/workspaces/cli-context.js +0 -23
- package/dist/workspace-runtime/workspaces/cli-credentials.js +0 -111
- package/dist/workspace-runtime/workspaces/composer-context.js +0 -125
- package/dist/workspace-runtime/workspaces/context-error.js +0 -2
- package/dist/workspace-runtime/workspaces/dependencies.js +0 -264
- package/dist/workspace-runtime/workspaces/developer-command.js +0 -64
- package/dist/workspace-runtime/workspaces/directories.js +0 -123
- package/dist/workspace-runtime/workspaces/directory-access.js +0 -37
- package/dist/workspace-runtime/workspaces/directory-attachments.js +0 -245
- package/dist/workspace-runtime/workspaces/directory-maintenance.js +0 -111
- package/dist/workspace-runtime/workspaces/directory-stats.js +0 -49
- package/dist/workspace-runtime/workspaces/disk-snapshot.js +0 -31
- package/dist/workspace-runtime/workspaces/empty-template.js +0 -40
- package/dist/workspace-runtime/workspaces/files-search.js +0 -116
- package/dist/workspace-runtime/workspaces/files.js +0 -120
- package/dist/workspace-runtime/workspaces/git-credential-broker.js +0 -312
- package/dist/workspace-runtime/workspaces/git-credential-helper.js +0 -68
- package/dist/workspace-runtime/workspaces/git-direct-store.js +0 -155
- package/dist/workspace-runtime/workspaces/git.js +0 -658
- package/dist/workspace-runtime/workspaces/instructions.js +0 -56
- package/dist/workspace-runtime/workspaces/json5-edit.js +0 -170
- package/dist/workspace-runtime/workspaces/library-attachments.js +0 -268
- package/dist/workspace-runtime/workspaces/parameters.js +0 -272
- package/dist/workspace-runtime/workspaces/prepare.js +0 -264
- package/dist/workspace-runtime/workspaces/registry.js +0 -236
- package/dist/workspace-runtime/workspaces/revisions.js +0 -31
- package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +0 -91
- package/dist/workspace-runtime/workspaces/skills.js +0 -189
- package/dist/workspace-runtime/workspaces/transfer.js +0 -288
- package/dist/workspace-runtime/workspaces/turn-changes.js +0 -72
- package/dist/workspace-runtime/workspaces/video-attachments.js +0 -49
- package/project-template/.claude/skills/playcraft-replica-validation/SKILL.md +0 -25
- package/project-template/.claude/skills/playcraft-replica-validation/references/contracts.md +0 -79
- package/project-template/.claude/skills/playcraft-video-understanding/SKILL.md +0 -29
- package/project-template/.claude/skills/playcraft-video-understanding/references/contracts.md +0 -37
- package/project-template-v2/.claude/agents/artist.md +0 -82
- package/project-template-v2/.claude/agents/developer.md +0 -153
- package/project-template-v2/.claude/agents/game-designer.md +0 -264
- package/project-template-v2/.claude/agents/refs/artist-art-style-catalog.md +0 -533
- package/project-template-v2/.claude/agents/refs/artist-color-audio-recipes.md +0 -153
- package/project-template-v2/.claude/agents/refs/artist-dimension-axis.md +0 -27
- package/project-template-v2/.claude/agents/refs/artist-master-composite-recipes.md +0 -208
- package/project-template-v2/.claude/agents/refs/atom-skill-library.md +0 -81
- package/project-template-v2/.claude/agents/refs/developer-impl-cookbook.md +0 -432
- package/project-template-v2/.claude/agents/refs/framework-5-component-filter.md +0 -252
- package/project-template-v2/.claude/agents/refs/framework-game-feel-juice.md +0 -266
- package/project-template-v2/.claude/agents/refs/framework-mda.md +0 -147
- package/project-template-v2/.claude/agents/refs/game-designer-gameplay-sufficiency.md +0 -123
- package/project-template-v2/.claude/agents/refs/ta-3d-flip-recipe.md +0 -88
- package/project-template-v2/.claude/agents/refs/ta-atlas-deliverable-standard.md +0 -67
- package/project-template-v2/.claude/agents/refs/ta-batch-pipeline-recipes.md +0 -120
- package/project-template-v2/.claude/agents/refs/ta-image-generation-detail.md +0 -300
- package/project-template-v2/.claude/agents/refs/ta-image-ops-reference.md +0 -495
- package/project-template-v2/.claude/agents/refs/ta-pipeline-cookbook.md +0 -1141
- package/project-template-v2/.claude/agents/refs/ta-tools-reference.md +0 -111
- package/project-template-v2/.claude/agents/refs/ta-vfx-preset-catalog.md +0 -365
- package/project-template-v2/.claude/agents/refs/threejs-cannon-pitfalls.md +0 -412
- package/project-template-v2/.claude/agents/reviewer.md +0 -75
- package/project-template-v2/.claude/agents/technical-artist.md +0 -86
- package/project-template-v2/.claude/hooks/snapshot-milestone.mjs +0 -243
- package/project-template-v2/.claude/hooks/user-prompt.mjs +0 -133
- package/project-template-v2/.claude/settings.json +0 -33
- package/project-template-v2/.claude/skills/brainstorming/SKILL.md +0 -161
- package/project-template-v2/.claude/skills/brainstorming/scripts/frame-template.html +0 -270
- package/project-template-v2/.claude/skills/brainstorming/scripts/helper.js +0 -177
- package/project-template-v2/.claude/skills/brainstorming/scripts/server.cjs +0 -354
- package/project-template-v2/.claude/skills/brainstorming/scripts/start-server.sh +0 -148
- package/project-template-v2/.claude/skills/brainstorming/scripts/stop-server.sh +0 -56
- package/project-template-v2/.claude/skills/brainstorming/scripts/wait-for-selection.sh +0 -62
- package/project-template-v2/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/project-template-v2/.claude/skills/brainstorming/visual-companion.md +0 -309
- package/project-template-v2/.claude/skills/playcraft-ad-psychology/SKILL.md +0 -182
- package/project-template-v2/.claude/skills/playcraft-art-style-guide/SKILL.md +0 -123
- package/project-template-v2/.claude/skills/playcraft-asset-state-sheet/SKILL.md +0 -205
- package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +0 -280
- package/project-template-v2/.claude/skills/playcraft-batch-pipeline/SKILL.md +0 -184
- package/project-template-v2/.claude/skills/playcraft-build-optimizer/SKILL.md +0 -306
- package/project-template-v2/.claude/skills/playcraft-image-generation/SKILL.md +0 -298
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +0 -123
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +0 -254
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +0 -324
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +0 -97
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +0 -118
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +0 -137
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +0 -397
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +0 -296
- package/project-template-v2/.claude/skills/playcraft-image-ops/SKILL.md +0 -122
- package/project-template-v2/.claude/skills/playcraft-image-processing/SKILL.md +0 -219
- package/project-template-v2/.claude/skills/playcraft-masking/SKILL.md +0 -373
- package/project-template-v2/.claude/skills/playcraft-playable-optimization/SKILL.md +0 -161
- package/project-template-v2/.claude/skills/playcraft-research/SKILL.md +0 -215
- package/project-template-v2/.claude/skills/playcraft-skill-recommender/SKILL.md +0 -382
- package/project-template-v2/.claude/skills/playcraft-sprite-generation/SKILL.md +0 -423
- package/project-template-v2/.claude/skills/playcraft-sprite-remix/SKILL.md +0 -158
- package/project-template-v2/.claude/skills/playcraft-sprite-sheet/SKILL.md +0 -100
- package/project-template-v2/.claude/skills/playcraft-storyboard/SKILL.md +0 -167
- package/project-template-v2/.claude/skills/playcraft-style-qa/SKILL.md +0 -270
- package/project-template-v2/.claude/skills/playcraft-text-rendering/SKILL.md +0 -236
- package/project-template-v2/.claude/skills/playcraft-vfx-animation/SKILL.md +0 -130
- package/project-template-v2/.claude/skills/playwright-cli/SKILL.md +0 -390
- package/project-template-v2/.claude/skills/playwright-cli/references/element-attributes.md +0 -23
- package/project-template-v2/.claude/skills/playwright-cli/references/playwright-tests.md +0 -39
- package/project-template-v2/.claude/skills/playwright-cli/references/request-mocking.md +0 -87
- package/project-template-v2/.claude/skills/playwright-cli/references/running-code.md +0 -240
- package/project-template-v2/.claude/skills/playwright-cli/references/session-management.md +0 -226
- package/project-template-v2/.claude/skills/playwright-cli/references/spec-driven-testing.md +0 -308
- package/project-template-v2/.claude/skills/playwright-cli/references/storage-state.md +0 -275
- package/project-template-v2/.claude/skills/playwright-cli/references/test-generation.md +0 -134
- package/project-template-v2/.claude/skills/playwright-cli/references/tracing.md +0 -142
- package/project-template-v2/.claude/skills/playwright-cli/references/video-recording.md +0 -153
- package/project-template-v2/.claude/skills/session-analyzer/SKILL.md +0 -386
- package/project-template-v2/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +0 -182
- package/project-template-v2/.claude/skills/session-analyzer/scripts/find-turns.mjs +0 -72
- package/project-template-v2/.claude/skills/session-analyzer/scripts/heavy-output.mjs +0 -121
- package/project-template-v2/.claude/skills/session-analyzer/scripts/resolve-session.mjs +0 -102
- package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +0 -127
- package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +0 -106
- package/project-template-v2/.claude/skills/session-analyzer/scripts/time-gaps.mjs +0 -128
- package/project-template-v2/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +0 -67
- package/project-template-v2/.claude/snapshot.mjs +0 -263
- package/project-template-v2/.playcraft/skills.lock.json +0 -152
- package/project-template-v2/CLAUDE.md +0 -146
- package/project-template-v2/assets/audio/bgm/.gitkeep +0 -0
- package/project-template-v2/assets/audio/sfx/.gitkeep +0 -0
- package/project-template-v2/assets/bundles/.gitkeep +0 -0
- package/project-template-v2/assets/images/bg/.gitkeep +0 -0
- package/project-template-v2/assets/images/reference/.gitkeep +0 -0
- package/project-template-v2/assets/images/storyboard/.gitkeep +0 -0
- package/project-template-v2/assets/images/tiles/.gitkeep +0 -0
- package/project-template-v2/assets/images/ui/.gitkeep +0 -0
- package/project-template-v2/assets/images/vfx/.gitkeep +0 -0
- package/project-template-v2/assets/models/.gitkeep +0 -0
- package/project-template-v2/docs/harness/iteration-1/context-flow.md +0 -254
- package/project-template-v2/docs/harness/iteration-1/generate-flow.md +0 -91
- package/project-template-v2/docs/harness/iteration-1/ideate-flow.md +0 -214
- package/project-template-v2/docs/harness/iteration-1/optimize-flow.md +0 -75
- package/project-template-v2/docs/harness/iteration-1/wrapup-flow.md +0 -63
- package/project-template-v2/docs/harness/iteration-2/context-flow.md +0 -223
- package/project-template-v2/docs/harness/iteration-2/generate-flow.md +0 -129
- package/project-template-v2/docs/harness/iteration-2/ideate-flow.md +0 -267
- package/project-template-v2/docs/harness/iteration-2/optimize-flow.md +0 -164
- package/project-template-v2/docs/harness/iteration-2/wrapup-flow.md +0 -115
- package/project-template-v2/docs/harness/orchestrator-flow.md +0 -364
- package/project-template-v2/docs/project-state.json +0 -60
- package/project-template-v2/docs/project-state.md +0 -72
- package/project-template-v2/docs/standards/README.md +0 -225
- package/project-template-v2/docs/standards/agent-behavior-standards.md +0 -174
- package/project-template-v2/docs/standards/artifacts/design-brief.md +0 -19
- package/project-template-v2/docs/standards/artifacts/design.md +0 -22
- package/project-template-v2/docs/standards/artifacts/game-code.md +0 -41
- package/project-template-v2/docs/standards/artifacts/todo-list.md +0 -41
- package/project-template-v2/docs/standards/iter1-agent-behavior-standards.md +0 -343
- package/project-template-v2/game/index.ts +0 -18
- package/project-template-v2/globals.d.ts +0 -51
- package/project-template-v2/index.css +0 -34
- package/project-template-v2/index.html +0 -18
- package/project-template-v2/main.ts +0 -9
- package/project-template-v2/package.json +0 -46
- package/project-template-v2/skills/_shared/scripts/dispatch-clear.mjs +0 -31
- package/project-template-v2/skills/_shared/scripts/dispatch-set.mjs +0 -86
- package/project-template-v2/skills/_shared/scripts/dod-check.mjs +0 -153
- package/project-template-v2/skills/_shared/scripts/handoff-append.mjs +0 -70
- package/project-template-v2/skills/_shared/scripts/lib/validator-artifacts.mjs +0 -91
- package/project-template-v2/skills/_shared/scripts/pipeline/dod-config.mjs +0 -131
- package/project-template-v2/skills/_shared/scripts/pipeline/index.mjs +0 -80
- package/project-template-v2/skills/_shared/scripts/pipeline/iteration-1-core.mjs +0 -90
- package/project-template-v2/skills/_shared/scripts/pipeline/iteration-2-wrap.mjs +0 -93
- package/project-template-v2/skills/_shared/scripts/pipeline/iteration-3-visual.mjs +0 -23
- package/project-template-v2/skills/_shared/scripts/render-project-state.mjs +0 -230
- package/project-template-v2/skills/_shared/scripts/state-advance-stage.mjs +0 -58
- package/project-template-v2/skills/_shared/scripts/state-get.mjs +0 -339
- package/project-template-v2/skills/_shared/scripts/state-handoff.mjs +0 -39
- package/project-template-v2/skills/_shared/scripts/state-set.mjs +0 -94
- package/project-template-v2/skills/_shared/scripts/state-store.mjs +0 -783
- package/project-template-v2/skills/_shared/scripts/todo-add.mjs +0 -88
- package/project-template-v2/skills/_shared/scripts/todo-get.mjs +0 -130
- package/project-template-v2/skills/_shared/scripts/todo-remove.mjs +0 -33
- package/project-template-v2/skills/_shared/scripts/todo-set.mjs +0 -47
- package/project-template-v2/skills/_shared/scripts/verify-asset-code-sync.mjs +0 -268
- package/project-template-v2/skills/_shared/scripts/verify-env.mjs +0 -285
- package/project-template-v2/skills/_shared/scripts/verify-placeholders.mjs +0 -161
- package/project-template-v2/skills/playable-autoplay/SKILL.md +0 -176
- package/project-template-v2/skills/playable-autoplay/agents/openai.yaml +0 -4
- package/project-template-v2/skills/playable-debug/SKILL.md +0 -116
- package/project-template-v2/skills/playable-debug/agents/openai.yaml +0 -4
- package/project-template-v2/skills/playable-debug/references/debug-config.md +0 -40
- package/project-template-v2/skills/playable-record/SKILL.md +0 -140
- package/project-template-v2/skills/playable-record/scripts/lib/dev-server.mjs +0 -104
- package/project-template-v2/skills/playable-record/scripts/lib/record-audio-bridge.js +0 -141
- package/project-template-v2/skills/playable-record/scripts/record-playable.mjs +0 -425
- package/project-template-v2/skills/playable-record/scripts/verify-contract.mjs +0 -261
- package/project-template-v2/skills/playable-record/scripts/verify-firstwin.mjs +0 -398
- package/project-template-v2/skills/playable-record/scripts/verify-fusion.mjs +0 -322
- package/project-template-v2/skills/playable-record/scripts/verify-lifecycle.mjs +0 -105
- package/project-template-v2/skills/playable-record/scripts/verify-vlm-video.mjs +0 -230
- package/project-template-v2/skills/playable-validate/SKILL.md +0 -61
- package/project-template-v2/skills/playable-validate/validation-rules.md +0 -14
- package/project-template-v2/skills/playable-verify-ui/SKILL.md +0 -63
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/__init__.py +0 -1
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/config_expr.js +0 -218
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/node_utils.js +0 -51
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/profile_loader.py +0 -59
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/report.py +0 -106
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/runtime_contract.js +0 -116
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +0 -59
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +0 -64
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_runtime_contract.js +0 -58
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_text_overlap.py +0 -333
- package/project-template-v2/ta-workspace/scripts/.gitkeep +0 -0
- package/project-template-v2/tsconfig.json +0 -20
- package/project-template-v2/vite.config.ts +0 -27
- package/project-templates/batch-locks/phaser.yaml +0 -922
- package/project-templates/batch-locks/threejs.yaml +0 -978
- package/project-templates/empty/AGENTS.md +0 -39
- package/project-templates/empty/gitignore +0 -33
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ============================================================
|
|
2
|
-
// gen-batch-sprite.template.mjs —
|
|
2
|
+
// gen-batch-sprite.template.mjs — 精灵图直出脚本模板
|
|
3
3
|
//
|
|
4
|
-
//
|
|
4
|
+
// 核心原则:一次 API (Application Programming Interface, 应用程序编程接口) 调用生成包含多个元素的
|
|
5
5
|
// 网格精灵图,然后用 sprite-split 切分。比逐个生成效率高 N 倍。
|
|
6
6
|
//
|
|
7
7
|
// 适用场景:
|
|
@@ -34,11 +34,11 @@ function playcraft(args, { capture = false, timeout } = {}) {
|
|
|
34
34
|
// ============ CONFIG — 修改这里 ============
|
|
35
35
|
const CONFIG = {
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* 使用 list-image-models 核实本次模型;默认示例为 Image 2.5。
|
|
38
|
+
* 用户或制作流程锁定其他模型时填写实际 provider/model。
|
|
39
|
+
* 请求使用命令行默认等待时间,不在脚本中提前杀死仍在运行的请求。
|
|
40
40
|
*/
|
|
41
|
-
model: '
|
|
41
|
+
model: 'iegg-litellm/gpt-image-2.5-sunburst',
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* 每批精灵图的列数
|
|
@@ -64,21 +64,20 @@ const CONFIG = {
|
|
|
64
64
|
/**
|
|
65
65
|
* 通用风格描述(追加到每个批次 prompt 末尾)
|
|
66
66
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* removeBg: true (切分后逐帧去背景)
|
|
70
|
-
*
|
|
71
|
-
* 元素本身就是矩形(卡牌/棋子/UI 面板)→ 白底策略:
|
|
72
|
-
* style: 'flat 2D, white background, no shadow, no drop shadow, clean edges'
|
|
73
|
-
* removeBg: false
|
|
67
|
+
* 只填写主体风格与构图,源图背景由下方流程选择。
|
|
68
|
+
* 卡牌白色牌面属于主体,应在 items.desc 中描述并设 removeBg=false。
|
|
74
69
|
*/
|
|
75
|
-
style: 'flat 2D illustration, isolated
|
|
70
|
+
style: 'flat 2D illustration, isolated subjects, centered, no shadow',
|
|
76
71
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
72
|
+
* 最终是否需要透明:true 为独立元素,false 为不透明牌面/场景。
|
|
73
|
+
* automatic:整板由工具交付透明,切分后保留,不重复去背。
|
|
74
|
+
* chroma:保留色幕中间图,切分后逐格去背;仅限主文第 3 节明确选择的流程。
|
|
80
75
|
*/
|
|
81
76
|
removeBg: true,
|
|
77
|
+
backgroundMode: 'automatic',
|
|
78
|
+
/** 独立色幕才使用;按主体颜色选择,金/黄/橙/绿用蓝幕,蓝/紫用绿幕。 */
|
|
79
|
+
chromaColor: '#00FF00',
|
|
80
|
+
chromaTolerance: 25,
|
|
82
81
|
|
|
83
82
|
/**
|
|
84
83
|
* 切分单元尺寸(像素)。留空(null)= 自动按精灵图实际像素尺寸 ÷ 网格推导(推荐)。
|
|
@@ -119,7 +118,7 @@ const BATCHES = [
|
|
|
119
118
|
// ============ 精灵图 Prompt 构建器 ============
|
|
120
119
|
/**
|
|
121
120
|
* 根据 items 列表构建精灵图网格 prompt
|
|
122
|
-
*
|
|
121
|
+
* 描述网格布局,避免重绘边框或格子标签。
|
|
123
122
|
*/
|
|
124
123
|
/**
|
|
125
124
|
* 读取精灵图实际像素尺寸(用于自动推导切分单元尺寸)。
|
|
@@ -138,7 +137,7 @@ function readSheetDims(sheetPath) {
|
|
|
138
137
|
return null;
|
|
139
138
|
}
|
|
140
139
|
|
|
141
|
-
function buildSpriteSheetPrompt(items, columns,
|
|
140
|
+
function buildSpriteSheetPrompt(items, columns, config) {
|
|
142
141
|
const actualRows = Math.ceil(items.length / columns);
|
|
143
142
|
const cellDescs = items.map((item, i) => {
|
|
144
143
|
const col = (i % columns) + 1;
|
|
@@ -146,10 +145,13 @@ function buildSpriteSheetPrompt(items, columns, style, removeBg) {
|
|
|
146
145
|
return `[Row${row},Col${col}]: ${item.desc}`;
|
|
147
146
|
}).join('; ');
|
|
148
147
|
|
|
149
|
-
//
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
148
|
+
// Image 2.5 由后端组装背景;其他模型首次请求需明确单一干净底色。
|
|
149
|
+
const modelId = config.model.trim().split('/').at(-1);
|
|
150
|
+
const nativeBackground = /^gpt-image-2\.5(?:$|-)/.test(modelId);
|
|
151
|
+
const bgInstruction = !config.removeBg ? '' : config.backgroundMode === 'chroma'
|
|
152
|
+
? `Each element isolated on a uniform solid ${config.chromaColor} background, no shadow, no gradient background.`
|
|
153
|
+
: nativeBackground ? ''
|
|
154
|
+
: 'Render all foreground elements on a uniform solid pure white background for subsequent background removal. Preserve all elements, text, white details, colors and style.';
|
|
153
155
|
|
|
154
156
|
return [
|
|
155
157
|
`Sprite sheet grid layout, ${columns} columns × ${actualRows} rows.`,
|
|
@@ -157,13 +159,19 @@ function buildSpriteSheetPrompt(items, columns, style, removeBg) {
|
|
|
157
159
|
bgInstruction,
|
|
158
160
|
`Grid layout, uniform cell size, equal spacing, elements perfectly centered in each cell.`,
|
|
159
161
|
`No borders between cells, no labels, no numbers on cells.`,
|
|
160
|
-
style,
|
|
161
|
-
].join(' ');
|
|
162
|
+
config.style,
|
|
163
|
+
].filter(Boolean).join(' ');
|
|
162
164
|
}
|
|
163
165
|
|
|
164
166
|
// ============ LOGIC — 通常不需要修改 ============
|
|
165
167
|
|
|
166
168
|
const LOG_FILE = 'ta-workspace/logs/gen-batch-sprite.log';
|
|
169
|
+
if (!['automatic', 'chroma'].includes(CONFIG.backgroundMode)) {
|
|
170
|
+
throw new Error('backgroundMode must be automatic or chroma.');
|
|
171
|
+
}
|
|
172
|
+
if (CONFIG.backgroundMode === 'chroma' && !/^#[\da-f]{6}$/i.test(CONFIG.chromaColor)) {
|
|
173
|
+
throw new Error('chromaColor must be one six-digit hex color.');
|
|
174
|
+
}
|
|
167
175
|
mkdirSync(CONFIG.sheetDir, { recursive: true });
|
|
168
176
|
mkdirSync(CONFIG.outputDir, { recursive: true });
|
|
169
177
|
mkdirSync('ta-workspace/logs', { recursive: true });
|
|
@@ -190,7 +198,7 @@ for (let bi = 0; bi < BATCHES.length; bi++) {
|
|
|
190
198
|
log(`[SKIP-SHEET] (${bi + 1}/${BATCHES.length}) ${batch.sheetName} already exists`);
|
|
191
199
|
} else {
|
|
192
200
|
log(`[GEN-SHEET ] (${bi + 1}/${BATCHES.length}) Generating ${batch.sheetName} (${batch.items.length} elements)`);
|
|
193
|
-
const prompt = buildSpriteSheetPrompt(batch.items, CONFIG.columns, CONFIG
|
|
201
|
+
const prompt = buildSpriteSheetPrompt(batch.items, CONFIG.columns, CONFIG);
|
|
194
202
|
|
|
195
203
|
try {
|
|
196
204
|
playcraft(
|
|
@@ -200,9 +208,9 @@ for (let bi = 0; bi < BATCHES.length; bi++) {
|
|
|
200
208
|
'--output', sheetPath,
|
|
201
209
|
'--aspect-ratio', CONFIG.aspectRatio,
|
|
202
210
|
'--image-model', CONFIG.model,
|
|
203
|
-
|
|
211
|
+
CONFIG.removeBg && CONFIG.backgroundMode === 'automatic'
|
|
212
|
+
? '--remove-background' : '--no-remove-background',
|
|
204
213
|
],
|
|
205
|
-
{ timeout: 300_000 },
|
|
206
214
|
);
|
|
207
215
|
log(`[OK-SHEET ] ${batch.sheetName}`);
|
|
208
216
|
} catch (e) {
|
|
@@ -269,10 +277,11 @@ for (let bi = 0; bi < BATCHES.length; bi++) {
|
|
|
269
277
|
continue;
|
|
270
278
|
}
|
|
271
279
|
|
|
272
|
-
// ── Step 3:
|
|
280
|
+
// ── Step 3: 保留自动透明结果;独立色幕才逐格去背 ────────────────
|
|
273
281
|
// 任何缺帧 / 处理失败都视为该批次失败(FAIL,不是 WARN):一个不完整的
|
|
274
282
|
// 批次绝不能被报成 OK-BATCH,否则下游会拿到缺图的资产集。
|
|
275
|
-
|
|
283
|
+
const removeCellBackground = CONFIG.removeBg && CONFIG.backgroundMode === 'chroma';
|
|
284
|
+
log(`[RENAME ] Renaming ${batch.items.length} cells${removeCellBackground ? ' + remove-background' : ''}`);
|
|
276
285
|
let processedOk = 0;
|
|
277
286
|
let batchFailed = false;
|
|
278
287
|
for (let j = 0; j < batch.items.length; j++) {
|
|
@@ -289,13 +298,13 @@ for (let bi = 0; bi < BATCHES.length; bi++) {
|
|
|
289
298
|
continue;
|
|
290
299
|
}
|
|
291
300
|
try {
|
|
292
|
-
if (
|
|
293
|
-
//
|
|
301
|
+
if (removeCellBackground) {
|
|
302
|
+
// 只处理独立色幕,保留常规工具已经交付的透明边缘。
|
|
294
303
|
playcraft([
|
|
295
304
|
'image', 'remove-background',
|
|
296
305
|
'--input', srcPath,
|
|
297
306
|
'--output', dstPath,
|
|
298
|
-
'--tolerance',
|
|
307
|
+
'--tolerance', String(CONFIG.chromaTolerance),
|
|
299
308
|
]);
|
|
300
309
|
} else {
|
|
301
310
|
copyFileSync(srcPath, dstPath);
|
package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ============================================================
|
|
2
|
-
// gen-batch.template.mjs — 批量 AI 生图脚本模板
|
|
2
|
+
// gen-batch.template.mjs — 批量 AI (Artificial Intelligence, 人工智能) 生图脚本模板
|
|
3
3
|
// 用途:从零批量生成一组风格一致的素材(reference-image 模式)
|
|
4
4
|
//
|
|
5
5
|
// 使用方式:
|
|
@@ -8,22 +8,18 @@
|
|
|
8
8
|
// 3. node ta-workspace/scripts/gen-<name>.mjs
|
|
9
9
|
// ============================================================
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { execFileSync } from 'child_process';
|
|
12
12
|
import { existsSync, mkdirSync, appendFileSync } from 'fs';
|
|
13
13
|
|
|
14
14
|
// ============ CONFIG — 修改这里 ============
|
|
15
15
|
const CONFIG = {
|
|
16
16
|
/**
|
|
17
17
|
* 生图模型。
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* model: 'google/gemini-3.1-flash-image-preview'
|
|
22
|
-
*
|
|
23
|
-
* 后端按优先级自动 fallback 多个 provider,无需手动指定 provider。
|
|
24
|
-
* text+image CAPABILITY 的模型才支持 --reference-image
|
|
18
|
+
* 先 list-image-models,再填写本次实际模型;普通素材优先 Image 2.5。
|
|
19
|
+
* 用户或制作流程锁定其他模型时保留其选择。
|
|
20
|
+
* 参考图要求模型支持 text+image 或 image→image。
|
|
25
21
|
*/
|
|
26
|
-
model: '
|
|
22
|
+
model: 'iegg-litellm/gpt-image-2.5-sunburst',
|
|
27
23
|
/** 概念图路径(确认过风格的样本,所有后续图的参考来源) */
|
|
28
24
|
referenceImage: 'assets/images/concept/approved_sample.png',
|
|
29
25
|
/** 输出目录 */
|
|
@@ -32,9 +28,11 @@ const CONFIG = {
|
|
|
32
28
|
aspectRatio: '1:1',
|
|
33
29
|
/**
|
|
34
30
|
* 统一风格描述(从 design-brief.md 复制,粘贴到每个 prompt 末尾)
|
|
35
|
-
* 示例:"flat 2D icon, vibrant colors, clean edges,
|
|
31
|
+
* 示例:"flat 2D icon, vibrant colors, clean edges, no shadow"
|
|
36
32
|
*/
|
|
37
33
|
style: '<从 design-brief 复制的统一风格描述>',
|
|
34
|
+
/** 最终透明设 true;完整场景或不透明牌面设 false。独立色幕使用精灵图模板。 */
|
|
35
|
+
removeBackground: true,
|
|
38
36
|
};
|
|
39
37
|
// ============ DATA — 定义要生成的素材列表 ============
|
|
40
38
|
const ITEMS = [
|
|
@@ -72,17 +70,17 @@ for (let i = 0; i < ITEMS.length; i++) {
|
|
|
72
70
|
|
|
73
71
|
log(`[GEN ] (${i + 1}/${ITEMS.length}) ${item.name}`);
|
|
74
72
|
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
73
|
+
const nativeBackground = /^gpt-image-2\.5(?:$|-)/.test(CONFIG.model.trim().split('/').at(-1));
|
|
74
|
+
const sourceBackground = CONFIG.removeBackground && !nativeBackground
|
|
75
|
+
? 'on a uniform solid pure white background for subsequent background removal' : '';
|
|
76
|
+
const prompt = [item.desc, CONFIG.style, sourceBackground].filter(Boolean).join('. ');
|
|
77
|
+
const args = ['tools', 'generate-image', '--prompt', prompt, '--output', outPath,
|
|
78
|
+
'--aspect-ratio', CONFIG.aspectRatio, '--image-model', CONFIG.model,
|
|
79
|
+
CONFIG.removeBackground ? '--remove-background' : '--no-remove-background'];
|
|
80
|
+
if (CONFIG.referenceImage) args.push('--reference-image', CONFIG.referenceImage);
|
|
83
81
|
|
|
84
82
|
try {
|
|
85
|
-
|
|
83
|
+
execFileSync('playcraft', args, { stdio: 'inherit' });
|
|
86
84
|
done++;
|
|
87
85
|
log(`[OK ] ${item.name}`);
|
|
88
86
|
} catch (e) {
|
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
// 3. node ta-workspace/scripts/process-<name>.mjs
|
|
9
9
|
//
|
|
10
10
|
// 背景处理决策(修改 CONFIG.skipRemoveBg 前请阅读):
|
|
11
|
-
// -
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
// 生图时 prompt 加 "flat 2D, no shadow, no 3D effect, clean edges"
|
|
11
|
+
// - 常规工具已验证透明 / 不透明牌面或场景 → skipRemoveBg = true(默认)
|
|
12
|
+
// - 明确选择的独立色幕中间图 → skipRemoveBg = false,按主文第 3 节选择色幕
|
|
13
|
+
// 生成中间图时用 --no-remove-background,最终去背后验证透明边缘
|
|
15
14
|
// ============================================================
|
|
16
15
|
|
|
17
16
|
import { execSync } from 'child_process';
|
|
@@ -32,10 +31,10 @@ const CONFIG = {
|
|
|
32
31
|
targetH: 128,
|
|
33
32
|
/**
|
|
34
33
|
* 跳过去背景步骤
|
|
35
|
-
* -
|
|
36
|
-
* -
|
|
34
|
+
* - true(默认):保留已验证透明的结果或不透明牌面/场景,不重复去背
|
|
35
|
+
* - false:仅对独立色幕中间图执行 remove-background
|
|
37
36
|
*/
|
|
38
|
-
skipRemoveBg:
|
|
37
|
+
skipRemoveBg: true,
|
|
39
38
|
/**
|
|
40
39
|
* floodfill 容差(0–255)
|
|
41
40
|
* 绿幕背景建议 25;默认白背景可用 15
|
package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
# Image Generation Prompt Cookbook
|
|
2
2
|
|
|
3
|
-
> 适用于 PlayCraft CLI `playcraft tools generate-image
|
|
3
|
+
> 适用于 PlayCraft CLI (Command-Line Interface, 命令行工具) `playcraft tools generate-image` 及沙箱生图工具。
|
|
4
4
|
> 所有模型均适用;gpt-image-2 类模型对英文 prompt 理解最准确,优先写英文。
|
|
5
5
|
|
|
6
|
+
透明交付通过 `removeBackground: true` / `--remove-background` 或目标字段配置表达。下方常规前景模板描述主体、文字、风格、构图与材质;源图背景遵循主文第 2 节:Image 2.5 由后端组装,不追加背景后缀;明确选用其他模型时,首次请求需追加单一 `on a uniform solid pure white background for subsequent background removal`。不要同时要求透明、白底与色幕。完整场景可以描述背景内容,矩形本体的白色牌面也应保留。独立色幕流程见主文第 3 节,中间图必须关闭自动去背。
|
|
7
|
+
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
## 一、Prompt 万能公式
|
|
9
11
|
|
|
10
12
|
```
|
|
11
|
-
[主体描述] + [风格/介质] + [构图/视角] + [
|
|
13
|
+
[主体描述] + [风格/介质] + [构图/视角] + [场景内容(如需要)] + [质量修饰词]
|
|
12
14
|
```
|
|
13
15
|
|
|
14
16
|
**示例**:
|
|
15
17
|
|
|
16
18
|
```
|
|
17
19
|
A golden sword icon, flat 2D vector style, centered composition,
|
|
18
|
-
|
|
20
|
+
isolated subject, clean crisp edges, game UI asset, high quality
|
|
19
21
|
```
|
|
20
22
|
|
|
21
23
|
---
|
|
@@ -26,12 +28,13 @@ white background, clean crisp edges, game UI asset, high quality
|
|
|
26
28
|
|
|
27
29
|
```
|
|
28
30
|
A [物品名] icon, flat 2D vector illustration, bold outlines,
|
|
29
|
-
vibrant colors, centered composition,
|
|
31
|
+
vibrant colors, centered composition, isolated subject,
|
|
30
32
|
no shadow, no gradient, game UI style, sharp crisp edges
|
|
31
33
|
```
|
|
32
34
|
|
|
33
35
|
- 关键词:`flat 2D` / `bold outlines` / `centered` / `no shadow` / `game UI style`
|
|
34
36
|
- 避免:`3D` / `realistic` / `photographic` / `drop shadow`
|
|
37
|
+
- 需要透明交付时传 `removeBackground: true` / `--remove-background`。
|
|
35
38
|
|
|
36
39
|
### 🃏 卡牌 / 棋子 / 方块(Rectangular Tiles)
|
|
37
40
|
|
|
@@ -50,12 +53,11 @@ sharp clean edges, centered on white background
|
|
|
50
53
|
```
|
|
51
54
|
A [角色描述] character, full body visible, game sprite style,
|
|
52
55
|
[艺术风格: pixel art / cartoon / chibi / realistic],
|
|
53
|
-
isolated
|
|
56
|
+
isolated subject,
|
|
54
57
|
centered, facing forward / side view, clean silhouette
|
|
55
58
|
```
|
|
56
59
|
|
|
57
|
-
-
|
|
58
|
-
- 后处理:`remove-background --tolerance 25`
|
|
60
|
+
- 需要透明交付 → `removeBackground: true` / `--remove-background`,按主文第 2 节准备源图背景,由后端去背并完成验收。
|
|
59
61
|
|
|
60
62
|
### 🌄 场景背景(Backgrounds)
|
|
61
63
|
|
|
@@ -120,7 +122,7 @@ Grid layout, equal cell size, no borders between cells. Bold black ink for spade
|
|
|
120
122
|
**图标集示例**(一批 9 个图标):
|
|
121
123
|
|
|
122
124
|
```
|
|
123
|
-
Sprite sheet grid, 3 columns × 3 rows. Flat 2D game icon style,
|
|
125
|
+
Sprite sheet grid, 3 columns × 3 rows. Flat 2D game icon style, isolated subjects.
|
|
124
126
|
[Row1,Col1]: sword icon; [Row1,Col2]: shield icon; [Row1,Col3]: bow and arrow icon;
|
|
125
127
|
[Row2,Col1]: magic staff icon; [Row2,Col2]: potion bottle icon; [Row2,Col3]: scroll icon;
|
|
126
128
|
[Row3,Col1]: coin gold icon; [Row3,Col2]: gem diamond icon; [Row3,Col3]: key icon.
|
|
@@ -129,17 +131,17 @@ Each icon centered in its cell, bold outlines, vibrant colors, no shadow.
|
|
|
129
131
|
|
|
130
132
|
**背景选择(重要!)**:
|
|
131
133
|
|
|
132
|
-
| 素材类型 |
|
|
133
|
-
| ----------------------------------- |
|
|
134
|
-
| 独立元素(角色/车/道具/图标)需透明 |
|
|
135
|
-
| 卡牌/棋子/UI 面板(矩形本体) |
|
|
134
|
+
| 素材类型 | 交付要求 | 切分后处理 |
|
|
135
|
+
| ----------------------------------- | ------------------------------------------------ | -------------------------------- |
|
|
136
|
+
| 独立元素(角色/车/道具/图标)需透明 | `--remove-background`,按主文第 2 节准备源图背景 | 保留透明通道,验证每格前景与边缘 |
|
|
137
|
+
| 卡牌/棋子/UI 面板(矩形本体) | `--no-remove-background`,保留白色牌面 | 直接 resize,不去背景 |
|
|
136
138
|
|
|
137
139
|
**注意事项**:
|
|
138
140
|
|
|
139
141
|
- 每批最多 **4×4 = 16 个元素**,超过会出现混乱
|
|
140
142
|
- 每个格的描述要精确,包含特征性视觉元素
|
|
141
143
|
- 切分后用 `sprite-split --rows N --columns M` 按网格切分
|
|
142
|
-
- 模板:[gen-batch-sprite.template.mjs](gen-batch-sprite.template.mjs)
|
|
144
|
+
- 模板:[gen-batch-sprite.template.mjs](gen-batch-sprite.template.mjs):`backgroundMode='automatic'` 为常规流程,`removeBg` 表示最终是否透明。独立色幕需显式设 `backgroundMode='chroma'`、所选模型和色幕颜色;脚本关闭整板自动去背,切分后逐格去背。
|
|
143
145
|
|
|
144
146
|
---
|
|
145
147
|
|
|
@@ -183,7 +185,7 @@ gpt-image-2 是目前质量最高的文生图模型,prompt 套路略有不同
|
|
|
183
185
|
- **英文 prompt 效果最佳**,中文理解也不错但英文更稳定
|
|
184
186
|
- 对**复杂场景**、**细节描述**处理能力远超其他模型
|
|
185
187
|
- 支持**图生图 edit 模式**(传 `--reference-image`),局部编辑能力强
|
|
186
|
-
-
|
|
188
|
+
- 不支持原生透明 PNG (Portable Network Graphics, 便携式网络图形) 输出(ALPHA = no);透明交付仍由工具后处理。明确选择独立色幕制作时再按主文第 3 节处理。
|
|
187
189
|
|
|
188
190
|
### prompt 格式建议
|
|
189
191
|
|
|
@@ -270,6 +272,8 @@ playcraft tools generate-image \
|
|
|
270
272
|
>
|
|
271
273
|
> 注意:`figer_icon.aiimage`、`win_result_panel.aiimage` 等 atom Skills 提供了带参考图的生成配方,Game Designer `playcraft skills match` 能匹配到时优先使用。本节模板用于无对应 atom Skill 的场景。
|
|
272
274
|
|
|
275
|
+
下方独立界面前景通过 `removeBackground: true` / `--remove-background` 要求最终透明;模板描述主体,调用前按主文第 2 节补充适用于所选模型的源图背景。
|
|
276
|
+
|
|
273
277
|
### 🟠 CTA 按钮(Call-to-Action Button)
|
|
274
278
|
|
|
275
279
|
```
|
|
@@ -280,13 +284,13 @@ Important details: [bright orange / gold / green] gradient fill,
|
|
|
280
284
|
subtle drop shadow below button, glossy highlight on top edge,
|
|
281
285
|
3px white inner border, corners rounded radius 24px
|
|
282
286
|
Use case: Game ad install button, isolated asset, HTML5 playable ad
|
|
283
|
-
Constraints:
|
|
287
|
+
Constraints: No extra elements, centered, clean crisp edges,
|
|
284
288
|
no watermark
|
|
285
289
|
```
|
|
286
290
|
|
|
287
291
|
- CTA 颜色必须是游戏画面中**最少使用**的颜色(对比稀缺性原则)
|
|
288
292
|
- 触控目标区域 ≥ 48×48px,生成建议尺寸 360×120px(9:3 比例)
|
|
289
|
-
-
|
|
293
|
+
- 后处理由工具完成,验证最终透明背景、文字与边缘。
|
|
290
294
|
|
|
291
295
|
---
|
|
292
296
|
|
|
@@ -299,7 +303,7 @@ Important details: [color] filled portion [80% of total width], unfilled portion
|
|
|
299
303
|
rounded end caps, thin outer frame in [darker shade],
|
|
300
304
|
optional inner glow on filled section
|
|
301
305
|
Use case: Game HUD progress indicator, isolated UI element
|
|
302
|
-
Constraints:
|
|
306
|
+
Constraints: Horizontal orientation, no text labels,
|
|
303
307
|
clean edges, no watermark
|
|
304
308
|
```
|
|
305
309
|
|
|
@@ -317,8 +321,7 @@ Important details: warm skin tone, white sleeve cuff visible at wrist,
|
|
|
317
321
|
soft drop shadow beneath finger tip, friendly approachable style,
|
|
318
322
|
[optional: subtle animated glow ring around fingertip]
|
|
319
323
|
Use case: Tutorial overlay tap gesture for playable ad, points toward target element
|
|
320
|
-
Constraints:
|
|
321
|
-
no extra limbs or elements, finger pointing at bottom-center
|
|
324
|
+
Constraints: No extra limbs or elements, finger pointing at bottom-center
|
|
322
325
|
```
|
|
323
326
|
|
|
324
327
|
**箭头变体**(更简洁):
|
|
@@ -328,7 +331,7 @@ Subject: Bold cartoon arrow pointing [down / right], game tutorial UI
|
|
|
328
331
|
Style: flat 2D, thick outline 4px, rounded arrowhead
|
|
329
332
|
Important details: [bright yellow / white] fill, [dark outline],
|
|
330
333
|
slight perspective tilt for depth, attention-grabbing
|
|
331
|
-
Constraints:
|
|
334
|
+
Constraints: Single clean arrow shape, no text
|
|
332
335
|
```
|
|
333
336
|
|
|
334
337
|
---
|
|
@@ -342,7 +345,7 @@ Important details: white or [light color] fill, [2–3px] dark outline,
|
|
|
342
345
|
tail pointing [down-left / down-center], interior empty for text overlay,
|
|
343
346
|
subtle inner shadow or gradient
|
|
344
347
|
Use case: Game tutorial hint tooltip, isolated UI asset
|
|
345
|
-
Constraints:
|
|
348
|
+
Constraints: No text inside, clean edges,
|
|
346
349
|
no watermark, no extra decorations
|
|
347
350
|
```
|
|
348
351
|
|
|
@@ -362,7 +365,7 @@ Important details: [treasure chest]: lid slightly ajar, golden glow escaping fro
|
|
|
362
365
|
[gold coins]: scattered pile, gleaming highlights, not neatly stacked (implies uncollected);
|
|
363
366
|
[gem crystal]: large, brilliant facets, floating above ground, clearly valuable
|
|
364
367
|
Use case: EndCard reward visual, creates FOMO and drives install
|
|
365
|
-
Constraints:
|
|
368
|
+
Constraints: Centered, isolated subject,
|
|
366
369
|
no CTA text (added separately), warm celebratory lighting
|
|
367
370
|
```
|
|
368
371
|
|
|
@@ -373,25 +376,19 @@ Constraints: Transparent background, centered, isolated subject,
|
|
|
373
376
|
|
|
374
377
|
### 📊 UI 元素背景处理规则速查
|
|
375
378
|
|
|
376
|
-
|
|
377
|
-
| ---------------- | ----------------------------------------------- | ------------------------------ |
|
|
378
|
-
| CTA 按钮 | `transparent background` 或绿幕 | floodfill 去背 |
|
|
379
|
-
| 进度条 | `transparent background` 或绿幕 | floodfill 去背 |
|
|
380
|
-
| 引导手势 | `transparent background, PNG with alpha` | floodfill 去背(tolerance 25) |
|
|
381
|
-
| 对话气泡 | `transparent background` 或绿幕 | floodfill 去背 |
|
|
382
|
-
| EndCard 奖励图标 | 绿幕(`solid bright green #00FF00 background`) | floodfill 去背(tolerance 25) |
|
|
379
|
+
CTA 按钮、进度条、引导手势、对话气泡与 EndCard 奖励图标都通过 `removeBackground: true` / `--remove-background` 要求最终透明;主体内容使用上述模板,源图背景按主文第 2 节准备。交付后验证文字、完整前景及深浅背景上的边缘。独立色幕制作沿用主文第 3 节的单一背景与独立去背流程。
|
|
383
380
|
|
|
384
381
|
---
|
|
385
382
|
|
|
386
383
|
## 六、常见问题 & 修正方案
|
|
387
384
|
|
|
388
|
-
| 问题 | 原因 | 修正
|
|
389
|
-
| ------------------ | -------------------- |
|
|
390
|
-
| 图标边缘有阴影 | 模型默认加立体效果 | 加 `no shadow, no drop shadow, flat 2D`
|
|
391
|
-
| 构图不居中 | 没有明确指定 | 加 `centered composition, subject centered`
|
|
392
|
-
| 背景不干净 |
|
|
393
|
-
| 多个物体出现 | 主体不够明确 | 加 `a single [物体]`, `only one [物体]`
|
|
394
|
-
| 文字拼写错误 | 所有模型通病 | 尝试 gpt-image-2(最好),或多生成几张
|
|
395
|
-
| 风格不一致(批量) | 没用 reference image | Phase 2 必须加 `--reference-image`
|
|
396
|
-
| 细节过于复杂 | 素材尺寸小但细节太多 | 加 `simple design, minimal details, bold shapes`
|
|
397
|
-
| 生成极慢/超时 | 模型负载高 | 换另一个 provider 或换模型
|
|
385
|
+
| 问题 | 原因 | 修正 |
|
|
386
|
+
| ------------------ | -------------------- | ------------------------------------------------------------------------ |
|
|
387
|
+
| 图标边缘有阴影 | 模型默认加立体效果 | 加 `no shadow, no drop shadow, flat 2D` |
|
|
388
|
+
| 构图不居中 | 没有明确指定 | 加 `centered composition, subject centered` |
|
|
389
|
+
| 背景不干净 | 交付要求或处理不匹配 | 核对背景开关、字段配置及模型对应的源图规则;检查最终验收,不混加背景要求 |
|
|
390
|
+
| 多个物体出现 | 主体不够明确 | 加 `a single [物体]`, `only one [物体]` |
|
|
391
|
+
| 文字拼写错误 | 所有模型通病 | 尝试 gpt-image-2(最好),或多生成几张 |
|
|
392
|
+
| 风格不一致(批量) | 没用 reference image | Phase 2 必须加 `--reference-image` |
|
|
393
|
+
| 细节过于复杂 | 素材尺寸小但细节太多 | 加 `simple design, minimal details, bold shapes` |
|
|
394
|
+
| 生成极慢/超时 | 模型负载高 | 换另一个 provider 或换模型 |
|