@oh-story/dsh 0.1.3 → 0.1.5
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 +58 -12
- package/lib/client.js +2970 -537
- package/lib/client.js.map +4 -4
- package/lib/drama/manifest.json +218 -178
- package/lib/drama/skills/short-drama/SKILL.md +110 -117
- package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
- package/lib/drama/skills/short-drama/references/contract-and-ownership.md +26 -77
- package/lib/drama/skills/short-drama/references/creator-documents.md +204 -0
- package/lib/drama/skills/short-drama/references/creator-workflow.md +73 -63
- package/lib/drama/skills/short-drama/references/knowhow-index.md +5 -0
- package/lib/drama/skills/short-drama/references/look-development.md +2 -3
- package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
- package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
- package/lib/drama/skills/short-drama/references/reference-roles.md +32 -135
- package/lib/drama/skills/short-drama/references/runtime-preflight.md +16 -19
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
- package/lib/drama/skills/short-drama-assets/SKILL.md +59 -170
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
- package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
- package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +6 -12
- package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
- package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +21 -2
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +12 -105
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
- package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +45 -155
- package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +12 -13
- package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
- package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
- package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
- package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
- package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
- package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
- package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +8 -65
- package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
- package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
- package/lib/drama/skills/short-drama-produce/SKILL.md +67 -15
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
- package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
- package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
- package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
- package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
- package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
- package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +27 -19
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
- package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +116 -238
- package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
- package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
- package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +12 -7
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
- package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +27 -62
- package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
- package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +21 -23
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
- package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +16 -71
- package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +123 -230
- package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
- package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +24 -6
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +35 -27
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +13 -10
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +17 -73
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +74 -268
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
- package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
- package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
- package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
- package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
- package/lib/index.js +971 -46
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/LICENSE +21 -0
- package/lib/novel-to-game/README.md +180 -0
- package/lib/novel-to-game/README_ZH.md +178 -0
- package/lib/novel-to-game/VERSION +1 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
- package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
- package/lib/novel-to-game/manifest.json +508 -0
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
- package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
- package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
- package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
- package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
- package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
- package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
- package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
- package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
- package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
- package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
- package/lib/oh-story/manifest.json +419 -309
- package/lib/oh-story/roles/character-designer.md +4 -4
- package/lib/oh-story/roles/consistency-checker.md +1 -1
- package/lib/oh-story/roles/narrative-writer.md +41 -42
- package/lib/oh-story/roles/story-architect.md +19 -23
- package/lib/oh-story/roles/story-explorer.md +8 -5
- package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
- package/lib/oh-story/skills/story/SKILL.md +16 -9
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-import/SKILL.md +21 -8
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
- package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
- package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
- package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/story-long-write/references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/story-long-write/references/{reversal-toolkit.md → long-reversal.md} +18 -32
- package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +5 -4
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +17 -11
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-review/SKILL.md +26 -17
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +85 -41
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
- package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/story-setup/references/agent-references/{genre-core-mechanics.md → long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
- package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-setup/references/agent-references/long-reversal.md} +18 -32
- package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
- package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
- package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → short-reversal.md} +29 -23
- package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
- package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
- package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
- package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
- package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
- package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
- package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +6 -6
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
- package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
- package/lib/types/client/drama-production-view.d.ts +34 -0
- package/lib/types/client/drama-production-view.d.ts.map +1 -0
- package/lib/types/client/drama-production.d.ts +92 -0
- package/lib/types/client/drama-production.d.ts.map +1 -0
- package/lib/types/client/file-activity.d.ts +9 -2
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-intents.d.ts +9 -0
- package/lib/types/client/production-intents.d.ts.map +1 -0
- package/lib/types/client/production-prompts.d.ts +9 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -0
- package/lib/types/client/production-runtime.d.ts +58 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -0
- package/lib/types/client/video-studio.d.ts +41 -0
- package/lib/types/client/video-studio.d.ts.map +1 -0
- package/lib/types/client/workbench-ui.d.ts +5 -0
- package/lib/types/client/workbench-ui.d.ts.map +1 -0
- package/lib/types/game-verification.d.ts +16 -0
- package/lib/types/game-verification.d.ts.map +1 -0
- package/lib/types/index.d.ts +5 -2
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/production-intent.d.ts +21 -0
- package/lib/types/production-intent.d.ts.map +1 -0
- package/lib/types/production-tool.d.ts +5 -0
- package/lib/types/production-tool.d.ts.map +1 -0
- package/lib/types/reference-tool.d.ts +6 -0
- package/lib/types/reference-tool.d.ts.map +1 -0
- package/lib/types/role-provider.d.ts.map +1 -1
- package/lib/types/role-tool.d.ts +3 -1
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts +7 -0
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts +42 -0
- package/lib/types/video-project.d.ts.map +1 -0
- package/lib/types/workspace-request-trust.d.ts +6 -0
- package/lib/types/workspace-request-trust.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts +20 -0
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +282 -0
- package/lib/video-recap/LICENSE +21 -0
- package/lib/video-recap/README.en.md +257 -0
- package/lib/video-recap/README.md +255 -0
- package/lib/video-recap/manifest.json +684 -0
- package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
- package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
- package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
- package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
- package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
- package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
- package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
- package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
- package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
- package/lib/video-recap/skills/video-script/SKILL.md +248 -0
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
- package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
- package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
- package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
- package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
- package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
- package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
- package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
- package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
- package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
- package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
- package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
- package/package.json +57 -41
- package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
- package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
- package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
- package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
- package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
- package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
- package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
- package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
- package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
- /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
- /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# 美术方向设计方法
|
|
2
|
+
|
|
3
|
+
方向必须能排除错误方案。“路线只由世界中的光揭示,不使用漂浮路标”能指导取舍;“高级、电影感、
|
|
4
|
+
沉浸、精致”不能。
|
|
5
|
+
|
|
6
|
+
## 视觉语言
|
|
7
|
+
|
|
8
|
+
- **镜头与构图**:距离、角度、焦点顺序、前中后景、允许遮挡和留给 HUD 的区域。
|
|
9
|
+
- **形状与尺度**:玩家、目标、威胁、奖励和地标先靠轮廓区分,脸与细节只作第二层。
|
|
10
|
+
- **世界密度**:细节随决策压力和节奏变化,不用随机填充制造丰富感。
|
|
11
|
+
- **材质、光和颜色**:每个编码功能说明含义,并带形状、图标、文字或位置等非颜色冗余。
|
|
12
|
+
- **界面**:只显示当前决策需要的信息;首屏有唯一焦点,次级面板有折叠、揭示或常驻理由。
|
|
13
|
+
- **语言与文化**:字体覆盖、阅读顺序、行宽和信息密度在目标视口可读;文化元素有原作依据或功能。
|
|
14
|
+
|
|
15
|
+
视觉不能售卖机制没有兑现的战术深度。界面若写“阵型”“行动顺序”或关系档位,规则必须真的读取
|
|
16
|
+
这些状态;否则弱化或删除视觉承诺。
|
|
17
|
+
|
|
18
|
+
## 默认明度裁决
|
|
19
|
+
|
|
20
|
+
低曝光是题材和玩法决定,不是通用的“高级感”滤镜。若 `PRODUCT_BRIEF`、原作证据或核心循环没有
|
|
21
|
+
明确要求恐怖、黑色、潜行、灾难、地下探索等低照度体验,首屏和核心循环默认使用可辨的中高明度;
|
|
22
|
+
历史、成人、严肃、悲剧或电影感本身都不足以批准整屏压暗。
|
|
23
|
+
|
|
24
|
+
夜晚可以暗,但必须保留四层:人物轮廓与面部朝向、关键器物与交互点、正文与选项、结果与危险信号。
|
|
25
|
+
优先用局部明暗、冷暖分区、遮挡、距离、材质和功能性色制造压力;不要同时叠加低曝光、黑幕、暗角、
|
|
26
|
+
降饱和、烟雾和小灰字。若确需全局偏暗,方向必须写清依据、涉及界面、不可低于的可读层和亮度/高对比
|
|
27
|
+
fallback,并用目标视口的实际交互画面验收,而不是只看概念海报。
|
|
28
|
+
|
|
29
|
+
## 时代题材的审美校准
|
|
30
|
+
|
|
31
|
+
“古风”和“现代审美”不是一条从古到今的滑杆,至少拆成三轴:
|
|
32
|
+
|
|
33
|
+
- **世界时代**:建筑、服饰、发式、器物、礼法和空间关系属于哪个时代;
|
|
34
|
+
- **表现媒介**:古画复刻、二维叙事插画、动画化角色、3D 游戏场景或真人摄影;
|
|
35
|
+
- **人物理想化**:写实、成熟理想化、动画化或幼态化的比例、面部与材质。
|
|
36
|
+
|
|
37
|
+
只在被反馈命中的轴上移动。用户说“太旧”,先检查是不是古画媒介、黄褐旧化和静态陈列感,不要自动
|
|
38
|
+
把世界改成现代棚拍;用户说“太现代”,先撤现代服装、广告构图和摄影语法,不要退回低明度古画;用户说
|
|
39
|
+
“太真实”,优先把真人皮肤、镜头毛孔和 3D 材质改成二维笔触、理想化轮廓和可想象的面部,不要把角色
|
|
40
|
+
幼态化。
|
|
41
|
+
|
|
42
|
+
高风险风格先做一张真正会进入运行界面的目标图,而不是孤立 moodboard。通过后把它写成可观察合同:
|
|
43
|
+
时代元素、媒介、人物成熟度、光色、构图、文本留白与五项反例。批量资产以目标图和身份母版为引用;
|
|
44
|
+
方向被否决时停止扩批,删除或隔离被否决样张,不把“已经生成很多”当成继续沿错路的理由。
|
|
45
|
+
|
|
46
|
+
## 信息层级
|
|
47
|
+
|
|
48
|
+
叙事主导、文字主导或混合项目先把信息分成三层,再画 HUD:
|
|
49
|
+
|
|
50
|
+
- **常驻**:当前时空、正在做的事,以及错过就会误操作的一条急迫信号;
|
|
51
|
+
- **当前场景**:这次选择独有的压力、必要证据和选项差异,随场景进入与退出;
|
|
52
|
+
- **按需账册**:完整资源、关系网、历史、证据来源、解锁进度和档案,由玩家主动打开。
|
|
53
|
+
|
|
54
|
+
状态即使真实存在,也不能仅因“以后可能有用”就常驻。若同一画面同时解释旧例、压力、征兆、证据、
|
|
55
|
+
关系、资源、解锁和多个长选项,先做渐进披露:保留一个当前问题;把历史挪到真正改变某个选项的位置,
|
|
56
|
+
把完整账目收入按需页,把已经读过的前情压成一句可识别回声。选项先呈现玩家动词和本项独有代价,
|
|
57
|
+
不要在每张卡重复全局规则。
|
|
58
|
+
|
|
59
|
+
主游玩面板的滚动条通常说明一拍承担了多拍信息,不能只隐藏滚动条或缩小字号。优先删除重复、改为
|
|
60
|
+
就地揭示或拆成相邻节拍,使主要正文、当前选择与必要反馈在目标视口同屏;只有玩家明确打开的账册、
|
|
61
|
+
图鉴、历史或长档案适合在可见书页边界内滚动。
|
|
62
|
+
|
|
63
|
+
## 招牌时刻
|
|
64
|
+
|
|
65
|
+
招牌时刻是实际游戏界面的前后变化,不是海报。每个交互模式只需一个最能说明它的时刻,写清:
|
|
66
|
+
|
|
67
|
+
`界面/模式 | 玩家动作 | 即时目标与压力 | 第一焦点 | 世界规则如何可见 | 输入前 | 输入后 | HUD/声音`
|
|
68
|
+
|
|
69
|
+
缩略图下仍应看出玩家在做什么,以及为什么只有这部作品会产生这个画面。标题、主要循环、最高压力
|
|
70
|
+
和结果都要被方向覆盖,但能由同一时刻承担时不为凑数量拆图。
|
|
71
|
+
|
|
72
|
+
## 运动与声音
|
|
73
|
+
|
|
74
|
+
对核心动词定义最少四层反馈:输入被接收、动作生效/落空、结果分级、状态转场。不同事件不用同一个
|
|
75
|
+
通用抖动或辉光;强反馈不能遮住下一次决策。低动效或跳过后仍保留信息、节拍和结果。
|
|
76
|
+
|
|
77
|
+
身份专属命令存在时,把“已接收 / 待澄清或拒绝 / 执行中 / 实际结果 / 证物与见证 / 到期事项”设计成
|
|
78
|
+
可区分节拍;不得在规则提交前用完成态颜色、声音或人物动作误导玩家。
|
|
79
|
+
|
|
80
|
+
声音方向说明器物/乐器/环境来源、核心动作和状态的层级,以及静音时由什么视觉通道补足。音乐规定
|
|
81
|
+
情绪与节奏边界,不写具体生产参数。
|
|
82
|
+
|
|
83
|
+
语音不是默认项。只有人声能提供文字和普通音效不能等价提供的角色意志、空间警告或不可逆回响时
|
|
84
|
+
才采用;语音不得成为规则、目标、选择和结果的唯一载体。方向层只记录:
|
|
85
|
+
|
|
86
|
+
`时刻 | 说话者 | 触发状态 | 独特价值 | 声口/节奏 | 同步字幕 | 重复/跳过 | 静音结果 | 权利边界`
|
|
87
|
+
|
|
88
|
+
逐句台词、音色资产、服务调用、缓存与故障处理属于构建生产合同。
|
|
89
|
+
|
|
90
|
+
## 角色、场景与状态
|
|
91
|
+
|
|
92
|
+
- 角色靠轮廓、发式、姿态、常持器物和与他人的距离区分;关系变化要在构图中可见。
|
|
93
|
+
- 场景用布局、地标、材质和光线建立固定地理;时段、天气、损毁等是可变化状态。
|
|
94
|
+
- 道具分固定形制与当前持有者/开关/破损状态;剧情改变后从正确时刻起更新。
|
|
95
|
+
- 同一对象的多状态优先保持机位与构图,让玩家读出变化,而不是得到几张互不相干的图。
|
|
96
|
+
|
|
97
|
+
叙事项目把称呼、站位、朝向、可选行动和场景可达性当作关系反馈;只有玩家确需精确读数时才增加
|
|
98
|
+
量表,并在旁边显示变化原因。
|
|
99
|
+
|
|
100
|
+
## 资产与动态媒体边界
|
|
101
|
+
|
|
102
|
+
资产清单只分两级:缺失会破坏玩家效果的**必需**资产,以及已有明确替代表达的**可降级**资产。
|
|
103
|
+
每项记录视觉作用、识别锚点、使用状态、来源/授权边界和 fallback,不在方向层指定生成工具。
|
|
104
|
+
|
|
105
|
+
动态媒体仅在固定演出比实时场景更合适时采用。方向条目写:体验角色、状态触发、时长/节奏、
|
|
106
|
+
必须保持的身份/地理/道具事实、开始与结束边界、跳过结果和静帧/低动效版本。玩家需要改变视角、
|
|
107
|
+
位置或空间关系时使用实时场景,不用视频伪装交互。
|
|
108
|
+
|
|
109
|
+
## 视觉目标
|
|
110
|
+
|
|
111
|
+
视觉目标包只在需要降低高风险视觉歧义时制作,例如陌生画风、复杂构图、角色身份连续性或高完成度
|
|
112
|
+
展示。每个风险保留一张原创 style frame、构图草图或当前 graybox paint-over,并写 3–5 条可观察
|
|
113
|
+
条件与失败例;不要为所有界面建立量表、截图矩阵和证据目录。
|
|
114
|
+
|
|
115
|
+
目标图锁方向,不证明最终资产、趣味或发布质量。图像工具不可用时保留文字方向并记录未解决风险,
|
|
116
|
+
不把缺图伪装成已完成,也不把 ART_DIRECTION 本身判为无效。
|
|
117
|
+
|
|
118
|
+
视觉目标若采用暗调,至少同时保留一个首屏或核心循环目标图来证明实际操作层没有随气氛一起失读;
|
|
119
|
+
非特殊题材的目标图若只能靠抬高显示器亮度辨认人物、器物或按钮,应直接否决该方向。
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: game-build
|
|
3
|
+
description: "Build a risk-matched whitebox or the approved production game for its target runtime. Turn GAME_DESIGN, and ART_DIRECTION when production begins, into a minimal BUILD_BRIEF and a runnable candidate that can be iterated with replayable evidence. Use for prototype the riskiest design question, implement the approved game design, or turn this design into a running game. 游戏构建执行。先按最大风险做白盒,或在正式生产时把批准后的 GAME_DESIGN 与 ART_DIRECTION 压缩成最小 BUILD_BRIEF,在目标运行环境中实现可运行候选并用可回放证据迭代。用于验证高风险设计问题、构建游戏原型或实现批准方案。"
|
|
4
|
+
---
|
|
5
|
+
# 游戏构建执行
|
|
6
|
+
|
|
7
|
+
保护已批准的体验边界;正式生产时再保护已批准的美术边界。驱动实现模型完成真实可玩的候选,不在
|
|
8
|
+
构建阶段重新做概念、关卡或美术方向。
|
|
9
|
+
|
|
10
|
+
读取 [build-brief-contract.md](references/build-brief-contract.md) 与
|
|
11
|
+
[playable-model-contract.md](references/playable-model-contract.md)。白盒阶段必须已有 `GAME_DESIGN.md`;
|
|
12
|
+
完整候选还必须已有 `ART_DIRECTION.md`。缺产品决定时回对应 owner,不在 BUILD_BRIEF 就地发明。
|
|
13
|
+
|
|
14
|
+
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
|
|
15
|
+
|
|
16
|
+
## 目标与自由
|
|
17
|
+
|
|
18
|
+
按 PRODUCT_BRIEF 锁定的平台、生产引擎、目标运行时、显示/输入、范围、分级和联网边界交付。
|
|
19
|
+
目标工具链不可用时不得自动改做网页;只有 brief 已批准替代运行时才可使用,并分开记录
|
|
20
|
+
`targetRuntime`、`testedRuntime` 与未覆盖项。
|
|
21
|
+
|
|
22
|
+
正式生产继承美术方向的明度边界。非低照度题材不得在实现阶段擅自用全局黑罩、暗角、降曝光或低对比
|
|
23
|
+
小字制造“电影感”;夜景也要保留人物、器物、行动与结果可读性。确需偏暗的界面只按已批准范围实现,
|
|
24
|
+
并保留方向中约定的亮度或高对比 fallback。
|
|
25
|
+
|
|
26
|
+
时代题材的高风险画风先接入一张实际目标图并在目标视口确认,再批量生产。目标图已批准后,后续资产
|
|
27
|
+
必须继承同一时代世界、表现媒介、人物成熟度、身份锚点、光色和文本留白;不得把“当代审美”擅自实现成
|
|
28
|
+
现代服装/棚拍,也不得把“古风”擅自实现成古画旧化。用户否决方向时停止扩批,替换运行引用并清理被
|
|
29
|
+
否决资产,不能让旧图、试验图和批准图混在同一发布包。
|
|
30
|
+
|
|
31
|
+
BUILD_BRIEF 只压缩产品边界、必须保真的体验事实、运行方式与完成证据,实现细节交给实现模型。
|
|
32
|
+
|
|
33
|
+
先声明 `buildStage: whitebox|production` 与 `buildPath: template|custom`。已有交互语法只有在能保留原作
|
|
34
|
+
独有动作、代价和世界回应时才采用;实时手感、空间、视线、物理或模板覆盖不了的核心动词走 custom。
|
|
35
|
+
白盒也必须选择能验证最大风险的形态,不能把所有项目降成文游。
|
|
36
|
+
|
|
37
|
+
当前会话能编码时直接实现;外部模型不可用时只交付构建说明,不声称游戏已生成。不要发送与原型
|
|
38
|
+
无关的完整受版权保护原文。
|
|
39
|
+
|
|
40
|
+
## 按能力读取可选合同
|
|
41
|
+
|
|
42
|
+
- 语音策略不是 `none` 时读取 [tts-production-contract.md](references/tts-production-contract.md)。TTS
|
|
43
|
+
优先构建期生成成本地资产;运行时远程合成须在 brief 批准,密钥只留受信服务端。
|
|
44
|
+
- 实际采用动态媒体时读取 [generative-media-pipeline.md](references/generative-media-pipeline.md)。已有批准
|
|
45
|
+
参考图时以图约束;工具与模型按当前环境选择,不写成跨项目默认。
|
|
46
|
+
|
|
47
|
+
## 共同构建循环
|
|
48
|
+
|
|
49
|
+
1. 先实现一个最小但完整的核心循环:启动、真实输入、状态变化、结果和重开。范围不足时修范围,
|
|
50
|
+
不先堆审计材料。
|
|
51
|
+
2. 先集中实现最小状态面与规则裁决器,再接表现层。模型可解释自由输入、提出候选动作或根据已提交结果
|
|
52
|
+
写对白;只有规则器能提交资源、位置、知识、承诺、物件归属、胜负与事件日志。
|
|
53
|
+
设计含 `signature_command` 时,先逐字继承 `id / label / intents / slots / validators / commit`,管线固定为
|
|
54
|
+
“表述 → 有版本的候选结构 → schema/前置/知识/承诺验证
|
|
55
|
+
→ 执行阻力 → 确定性提交 → 叙述”;含混、冲突或越界候选返回澄清/拒绝且不提交,不能让关键词命中
|
|
56
|
+
或模型 `effects` 直接改状态。
|
|
57
|
+
3. 固定内容/规则/存档版本、初态、seed 与输入序列;事件日志记录 action、观察者和前后状态摘要。专属
|
|
58
|
+
命令还记录解析器版本、规范化候选、验证结果、执行轨迹和到期事项;回放消费已记录候选,不重新调用
|
|
59
|
+
在线模型。试玩反馈定位到节点,局部 patch 后重放失败路径和相邻反例,不让未选分支进入历史。
|
|
60
|
+
4. 回写实际工具链、install/build/start 命令和版本;未知值写 `NOT_AVAILABLE: 原因`,不猜。
|
|
61
|
+
|
|
62
|
+
`whitebox` 到此只运行最窄的模型/回放检查与启动 smoke,输出结构化观察并交回 design owner;不调用
|
|
63
|
+
`game-qa`,不写或覆盖 `qa/verification.json`,也不把白盒通过冒充生产候选完成。设计修订后重放受影响
|
|
64
|
+
路径,直到最大风险已被实际暴露或当前方向被否决。
|
|
65
|
+
|
|
66
|
+
`production` 继续:
|
|
67
|
+
|
|
68
|
+
5. 提供一条权威验证命令和最小可观察状态,使 `game-qa` 能一次走完
|
|
69
|
+
`clean start → 核心动作 → 设计结果 → restart`;构建阶段不预写 QA 结论或重复跑完整验收。
|
|
70
|
+
6. 运行最窄的开发检查与启动 smoke,修复构建失败、阻断日志、资源失败和崩溃;替代运行时未覆盖的
|
|
71
|
+
目标平台输入、性能、打包或设备项写入 limitation。
|
|
72
|
+
7. 达到 brief 的 `targetFinish`;更高完成度只处理已批准的焦点资产和招牌时刻,不制造与可玩闭环
|
|
73
|
+
无关的发布审计。
|
|
74
|
+
8. 交给 `game-qa` 只运行一次权威命令并写最终事实。时间、预算或生成调用用尽只会留下
|
|
75
|
+
FAIL/NOT_RUN,不会生成 PASS。
|
|
76
|
+
|
|
77
|
+
连续 3D、语音、生成媒体、多语言与无障碍仅在实际采用时增加项目自己的回归检查。必需异步资产
|
|
78
|
+
加载或解码失败不得静默换灰盒仍宣称通过;可继续的 fallback 条件见 build-brief-contract.md。
|
|
79
|
+
|
|
80
|
+
## 输出
|
|
81
|
+
|
|
82
|
+
生成 `build/BUILD_BRIEF.md` 与实际候选;production 还生成权威验证入口。构建不生成最终 QA 结论。
|
|
83
|
+
截图、录制与 raw trace 只保留调试所需的最小集合;`game-qa` 是 production 完整路径与
|
|
84
|
+
`qa/verification.json` 的唯一 owner。
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# 构建说明契约
|
|
2
|
+
|
|
3
|
+
构建说明只约束产品边界、实际运行方式和证明方式;不要规定实现模型能从环境正确决定的类、着色器、
|
|
4
|
+
框架或文件拆分。
|
|
5
|
+
|
|
6
|
+
```text
|
|
7
|
+
# 成品目标
|
|
8
|
+
targetFinish: [逐字继承 PRODUCT_BRIEF]
|
|
9
|
+
buildStage: [whitebox | production]
|
|
10
|
+
buildPath: [template | custom]
|
|
11
|
+
[目标平台、目标交付物、受众、切片时长、视口/朝向/输入、分级、联网边界]
|
|
12
|
+
|
|
13
|
+
# 必读设计
|
|
14
|
+
- whitebox: [GAME_DESIGN.md]
|
|
15
|
+
- production: [GAME_DESIGN.md, ART_DIRECTION.md]
|
|
16
|
+
|
|
17
|
+
# 必须保真
|
|
18
|
+
- 玩家承诺与核心幻想
|
|
19
|
+
- experienceProfile: [逐字继承 GAME_DESIGN]
|
|
20
|
+
- 3–5 个核心动词及各自输入、可观察状态变化
|
|
21
|
+
- 会改变结果的规则、三段弧结束标记
|
|
22
|
+
- 界面语言、人物声口和禁用句式
|
|
23
|
+
- 叙事项目追加主要路径、结局条件、持久旗标读取点和人物知识边界
|
|
24
|
+
- production 追加:每个界面/模式的招牌时刻、HUD 层级、主游玩面板的单焦点阅读边界与美术禁区
|
|
25
|
+
|
|
26
|
+
# 可执行模型(两阶段都需要)
|
|
27
|
+
- 最大风险与原型形态;采用 template 时列语法与脱离条件,custom 时列不可被模板替代的核心动词
|
|
28
|
+
- 运行时真正消费的最小状态、动作、前置、效果、观察者/知识更新、事件和不变量
|
|
29
|
+
- signature_command: [N/A,或 id / label / intents / slots / validators / commit;具体数量服从项目]
|
|
30
|
+
- 到期事项与谈话回灌(实际采用时):来源、due/trigger、携带事实、重新上桌、结清;谈话只提交已验证结构
|
|
31
|
+
- contentRevision / rulesRevision / saveSchemaVersion / seed
|
|
32
|
+
- snapshot 用于载入,event log 用于定位与重放;两者不能互相冒充
|
|
33
|
+
- 固定验证路径:初态摘要、输入序列、预期终态/反馈、相邻反例
|
|
34
|
+
- 反馈 patch:issue id、owner、目标节点、兼容性、受影响路径与重放结果
|
|
35
|
+
|
|
36
|
+
# 范围
|
|
37
|
+
[必须包含;明确排除;最终范围差异]
|
|
38
|
+
|
|
39
|
+
# 运行与验证
|
|
40
|
+
toolchain:
|
|
41
|
+
targetPlatform: [批准平台]
|
|
42
|
+
targetRuntime: [计划交付的运行环境]
|
|
43
|
+
testedRuntime: [本次实际启动的运行环境]
|
|
44
|
+
engine: [实际引擎/框架]
|
|
45
|
+
engineVersion: [实际版本或 NOT_AVAILABLE: 原因]
|
|
46
|
+
runtimeVersion: [实际版本或 NOT_AVAILABLE: 原因]
|
|
47
|
+
packageManager: [name@version;无则 none]
|
|
48
|
+
commands:
|
|
49
|
+
install: [命令;无需安装写 NONE]
|
|
50
|
+
buildOrExport: [命令;无需单独构建写 NONE]
|
|
51
|
+
start: [命令]
|
|
52
|
+
modelCheck: [whitebox 的最窄模型/回放检查;production 可写 NONE]
|
|
53
|
+
verify: [production 的一条权威验证命令;whitebox 写 NOT_APPLICABLE]
|
|
54
|
+
verification:
|
|
55
|
+
owner: [whitebox 为 design owner;production 为 game-qa]
|
|
56
|
+
evidence: [whitebox 的结构化观察,或 production 完整运行生成的工作区相对路径]
|
|
57
|
+
|
|
58
|
+
# 当前限制
|
|
59
|
+
[scope / reason;testedRuntime 与 targetRuntime 不同时列目标独有未测试项]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 最小完成证据
|
|
63
|
+
|
|
64
|
+
whitebox 只证明被选中的最大风险:规则/场景模型能启动,固定路径可运行与重放,偏差能定位回
|
|
65
|
+
GAME_DESIGN;不要求 ART_DIRECTION、最终 HUD、完整路径或 `qa/verification.json`,也不进入六项 QA 结论。
|
|
66
|
+
|
|
67
|
+
production 的权威 verify 必须能在一次完整路径中证明:启动成功、非空且变化的真实渲染、真实输入改变状态、核心
|
|
68
|
+
循环完成、至少一个设计结果可达、restart 回到定义初态。构建阶段只准备入口和可观察状态;由
|
|
69
|
+
`game-qa` 实际运行一次并写结论。证据使用工作区相对路径,不能只留临时目录或逐点击截图。
|
|
70
|
+
|
|
71
|
+
可执行模型、事件日志或 patch 存在时,verify 还应在项目回归中证明同版本同 seed/输入可重放、非法
|
|
72
|
+
前置不提交、未选择分支不污染、未见证者不引用秘密,以及 patch 声明外的状态不变。这些诊断映射回
|
|
73
|
+
六项玩家效果或写 limitation,不新增顶层 QA gate。
|
|
74
|
+
|
|
75
|
+
测试环境与目标运行环境不同时,这六项只声明实际覆盖;源码身份、公网、营销、主观趣味、权利
|
|
76
|
+
判断和完成度声明不进入这六项机器事实。
|
|
77
|
+
|
|
78
|
+
## 条件台账
|
|
79
|
+
|
|
80
|
+
### 视觉与必需资产
|
|
81
|
+
|
|
82
|
+
只列批准的焦点资产与招牌时刻:资产键、生产状态、工作区证据和剩余问题。必需运行期资产失败必须
|
|
83
|
+
阻断或进入明确错误界面;可降级项须预先写 fallback,并证明核心动作、状态、结果、可读反馈和重开
|
|
84
|
+
仍成立。
|
|
85
|
+
|
|
86
|
+
同时继承 `ART_DIRECTION.md` 的明度边界。非低照度题材检查首屏、核心循环、夜景和结果页,禁止用
|
|
87
|
+
未经批准的全局黑罩、暗角、降曝光或灰色小字替代气氛设计;夜景至少能辨认人物轮廓与朝向、关键器物、
|
|
88
|
+
行动目标、正文/选项和结果信号。批准的暗调界面须保留约定的亮度或高对比 fallback,并在目标视口
|
|
89
|
+
用实际交互画面验证,而不是只验静态海报。
|
|
90
|
+
|
|
91
|
+
时代题材另列目标图批准状态和三轴合同:世界时代、表现媒介、人物理想化程度。未批准前只生产最小
|
|
92
|
+
样张;批准后批量资产必须引用目标图与身份母版,并继承光色、构图和文本留白。若用户否决样张,构建
|
|
93
|
+
立即停止同方向扩批,替换所有运行引用并从发布目录清掉旧图、试验图和未引用变体。
|
|
94
|
+
|
|
95
|
+
### 连续 3D
|
|
96
|
+
|
|
97
|
+
采用连续 3D 时记录输入控制权、相机/移动前向、失焦归零,以及会改变路线的可见布局与 collider
|
|
98
|
+
边界。不要把渲染帧率或一条成功路线当碰撞证明。
|
|
99
|
+
|
|
100
|
+
### 动态媒体与语音
|
|
101
|
+
|
|
102
|
+
只记录游戏实际采用的媒体或语音资产、来源、运行文件、字幕/静音/缺音 fallback 和生成状态。密钥
|
|
103
|
+
不入库;未生成写 `NOT_RUN: 原因`。生成请求、营销旁白和可重建中间文件不作为最小 QA 证据。
|
|
104
|
+
|
|
105
|
+
## 权威验证
|
|
106
|
+
|
|
107
|
+
verify 可以组合现有游戏效果脚本,但最终 QA 只运行一次;由 `game-qa` 在 `qa/verification.json`
|
|
108
|
+
回写实际 command、exit code、完整路径、六项结果和当前限制。构建者不得预填 PASS 或另跑一套平行
|
|
109
|
+
验收。预算、时间或调用上限只会留下 NOT_RUN/FAIL、延期或缩小范围,不会替代证据。
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 动态媒体生产合同
|
|
2
|
+
|
|
3
|
+
仅当 `ART_DIRECTION.md` 已选择视频过场、环境循环或关键帧演出时使用。本文只规定改编连续性与
|
|
4
|
+
交接边界;图片、视频工具和模型由当前环境决定,使用前按其官方文档核实能力、许可、费用与输出格式。
|
|
5
|
+
|
|
6
|
+
动态媒体负责表现已批准的角色、场景和剧情状态,不重新设计人物身份、空间地理、玩法结果或镜头用途。
|
|
7
|
+
|
|
8
|
+
## 采用判断
|
|
9
|
+
|
|
10
|
+
- 固定构图、无需玩家改变视角或空间关系的短演出适合预渲染媒体。
|
|
11
|
+
- 输入会改变视角、位置、碰撞或战术信息时使用实时场景,不用视频伪装交互。
|
|
12
|
+
- 每条动态媒体都必须有静帧或低动效表达;跳过或降级后仍保留信息、节拍、输入机会和结果。
|
|
13
|
+
- 只有 brief 明确把该媒体列为必需玩家效果时,缺失才阻断完整路径;否则使用已登记的 fallback,
|
|
14
|
+
并把完成度差异写入 limitation。
|
|
15
|
+
|
|
16
|
+
## 最小台账
|
|
17
|
+
|
|
18
|
+
不要为每个供应商建立一套目录和审批流。在 BUILD_BRIEF 或资产台账中每条只记录:
|
|
19
|
+
|
|
20
|
+
`asset_key | state_trigger | duration | references | locked_facts | allowed_motion | start_boundary | end_boundary | output | fallback | provenance | status`
|
|
21
|
+
|
|
22
|
+
- `references`:已批准的角色、造型、场景或构图参考;声明各自允许控制的事实。
|
|
23
|
+
- `locked_facts`:不得漂移的身份、服装、地理、道具状态、色板与材质。
|
|
24
|
+
- `allowed_motion`:本镜允许发生的角色动作、状态变化和运镜,不重描外观。
|
|
25
|
+
- `start_boundary` / `end_boundary`:镜头两端的位置、朝向、持物、服装、光线和剧情状态。
|
|
26
|
+
- `provenance`:输入与输出的来源、权利边界和工作区路径;真实人物参考须有明确授权。
|
|
27
|
+
|
|
28
|
+
## 生产顺序
|
|
29
|
+
|
|
30
|
+
1. 先冻结持久事实与本镜临时状态,再生成关键帧或动态结果;不要用提示词临时补设计空白。
|
|
31
|
+
2. 已有可用参考时做受控变体,只描述本镜差量;没有参考时才从风格与事实锁生成第一张基准图。
|
|
32
|
+
3. 先用低成本草稿检查身份、构图、动作和边界,成立后再产最终尺寸;不要把分辨率当连续性。
|
|
33
|
+
4. 输出立即保存到工作区并使用稳定文件名;临时下载地址、供应商任务页和缓存不是游戏资产。
|
|
34
|
+
5. 密钥只留在受信环境。只在复现故障确有需要时保留去密钥请求摘要,不默认归档完整 API 往返。
|
|
35
|
+
|
|
36
|
+
## 连续性检查
|
|
37
|
+
|
|
38
|
+
对每条媒体只检查会影响玩家理解的事实:
|
|
39
|
+
|
|
40
|
+
- 首、中、尾代表帧中的角色身份、临时造型、场景地理、道具状态和色板没有无依据漂移;
|
|
41
|
+
- 上一镜 `end_boundary` 能接到下一镜 `start_boundary`;
|
|
42
|
+
- 设计规定的状态变化发生在正确镜头,未提前泄露或丢失;
|
|
43
|
+
- 没有凭空增加人物、道具、肢体或第二个主角;
|
|
44
|
+
- 正常速度下动作、字幕与输入窗口可读,跳过后仍进入同一合法状态。
|
|
45
|
+
|
|
46
|
+
这是构建检查,不新增真人审片或独立 QA 门禁。审美偏好保留为主观风险;只有身份、状态、边界或
|
|
47
|
+
可读性破坏批准设计时才回流修复。
|
|
48
|
+
|
|
49
|
+
## 接入与失败
|
|
50
|
+
|
|
51
|
+
- 由游戏状态机触发,预载、播放、跳过、失焦、静音和资源释放行为必须明确。
|
|
52
|
+
- 运行环境不能解码最终格式时,在构建期转成目标环境支持的格式,不在运行时临时请求供应商。
|
|
53
|
+
- 可降级资产失败时落到台账中的 fallback;必需资产失败时显示明确错误并让对应玩家效果 FAIL。
|
|
54
|
+
- 项目自己的媒体诊断映射回既有六项可玩结果,不生成媒体专属 PASS、报告或重复证据对象。
|
|
55
|
+
|
|
56
|
+
BUILD_BRIEF 字段见 [build-brief-contract.md](build-brief-contract.md)。
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# 可执行改编模型合同
|
|
2
|
+
|
|
3
|
+
可执行模型只保存当前候选运行时必须消费的因果语义,不复制策划理由、美术方向或整份内容库。若项目
|
|
4
|
+
已有代码原生状态机、对话引擎、规则表或引擎场景图,可直接把它声明为模型;不要为了文件名再造一份
|
|
5
|
+
平行 JSON/YAML。独立数据文件只有在运行时实际加载,或作为测试合同逐项对照实现时才存在。
|
|
6
|
+
|
|
7
|
+
## 选择原型与构建路径
|
|
8
|
+
|
|
9
|
+
先按最大风险选白盒:
|
|
10
|
+
|
|
11
|
+
| 风险 | 最小可用形态 | 不能据此证明 |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| 知识、承诺、分支回响 | 文本/场景状态沙箱 | 操作手感、空间与镜头 |
|
|
14
|
+
| 资源、门槛、策略反制 | 回合状态板或桌面沙箱 | 实时节奏与物理 |
|
|
15
|
+
| 两层互相读写 | 场景叙事 + 最小系统 | 未实现层的完整质量 |
|
|
16
|
+
| 走位、视线、相机、物理 | 目标引擎灰盒 | 最终美术完成度 |
|
|
17
|
+
|
|
18
|
+
`template` 表示已有交互语法能直接承载核心动词;记录模板提供什么、原作改变什么、何时必须退出模板。
|
|
19
|
+
`custom` 表示核心动作依赖模板没有的操作或世界规则。路径只决定复用方式,不决定题材或成色。
|
|
20
|
+
|
|
21
|
+
## 最小语义面
|
|
22
|
+
|
|
23
|
+
按项目需要定义,不要求所有字段:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
version: content / rules / save schema
|
|
27
|
+
state: stable id / type / initial / visibility / invariant / source anchor
|
|
28
|
+
action: id / actor / preconditions / costs / effects / observers / reveals / consumes
|
|
29
|
+
event: action / before+after summary / witnesses / seed use / future callback
|
|
30
|
+
knowledge: world fact / player knows / character knows or believes / open question
|
|
31
|
+
commitment: who promised what / to whom / when it becomes irreversible / later reader
|
|
32
|
+
validation path: initial state / seed / inputs / expected state / expected feedback
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
只对会改变玩家决策或产生泄密风险的事实维护知识权限;普通环境事实无需多层心智模型。事件账本保留
|
|
36
|
+
“发生过什么”,关系或资源保留“现在是什么”;只存终值无法解释回响,只存事件也不适合即时载入。
|
|
37
|
+
|
|
38
|
+
## 裁决边界
|
|
39
|
+
|
|
40
|
+
规则器唯一提交时间、资源、位置、物件归属、知识、承诺、胜负和事件。生成模型可解释自由输入、提出
|
|
41
|
+
合法动作候选、写对白或根据已确认结果组织表达,但不能直接改最终状态。输出需先通过 schema、前置、
|
|
42
|
+
数值范围、知识权限、原作边界和分支污染检查。
|
|
43
|
+
|
|
44
|
+
表现层只读取已提交语义。同一个事件可渲染为文字、镜头、动画或 3D 交互,但换表现不能更改原因、
|
|
45
|
+
观察者、物件归属、知识披露或后续回读。
|
|
46
|
+
|
|
47
|
+
## 身份专属命令(按需)
|
|
48
|
+
|
|
49
|
+
只有 GAME_DESIGN 选择 `signature_command` 时实现,并逐字继承其 `id / label / intents / slots /
|
|
50
|
+
validators / commit` 六组结构;各组的具体条目数量服从项目。输入解析器把角色化表述变成有限候选,
|
|
51
|
+
不拥有结算权;候选按项目需要携带 intent、执行人、对象、物件、地点、可见范围、期限等槽位。schema、前置、资源、
|
|
52
|
+
执行人可用性、空间权限、人物知识、冲突承诺和原作边界任一失败时返回结构化澄清/拒绝,状态保持不变。
|
|
53
|
+
|
|
54
|
+
规则器再输出执行轨迹与实际结果:每一阻力环节说明通过、拒绝或部分完成,提交资源/物件/知识/关系,
|
|
55
|
+
创建证物、见证与到期事项;叙述器只把这些已确认事实写成场面。否定、条件和互斥表达不得靠关键词猜成
|
|
56
|
+
相反动作。若使用在线模型解析,日志保存 parser version、规范化候选与验证结果;确定性回放从候选开始,
|
|
57
|
+
不再次请求模型。
|
|
58
|
+
|
|
59
|
+
私人谈话若会改变主线,也走同一边界:模型只提出 `facts / promises / permissions / refusals / witnesses`
|
|
60
|
+
候选,规则器验证后写入事件账。不得让自由 `effects`、原始聊天摘要或忠诚估值直接成为权威状态。
|
|
61
|
+
|
|
62
|
+
## 到期事项
|
|
63
|
+
|
|
64
|
+
延期后果记录 source action、due/trigger、携带的执行人/物件/见证/承诺、status、重新上桌方式和结清事件。
|
|
65
|
+
到期时必须形成当前可见压力、机会或再次裁决;载入/回放不得提前触发、重复触发或让已结事项复活。
|
|
66
|
+
|
|
67
|
+
## Snapshot、事件日志与回放
|
|
68
|
+
|
|
69
|
+
- snapshot 服务快速载入,带内容/规则/存档版本;event log 服务定位、重演与测试。
|
|
70
|
+
- 同一版本、初态、seed 和规范化动作输入序列必须得到同一终态与事件顺序;在线生成表达不进入裁决 hash。
|
|
71
|
+
- 回滚模式由设计声明:自由重选、固定历史仅回看、或明确不可逆节点。渲染和 UI 回调不得偷偷改状态。
|
|
72
|
+
- 节点 id、变量语义、行动效果、知识权限改变时提供迁移,或明确拒绝旧存档/日志;不得静默重解释。
|
|
73
|
+
|
|
74
|
+
## 反馈与局部 patch
|
|
75
|
+
|
|
76
|
+
反馈记录 `issue → observation → expected/actual → node → owner → patch → replay`。自然语言负责表达复杂
|
|
77
|
+
偏差,标签负责聚类,结构化修改只触及被定位节点。patch 声明基础规则版本、目标节点、预期差异、
|
|
78
|
+
存档兼容性和受影响路径;修改后重放原失败路径及一条相邻反例,确认声明外状态没有变化。
|
|
79
|
+
|
|
80
|
+
白盒只回答被模拟的风险是否暴露、规则是否可执行和结果为何发生。选择是否困难、角色是否吸引人、
|
|
81
|
+
节奏是否愿意重玩仍需真人研究,不写成确定性 PASS。
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# 语音资产生产合同
|
|
2
|
+
|
|
3
|
+
只在 `ART_DIRECTION.md` 已选择角色语音、旁白或朗读时启用。语音表现已批准的台词和角色方向,
|
|
4
|
+
不创造新剧情,也不成为规则、目标、选择或结果的唯一载体。
|
|
5
|
+
|
|
6
|
+
## 产品边界
|
|
7
|
+
|
|
8
|
+
- 默认在构建期生成或录制成本地资产,游戏运行不依赖网络、供应商或密钥。
|
|
9
|
+
- 运行时动态语音只有在 PRODUCT_BRIEF 已批准联网、外部文本处理、成本、隐私和服务失效行为时采用;
|
|
10
|
+
客户端不持有服务密钥。
|
|
11
|
+
- 只发送逐句台词与必要读音,不上传小说、SOURCE_BIBLE、设计文档、未公开手稿或无关个人信息。
|
|
12
|
+
- 营销旁白与游戏内语音分别记账;一次成功不自动扩大到全量配音。
|
|
13
|
+
|
|
14
|
+
## 唯一台账
|
|
15
|
+
|
|
16
|
+
每条采用语音只记录一行:
|
|
17
|
+
|
|
18
|
+
`line_id | speaker | trigger | exact_text | language/pronunciation | voice_direction | subtitle_key | provenance/rights | output | fallback | status`
|
|
19
|
+
|
|
20
|
+
- 字幕和语音输入由同一 `exact_text` 派生;台词变化时旧音频失效。
|
|
21
|
+
- `speaker` 继承美术方向的年龄感、节奏、文化依据和可听辨差异,不按语言给所有角色共用一个声线。
|
|
22
|
+
- 音色只使用自录、获授权真人、获授权公共音色或合成设计音色;真实人物克隆需要明确许可。
|
|
23
|
+
- `fallback` 至少保证静音、缺文件和自动播放受限时仍能读懂并完成游戏。
|
|
24
|
+
|
|
25
|
+
## 生产与检查
|
|
26
|
+
|
|
27
|
+
1. 使用当前环境中合适的工具,按官方文档核实许可、输入处理和输出格式;仓库不固定供应商或模型。
|
|
28
|
+
2. 密钥只从受信环境读取,不进入仓库、客户端、日志正文或证据文件;失败重试有明确上限。
|
|
29
|
+
3. 把最终音频保存到工作区稳定路径;临时 URL、供应商任务页和缓存不是游戏资产。
|
|
30
|
+
4. 确认文件非空、可被目标运行时解码,时长/声道/响度合理,并在实际触发位置播放一次。
|
|
31
|
+
5. 检查字幕同步、说话者标识、专名读音、重复频率、跳过、静音、损坏文件和重开路径。
|
|
32
|
+
|
|
33
|
+
自然度、魅力和音色偏好不写成机器 PASS,也不新增强制真人听审。可降级语音失败时保留字幕或普通
|
|
34
|
+
音效并记 limitation;brief 明确列为必需的语音失败时,对应玩家效果 FAIL。
|
|
35
|
+
|
|
36
|
+
构建完成后只回写上述台账的本地输出、来源/权利、基本媒体信息和结果,不归档完整 API 往返、供应商
|
|
37
|
+
页面截图或重复报告。
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: game-concept
|
|
3
|
+
description: "Design game concepts from a novel. From SOURCE_BIBLE and PRODUCT_BRIEF, generate three genuinely different directions on the dimensions still unlocked, then pick the most worthwhile playable prototype using hard vetoes and explicit trade-offs. Use for what game should this novel become, compare game concepts, choose a game direction for this book, decide whether this novel should become an interactive story. 小说游戏概念设计。根据 SOURCE_BIBLE 与 PRODUCT_BRIEF 在未锁定维度上生成三个真正不同的方案,用硬否决和关键取舍选择最值得做的可玩原型。用于判断小说适合做成什么游戏、该不该做成互动叙事、比较游戏方案等需求。"
|
|
4
|
+
---
|
|
5
|
+
# 游戏概念设计
|
|
6
|
+
|
|
7
|
+
决定做成什么游戏,不写代码、数值表或逐场关卡脚本。
|
|
8
|
+
|
|
9
|
+
读取 [concept-method.md](references/concept-method.md)。输入必须包含 `SOURCE_BIBLE.md` 与
|
|
10
|
+
`PRODUCT_BRIEF.md`;缺任一项就停止并说明缺口,不代替上游补写。
|
|
11
|
+
|
|
12
|
+
产物语言由 `PRODUCT_BRIEF.md` 锁定;未锁定时跟随对话语言,不默认产出中文。
|
|
13
|
+
|
|
14
|
+
## 决策边界
|
|
15
|
+
|
|
16
|
+
直接继承 brief 已锁的平台、输入、受众、分级、时长、目标市场和非目标;发现它们与原作明显冲突
|
|
17
|
+
时回总入口修订,不在概念阶段静默改值。原作语言、文化语境、目标市场和界面语言分别处理,不从
|
|
18
|
+
其中一个自动推出另一个。
|
|
19
|
+
|
|
20
|
+
先例只用于解释玩法为什么可识别:选一个最接近核心动词与循环的主要玩法先例,必要时再补一个解决
|
|
21
|
+
独立问题的辅助先例。写清借用的动词/循环/结构与明确不借的内容,不要求销量数字、固定名单或为每个
|
|
22
|
+
方向重复市场研究。外部事实只有在会改变选择且可能变化时才核实。
|
|
23
|
+
|
|
24
|
+
互动叙事是成熟玩法,不因以阅读和对白承载就降低标准;它的动词可以是读局面、追问、比对信息、
|
|
25
|
+
表态、隐瞒、交出与承担回响。先例提供语法,原作规则负责改变动作对象、顺序、代价和世界回应,
|
|
26
|
+
不能只做 IP 换皮。
|
|
27
|
+
|
|
28
|
+
概念还要判断验证形态:可用成熟交互语法表达时说明“已有语法 + 原作如何改变它”;核心依赖实时手感、
|
|
29
|
+
空间、视线、物理或独特操作时明确走自定义灰盒。不要把文本原型当所有体验的统一前置层,也不要因有
|
|
30
|
+
模板可用就让模板替原作决定玩法。
|
|
31
|
+
|
|
32
|
+
## 三个方向
|
|
33
|
+
|
|
34
|
+
先列 brief 的锁定维度和仍开放的维度。三个方向必须在至少三项开放维度上真正不同,例如玩家身份、
|
|
35
|
+
子类型、核心循环、压力来源、原作选段、空间/镜头、成长关系或美术方向;已锁的主玩法不可偷换,
|
|
36
|
+
未锁的核心循环可以正面比较。
|
|
37
|
+
|
|
38
|
+
每个概念卡只回答:
|
|
39
|
+
|
|
40
|
+
- `player_job`:玩家以什么身份长期做哪份工作,想获得什么独特幻想;
|
|
41
|
+
- `recurring_job_loop`:这份工作每个周期反复做什么;
|
|
42
|
+
- 主类型、`experienceProfile`、主要玩法先例,以及本作借什么/不借什么;
|
|
43
|
+
- 3–5 个核心动词、循环、压力、失败和世界响应;
|
|
44
|
+
- `signature_command`:只有当自然语言表达本身能体现该身份时,写 `id`、`label` 与候选 `intents`;
|
|
45
|
+
不合适时明确 `N/A`,不得给所有游戏统一添加聊天框;
|
|
46
|
+
- `resistance_chain`:谁或什么会阻止、拒绝、扭曲或泄露玩家的安排;
|
|
47
|
+
- `advancement_ladder`:玩家在探索、成长、成熟阶段分别新学会什么、新能组合什么;
|
|
48
|
+
- 原作独有的规则或情感/伦理张力怎样被玩家亲手 enact,而不是留在过场;
|
|
49
|
+
- 一张能同时看出身份、动作与世界特征的招牌画面;
|
|
50
|
+
- 最小验证切片、最大风险,以及什么观察结果会否决该方向。
|
|
51
|
+
|
|
52
|
+
## 选择
|
|
53
|
+
|
|
54
|
+
先按 concept-method 的硬否决逐个淘汰,不计算总分。再比较原作适配、玩家能动性、可读性、文化
|
|
55
|
+
准确性、传播画面和完成风险。`quick` 自动选证据最强的方向;`director` 给出推荐后等待用户决定。
|
|
56
|
+
|
|
57
|
+
## 输出
|
|
58
|
+
|
|
59
|
+
生成一个 `concepts/CONCEPT.md`,只含:
|
|
60
|
+
|
|
61
|
+
1. brief 锁定值与开放维度;
|
|
62
|
+
2. 三条体验支柱,各配可观察现象和失败现象;
|
|
63
|
+
3. 紧凑先例说明;
|
|
64
|
+
4. 三个概念卡;
|
|
65
|
+
5. 硬否决结果、关键取舍、推荐与选择状态;
|
|
66
|
+
6. 选定方向的 `experienceProfile`、玩家能动性合同、不可妥协体验承诺,以及五项独立交接字段:
|
|
67
|
+
`player_job`、`recurring_job_loop`、`signature_command`(或 `N/A`)、`resistance_chain`、
|
|
68
|
+
`advancement_ladder`;
|
|
69
|
+
7. 最小验证问题与开放问题。
|
|
70
|
+
|
|
71
|
+
`narrative-led` 或 `hybrid` 的叙事层还要选择一种分支结构语法并说明内容预算。概念不得写伤害公式、
|
|
72
|
+
具体百分比、敌人血量、代码结构或逐场脚本;交接前确认选定方向可在 brief 范围内做成完整切片。
|