nccgs 2.1.1 → 3.0.0-rc.2
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/CHANGELOG.md +76 -235
- package/LICENSE +1 -1
- package/README.md +87 -206
- package/THIRD_PARTY_NOTICES.md +6 -34
- package/bin/nccgs.mjs +96 -0
- package/cli/doctor.mjs +82 -0
- package/cli/feedback.mjs +13 -0
- package/cli/install.mjs +111 -0
- package/cli/release.mjs +59 -0
- package/cli/run.mjs +35 -0
- package/cli/spawn.mjs +20 -0
- package/cli/uninstall.mjs +43 -0
- package/cli/update-check.mjs +66 -0
- package/docs/EVIDENCE-VERIFICATION.md +22 -0
- package/package.json +23 -30
- package/runtime/core/diag.mjs +43 -0
- package/runtime/core/feedback-policy.mjs +54 -0
- package/runtime/core/fs.mjs +80 -0
- package/runtime/core/job-object.mjs +73 -0
- package/runtime/core/modes.mjs +87 -0
- package/runtime/core/process-tree.mjs +109 -0
- package/runtime/core/project.mjs +113 -0
- package/runtime/core/snapshot.mjs +114 -0
- package/runtime/hooks/common.mjs +22 -0
- package/runtime/hooks/done-guard.mjs +15 -0
- package/runtime/hooks/guard-mcp.mjs +8 -0
- package/runtime/hooks/guard-shell.mjs +16 -0
- package/runtime/hooks/guard-write.mjs +25 -0
- package/runtime/hooks/session-log.mjs +7 -0
- package/runtime/hooks/session-start.mjs +40 -0
- package/runtime/hooks/unity-transport.mjs +12 -0
- package/runtime/modes.json +39 -0
- package/runtime/task/cost.mjs +103 -0
- package/runtime/task/criteria.mjs +128 -0
- package/runtime/task/feedback.mjs +136 -0
- package/runtime/task/ledger.mjs +109 -0
- package/runtime/task/plan.mjs +69 -0
- package/runtime/task/project.mjs +79 -0
- package/runtime/task/report.mjs +252 -0
- package/runtime/task/task.mjs +238 -0
- package/runtime/unity/assets.mjs +51 -0
- package/runtime/unity/playtest.mjs +145 -0
- package/runtime/unity/unity.mjs +350 -0
- package/scripts/check-job-object.mjs +18 -0
- package/scripts/sync-unity-skills.mjs +35 -119
- package/template/CLAUDE.md +39 -0
- package/template/agents/fast-fix.md +9 -0
- package/template/agents/implementer.md +19 -0
- package/template/agents/playtester.md +15 -0
- package/template/agents/reviewer.md +19 -0
- package/template/agents/scout.md +9 -0
- package/template/ponytail/README.md +8 -0
- package/{.claude/nccgs/packages → template}/ponytail/engineering.md +10 -0
- package/template/protocols/evidence.md +52 -0
- package/template/protocols/playtest.md +45 -0
- package/template/protocols/review.md +34 -0
- package/template/protocols/unity-cli-notes.md +56 -0
- package/template/settings.fragment.json +33 -0
- package/template/skills/art-bible/SKILL.md +19 -0
- package/template/skills/asset-spec/SKILL.md +19 -0
- package/template/skills/brainstorm/SKILL.md +17 -0
- package/template/skills/feedback/SKILL.md +16 -0
- package/template/skills/map-systems/SKILL.md +25 -0
- package/template/skills/playtest/SKILL.md +17 -0
- package/template/skills/status/SKILL.md +18 -0
- package/template/skills/test/SKILL.md +34 -0
- package/template/skills/unity-foundation/SKILL.md +17 -0
- package/template/skills/vertical-slice/SKILL.md +17 -0
- package/template/skills/work/SKILL.md +65 -0
- package/tools/feedback-worker/README.md +12 -0
- package/tools/feedback-worker/worker.js +39 -0
- package/tools/feedback-worker/wrangler.toml +12 -0
- package/unity-skills/2d-pixel-perfect/SKILL.md +208 -0
- package/unity-skills/2d-pixel-perfect/references/api-reference.md +81 -0
- package/unity-skills/2d-pixel-perfect/references/camera-setup-builtin.cs +40 -0
- package/unity-skills/2d-pixel-perfect/references/camera-setup-urp.cs +49 -0
- package/unity-skills/2d-pixel-perfect/references/pipeline-detection.cs +50 -0
- package/unity-skills/2d-pixel-perfect/references/sprite-settings.cs +37 -0
- package/unity-skills/asset-transformer-toolkit/SECURITY.md +15 -0
- package/unity-skills/asset-transformer-toolkit/SKILL.md +39 -0
- package/unity-skills/asset-transformer-toolkit/references/create-importer.md +121 -0
- package/unity-skills/asset-transformer-toolkit/references/lods.md +61 -0
- package/unity-skills/asset-transformer-toolkit/references/rule-api.md +154 -0
- package/unity-skills/asset-transformer-toolkit/references/ruleblock-api.md +37 -0
- package/unity-skills/asset-transformer-toolkit/references/ruleset-api.md +138 -0
- package/unity-skills/asset-transformer-toolkit/references/rulesets-and-actions.md +227 -0
- package/unity-skills/audio-setup-mixers/SECURITY.md +16 -0
- package/unity-skills/audio-setup-mixers/SKILL.md +127 -0
- package/unity-skills/audio-setup-mixers/references/api.md +162 -0
- package/unity-skills/build-gtk/SKILL.md +242 -0
- package/unity-skills/build-gtk/references/graph-api.md +324 -0
- package/unity-skills/build-gtk/references/pitfalls.md +86 -0
- package/unity-skills/build-gtk/references/runtime-and-visualization.md +196 -0
- package/unity-skills/build-gtk/references/state-machine-api.md +286 -0
- package/unity-skills/build-live-game/SKILL.md +255 -0
- package/{.claude/skills → unity-skills}/build-live-game/references/achievements.md +132 -154
- package/{.claude/skills → unity-skills}/build-live-game/references/apis.md +10 -19
- package/{.claude/skills → unity-skills}/build-live-game/references/authentication.md +14 -20
- package/{.claude/skills → unity-skills}/build-live-game/references/battlepass.md +269 -225
- package/unity-skills/build-live-game/references/blueprints-and-samples.md +75 -0
- package/unity-skills/build-live-game/references/cloud-code-cloudbehaviours.md +1111 -0
- package/unity-skills/build-live-game/references/cloud-code-modules.md +1276 -0
- package/unity-skills/build-live-game/references/cloud-code.md +58 -0
- package/{.claude/skills → unity-skills}/build-live-game/references/cloud-save.md +15 -25
- package/{.claude/skills → unity-skills}/build-live-game/references/deployment.md +33 -18
- package/{.claude/skills → unity-skills}/build-live-game/references/player-account.md +31 -23
- package/{.claude/skills → unity-skills}/build-live-game/references/tooling.md +0 -56
- package/unity-skills/build-live-game/references/ugs-cli.md +86 -0
- package/unity-skills/craft-game-floors/SECURITY.md +23 -0
- package/unity-skills/craft-game-floors/SKILL.md +134 -0
- package/unity-skills/craft-game-floors/references/art-direction.md +85 -0
- package/unity-skills/craft-game-floors/references/camera-rigs.md +51 -0
- package/unity-skills/craft-game-floors/references/character-motion.md +35 -0
- package/unity-skills/craft-game-floors/references/game-audio.md +47 -0
- package/unity-skills/craft-game-floors/references/game-feel.md +68 -0
- package/unity-skills/craft-game-floors/references/game-shell.md +45 -0
- package/unity-skills/craft-game-floors/references/live-floor.md +35 -0
- package/unity-skills/craft-game-floors/references/placeholder-assets.md +35 -0
- package/unity-skills/craft-game-floors/references/scene-lighting.md +52 -0
- package/unity-skills/craft-game-floors/references/toon-shading.md +34 -0
- package/unity-skills/craft-game-floors/references/vfx.md +40 -0
- package/unity-skills/craft-game-floors/references/visual-scorecard.md +43 -0
- package/unity-skills/create-2d-physics/SECURITY.md +16 -0
- package/unity-skills/create-2d-physics/SKILL.md +128 -0
- package/unity-skills/create-2d-physics/references/2d-physics-core.md +155 -0
- package/unity-skills/create-2d-physics/references/legacy-2d-physics.md +45 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/SKILL.md +12 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/references/hexagonalruletile.md +71 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/references/palette-create.md +38 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/references/ruletile-createempty.md +35 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/references/ruletile-createfromsegment.md +212 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/references/ruletile.md +90 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/scripts/CreatePaletteTemplate.cs +148 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/scripts/ManualWorkflowExample.cs +63 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/scripts/RuleTileGenerator.cs +61 -0
- package/unity-skills/create-tile-palette-or-rule-tiles/scripts/TilemapRuleTileCreateFromSegment.cs +225 -0
- package/unity-skills/generate-editor-search-query/SECURITY.md +17 -0
- package/unity-skills/generate-editor-search-query/SKILL.md +117 -0
- package/unity-skills/generate-editor-search-query/references/open-search-window.md +70 -0
- package/unity-skills/generate-editor-search-query/references/query-patterns.md +124 -0
- package/{.claude/skills → unity-skills}/implement-in-app-purchases/SKILL.md +1 -2
- package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/api-notes.md +25 -28
- package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-convert-native-google-billing.md +1 -1
- package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-implement-iap-d2c.md +40 -5
- package/{.claude/skills → unity-skills}/initialize-ai-navigation/SKILL.md +4 -4
- package/{.claude/skills → unity-skills}/initialize-ai-navigation/references/navigation-system.md +3 -3
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/CHANGELOG.md +12 -0
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/README.md +9 -5
- package/unity-skills/levelplay-unity-integration/SKILL.md +442 -0
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/banner-api.md +15 -8
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/best-practices.md +604 -536
- package/unity-skills/levelplay-unity-integration/references/dependency-resolution.md +94 -0
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/ilrd-api.md +2 -2
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/initialization-api.md +221 -0
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/interstitial-api.md +11 -3
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/ios-setup.md +6 -34
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/migration-sdk-9.md +1 -1
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/privacy-settings.md +14 -29
- package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/rewarded-api.md +20 -4
- package/unity-skills/levelplay-unity-integration/references/testing-and-validation.md +222 -0
- package/unity-skills/levelplay-unity-integration/references/troubleshooting.md +99 -0
- package/unity-skills/localization/SKILL.md +347 -0
- package/{.claude/skills → unity-skills}/localization/references/api-notes.md +4 -0
- package/unity-skills/localization/resources/L10nBatchProcessor.cs +191 -0
- package/unity-skills/manage-sprite-atlas/SKILL.md +351 -0
- package/unity-skills/manage-sprite-atlas/references/addressables-delivery.md +58 -0
- package/unity-skills/manage-sprite-atlas/references/api.md +382 -0
- package/unity-skills/manage-sprite-atlas/references/best-practices.md +183 -0
- package/unity-skills/manage-sprite-atlas/references/common-errors.md +123 -0
- package/unity-skills/manage-sprite-atlas/references/custom-packing.md +147 -0
- package/unity-skills/manage-sprite-atlas/references/manual-authoring.md +39 -0
- package/unity-skills/manage-sprite-atlas/resources/authoringvsruntime.cs +176 -0
- package/unity-skills/manage-sprite-atlas/resources/buildaddressablespostprocess.cs +59 -0
- package/unity-skills/manage-sprite-atlas/resources/cacheloadedatlases.cs +145 -0
- package/unity-skills/manage-sprite-atlas/resources/cleanupbatchoperations.cs +119 -0
- package/unity-skills/manage-sprite-atlas/resources/createandconfiguremasteratlas.cs +57 -0
- package/unity-skills/manage-sprite-atlas/resources/custompackersetup.cs +88 -0
- package/unity-skills/manage-sprite-atlas/resources/deprecatedmethods.cs +142 -0
- package/unity-skills/manage-sprite-atlas/resources/dontmodifywithoutsaving.cs +120 -0
- package/unity-skills/manage-sprite-atlas/resources/dontpackinruntimebuilds.cs +190 -0
- package/unity-skills/manage-sprite-atlas/resources/dontscriptspriteatlasineditor.cs +114 -0
- package/unity-skills/manage-sprite-atlas/resources/editorconfiguration.cs +95 -0
- package/unity-skills/manage-sprite-atlas/resources/enablespritepacking.cs +172 -0
- package/unity-skills/manage-sprite-atlas/resources/gridspritepacker.cs +50 -0
- package/unity-skills/manage-sprite-atlas/resources/handlelatebinding.cs +147 -0
- package/unity-skills/manage-sprite-atlas/resources/handlenullcases.cs +141 -0
- package/unity-skills/manage-sprite-atlas/resources/migratev1tov2.cs +335 -0
- package/unity-skills/manage-sprite-atlas/resources/multipagepacker.cs +80 -0
- package/unity-skills/manage-sprite-atlas/resources/optimizetexturesettings.cs +191 -0
- package/unity-skills/manage-sprite-atlas/resources/packerdebugging.cs +158 -0
- package/unity-skills/manage-sprite-atlas/resources/packtransform.cs +51 -0
- package/unity-skills/manage-sprite-atlas/resources/platformnames.cs +127 -0
- package/unity-skills/manage-sprite-atlas/resources/queryspritesefficiently.cs +222 -0
- package/unity-skills/manage-sprite-atlas/resources/registercallbacks.cs +152 -0
- package/unity-skills/manage-sprite-atlas/resources/runtimeatlasloader.cs +15 -0
- package/unity-skills/manage-sprite-atlas/resources/runtimespriteaccess.cs +19 -0
- package/unity-skills/manage-sprite-atlas/resources/savespriteatlasasset.cs +107 -0
- package/unity-skills/manage-sprite-atlas/resources/scriptablepacker.cs +81 -0
- package/unity-skills/manage-sprite-atlas/resources/setincludeinbuild.cs +164 -0
- package/unity-skills/manage-sprite-atlas/resources/sizeoptimizedpacker.cs +88 -0
- package/unity-skills/manage-sprite-atlas/resources/spriteatlaslatebinding.cs +123 -0
- package/unity-skills/manage-sprite-atlas/resources/spriteatlasprebuildgenerator.cs +219 -0
- package/unity-skills/manage-sprite-atlas/resources/spritedata.cs +35 -0
- package/unity-skills/manage-sprite-atlas/resources/spritepack.cs +39 -0
- package/unity-skills/manage-sprite-atlas/resources/texturedata.cs +15 -0
- package/unity-skills/manage-sprite-atlas/resources/updatebuildscripts.cs +357 -0
- package/unity-skills/manage-sprite-atlas/resources/updatesettingsconfiguration.cs +135 -0
- package/unity-skills/manage-sprite-atlas/resources/usevariantswisely.cs +179 -0
- package/unity-skills/manage-sprite-atlas/resources/variantatlas.cs +39 -0
- package/unity-skills/manifest.json +1155 -0
- package/unity-skills/migrate-birp-to-urp/SECURITY.md +16 -0
- package/unity-skills/migrate-birp-to-urp/SKILL.md +543 -0
- package/unity-skills/migrate-birp-to-urp/references/capturing-the-editor.md +66 -0
- package/unity-skills/migrate-birp-to-urp/references/complex-shader-situations.md +272 -0
- package/unity-skills/migrate-birp-to-urp/references/custom-shader-triage.md +123 -0
- package/unity-skills/migrate-birp-to-urp/references/implementation-patterns.md +529 -0
- package/unity-skills/migrate-birp-to-urp/references/migration-workflow.md +265 -0
- package/unity-skills/migrate-birp-to-urp/references/quality-settings-map.md +69 -0
- package/unity-skills/new-unity-project/SECURITY.md +26 -0
- package/unity-skills/new-unity-project/SKILL.md +386 -0
- package/unity-skills/new-unity-project/references/skill-setup.md +66 -0
- package/unity-skills/optimize-audio/SECURITY.md +16 -0
- package/{.claude/skills → unity-skills}/optimize-audio/SKILL.md +17 -17
- package/{.claude/skills → unity-skills}/optimize-audio/resources/audio-import-api.md +8 -5
- package/{.claude/skills → unity-skills}/optimize-text-mesh-pro/SKILL.md +1 -11
- package/unity-skills/optimize-web/SECURITY.md +16 -0
- package/{.claude/skills → unity-skills}/optimize-web/SKILL.md +164 -27
- package/unity-skills/optimize-web/scripts/WebOptimizer.cs +46 -0
- package/unity-skills/optimize-web/scripts/toktx-examples.sh +11 -0
- package/{.claude/skills → unity-skills}/physics-3d-collision/SKILL.md +2 -2
- package/unity-skills/physics-3d-collision/references/troubleshooting.md +8 -0
- package/unity-skills/project-auditor-fixes/SKILL.md +64 -0
- package/{.claude/skills → unity-skills}/setup-multiplayer-services/SKILL.md +1 -4
- package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/SKILL.md +1 -1
- package/{.claude/skills → unity-skills}/shader-graph-create-custom-node/SKILL.md +1 -1
- package/unity-skills/sprite-editor/SECURITY.md +16 -0
- package/{.claude/skills → unity-skills}/sprite-editor/SKILL.md +9 -9
- package/{.claude/skills → unity-skills}/sprite-editor/references/templates.md +1 -1
- package/unity-skills/sprite-segment-3x3grid/SKILL.md +136 -0
- package/unity-skills/sprite-segment-3x3grid/scripts/SpriteGridAnalysis.cs +119 -0
- package/{.claude/skills → unity-skills}/ui/SKILL.md +1 -1
- package/{.claude/skills → unity-skills}/ui-imgui/SKILL.md +1 -7
- package/{.claude/skills → unity-skills}/ui-ugui/SKILL.md +3 -9
- package/{.claude/skills → unity-skills}/ui-uitk/SKILL.md +8 -14
- package/{.claude/skills → unity-skills}/ui-uitk/references/custom-elements.md +1 -1
- package/unity-skills/unity-cli/CHANGELOG.md +515 -0
- package/unity-skills/unity-cli/SECURITY.md +68 -0
- package/unity-skills/unity-cli/SKILL.md +723 -0
- package/unity-skills/unity-cli/references/auth-license-cloud.md +318 -0
- package/unity-skills/unity-cli/references/build-run-test.md +555 -0
- package/unity-skills/unity-cli/references/cloud-automation.md +736 -0
- package/{.claude/skills → unity-skills}/unity-cli/references/collaboration.md +166 -105
- package/unity-skills/unity-cli/references/config-hub.md +239 -0
- package/unity-skills/unity-cli/references/diagnostics-maintenance.md +720 -0
- package/unity-skills/unity-cli/references/docs-workflow.md +179 -0
- package/unity-skills/unity-cli/references/editors-install.md +476 -0
- package/unity-skills/unity-cli/references/integration-advanced.md +1130 -0
- package/unity-skills/unity-cli/references/playmode-verification-loop.md +279 -0
- package/unity-skills/unity-cli/references/projects-templates.md +996 -0
- package/unity-skills/unity-cli/references/version-control.md +612 -0
- package/{.claude/skills → unity-skills}/unity-package-management/SKILL.md +60 -12
- package/{.claude/skills → unity-skills}/unity-package-management/references/select-packages.md +39 -21
- package/unity-skills/unity-pipeline/SECURITY.md +17 -0
- package/unity-skills/unity-pipeline/SKILL.md +335 -0
- package/unity-skills/urp-postprocessing/SECURITY.md +16 -0
- package/{.claude/skills → unity-skills}/urp-postprocessing/SKILL.md +12 -12
- package/{.claude/skills → unity-skills}/urp-postprocessing/references/code-templates.md +39 -8
- package/{.claude/skills → unity-skills}/validate-urp-render-graph-renderer-feature/SKILL.md +1 -1
- package/.claude/agents/nccgs-adversarial-reviewer.md +0 -43
- package/.claude/agents/nccgs-engine-programmer.md +0 -27
- package/.claude/agents/nccgs-fast-implementer.md +0 -30
- package/.claude/agents/nccgs-game-designer.md +0 -26
- package/.claude/agents/nccgs-gameplay-programmer.md +0 -26
- package/.claude/agents/nccgs-qa-engineer.md +0 -27
- package/.claude/agents/nccgs-task-scout.md +0 -24
- package/.claude/agents/nccgs-ui-programmer.md +0 -27
- package/.claude/agents/nccgs-unity-build-specialist.md +0 -27
- package/.claude/agents/nccgs-unity-implementer.md +0 -28
- package/.claude/agents/nccgs-unity-systems-specialist.md +0 -27
- package/.claude/agents/nccgs-unity-ui-specialist.md +0 -27
- package/.claude/agents/nccgs-verification-engineer.md +0 -27
- package/.claude/nccgs/MEMORY.md +0 -66
- package/.claude/nccgs/THIRD_PARTY_NOTICES.md +0 -29
- package/.claude/nccgs/VERSION +0 -1
- package/.claude/nccgs/agent-library/nccgs-accessibility-specialist.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-adversarial-reviewer.md +0 -41
- package/.claude/nccgs/agent-library/nccgs-ai-programmer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-analytics-engineer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-art-direction-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-audio-direction-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-creative-director.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-documentation-manager.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-economy-designer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-engine-programmer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-fast-implementer.md +0 -28
- package/.claude/nccgs/agent-library/nccgs-game-design-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-game-designer.md +0 -24
- package/.claude/nccgs/agent-library/nccgs-gameplay-programmer.md +0 -24
- package/.claude/nccgs/agent-library/nccgs-level-designer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-live-ops-designer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-localization-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-narrative-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-network-programmer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-performance-analyst.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-producer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-production-coordinator.md +0 -22
- package/.claude/nccgs/agent-library/nccgs-programming-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-prototyper.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-qa-engineer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-qa-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-release-engineer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-release-lead.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-security-engineer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-sound-designer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-systems-designer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-task-scout.md +0 -22
- package/.claude/nccgs/agent-library/nccgs-technical-architect.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-technical-artist.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-technical-director.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-tools-programmer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-ui-programmer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-unity-build-specialist.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-unity-content-specialist.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-unity-implementer.md +0 -26
- package/.claude/nccgs/agent-library/nccgs-unity-rendering-specialist.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-unity-systems-specialist.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-unity-ui-specialist.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-ux-designer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-verification-engineer.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-world-builder.md +0 -25
- package/.claude/nccgs/agent-library/nccgs-writer.md +0 -25
- package/.claude/nccgs/constitution.md +0 -187
- package/.claude/nccgs/hooks/agent-audit.mjs +0 -16
- package/.claude/nccgs/hooks/closure-guard.mjs +0 -59
- package/.claude/nccgs/hooks/common.mjs +0 -42
- package/.claude/nccgs/hooks/post-compact.mjs +0 -1
- package/.claude/nccgs/hooks/pre-compact.mjs +0 -8
- package/.claude/nccgs/hooks/protect-git.mjs +0 -22
- package/.claude/nccgs/hooks/protect-write.mjs +0 -17
- package/.claude/nccgs/hooks/runtime-observation.mjs +0 -11
- package/.claude/nccgs/hooks/session-start.mjs +0 -29
- package/.claude/nccgs/hooks/session-stop.mjs +0 -7
- package/.claude/nccgs/hooks/unity-transport-guard.mjs +0 -11
- package/.claude/nccgs/packages/ponytail/README.md +0 -46
- package/.claude/nccgs/packages/ponytail/manifest.json +0 -24
- package/.claude/nccgs/pipeline.json +0 -260
- package/.claude/nccgs/protocols/agent-contract.md +0 -101
- package/.claude/nccgs/protocols/astra-claude.md +0 -111
- package/.claude/nccgs/protocols/bounded-repair.md +0 -246
- package/.claude/nccgs/protocols/context-packets.md +0 -23
- package/.claude/nccgs/protocols/delivery-acceptance.md +0 -105
- package/.claude/nccgs/protocols/design-lifecycle.md +0 -139
- package/.claude/nccgs/protocols/editor-session-evidence.md +0 -52
- package/.claude/nccgs/protocols/evidence.md +0 -31
- package/.claude/nccgs/protocols/model-routing.md +0 -46
- package/.claude/nccgs/protocols/orchestration.md +0 -74
- package/.claude/nccgs/protocols/review-handoff.md +0 -101
- package/.claude/nccgs/protocols/shared-workflow-context.md +0 -33
- package/.claude/nccgs/protocols/standalone-gates.md +0 -329
- package/.claude/nccgs/protocols/standalone-pilot.md +0 -144
- package/.claude/nccgs/protocols/standalone.md +0 -207
- package/.claude/nccgs/protocols/task-autonomy.md +0 -55
- package/.claude/nccgs/protocols/task-gates.md +0 -144
- package/.claude/nccgs/protocols/task-slices.md +0 -106
- package/.claude/nccgs/protocols/unity-boundary.md +0 -31
- package/.claude/nccgs/routing.generated.md +0 -49
- package/.claude/nccgs/settings.fragment.json +0 -213
- package/.claude/nccgs/studio.json +0 -472
- package/.claude/nccgs/tools/approve-overrides.mjs +0 -81
- package/.claude/nccgs/tools/autonomy.mjs +0 -40
- package/.claude/nccgs/tools/command-process.mjs +0 -50
- package/.claude/nccgs/tools/command-tokens.mjs +0 -22
- package/.claude/nccgs/tools/compile-policy.mjs +0 -121
- package/.claude/nccgs/tools/configure-models.mjs +0 -96
- package/.claude/nccgs/tools/criteria.mjs +0 -121
- package/.claude/nccgs/tools/delivery-budget.mjs +0 -52
- package/.claude/nccgs/tools/design-readiness.mjs +0 -158
- package/.claude/nccgs/tools/editor-session-evidence.mjs +0 -66
- package/.claude/nccgs/tools/evidence.mjs +0 -153
- package/.claude/nccgs/tools/gates.mjs +0 -297
- package/.claude/nccgs/tools/handoff.mjs +0 -51
- package/.claude/nccgs/tools/hook-transport.mjs +0 -34
- package/.claude/nccgs/tools/inputs.mjs +0 -108
- package/.claude/nccgs/tools/installation-guard.mjs +0 -55
- package/.claude/nccgs/tools/integrity.mjs +0 -69
- package/.claude/nccgs/tools/lifecycle.mjs +0 -542
- package/.claude/nccgs/tools/native-completion.mjs +0 -30
- package/.claude/nccgs/tools/orchestration.mjs +0 -680
- package/.claude/nccgs/tools/paths.mjs +0 -60
- package/.claude/nccgs/tools/policy.mjs +0 -107
- package/.claude/nccgs/tools/process-lock.mjs +0 -74
- package/.claude/nccgs/tools/repair-packet.mjs +0 -106
- package/.claude/nccgs/tools/returned-handoff.mjs +0 -47
- package/.claude/nccgs/tools/review-budget.mjs +0 -171
- package/.claude/nccgs/tools/review-handoff.mjs +0 -66
- package/.claude/nccgs/tools/runtime.mjs +0 -71
- package/.claude/nccgs/tools/session-budget.mjs +0 -67
- package/.claude/nccgs/tools/shared-context-guard.mjs +0 -60
- package/.claude/nccgs/tools/shared-context.mjs +0 -25
- package/.claude/nccgs/tools/task-slices.mjs +0 -147
- package/.claude/nccgs/tools/task.mjs +0 -145
- package/.claude/nccgs/tools/tool-guard.mjs +0 -120
- package/.claude/nccgs/tools/unity-repair.mjs +0 -128
- package/.claude/nccgs/tools/unity-transport.mjs +0 -170
- package/.claude/nccgs/tools/verification-jobs.mjs +0 -171
- package/.claude/nccgs/tools/verification-worker.mjs +0 -71
- package/.claude/nccgs/tools/windows-compiler-server.cs +0 -163
- package/.claude/nccgs/tools/windows-job.cs +0 -103
- package/.claude/nccgs/unity-skills-manifest.json +0 -727
- package/.claude/nccgs/workflow-catalog.json +0 -654
- package/.claude/rules/nccgs-canonical-docs.md +0 -19
- package/.claude/rules/nccgs-editor-tools.md +0 -12
- package/.claude/rules/nccgs-localization.md +0 -12
- package/.claude/rules/nccgs-networking.md +0 -13
- package/.claude/rules/nccgs-performance.md +0 -14
- package/.claude/rules/nccgs-rendering.md +0 -16
- package/.claude/rules/nccgs-security.md +0 -13
- package/.claude/rules/nccgs-tests.md +0 -18
- package/.claude/rules/nccgs-ui.md +0 -14
- package/.claude/rules/nccgs-unity-assets.md +0 -21
- package/.claude/rules/nccgs-unity-code.md +0 -22
- package/.claude/skills/accessibility-review/SKILL.md +0 -22
- package/.claude/skills/accessibility-review/references/astra.md +0 -17
- package/.claude/skills/accessibility-review/references/legacy.md +0 -7
- package/.claude/skills/architecture-decision/SKILL.md +0 -22
- package/.claude/skills/architecture-decision/references/astra.md +0 -12
- package/.claude/skills/architecture-decision/references/legacy.md +0 -7
- package/.claude/skills/asset-audit/SKILL.md +0 -22
- package/.claude/skills/asset-audit/references/astra.md +0 -17
- package/.claude/skills/asset-audit/references/legacy.md +0 -7
- package/.claude/skills/audit/SKILL.md +0 -22
- package/.claude/skills/audit/references/astra.md +0 -17
- package/.claude/skills/audit/references/dimensions.md +0 -46
- package/.claude/skills/audit/references/legacy.md +0 -9
- package/.claude/skills/balance-review/SKILL.md +0 -22
- package/.claude/skills/balance-review/references/astra.md +0 -17
- package/.claude/skills/balance-review/references/legacy.md +0 -7
- package/.claude/skills/bug-triage/SKILL.md +0 -22
- package/.claude/skills/bug-triage/references/astra.md +0 -27
- package/.claude/skills/bug-triage/references/legacy.md +0 -7
- package/.claude/skills/build-live-game/SKILL.md +0 -317
- package/.claude/skills/build-live-game/references/cloud-code.md +0 -563
- package/.claude/skills/closure/SKILL.md +0 -22
- package/.claude/skills/closure/references/astra.md +0 -15
- package/.claude/skills/closure/references/legacy.md +0 -7
- package/.claude/skills/compatibility-review/SKILL.md +0 -22
- package/.claude/skills/compatibility-review/references/astra.md +0 -17
- package/.claude/skills/compatibility-review/references/legacy.md +0 -7
- package/.claude/skills/context-pack/SKILL.md +0 -22
- package/.claude/skills/context-pack/references/astra.md +0 -12
- package/.claude/skills/context-pack/references/legacy.md +0 -7
- package/.claude/skills/dependency-review/SKILL.md +0 -22
- package/.claude/skills/dependency-review/references/astra.md +0 -17
- package/.claude/skills/dependency-review/references/legacy.md +0 -7
- package/.claude/skills/design/SKILL.md +0 -24
- package/.claude/skills/design/references/astra.md +0 -12
- package/.claude/skills/design/references/legacy.md +0 -13
- package/.claude/skills/design-review/SKILL.md +0 -24
- package/.claude/skills/design-review/references/astra.md +0 -17
- package/.claude/skills/design-review/references/legacy.md +0 -7
- package/.claude/skills/evidence-review/SKILL.md +0 -22
- package/.claude/skills/evidence-review/references/astra.md +0 -17
- package/.claude/skills/evidence-review/references/legacy.md +0 -7
- package/.claude/skills/hotfix/SKILL.md +0 -22
- package/.claude/skills/hotfix/references/astra.md +0 -30
- package/.claude/skills/hotfix/references/legacy.md +0 -7
- package/.claude/skills/incident-recovery/SKILL.md +0 -22
- package/.claude/skills/incident-recovery/references/astra.md +0 -27
- package/.claude/skills/incident-recovery/references/legacy.md +0 -7
- package/.claude/skills/levelplay-unity-integration/SKILL.md +0 -1126
- package/.claude/skills/localization/SKILL.md +0 -135
- package/.claude/skills/localization/resources/L10nBatchProcessor.cs +0 -69
- package/.claude/skills/localize-game/SKILL.md +0 -22
- package/.claude/skills/localize-game/references/astra.md +0 -27
- package/.claude/skills/localize-game/references/legacy.md +0 -7
- package/.claude/skills/migrate-project/SKILL.md +0 -22
- package/.claude/skills/migrate-project/references/astra.md +0 -30
- package/.claude/skills/migrate-project/references/legacy.md +0 -19
- package/.claude/skills/migrate-project/references/procedure.md +0 -96
- package/.claude/skills/milestone-review/SKILL.md +0 -22
- package/.claude/skills/milestone-review/references/astra.md +0 -12
- package/.claude/skills/milestone-review/references/legacy.md +0 -7
- package/.claude/skills/nccgs-code-review/SKILL.md +0 -22
- package/.claude/skills/nccgs-code-review/references/astra.md +0 -21
- package/.claude/skills/nccgs-code-review/references/legacy.md +0 -7
- package/.claude/skills/new-unity-project/SKILL.md +0 -179
- package/.claude/skills/performance-audit/SKILL.md +0 -22
- package/.claude/skills/performance-audit/references/astra.md +0 -17
- package/.claude/skills/performance-audit/references/legacy.md +0 -7
- package/.claude/skills/physics-3d-collision/references/troubleshooting.md +0 -41
- package/.claude/skills/plan-feature/SKILL.md +0 -22
- package/.claude/skills/plan-feature/references/astra.md +0 -12
- package/.claude/skills/plan-feature/references/legacy.md +0 -7
- package/.claude/skills/playtest/SKILL.md +0 -22
- package/.claude/skills/playtest/references/astra.md +0 -31
- package/.claude/skills/playtest/references/legacy.md +0 -7
- package/.claude/skills/project-stage/SKILL.md +0 -22
- package/.claude/skills/project-stage/references/astra.md +0 -12
- package/.claude/skills/project-stage/references/legacy.md +0 -7
- package/.claude/skills/prototype-feature/SKILL.md +0 -22
- package/.claude/skills/prototype-feature/references/astra.md +0 -31
- package/.claude/skills/prototype-feature/references/legacy.md +0 -7
- package/.claude/skills/qa-plan/SKILL.md +0 -22
- package/.claude/skills/qa-plan/references/astra.md +0 -12
- package/.claude/skills/qa-plan/references/legacy.md +0 -7
- package/.claude/skills/release/SKILL.md +0 -22
- package/.claude/skills/release/references/astra.md +0 -30
- package/.claude/skills/release/references/legacy.md +0 -11
- package/.claude/skills/release-readiness/SKILL.md +0 -22
- package/.claude/skills/release-readiness/references/astra.md +0 -17
- package/.claude/skills/release-readiness/references/legacy.md +0 -7
- package/.claude/skills/retrospective/SKILL.md +0 -22
- package/.claude/skills/retrospective/references/astra.md +0 -12
- package/.claude/skills/retrospective/references/legacy.md +0 -7
- package/.claude/skills/review/SKILL.md +0 -22
- package/.claude/skills/review/references/astra.md +0 -21
- package/.claude/skills/review/references/legacy.md +0 -9
- package/.claude/skills/security-audit/SKILL.md +0 -22
- package/.claude/skills/security-audit/references/astra.md +0 -17
- package/.claude/skills/security-audit/references/legacy.md +0 -7
- package/.claude/skills/sprint-plan/SKILL.md +0 -22
- package/.claude/skills/sprint-plan/references/astra.md +0 -12
- package/.claude/skills/sprint-plan/references/legacy.md +0 -7
- package/.claude/skills/status/SKILL.md +0 -22
- package/.claude/skills/status/references/astra.md +0 -19
- package/.claude/skills/status/references/legacy.md +0 -9
- package/.claude/skills/story-readiness/SKILL.md +0 -24
- package/.claude/skills/story-readiness/references/astra.md +0 -17
- package/.claude/skills/story-readiness/references/legacy.md +0 -7
- package/.claude/skills/test/SKILL.md +0 -22
- package/.claude/skills/test/references/astra.md +0 -27
- package/.claude/skills/test/references/legacy.md +0 -9
- package/.claude/skills/ui-review/SKILL.md +0 -22
- package/.claude/skills/ui-review/references/astra.md +0 -17
- package/.claude/skills/ui-review/references/legacy.md +0 -7
- package/.claude/skills/unity-cli/CHANGELOG.md +0 -233
- package/.claude/skills/unity-cli/SECURITY.md +0 -22
- package/.claude/skills/unity-cli/SKILL.md +0 -414
- package/.claude/skills/unity-cli/references/auth-license-cloud.md +0 -146
- package/.claude/skills/unity-cli/references/build-run-test.md +0 -349
- package/.claude/skills/unity-cli/references/config-hub.md +0 -103
- package/.claude/skills/unity-cli/references/diagnostics-maintenance.md +0 -326
- package/.claude/skills/unity-cli/references/editors-install.md +0 -327
- package/.claude/skills/unity-cli/references/integration-advanced.md +0 -472
- package/.claude/skills/unity-cli/references/projects-templates.md +0 -574
- package/.claude/skills/work/SKILL.md +0 -22
- package/.claude/skills/work/references/astra.md +0 -32
- package/.claude/skills/work/references/classification.md +0 -41
- package/.claude/skills/work/references/closure.md +0 -60
- package/.claude/skills/work/references/feature-contracts.md +0 -36
- package/.claude/skills/work/references/legacy.md +0 -29
- package/.claude/skills/work/references/verification.md +0 -26
- package/CLAUDE.md +0 -10
- package/MEMORY.md +0 -109
- package/UPGRADING.md +0 -130
- package/VERSION +0 -1
- package/docs/ARCHITECTURE.md +0 -131
- package/docs/ASSET-PRODUCTION-GRAPHIFY-PLAN.md +0 -230
- package/docs/BOUNDED-REPAIR.md +0 -80
- package/docs/EDITOR-SESSION-EVIDENCE.md +0 -52
- package/docs/HANDOFF-AUTOMATION.md +0 -144
- package/docs/HUONG-DAN-MIGRATE-VA-SU-DUNG.md +0 -117
- package/docs/MIGRATION-MATRIX.md +0 -23
- package/docs/NCCGS-1.3.md +0 -13
- package/docs/NCCGS-1.4.1.md +0 -149
- package/docs/NCCGS-1.4.md +0 -184
- package/docs/NCCGS-1.5-IMPLEMENTATION-PLAN.md +0 -378
- package/docs/NCCGS-1.5-PILOT.md +0 -130
- package/docs/NCCGS-1.5.md +0 -237
- package/docs/PHASE-1-OPERATIONS.md +0 -278
- package/docs/PHASE-2-OPERATIONS.md +0 -183
- package/docs/PROJECT-POLICY.md +0 -94
- package/docs/RELEASE-STATUS.md +0 -150
- package/docs/TASK-SLICING.md +0 -57
- package/docs/UNINSTALL.md +0 -134
- package/docs/UPGRADE-QUALIFICATION.md +0 -45
- package/docs/WFK17-HOOK-REPAIR.md +0 -71
- package/docs/WORKFLOWS.md +0 -85
- package/package-assets/nccgs-project.gitignore +0 -2
- package/package-assets/setup-vivox-voice-chat-evals.gitignore +0 -7
- package/scaffold/.nccgs/autonomy.json +0 -4
- package/scaffold/.nccgs/bugs/.gitkeep +0 -1
- package/scaffold/.nccgs/closures/.gitkeep +0 -1
- package/scaffold/.nccgs/context/.gitkeep +0 -1
- package/scaffold/.nccgs/decisions/.gitkeep +0 -1
- package/scaffold/.nccgs/evidence/.gitkeep +0 -1
- package/scaffold/.nccgs/execution.json +0 -10
- package/scaffold/.nccgs/features/.gitkeep +0 -1
- package/scaffold/.nccgs/gates.json +0 -7
- package/scaffold/.nccgs/inputs.json +0 -6
- package/scaffold/.nccgs/migrations/.gitkeep +0 -1
- package/scaffold/.nccgs/playtests/.gitkeep +0 -1
- package/scaffold/.nccgs/project.yaml +0 -109
- package/scaffold/.nccgs/requirements.yaml +0 -10
- package/scaffold/.nccgs/reviews/.gitkeep +0 -1
- package/scaffold/.nccgs/state.md +0 -40
- package/scaffold/.nccgs/templates/agent-handoff.md +0 -37
- package/scaffold/.nccgs/templates/architecture-decision.md +0 -27
- package/scaffold/.nccgs/templates/closure-record.md +0 -62
- package/scaffold/.nccgs/templates/context-packet.yaml +0 -17
- package/scaffold/.nccgs/templates/design-contract.json +0 -34
- package/scaffold/.nccgs/templates/evidence-record.md +0 -23
- package/scaffold/.nccgs/templates/feature-contract.md +0 -60
- package/scaffold/.nccgs/templates/implementation-report.md +0 -52
- package/scaffold/.nccgs/templates/migration-plan.md +0 -40
- package/scaffold/.nccgs/templates/repair-packet.json +0 -14
- package/scaffold/.nccgs/templates/repair-unity-code.json +0 -18
- package/scaffold/.nccgs/templates/repair-unity-editor.json +0 -21
- package/scaffold/.nccgs/templates/task-slices.json +0 -28
- package/scaffold/.nccgs/templates/waiver.md +0 -11
- package/scripts/benchmark-snapshot.mjs +0 -205
- package/scripts/benchmark-v15.mjs +0 -173
- package/scripts/cli.mjs +0 -205
- package/scripts/doctor.mjs +0 -261
- package/scripts/install.mjs +0 -530
- package/scripts/recover-session.mjs +0 -89
- package/scripts/run.mjs +0 -86
- package/scripts/supervise.mjs +0 -152
- package/scripts/uninstall.mjs +0 -292
- package/scripts/validate.mjs +0 -285
- package/scripts/work-handoff.mjs +0 -38
- package/tests/autonomy.test.mjs +0 -126
- package/tests/benchmark-v15.test.mjs +0 -65
- package/tests/design-readiness.test.mjs +0 -200
- package/tests/editor-session-evidence.test.mjs +0 -45
- package/tests/evidence.test.mjs +0 -186
- package/tests/fixtures/compiler-shutdown.cs +0 -67
- package/tests/fixtures/native-provider.mjs +0 -61
- package/tests/framework.test.mjs +0 -740
- package/tests/gates.test.mjs +0 -479
- package/tests/hook-repair.test.mjs +0 -106
- package/tests/lifecycle-v15.test.mjs +0 -346
- package/tests/native-completion-notices.test.mjs +0 -181
- package/tests/orchestration-v15.test.mjs +0 -596
- package/tests/phase1.test.mjs +0 -427
- package/tests/phase2.test.mjs +0 -250
- package/tests/policy-v15.test.mjs +0 -234
- package/tests/ponytail-package.test.mjs +0 -75
- package/tests/returned-handoff-notices.test.mjs +0 -170
- package/tests/review-budget.test.mjs +0 -177
- package/tests/runtime-v15.test.mjs +0 -1198
- package/tests/session-budget.test.mjs +0 -34
- package/tests/task-slices.test.mjs +0 -285
- package/tests/uninstall.test.mjs +0 -477
- package/tests/unity-generated.test.mjs +0 -140
- package/tests/unity-transport.test.mjs +0 -348
- /package/{.claude/nccgs/packages → template}/ponytail/LICENSE +0 -0
- /package/{.claude/nccgs/packages → template}/ponytail/NOTICE.md +0 -0
- /package/{.claude/nccgs/packages → template}/ponytail/complexity-review.md +0 -0
- /package/{.claude/skills → unity-skills}/build-live-game/references/remote-config.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/README.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/codeless-catalog.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-adapty.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-essentialkit.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-revenuecat.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-unipay.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/migration-v4-to-v5.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-add-iap-to-new-project.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-convert-native-storekit.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/platform-notes.md +0 -0
- /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/pre-check.md +0 -0
- /package/{.claude/skills → unity-skills}/localization/resources/LocalizedFontAsset.cs +0 -0
- /package/{.claude/skills → unity-skills}/optimize-audio/resources/platform-settings.md +0 -0
- /package/{.claude/skills → unity-skills}/optimize-web/resources/WebOptimizer.cs +0 -0
- /package/{.claude/skills → unity-skills}/optimize-web/resources/toktx-examples.sh +0 -0
- /package/{.claude/skills → unity-skills}/physics-3d-collision/resources/CollisionDebugger.cs +0 -0
- /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/dgs-entrypoint.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/entrypoints.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/examples.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/implementation-fit.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/underlying-services.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/workflows-prerequisites.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/.env.example +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/README.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/promptfooconfig.yaml +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/tests/init-and-login.yaml +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/tests/text-chat.yaml +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/tests/voice-channels.yaml +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/events-and-participants.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/init-and-login.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/text-chat.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/troubleshooting.md +0 -0
- /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/voice-channels.md +0 -0
- /package/{.claude/skills → unity-skills}/shader-graph-create-custom-node/resources/all_hints.hlsl +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/references/api_reference.md +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/references/background.md +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/AutomaticSliceTexture.cs +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GenerateNewSpriteRects.cs +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GetTextureSourceImageSize.cs +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GetTextureToSlice.cs +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GridSliceTexture.cs +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/IsometricSliceTexture.cs +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/README.md +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/SetPivotExample.cs +0 -0
- /package/{.claude/skills → unity-skills}/sprite-editor/scripts/SpriteToPng.cs +0 -0
- /package/{.claude/skills → unity-skills}/ui-imgui/references/gui-elements.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-imgui/references/templates.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-ugui/references/scrollview-setup.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-uitk/references/common-issues.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-uitk/references/painter2d.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-uitk/references/pointermanipulator-guide.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-uitk/references/svg-icons.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-uitk/references/ui-runtime-binding.md +0 -0
- /package/{.claude/skills → unity-skills}/ui-uitk/references/uss-guide.md +0 -0
- /package/{.claude/skills → unity-skills}/urp-postprocessing/references/effect-reference.md +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# LevelPlay Native Dependency Resolution
|
|
2
|
+
|
|
3
|
+
Detailed guidance for Step 4 of SKILL.md. LevelPlay requires native Android/iOS libraries that Unity's
|
|
4
|
+
package manager alone doesn't handle; a dependency manager bridges this gap. Read this when resolving
|
|
5
|
+
native dependencies, when the user does not yet have a dependency manager, or when diagnosing gradle
|
|
6
|
+
(Android) / CocoaPods (iOS) build failures.
|
|
7
|
+
|
|
8
|
+
## Contents
|
|
9
|
+
- [Check for an Existing Dependency Manager](#check-for-an-existing-dependency-manager)
|
|
10
|
+
- [If They Have a Dependency Manager](#if-they-have-a-dependency-manager)
|
|
11
|
+
- [If They Don't Have a Dependency Manager](#if-they-dont-have-a-dependency-manager)
|
|
12
|
+
- [Verification](#verification)
|
|
13
|
+
- [Android Custom Main Gradle Template (Older Versions)](#android-custom-main-gradle-template-older-versions)
|
|
14
|
+
- [Android API 33+ Requirement](#android-api-33-requirement)
|
|
15
|
+
|
|
16
|
+
LevelPlay requires native Android/iOS libraries that Unity's package manager alone doesn't handle. A
|
|
17
|
+
dependency manager bridges this gap. If this is a new project without a dependency manager already set
|
|
18
|
+
up, the steps below cover installing one.
|
|
19
|
+
|
|
20
|
+
## Check for an Existing Dependency Manager
|
|
21
|
+
|
|
22
|
+
Ask: "Do you have a dependency manager like Mobile Dependency Resolver (MDR), Unity External Dependency
|
|
23
|
+
Manager (UEDM), or External Dependency Manager for Unity (EDM4U) installed? Check your Assets folder for
|
|
24
|
+
these tools."
|
|
25
|
+
|
|
26
|
+
**If unsure**: Check Assets folder in Unity for folders named 'Mobile Dependency Resolver', 'External
|
|
27
|
+
Dependency Manager', or 'EDM4U'. If you see any folder with these names, answer 'Yes'. If not, answer 'No'.
|
|
28
|
+
|
|
29
|
+
## If They Have a Dependency Manager
|
|
30
|
+
|
|
31
|
+
**For Android:**
|
|
32
|
+
- With newer versions of Mobile Dependency Resolver (shipped with the Ads Mediation package): Dependencies auto-resolve on build (no manual action needed). If unsure, try building first — if it fails, manually resolve via the Android Resolver menu.
|
|
33
|
+
- With older MDR or other managers: Go to Assets > [Your Dependency Manager] > Android Resolver > Resolve
|
|
34
|
+
- Example paths:
|
|
35
|
+
- MDR: `Assets > Mobile Dependency Resolver > Android Resolver > Resolve`
|
|
36
|
+
- EDM4U: `Assets > External Dependency Manager > Android Resolver > Resolve`
|
|
37
|
+
- Menu paths may vary depending on dependency manager version. Look for 'Android Resolver' under your dependency manager's menu.
|
|
38
|
+
|
|
39
|
+
**For iOS:**
|
|
40
|
+
- All dependency managers require manual CocoaPods installation:
|
|
41
|
+
- MDR: `Assets > Mobile Dependency Resolver > iOS Resolver > Install Cocoapods`
|
|
42
|
+
- EDM4U: `Assets > External Dependency Manager > iOS Resolver > Install Cocoapods`
|
|
43
|
+
- UEDM: Similar path under Unity External Dependency Manager
|
|
44
|
+
|
|
45
|
+
Ask: "Have you run the dependency resolution for your target platform(s)?"
|
|
46
|
+
|
|
47
|
+
**If targeting both Android and iOS**, complete dependency resolution for both platforms before proceeding.
|
|
48
|
+
|
|
49
|
+
## If They Don't Have a Dependency Manager
|
|
50
|
+
|
|
51
|
+
If the user didn't see the Mobile Dependency Resolver prompt during installation (see Step 3), restart
|
|
52
|
+
Unity Editor — the prompt may appear after restart. If it still doesn't appear, they may already have a
|
|
53
|
+
dependency manager installed.
|
|
54
|
+
|
|
55
|
+
When prompted:
|
|
56
|
+
1. Click **Import** on the prompt to install Mobile Dependency Resolver
|
|
57
|
+
2. After installation:
|
|
58
|
+
- **Android**: Dependencies will auto-resolve on build (newer MDR versions)
|
|
59
|
+
- **iOS**: Go to Assets > Mobile Dependency Resolver > iOS Resolver > Install Cocoapods
|
|
60
|
+
|
|
61
|
+
**Alternative**: Install another dependency manager like EDM4U if preferred (search for installation instructions in their documentation).
|
|
62
|
+
|
|
63
|
+
**Note**: Unity is transitioning to Unity External Dependency Manager (UEDM). If available in your Unity version, prefer UEDM over MDR.
|
|
64
|
+
|
|
65
|
+
## Verification
|
|
66
|
+
|
|
67
|
+
After resolution, verify:
|
|
68
|
+
- **Android**: Gradle dependencies in `Assets/Plugins/Android/`
|
|
69
|
+
- **iOS**: Podfile references or CocoaPods installation confirmation in console
|
|
70
|
+
|
|
71
|
+
**If dependency resolution fails**: Check the Unity console for specific error messages and share them for troubleshooting — or see `references/troubleshooting.md` for gradle and CocoaPods error guidance.
|
|
72
|
+
|
|
73
|
+
## Android Custom Main Gradle Template (Older Versions)
|
|
74
|
+
|
|
75
|
+
For older LevelPlay Unity package versions, manually enable the Custom Main Gradle Template:
|
|
76
|
+
1. Go to Edit > Project Settings > Player
|
|
77
|
+
2. Select Android tab
|
|
78
|
+
3. Expand Publishing Settings
|
|
79
|
+
4. Under Build, check Custom Main Gradle Template
|
|
80
|
+
|
|
81
|
+
In newer LevelPlay Unity package versions (with newer Mobile Dependency Resolver), this is enabled
|
|
82
|
+
automatically by default.
|
|
83
|
+
|
|
84
|
+
## Android API 33+ Requirement
|
|
85
|
+
|
|
86
|
+
If targeting Android API level 33 or higher, declare the AD_ID permission in AndroidManifest.xml:
|
|
87
|
+
|
|
88
|
+
```xml
|
|
89
|
+
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
This permission is required for advertising ID access on Android 13+.
|
|
93
|
+
|
|
94
|
+
**If you skip this step and target Android API 33+:** advertising ID access will fail on Android 13+ devices.
|
|
@@ -43,7 +43,7 @@ On SDK 9.5.0+, the global `LevelPlay.OnImpressionDataReady` still exists but is
|
|
|
43
43
|
|
|
44
44
|
### SDK 9.5.0+ (current): Per-Instance Setup
|
|
45
45
|
|
|
46
|
-
Subscribe to `OnAdImpressionDataReady` on each ad object right after you create it
|
|
46
|
+
Subscribe to `OnAdImpressionDataReady` on each ad object right after you create it — typically inside the ad manager classes from `rewarded-api.md` / `interstitial-api.md` / `banner-api.md`. There is no "before Init" ordering concern with the per-instance event; you subscribe when the ad is created.
|
|
47
47
|
|
|
48
48
|
```csharp
|
|
49
49
|
using UnityEngine;
|
|
@@ -239,7 +239,7 @@ private void ImpressionDataReadyEvent(LevelPlayImpressionData impressionData)
|
|
|
239
239
|
|
|
240
240
|
## Thread Safety
|
|
241
241
|
|
|
242
|
-
**CRITICAL:**
|
|
242
|
+
**CRITICAL:** `OnImpressionDataReady` runs on a background thread. This means:
|
|
243
243
|
|
|
244
244
|
**❌ DO NOT:**
|
|
245
245
|
- Call Unity APIs directly (e.g., `GameObject.Find()`, `transform.position`)
|
package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/initialization-api.md
RENAMED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## Contents
|
|
4
4
|
- [Overview](#overview)
|
|
5
|
+
- [Code Organization Options (Step 7)](#code-organization-options-step-7)
|
|
6
|
+
- [Version-Aware ILRD Init Wiring (Step 7)](#version-aware-ilrd-init-wiring-step-7)
|
|
5
7
|
- [Basic Initialization](#basic-initialization)
|
|
6
8
|
- [Advanced Initialization](#advanced-initialization)
|
|
7
9
|
- [API Reference](#api-reference)
|
|
@@ -15,6 +17,221 @@
|
|
|
15
17
|
|
|
16
18
|
Proper SDK initialization is critical for LevelPlay to function correctly. This reference covers basic initialization, advanced options, and best practices.
|
|
17
19
|
|
|
20
|
+
## Code Organization Options (Step 7)
|
|
21
|
+
|
|
22
|
+
Step 7 of SKILL.md asks the user how they want to handle initialization and presents four options. Full
|
|
23
|
+
implementation for each option follows. Present the four option labels exactly as written in SKILL.md;
|
|
24
|
+
use the code here once the user has chosen.
|
|
25
|
+
|
|
26
|
+
### Option 1: Creating a New Script
|
|
27
|
+
|
|
28
|
+
**If you completed ATT in Step 6.5 (iOS):** Use the `LevelPlayInitializer.cs` from `references/ios-setup.md` (Part 3) instead of the template below — it already includes the `IEnumerator Start()` coroutine required for ATT and the `DontDestroyOnLoad` setup. Skip this code block and continue from the ILRD wiring below.
|
|
29
|
+
|
|
30
|
+
If creating a new script (e.g., `LevelPlayInitializer.cs`), use this complete class:
|
|
31
|
+
|
|
32
|
+
```csharp
|
|
33
|
+
using UnityEngine;
|
|
34
|
+
using Unity.Services.LevelPlay;
|
|
35
|
+
|
|
36
|
+
public class LevelPlayInitializer : MonoBehaviour
|
|
37
|
+
{
|
|
38
|
+
[SerializeField] private string appKey;
|
|
39
|
+
|
|
40
|
+
void Awake()
|
|
41
|
+
{
|
|
42
|
+
// Persist across scene loads so ads stay initialized
|
|
43
|
+
DontDestroyOnLoad(gameObject);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
void Start()
|
|
47
|
+
{
|
|
48
|
+
// Register initialization callbacks
|
|
49
|
+
LevelPlay.OnInitSuccess += OnInitSuccess;
|
|
50
|
+
LevelPlay.OnInitFailed += OnInitFailed;
|
|
51
|
+
|
|
52
|
+
// Initialize the SDK with your App Key
|
|
53
|
+
LevelPlay.Init(appKey);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private void OnInitSuccess(LevelPlayConfiguration config)
|
|
57
|
+
{
|
|
58
|
+
Debug.Log("LevelPlay SDK initialized successfully");
|
|
59
|
+
// SDK is now ready to load ads
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private void OnInitFailed(LevelPlayInitError error)
|
|
63
|
+
{
|
|
64
|
+
Debug.LogError($"LevelPlay initialization failed: {error.ErrorMessage}");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
void OnDestroy()
|
|
68
|
+
{
|
|
69
|
+
LevelPlay.OnInitSuccess -= OnInitSuccess;
|
|
70
|
+
LevelPlay.OnInitFailed -= OnInitFailed;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**File location**: Save as `Assets/Scripts/LevelPlayInitializer.cs` (or `Assets/Scripts/Ads/LevelPlayInitializer.cs` if you have an Ads subfolder)
|
|
76
|
+
|
|
77
|
+
**After creating:**
|
|
78
|
+
1. Attach script to a GameObject in your first scene
|
|
79
|
+
2. In Unity Inspector, find the "App Key" field
|
|
80
|
+
3. Paste your App Key from Step 5 into that field
|
|
81
|
+
|
|
82
|
+
### Option 2: Adding to Existing Script
|
|
83
|
+
|
|
84
|
+
If adding to an existing script (e.g., `GameManager.cs`):
|
|
85
|
+
|
|
86
|
+
**1. Add namespace at top of file:**
|
|
87
|
+
```csharp
|
|
88
|
+
using Unity.Services.LevelPlay;
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**2. In existing Start() or Awake() method, add initialization:**
|
|
92
|
+
```csharp
|
|
93
|
+
void Start()
|
|
94
|
+
{
|
|
95
|
+
// Register initialization callbacks
|
|
96
|
+
LevelPlay.OnInitSuccess += OnInitSuccess;
|
|
97
|
+
LevelPlay.OnInitFailed += OnInitFailed;
|
|
98
|
+
|
|
99
|
+
// Initialize the SDK - REPLACE with your actual App Key from Step 5
|
|
100
|
+
LevelPlay.Init("YOUR_APP_KEY_HERE");
|
|
101
|
+
|
|
102
|
+
// ... your other existing Start() code
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**3. Add callback methods to class:**
|
|
107
|
+
```csharp
|
|
108
|
+
private void OnInitSuccess(LevelPlayConfiguration config)
|
|
109
|
+
{
|
|
110
|
+
Debug.Log("LevelPlay SDK initialized successfully");
|
|
111
|
+
// SDK is ready - you can now create ad objects
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private void OnInitFailed(LevelPlayInitError error)
|
|
115
|
+
{
|
|
116
|
+
Debug.LogError($"LevelPlay initialization failed: {error.ErrorMessage}");
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**4. In existing OnDestroy() (or create if it doesn't exist), add:**
|
|
121
|
+
```csharp
|
|
122
|
+
void OnDestroy()
|
|
123
|
+
{
|
|
124
|
+
// Unregister callbacks
|
|
125
|
+
LevelPlay.OnInitSuccess -= OnInitSuccess;
|
|
126
|
+
LevelPlay.OnInitFailed -= OnInitFailed;
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Replace `"YOUR_APP_KEY_HERE"` with your actual App Key from Step 5 (the alphanumeric string copied from the LevelPlay dashboard).
|
|
131
|
+
|
|
132
|
+
**Note:** If your existing script doesn't already persist across scenes, add `DontDestroyOnLoad(gameObject);` to its `Awake()` method to prevent re-initialization when loading new scenes.
|
|
133
|
+
|
|
134
|
+
Before testing, double-check that you've replaced the placeholder with your actual App Key. The App Key should be an alphanumeric string, NOT 'YOUR_APP_KEY_HERE'.
|
|
135
|
+
|
|
136
|
+
### Option 3: Separate Script Referenced by Manager
|
|
137
|
+
|
|
138
|
+
If you want to keep ads code in its own script that your existing manager references:
|
|
139
|
+
|
|
140
|
+
**1. Create `LevelPlayInitializer.cs` using the complete class code from Option 1.**
|
|
141
|
+
|
|
142
|
+
**2. Add the `LevelPlayInitializer` component to a GameObject in the Unity Editor** (at design time — not at runtime). Use a dedicated persistent GameObject (e.g. an "Ads" object in your first scene), and set its **App Key** field in the Inspector, exactly as in Option 1's "After creating" steps.
|
|
143
|
+
|
|
144
|
+
**3. Reference it from your existing manager** via a serialized field, so `GameManager` can coordinate with the initializer without creating it at runtime:
|
|
145
|
+
```csharp
|
|
146
|
+
using UnityEngine;
|
|
147
|
+
|
|
148
|
+
public class GameManager : MonoBehaviour
|
|
149
|
+
{
|
|
150
|
+
// Assign the LevelPlayInitializer GameObject in the Inspector.
|
|
151
|
+
// Enter your App Key on the LevelPlayInitializer component itself (see step 2),
|
|
152
|
+
// NOT here — that keeps your ad credentials in one place where publishers expect them.
|
|
153
|
+
[SerializeField] private LevelPlayInitializer levelPlayInitializer;
|
|
154
|
+
|
|
155
|
+
void Awake()
|
|
156
|
+
{
|
|
157
|
+
// ... your other initialization code.
|
|
158
|
+
// LevelPlayInitializer initializes itself in its own Start();
|
|
159
|
+
// GameManager just holds a reference to it via the field above.
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
This keeps ad code isolated in `LevelPlayInitializer.cs` while giving `GameManager` a reference to it.
|
|
165
|
+
|
|
166
|
+
> **Why not `gameObject.AddComponent<LevelPlayInitializer>()` at runtime?** The initializer reads its App Key from a `[SerializeField]` Inspector field. A component added at runtime never receives that Inspector value, so the App Key would be empty and initialization would fail. Attaching the component in the Editor (step 2) is what makes the App Key field available to fill in.
|
|
167
|
+
|
|
168
|
+
**Note:** `LevelPlayInitializer.Awake()` calls `DontDestroyOnLoad(gameObject)`, so the GameObject you attach it to persists across scenes. Put it on a dedicated Ads GameObject rather than on your `GameManager`, unless you intend `GameManager` to persist too.
|
|
169
|
+
|
|
170
|
+
### Option 4: Just Show Me the Code
|
|
171
|
+
|
|
172
|
+
Provide the complete initialization code from Option 1 as a standalone snippet, without instructions for attaching to a GameObject or setting up the Inspector. Include a note: "This is the full initialization class — save it as `LevelPlayInitializer.cs`, attach it to a persistent GameObject in your first scene, and set the App Key field in the Inspector."
|
|
173
|
+
|
|
174
|
+
**Key points (all options):**
|
|
175
|
+
- Always register `OnInitSuccess` and `OnInitFailed` callbacks before calling `Init()`
|
|
176
|
+
- Call initialization early in app lifecycle (in `Awake()` or `Start()` of first scene)
|
|
177
|
+
- Only initialize once. If initialization script is in first scene and you have multiple scenes, add `DontDestroyOnLoad(gameObject);` in `Awake()` to prevent re-initialization when loading new scenes
|
|
178
|
+
- Wait for `OnInitSuccess` before creating ad objects
|
|
179
|
+
|
|
180
|
+
If initialization fails repeatedly, see `references/troubleshooting.md`. Common causes include incorrect App Key, no internet connection, or missing package dependencies.
|
|
181
|
+
|
|
182
|
+
## Version-Aware ILRD Init Wiring (Step 7)
|
|
183
|
+
|
|
184
|
+
**If the user answered Yes or Not Sure to the ILRD question in Step 7**, wire up the impression-revenue
|
|
185
|
+
callback. **The correct approach depends on the user's SDK version** (check in **Ads Mediation > Network
|
|
186
|
+
Manager**):
|
|
187
|
+
|
|
188
|
+
**SDK 9.5.0+ (current): do NOT add anything to the initializer here.** In 9.5.0+, ILRD is delivered per
|
|
189
|
+
ad instance via the `OnAdImpressionDataReady` event on each ad object — it is wired when you create each
|
|
190
|
+
ad in Step 9 (see `references/ilrd-api.md`). The global `LevelPlay.OnImpressionDataReady` event still
|
|
191
|
+
exists but is **deprecated in 9.5.0+ and generates a compiler warning** — do not use it on 9.5.0+.
|
|
192
|
+
|
|
193
|
+
**SDK 9.4.x and earlier:** subscribe to the global `LevelPlay.OnImpressionDataReady` event before
|
|
194
|
+
`LevelPlay.Init()`. Add these lines inside `Start()` (before `LevelPlay.Init(appKey)`):
|
|
195
|
+
|
|
196
|
+
```csharp
|
|
197
|
+
// SDK 9.4.x and earlier only. MUST be registered BEFORE LevelPlay.Init() to avoid
|
|
198
|
+
// losing early impressions. Callback fires on a BACKGROUND thread — see
|
|
199
|
+
// references/ilrd-api.md for thread-safe forwarding patterns and a Firebase example.
|
|
200
|
+
LevelPlay.OnImpressionDataReady += OnImpressionDataReady;
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Add this stub method to the class:
|
|
204
|
+
|
|
205
|
+
```csharp
|
|
206
|
+
private void OnImpressionDataReady(LevelPlayImpressionData impressionData)
|
|
207
|
+
{
|
|
208
|
+
// See references/ilrd-api.md for full implementation.
|
|
209
|
+
// For now, just log so you can verify it fires:
|
|
210
|
+
Debug.Log($"ILRD: {impressionData.AdNetwork} / {impressionData.AdFormat} / ${impressionData.Revenue}");
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
And unsubscribe in `OnDestroy()`:
|
|
215
|
+
|
|
216
|
+
```csharp
|
|
217
|
+
LevelPlay.OnImpressionDataReady -= OnImpressionDataReady;
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**iOS path (SDK 9.4.x and earlier only):** if you used the `LevelPlayInitializer.cs` from
|
|
221
|
+
`references/ios-setup.md` Part 3, note that `Start()` is a coroutine with **no `LevelPlay.Init(appKey)`
|
|
222
|
+
call inside it** — initialization happens in `InitializeLevelPlay()`. Place the
|
|
223
|
+
`LevelPlay.OnImpressionDataReady += ...` line inside `InitializeLevelPlay()`, immediately **before**
|
|
224
|
+
`LevelPlay.Init(appKey)`, so it registers before the first impression.
|
|
225
|
+
|
|
226
|
+
For Option 2 (existing script) and Option 3 (separate script referenced by a manager), apply the same
|
|
227
|
+
version-aware wiring: on 9.4.x and earlier add the global subscription/stub/unsubscribe shown above; on
|
|
228
|
+
9.5.0+ add nothing here (ILRD is wired per ad instance in Step 9). For Option 3, the wiring goes in
|
|
229
|
+
`LevelPlayInitializer.cs`, with no changes in `GameManager`.
|
|
230
|
+
|
|
231
|
+
**Next:** Once you confirm the log fires after your first ad impression, read `references/ilrd-api.md` to
|
|
232
|
+
wire it up to your actual analytics platform. Note: ILRD callbacks do not fire with mock ads in the
|
|
233
|
+
Unity Editor — you'll need a device build to verify this log fires (see Step 10).
|
|
234
|
+
|
|
18
235
|
## Basic Initialization
|
|
19
236
|
|
|
20
237
|
### Minimum Required Setup
|
|
@@ -569,6 +786,8 @@ IEnumerator InitializeAfterOnboarding()
|
|
|
569
786
|
|
|
570
787
|
## Migration from IronSource.* APIs
|
|
571
788
|
|
|
789
|
+
> **Full migration guide:** for SDK upgrade paths, per-format ad unit API migration, the migration completeness checklist, Unity Ads migration, and Maven Central build failures, see `references/migration-sdk-9.md`. The summary below covers initialization only.
|
|
790
|
+
|
|
572
791
|
If you're migrating from deprecated IronSource APIs:
|
|
573
792
|
|
|
574
793
|
**Old (Deprecated):**
|
|
@@ -593,6 +812,8 @@ LevelPlay.Init(appKey);
|
|
|
593
812
|
|
|
594
813
|
When ad operations fail, `LevelPlayAdError` contains an `ErrorCode` property with one of these values:
|
|
595
814
|
|
|
815
|
+
> **Note:** Code **508** is an initialization/mediation-level error, surfaced via `LevelPlayInitError` in the `OnInitFailed` callback — not via a per-ad `LevelPlayAdError` (hence "N/A" in the Ad Formats column). All other codes below are per-ad errors delivered through `LevelPlayAdError` in the ad load/show failure callbacks.
|
|
816
|
+
|
|
596
817
|
| Code | Ad Formats | Description |
|
|
597
818
|
|------|-----------|-------------|
|
|
598
819
|
| **508** | N/A | Init failure of mediation/Network, Calling Demand Only API in non Demand Only mode, Calling non Demand Only API in Demand Only mode |
|
package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/interstitial-api.md
RENAMED
|
@@ -38,6 +38,9 @@ public class InterstitialAdManager : MonoBehaviour
|
|
|
38
38
|
// Create the interstitial ad object using constructor
|
|
39
39
|
interstitialAd = new LevelPlayInterstitialAd(adUnitId);
|
|
40
40
|
|
|
41
|
+
// ILRD (SDK 9.5.0+): if impression-revenue tracking is enabled, also subscribe here —
|
|
42
|
+
// interstitialAd.OnAdImpressionDataReady += OnImpressionDataReady; // see references/ilrd-api.md
|
|
43
|
+
|
|
41
44
|
// Register event listeners
|
|
42
45
|
interstitialAd.OnAdLoaded += OnAdLoaded;
|
|
43
46
|
interstitialAd.OnAdLoadFailed += OnAdLoadFailed;
|
|
@@ -63,8 +66,9 @@ public class InterstitialAdManager : MonoBehaviour
|
|
|
63
66
|
interstitialAd.OnAdClicked -= OnAdClicked;
|
|
64
67
|
interstitialAd.OnAdClosed -= OnAdClosed;
|
|
65
68
|
interstitialAd.OnAdInfoChanged -= OnAdInfoChanged;
|
|
69
|
+
// ILRD (9.5.0+): interstitialAd.OnAdImpressionDataReady -= OnImpressionDataReady;
|
|
66
70
|
|
|
67
|
-
//
|
|
71
|
+
// Free the native ad and its resources when this manager is destroyed
|
|
68
72
|
interstitialAd.DestroyAd();
|
|
69
73
|
}
|
|
70
74
|
}
|
|
@@ -88,6 +92,10 @@ public class InterstitialAdManager : MonoBehaviour
|
|
|
88
92
|
}
|
|
89
93
|
}
|
|
90
94
|
|
|
95
|
+
// True once an interstitial ad has finished loading and can be shown.
|
|
96
|
+
// Use this to decide whether to show opportunistically before calling ShowAd().
|
|
97
|
+
public bool IsAdReady() => interstitialAd != null && interstitialAd.IsAdReady();
|
|
98
|
+
|
|
91
99
|
// Event Callbacks
|
|
92
100
|
private void OnAdLoaded(LevelPlayAdInfo adInfo)
|
|
93
101
|
{
|
|
@@ -522,7 +530,7 @@ if (LevelPlayInterstitialAd.IsPlacementCapped("level_complete"))
|
|
|
522
530
|
|
|
523
531
|
All events are properties of the `LevelPlayInterstitialAd` object.
|
|
524
532
|
|
|
525
|
-
**Threading:** All ad callbacks run on the Unity main thread, so you can safely call Unity APIs (update UI, access GameObjects, etc.) directly in these callbacks. This is different from
|
|
533
|
+
**Threading:** All ad callbacks run on the Unity main thread, so you can safely call Unity APIs (update UI, access GameObjects, etc.) directly in these callbacks. This is different from `LevelPlay.OnImpressionDataReady` which runs on a background thread.
|
|
526
534
|
|
|
527
535
|
#### `OnAdLoaded`
|
|
528
536
|
Fired when an interstitial ad is successfully loaded.
|
|
@@ -635,7 +643,7 @@ interstitialAd.OnAdInfoChanged += (adInfo) =>
|
|
|
635
643
|
|
|
636
644
|
**Why it matters:** The updated `LevelPlayAdInfo` contains the latest revenue estimates and network information, which directly impacts your monetization. Always use the most recent `adInfo` when logging or analyzing ad performance.
|
|
637
645
|
|
|
638
|
-
**If you're using ILRD** (`references/ilrd-api.md`): the `LevelPlayImpressionData` you receive in
|
|
646
|
+
**If you're using ILRD** (`references/ilrd-api.md`): the `LevelPlayImpressionData` you receive in `OnImpressionDataReady` already contains the final revenue value, so `OnAdInfoChanged` is mostly useful for in-Editor debugging of the waterfall. Most publishers can leave it as a logging hook.
|
|
639
647
|
|
|
640
648
|
## Data Types
|
|
641
649
|
|
|
@@ -290,42 +290,14 @@ LevelPlay SDK requires certain capabilities to function properly:
|
|
|
290
290
|
|
|
291
291
|
### App Transport Security (ATS) Configuration
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
**No ATS configuration is needed. Leave App Transport Security at its iOS default.** With ATS on, the LevelPlay SDK tells the auction to return secure ads only, so ads load without any `Info.plist` changes.
|
|
294
294
|
|
|
295
|
-
**
|
|
295
|
+
**Do not add ATS exceptions for ads:**
|
|
296
|
+
- **Never set `NSAllowsArbitraryLoads` to `true`.** It turns off transport security for every connection the app makes, including its own backend and login traffic, not just ads, and App Review commonly rejects it without a justification. If the user asks for it, explain this and leave ATS at the default.
|
|
297
|
+
- **Don't set `NSAllowsArbitraryLoadsInWebContent` either.** On its own it makes the SDK request insecure ads, which iOS still blocks outside web views.
|
|
298
|
+
- **Don't add `NSExceptionDomains` entries for ad networks.** The SDK doesn't read them.
|
|
296
299
|
|
|
297
|
-
|
|
298
|
-
```xml
|
|
299
|
-
<key>NSAppTransportSecurity</key>
|
|
300
|
-
<dict>
|
|
301
|
-
<key>NSAllowsArbitraryLoads</key>
|
|
302
|
-
<true/>
|
|
303
|
-
</dict>
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
**Option 2: Allow specific domains (more secure)**
|
|
307
|
-
|
|
308
|
-
If you prefer to only allow specific ad network domains:
|
|
309
|
-
```xml
|
|
310
|
-
<key>NSAppTransportSecurity</key>
|
|
311
|
-
<dict>
|
|
312
|
-
<key>NSExceptionDomains</key>
|
|
313
|
-
<dict>
|
|
314
|
-
<key>ironsrc.com</key>
|
|
315
|
-
<dict>
|
|
316
|
-
<key>NSIncludesSubdomains</key>
|
|
317
|
-
<true/>
|
|
318
|
-
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
|
319
|
-
<true/>
|
|
320
|
-
</dict>
|
|
321
|
-
<!-- Add other ad network domains as needed -->
|
|
322
|
-
</dict>
|
|
323
|
-
</dict>
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
**Note:** Most ad networks require HTTP access for legacy ad creatives. Without proper ATS configuration, some ads may fail to load.
|
|
327
|
-
|
|
328
|
-
**When to configure:** Before building for iOS. This can be done in Unity's PostProcessBuild or manually in Xcode after export.
|
|
300
|
+
**Expected validation warning:** LevelPlay's integration validation reports "App Transport Security settings MISSING" when these keys are absent. That warning is expected with the default configuration. Don't resolve it by adding `NSAllowsArbitraryLoads`.
|
|
329
301
|
|
|
330
302
|
### Recommended Xcode Build Settings
|
|
331
303
|
|
package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/migration-sdk-9.md
RENAMED
|
@@ -609,7 +609,7 @@ Only after verifying all ads work correctly:
|
|
|
609
609
|
|
|
610
610
|
1. **Window > Package Manager** → Packages: In Project → select **Advertisement Legacy** → **Remove**
|
|
611
611
|
|
|
612
|
-
|
|
612
|
+
⚠ Do not remove until all ad implementations are tested and working.
|
|
613
613
|
|
|
614
614
|
---
|
|
615
615
|
|
package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/privacy-settings.md
RENAMED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- [CCPA Compliance](#ccpa-compliance)
|
|
8
8
|
- [COPPA Compliance](#coppa-compliance)
|
|
9
9
|
- [Combined Compliance Example](#combined-compliance-example)
|
|
10
|
-
- [Deprecated
|
|
10
|
+
- [Deprecated / Legacy APIs](#deprecated--legacy-apis)
|
|
11
11
|
- [Best Practices](#best-practices)
|
|
12
12
|
- [Testing Privacy Settings](#testing-privacy-settings)
|
|
13
13
|
- [Common Issues](#common-issues)
|
|
@@ -475,40 +475,25 @@ public class PrivacyComplianceManager : MonoBehaviour
|
|
|
475
475
|
|
|
476
476
|
---
|
|
477
477
|
|
|
478
|
-
## Deprecated
|
|
478
|
+
## Deprecated / Legacy APIs
|
|
479
479
|
|
|
480
|
-
**⚠
|
|
480
|
+
**⚠ The APIs below are superseded across all supported versions. Use the current `LevelPlayPrivacySettings` APIs shown in the sections above instead.**
|
|
481
481
|
|
|
482
|
-
|
|
482
|
+
> **`SetGDPRConsents(Dictionary)` is NOT in this list.** It is the **current GDPR API on SDK 9.4.x** — not a legacy API. It only becomes `[Obsolete]` on SDK 9.5.0+, where `SetGDPRConsent(bool)` replaces it. See [GDPR Consent Management](#gdpr-consent-management) above for the version-appropriate call. Do not treat the per-network dictionary as deprecated if you are on 9.4.x.
|
|
483
483
|
|
|
484
|
-
|
|
485
|
-
// DEPRECATED - Do not use
|
|
486
|
-
LevelPlay.SetConsent(true); // Grants consent for all networks
|
|
487
|
-
LevelPlay.SetConsent(false); // Denies consent for all networks
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
**Status:** Marked as `[Obsolete]` in SDK code.
|
|
491
|
-
|
|
492
|
-
**Migration:** Use `LevelPlayPrivacySettings.SetGDPRConsents(Dictionary)` (SDK 9.4.x) or `LevelPlayPrivacySettings.SetGDPRConsent(bool)` (SDK 9.5.0+).
|
|
493
|
-
|
|
494
|
-
### Deprecated GDPR API — SetGDPRConsents (per-network dictionary, SDK 9.5.0+)
|
|
484
|
+
### Legacy GDPR API — LevelPlay.SetConsent (all versions)
|
|
495
485
|
|
|
496
486
|
```csharp
|
|
497
|
-
// DEPRECATED
|
|
498
|
-
//
|
|
499
|
-
|
|
500
|
-
{
|
|
501
|
-
{ "UnityAds", true },
|
|
502
|
-
{ "AdMob", true }
|
|
503
|
-
};
|
|
504
|
-
LevelPlayPrivacySettings.SetGDPRConsents(consents);
|
|
487
|
+
// DEPRECATED - Do not use. Marked [Obsolete] in the SDK.
|
|
488
|
+
LevelPlay.SetConsent(true); // Grants consent for all networks
|
|
489
|
+
LevelPlay.SetConsent(false); // Denies consent for all networks
|
|
505
490
|
```
|
|
506
491
|
|
|
507
|
-
**
|
|
492
|
+
**Status:** Marked as `[Obsolete]` in SDK code (all supported versions).
|
|
508
493
|
|
|
509
|
-
**Migration (9.
|
|
494
|
+
**Migration:** Use `LevelPlayPrivacySettings.SetGDPRConsents(Dictionary)` on SDK 9.4.x, or `LevelPlayPrivacySettings.SetGDPRConsent(bool)` on SDK 9.5.0+.
|
|
510
495
|
|
|
511
|
-
###
|
|
496
|
+
### Legacy CCPA API
|
|
512
497
|
|
|
513
498
|
```csharp
|
|
514
499
|
// DEPRECATED - Do not use
|
|
@@ -518,7 +503,7 @@ LevelPlay.SetMetaData("do_not_sell", "false");
|
|
|
518
503
|
|
|
519
504
|
**Migration:** Use `LevelPlayPrivacySettings.SetCCPA(true)` instead.
|
|
520
505
|
|
|
521
|
-
###
|
|
506
|
+
### Legacy COPPA API
|
|
522
507
|
|
|
523
508
|
```csharp
|
|
524
509
|
// DEPRECATED - Do not use
|
|
@@ -593,9 +578,9 @@ private void OnInitSuccess(LevelPlayConfiguration config)
|
|
|
593
578
|
|
|
594
579
|
### Issue: Using deprecated APIs
|
|
595
580
|
|
|
596
|
-
**Cause:** Following outdated documentation or examples using `LevelPlay.SetConsent()` or `
|
|
581
|
+
**Cause:** Following outdated documentation or examples using the legacy `LevelPlay.SetConsent()` or `LevelPlay.SetMetaData("do_not_sell"/"is_child_directed", ...)` privacy calls.
|
|
597
582
|
|
|
598
|
-
**Solution:**
|
|
583
|
+
**Solution:** Use the `LevelPlayPrivacySettings` API appropriate to your SDK version — for GDPR, `SetGDPRConsents(Dictionary)` on SDK 9.4.x, or `SetGDPRConsent(bool)` on SDK 9.5.0+. (Note: `SetGDPRConsents(Dictionary)` is current on 9.4.x and only warns as obsolete on 9.5.0+ — it is not a legacy API on 9.4.x.)
|
|
599
584
|
|
|
600
585
|
---
|
|
601
586
|
|
package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/rewarded-api.md
RENAMED
|
@@ -33,6 +33,10 @@ public class RewardedAdManager : MonoBehaviour
|
|
|
33
33
|
private LevelPlayRewardedAd rewardedAd;
|
|
34
34
|
private string adUnitId = "YOUR_REWARDED_AD_UNIT_ID";
|
|
35
35
|
|
|
36
|
+
// Optional: assign a handler to be notified when the user earns the reward.
|
|
37
|
+
// Callers (e.g. a HintSystem) set this before calling ShowAd().
|
|
38
|
+
public System.Action OnRewardGranted;
|
|
39
|
+
|
|
36
40
|
void Start()
|
|
37
41
|
{
|
|
38
42
|
// Create the rewarded ad object and register event listeners.
|
|
@@ -41,6 +45,9 @@ public class RewardedAdManager : MonoBehaviour
|
|
|
41
45
|
// should be available). See LoadAd() below.
|
|
42
46
|
rewardedAd = new LevelPlayRewardedAd(adUnitId);
|
|
43
47
|
|
|
48
|
+
// ILRD (SDK 9.5.0+): if impression-revenue tracking is enabled, also subscribe here —
|
|
49
|
+
// rewardedAd.OnAdImpressionDataReady += OnImpressionDataReady; // see references/ilrd-api.md
|
|
50
|
+
|
|
44
51
|
// Register event listeners
|
|
45
52
|
rewardedAd.OnAdLoaded += OnAdLoaded;
|
|
46
53
|
rewardedAd.OnAdLoadFailed += OnAdLoadFailed;
|
|
@@ -65,11 +72,14 @@ public class RewardedAdManager : MonoBehaviour
|
|
|
65
72
|
rewardedAd.OnAdClosed -= OnAdClosed;
|
|
66
73
|
rewardedAd.OnAdClicked -= OnAdClicked;
|
|
67
74
|
rewardedAd.OnAdInfoChanged -= OnAdInfoChanged;
|
|
75
|
+
// ILRD (9.5.0+): rewardedAd.OnAdImpressionDataReady -= OnImpressionDataReady;
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
|
|
71
|
-
// Call
|
|
72
|
-
//
|
|
79
|
+
// Call this from the trigger point in your game where you want the ad to be available —
|
|
80
|
+
// for example, from a UI button handler, on entering a scene, or at a natural moment
|
|
81
|
+
// in gameplay. Unlike the legacy IronSource rewarded video, the SDK does not load
|
|
82
|
+
// automatically; LoadAd() must always be called explicitly.
|
|
73
83
|
public void LoadAd()
|
|
74
84
|
{
|
|
75
85
|
Debug.Log("Loading rewarded ad...");
|
|
@@ -89,6 +99,10 @@ public class RewardedAdManager : MonoBehaviour
|
|
|
89
99
|
}
|
|
90
100
|
}
|
|
91
101
|
|
|
102
|
+
// True once a rewarded ad has finished loading and can be shown.
|
|
103
|
+
// Use this to decide whether to offer the ad before calling ShowAd().
|
|
104
|
+
public bool IsAdReady() => rewardedAd != null && rewardedAd.IsAdReady();
|
|
105
|
+
|
|
92
106
|
// Event Callbacks
|
|
93
107
|
private void OnAdLoaded(LevelPlayAdInfo adInfo)
|
|
94
108
|
{
|
|
@@ -119,6 +133,8 @@ public class RewardedAdManager : MonoBehaviour
|
|
|
119
133
|
Debug.Log($"User earned reward: {reward.Amount} {reward.Name}");
|
|
120
134
|
// Grant the reward to the user
|
|
121
135
|
GrantReward(reward);
|
|
136
|
+
// Notify any external listener (e.g. HintSystem) that the reward was earned
|
|
137
|
+
OnRewardGranted?.Invoke();
|
|
122
138
|
}
|
|
123
139
|
|
|
124
140
|
private void OnAdClosed(LevelPlayAdInfo adInfo)
|
|
@@ -469,7 +485,7 @@ if (LevelPlayRewardedAd.IsPlacementCapped("extra_lives"))
|
|
|
469
485
|
|
|
470
486
|
All events are properties of the `LevelPlayRewardedAd` object.
|
|
471
487
|
|
|
472
|
-
**Threading:** All ad callbacks run on the Unity main thread, so you can safely call Unity APIs (update UI, access GameObjects, etc.) directly in these callbacks. This is different from
|
|
488
|
+
**Threading:** All ad callbacks run on the Unity main thread, so you can safely call Unity APIs (update UI, access GameObjects, etc.) directly in these callbacks. This is different from `LevelPlay.OnImpressionDataReady` which runs on a background thread.
|
|
473
489
|
|
|
474
490
|
#### `OnAdLoaded`
|
|
475
491
|
Fired when a rewarded ad is successfully loaded.
|
|
@@ -603,7 +619,7 @@ rewardedAd.OnAdInfoChanged += (adInfo) =>
|
|
|
603
619
|
|
|
604
620
|
**Why it matters:** The updated `LevelPlayAdInfo` contains the latest revenue estimates and network information, which directly impacts your monetization. Always use the most recent `adInfo` when logging or analyzing ad performance.
|
|
605
621
|
|
|
606
|
-
**If you're using ILRD** (`references/ilrd-api.md`): the `LevelPlayImpressionData` you receive in
|
|
622
|
+
**If you're using ILRD** (`references/ilrd-api.md`): the `LevelPlayImpressionData` you receive in `OnImpressionDataReady` already contains the final revenue value, so `OnAdInfoChanged` is mostly useful for in-Editor debugging of the waterfall. Most publishers can leave it as a logging hook.
|
|
607
623
|
|
|
608
624
|
## Data Types
|
|
609
625
|
|