@aqian0/dsh-unity 0.0.0-stage → 0.1.0
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 +53 -0
- package/LICENSE-UNITY-COMPANION.md +122 -0
- package/LICENSE.md +31 -0
- package/NOTICE.md +90 -0
- package/README.md +273 -2
- package/cordis.patch.yml +22 -0
- package/docs/design.md +297 -0
- package/icon.svg +16 -0
- package/lib/frontmatter.js +392 -0
- package/lib/gating.js +105 -0
- package/lib/harness.js +16 -0
- package/lib/index.js +171 -0
- package/lib/project.js +210 -0
- package/lib/registry.js +268 -0
- package/lib/requirements.js +214 -0
- package/lib/skills.js +191 -0
- package/lib/types/frontmatter.d.ts +84 -0
- package/lib/types/gating.d.ts +80 -0
- package/lib/types/harness.d.ts +152 -0
- package/lib/types/index.d.ts +75 -0
- package/lib/types/project.d.ts +93 -0
- package/lib/types/registry.d.ts +96 -0
- package/lib/types/requirements.d.ts +67 -0
- package/lib/types/skills.d.ts +54 -0
- package/lib/types/watch.d.ts +34 -0
- package/lib/watch.js +84 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +70 -4
- package/skills/2d-pixel-perfect/SKILL.md +208 -0
- package/skills/2d-pixel-perfect/references/api-reference.md +81 -0
- package/skills/2d-pixel-perfect/references/camera-setup-builtin.cs +40 -0
- package/skills/2d-pixel-perfect/references/camera-setup-urp.cs +49 -0
- package/skills/2d-pixel-perfect/references/pipeline-detection.cs +50 -0
- package/skills/2d-pixel-perfect/references/sprite-settings.cs +37 -0
- package/skills/asset-transformer-toolkit/SECURITY.md +15 -0
- package/skills/asset-transformer-toolkit/SKILL.md +39 -0
- package/skills/asset-transformer-toolkit/references/create-importer.md +121 -0
- package/skills/asset-transformer-toolkit/references/lods.md +61 -0
- package/skills/asset-transformer-toolkit/references/rule-api.md +154 -0
- package/skills/asset-transformer-toolkit/references/ruleblock-api.md +37 -0
- package/skills/asset-transformer-toolkit/references/ruleset-api.md +138 -0
- package/skills/asset-transformer-toolkit/references/rulesets-and-actions.md +227 -0
- package/skills/audio-setup-mixers/SECURITY.md +16 -0
- package/skills/audio-setup-mixers/SKILL.md +127 -0
- package/skills/audio-setup-mixers/references/api.md +162 -0
- package/skills/build-gtk/SECURITY.md +16 -0
- package/skills/build-gtk/SKILL.md +200 -0
- package/skills/build-gtk/references/api-reference.md +33 -0
- package/skills/build-gtk/references/graph-api-gaps.md +96 -0
- package/skills/build-gtk/references/runtime-and-visualization.md +191 -0
- package/skills/build-gtk/references/state-machine-api.md +270 -0
- package/skills/build-gtk/references/where-the-docs-stop.md +49 -0
- package/skills/build-live-game/SKILL.md +159 -0
- package/skills/build-live-game/references/achievements.md +757 -0
- package/skills/build-live-game/references/apis.md +271 -0
- package/skills/build-live-game/references/authentication.md +431 -0
- package/skills/build-live-game/references/battlepass.md +904 -0
- package/skills/build-live-game/references/blueprints-and-samples.md +75 -0
- package/skills/build-live-game/references/cloud-code-cloudbehaviours.md +1111 -0
- package/skills/build-live-game/references/cloud-code-modules.md +1276 -0
- package/skills/build-live-game/references/cloud-code.md +58 -0
- package/skills/build-live-game/references/cloud-save.md +464 -0
- package/skills/build-live-game/references/deployment.md +231 -0
- package/skills/build-live-game/references/orientation.md +30 -0
- package/skills/build-live-game/references/player-account.md +821 -0
- package/skills/build-live-game/references/remote-config.md +96 -0
- package/skills/build-live-game/references/services-overview.md +76 -0
- package/skills/build-live-game/references/tooling.md +375 -0
- package/skills/build-live-game/references/ugs-cli.md +86 -0
- package/skills/craft-game-floors/SECURITY.md +23 -0
- package/skills/craft-game-floors/SKILL.md +134 -0
- package/skills/craft-game-floors/references/art-direction.md +85 -0
- package/skills/craft-game-floors/references/camera-rigs.md +51 -0
- package/skills/craft-game-floors/references/character-motion.md +35 -0
- package/skills/craft-game-floors/references/game-audio.md +47 -0
- package/skills/craft-game-floors/references/game-feel.md +68 -0
- package/skills/craft-game-floors/references/game-shell.md +45 -0
- package/skills/craft-game-floors/references/live-floor.md +35 -0
- package/skills/craft-game-floors/references/placeholder-assets.md +35 -0
- package/skills/craft-game-floors/references/scene-lighting.md +52 -0
- package/skills/craft-game-floors/references/toon-shading.md +34 -0
- package/skills/craft-game-floors/references/vfx.md +40 -0
- package/skills/craft-game-floors/references/visual-scorecard.md +43 -0
- package/skills/create-2d-physics/SECURITY.md +16 -0
- package/skills/create-2d-physics/SKILL.md +128 -0
- package/skills/create-2d-physics/references/2d-physics-core.md +155 -0
- package/skills/create-2d-physics/references/legacy-2d-physics.md +45 -0
- package/skills/create-tile-palette-or-rule-tiles/SKILL.md +95 -0
- package/skills/create-tile-palette-or-rule-tiles/references/hexagonalruletile.md +71 -0
- package/skills/create-tile-palette-or-rule-tiles/references/palette-create.md +38 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createempty.md +37 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createfromsegment.md +219 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile.md +95 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/CreatePaletteTemplate.cs +148 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/ManualWorkflowExample.cs +63 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/RuleTileGenerator.cs +61 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/TilemapRuleTileCreateFromSegment.cs +225 -0
- package/skills/fix-3d-physics-collisions/SECURITY.md +17 -0
- package/skills/fix-3d-physics-collisions/SKILL.md +139 -0
- package/skills/fix-3d-physics-collisions/references/collision-checklist.md +80 -0
- package/skills/fix-3d-physics-collisions/references/collision-debugger.md +18 -0
- package/skills/fix-3d-physics-collisions/references/console-errors-table.md +9 -0
- package/skills/fix-3d-physics-collisions/references/kinematic-trigger-facts.md +18 -0
- package/skills/fix-3d-physics-collisions/references/other-symptoms.md +29 -0
- package/skills/fix-3d-physics-collisions/references/raycast-checklist.md +8 -0
- package/skills/fix-3d-physics-collisions/references/topic-map.md +42 -0
- package/skills/fix-3d-physics-collisions/references/trigger-checklist.md +9 -0
- package/skills/fix-3d-physics-collisions/scripts/CollisionDebugger.cs +561 -0
- package/skills/generate-editor-search-query/SECURITY.md +17 -0
- package/skills/generate-editor-search-query/SKILL.md +117 -0
- package/skills/generate-editor-search-query/references/open-search-window.md +70 -0
- package/skills/generate-editor-search-query/references/query-patterns.md +124 -0
- package/skills/implement-in-app-purchases/SKILL.md +82 -0
- package/skills/implement-in-app-purchases/references/api-details.md +41 -0
- package/skills/implement-in-app-purchases/references/api-notes.md +105 -0
- package/skills/implement-in-app-purchases/references/codeless-catalog.md +197 -0
- package/skills/implement-in-app-purchases/references/convert-adapty.md +270 -0
- package/skills/implement-in-app-purchases/references/convert-essentialkit.md +239 -0
- package/skills/implement-in-app-purchases/references/convert-revenuecat.md +277 -0
- package/skills/implement-in-app-purchases/references/convert-unipay.md +145 -0
- package/skills/implement-in-app-purchases/references/migration-v4-to-v5.md +46 -0
- package/skills/implement-in-app-purchases/references/path-add-iap-to-new-project.md +197 -0
- package/skills/implement-in-app-purchases/references/path-convert-native-google-billing.md +302 -0
- package/skills/implement-in-app-purchases/references/path-convert-native-storekit.md +357 -0
- package/skills/implement-in-app-purchases/references/path-implement-iap-d2c.md +253 -0
- package/skills/implement-in-app-purchases/references/platform-notes.md +55 -0
- package/skills/implement-in-app-purchases/references/pre-check.md +207 -0
- package/skills/implement-in-app-purchases/references/topic-map.md +46 -0
- package/skills/initialize-ai-navigation/SKILL.md +109 -0
- package/skills/initialize-ai-navigation/references/navigation-system.md +793 -0
- package/skills/initialize-ai-navigation/references/topic-map.md +66 -0
- package/skills/levelplay-unity-integration/SKILL.md +122 -0
- package/skills/levelplay-unity-integration/references/adding-more-ad-formats.md +15 -0
- package/skills/levelplay-unity-integration/references/banner-api.md +927 -0
- package/skills/levelplay-unity-integration/references/best-practices.md +604 -0
- package/skills/levelplay-unity-integration/references/dependency-resolution.md +94 -0
- package/skills/levelplay-unity-integration/references/examples.md +10 -0
- package/skills/levelplay-unity-integration/references/ilrd-api.md +337 -0
- package/skills/levelplay-unity-integration/references/initialization-api.md +851 -0
- package/skills/levelplay-unity-integration/references/interstitial-api.md +907 -0
- package/skills/levelplay-unity-integration/references/ios-setup.md +463 -0
- package/skills/levelplay-unity-integration/references/migration-sdk-9.md +666 -0
- package/skills/levelplay-unity-integration/references/privacy-settings.md +593 -0
- package/skills/levelplay-unity-integration/references/production-release-checklist.md +22 -0
- package/skills/levelplay-unity-integration/references/rewarded-api.md +918 -0
- package/skills/levelplay-unity-integration/references/step-0-new-or-migration.md +8 -0
- package/skills/levelplay-unity-integration/references/step-1-verify-environment.md +4 -0
- package/skills/levelplay-unity-integration/references/step-10-testing.md +15 -0
- package/skills/levelplay-unity-integration/references/step-2-business-goals.md +12 -0
- package/skills/levelplay-unity-integration/references/step-3-install-sdk.md +55 -0
- package/skills/levelplay-unity-integration/references/step-4-native-dependencies.md +22 -0
- package/skills/levelplay-unity-integration/references/step-5-app-key-and-ad-units.md +18 -0
- package/skills/levelplay-unity-integration/references/step-6-5-privacy-and-regulation.md +51 -0
- package/skills/levelplay-unity-integration/references/step-6-admob-keys.md +16 -0
- package/skills/levelplay-unity-integration/references/step-7-initialize.md +50 -0
- package/skills/levelplay-unity-integration/references/step-8-ad-unit-strategy.md +16 -0
- package/skills/levelplay-unity-integration/references/step-9-implement-ad-units.md +66 -0
- package/skills/levelplay-unity-integration/references/testing-and-validation.md +222 -0
- package/skills/levelplay-unity-integration/references/troubleshooting.md +99 -0
- package/skills/localize-unity-project/SKILL.md +159 -0
- package/skills/localize-unity-project/references/api-notes.md +15 -0
- package/skills/localize-unity-project/references/cjk-fonts.md +83 -0
- package/skills/localize-unity-project/references/docs-map.md +42 -0
- package/skills/localize-unity-project/references/documentation-lookup.md +33 -0
- package/skills/localize-unity-project/references/locale-switching.md +17 -0
- package/skills/localize-unity-project/references/table-completeness-check.md +47 -0
- package/skills/localize-unity-project/references/translating-existing-project.md +47 -0
- package/skills/localize-unity-project/references/translation-strategy.md +41 -0
- package/skills/localize-unity-project/references/troubleshooting.md +12 -0
- package/skills/localize-unity-project/scripts/L10nBatchProcessor.cs +191 -0
- package/skills/localize-unity-project/scripts/LocalizedFontAsset.cs +18 -0
- package/skills/manage-sprite-atlas/SKILL.md +202 -0
- package/skills/manage-sprite-atlas/references/addressables-delivery.md +58 -0
- package/skills/manage-sprite-atlas/references/advanced-manual-authoring.md +19 -0
- package/skills/manage-sprite-atlas/references/api.md +382 -0
- package/skills/manage-sprite-atlas/references/best-practices.md +183 -0
- package/skills/manage-sprite-atlas/references/common-errors.md +123 -0
- package/skills/manage-sprite-atlas/references/complete-workflow.md +61 -0
- package/skills/manage-sprite-atlas/references/custom-packing.md +147 -0
- package/skills/manage-sprite-atlas/references/delivery-mechanism.md +30 -0
- package/skills/manage-sprite-atlas/references/key-requirements.md +21 -0
- package/skills/manage-sprite-atlas/references/manual-authoring.md +39 -0
- package/skills/manage-sprite-atlas/references/namespaces.md +15 -0
- package/skills/manage-sprite-atlas/references/v2-architecture.md +21 -0
- package/skills/manage-sprite-atlas/resources/authoringvsruntime.cs +176 -0
- package/skills/manage-sprite-atlas/resources/buildaddressablespostprocess.cs +59 -0
- package/skills/manage-sprite-atlas/resources/cacheloadedatlases.cs +145 -0
- package/skills/manage-sprite-atlas/resources/cleanupbatchoperations.cs +119 -0
- package/skills/manage-sprite-atlas/resources/createandconfiguremasteratlas.cs +57 -0
- package/skills/manage-sprite-atlas/resources/custompackersetup.cs +88 -0
- package/skills/manage-sprite-atlas/resources/deprecatedmethods.cs +142 -0
- package/skills/manage-sprite-atlas/resources/dontmodifywithoutsaving.cs +120 -0
- package/skills/manage-sprite-atlas/resources/dontpackinruntimebuilds.cs +190 -0
- package/skills/manage-sprite-atlas/resources/dontscriptspriteatlasineditor.cs +114 -0
- package/skills/manage-sprite-atlas/resources/editorconfiguration.cs +95 -0
- package/skills/manage-sprite-atlas/resources/enablespritepacking.cs +172 -0
- package/skills/manage-sprite-atlas/resources/gridspritepacker.cs +50 -0
- package/skills/manage-sprite-atlas/resources/handlelatebinding.cs +147 -0
- package/skills/manage-sprite-atlas/resources/handlenullcases.cs +141 -0
- package/skills/manage-sprite-atlas/resources/migratev1tov2.cs +335 -0
- package/skills/manage-sprite-atlas/resources/multipagepacker.cs +80 -0
- package/skills/manage-sprite-atlas/resources/optimizetexturesettings.cs +191 -0
- package/skills/manage-sprite-atlas/resources/packerdebugging.cs +158 -0
- package/skills/manage-sprite-atlas/resources/packtransform.cs +51 -0
- package/skills/manage-sprite-atlas/resources/platformnames.cs +127 -0
- package/skills/manage-sprite-atlas/resources/queryspritesefficiently.cs +222 -0
- package/skills/manage-sprite-atlas/resources/registercallbacks.cs +152 -0
- package/skills/manage-sprite-atlas/resources/runtimeatlasloader.cs +15 -0
- package/skills/manage-sprite-atlas/resources/runtimespriteaccess.cs +19 -0
- package/skills/manage-sprite-atlas/resources/savespriteatlasasset.cs +107 -0
- package/skills/manage-sprite-atlas/resources/scriptablepacker.cs +81 -0
- package/skills/manage-sprite-atlas/resources/setincludeinbuild.cs +164 -0
- package/skills/manage-sprite-atlas/resources/sizeoptimizedpacker.cs +88 -0
- package/skills/manage-sprite-atlas/resources/spriteatlaslatebinding.cs +123 -0
- package/skills/manage-sprite-atlas/resources/spriteatlasprebuildgenerator.cs +219 -0
- package/skills/manage-sprite-atlas/resources/spritedata.cs +35 -0
- package/skills/manage-sprite-atlas/resources/spritepack.cs +39 -0
- package/skills/manage-sprite-atlas/resources/texturedata.cs +15 -0
- package/skills/manage-sprite-atlas/resources/updatebuildscripts.cs +357 -0
- package/skills/manage-sprite-atlas/resources/updatesettingsconfiguration.cs +135 -0
- package/skills/manage-sprite-atlas/resources/usevariantswisely.cs +179 -0
- package/skills/manage-sprite-atlas/resources/variantatlas.cs +39 -0
- package/skills/migrate-birp-to-urp/SECURITY.md +16 -0
- package/skills/migrate-birp-to-urp/SKILL.md +167 -0
- package/skills/migrate-birp-to-urp/references/capturing-the-editor.md +66 -0
- package/skills/migrate-birp-to-urp/references/complex-shader-situations.md +272 -0
- package/skills/migrate-birp-to-urp/references/conversion-and-rendering-triage.md +113 -0
- package/skills/migrate-birp-to-urp/references/custom-shader-triage.md +123 -0
- package/skills/migrate-birp-to-urp/references/implementation-patterns.md +529 -0
- package/skills/migrate-birp-to-urp/references/migration-workflow.md +265 -0
- package/skills/migrate-birp-to-urp/references/parity-validation-and-troubleshooting.md +114 -0
- package/skills/migrate-birp-to-urp/references/preflight-and-urp-setup.md +195 -0
- package/skills/migrate-birp-to-urp/references/quality-settings-map.md +69 -0
- package/skills/new-unity-project/SECURITY.md +26 -0
- package/skills/new-unity-project/SKILL.md +171 -0
- package/skills/new-unity-project/references/checklist.md +18 -0
- package/skills/new-unity-project/references/common-mistakes.md +15 -0
- package/skills/new-unity-project/references/skill-setup.md +66 -0
- package/skills/new-unity-project/references/step-1-concept.md +13 -0
- package/skills/new-unity-project/references/step-2-platforms-and-create.md +31 -0
- package/skills/new-unity-project/references/step-3-join-and-reconcile.md +16 -0
- package/skills/new-unity-project/references/step-4-source-control.md +9 -0
- package/skills/new-unity-project/references/step-5-packages.md +18 -0
- package/skills/new-unity-project/references/step-6-identity-and-floors.md +20 -0
- package/skills/new-unity-project/references/step-7-visual-baseline.md +75 -0
- package/skills/new-unity-project/references/step-8-first-commit.md +21 -0
- package/skills/new-unity-project/references/step-9-handoff.md +23 -0
- package/skills/optimize-audio/SECURITY.md +16 -0
- package/skills/optimize-audio/SKILL.md +120 -0
- package/skills/optimize-audio/references/diagnostics.md +42 -0
- package/skills/optimize-audio/references/troubleshooting.md +41 -0
- package/skills/optimize-audio/resources/audio-import-api.md +149 -0
- package/skills/optimize-audio/resources/platform-settings.md +48 -0
- package/skills/optimize-text-mesh-pro/SKILL.md +181 -0
- package/skills/optimize-text-mesh-pro/references/dynamic-atlas-and-profiling.md +28 -0
- package/skills/optimize-text-mesh-pro/references/topic-map.md +36 -0
- package/skills/optimize-web/SECURITY.md +16 -0
- package/skills/optimize-web/SKILL.md +157 -0
- package/skills/optimize-web/references/editor-csharp.md +120 -0
- package/skills/optimize-web/references/topic-map.md +49 -0
- package/skills/optimize-web/references/troubleshooting.md +45 -0
- package/skills/optimize-web/references/understand-request.md +19 -0
- package/skills/optimize-web/references/web-assets-quality.md +59 -0
- package/skills/optimize-web/references/web-player-settings.md +39 -0
- package/skills/optimize-web/references/web-profiling-memory.md +71 -0
- package/skills/optimize-web/scripts/WebOptimizer.cs +46 -0
- package/skills/optimize-web/scripts/toktx-examples.sh +11 -0
- package/skills/setup-multiplayer-services/SKILL.md +36 -0
- package/skills/setup-multiplayer-services/references/dgs-entrypoint.md +79 -0
- package/skills/setup-multiplayer-services/references/entrypoints.md +213 -0
- package/skills/setup-multiplayer-services/references/examples.md +33 -0
- package/skills/setup-multiplayer-services/references/implementation-fit.md +30 -0
- package/skills/setup-multiplayer-services/references/underlying-services.md +11 -0
- package/skills/setup-multiplayer-services/references/workflows-prerequisites.md +17 -0
- package/skills/setup-vivox-voice-chat/SECURITY.md +16 -0
- package/skills/setup-vivox-voice-chat/SKILL.md +166 -0
- package/skills/setup-vivox-voice-chat/references/api-reference-lookup.md +28 -0
- package/skills/setup-vivox-voice-chat/references/docs-topic-map.md +13 -0
- package/skills/setup-vivox-voice-chat/references/events-and-participants.md +79 -0
- package/skills/setup-vivox-voice-chat/references/init-and-login.md +92 -0
- package/skills/setup-vivox-voice-chat/references/text-chat.md +93 -0
- package/skills/setup-vivox-voice-chat/references/troubleshooting.md +47 -0
- package/skills/setup-vivox-voice-chat/references/voice-channels.md +92 -0
- package/skills/shader-graph-create-custom-node/SKILL.md +25 -0
- package/skills/shader-graph-create-custom-node/resources/all_hints.hlsl +182 -0
- package/skills/sprite-editor/SECURITY.md +16 -0
- package/skills/sprite-editor/SKILL.md +66 -0
- package/skills/sprite-editor/references/api_reference.md +151 -0
- package/skills/sprite-editor/references/background.md +112 -0
- package/skills/sprite-editor/references/templates.md +72 -0
- package/skills/sprite-editor/scripts/AutomaticSliceTexture.cs +40 -0
- package/skills/sprite-editor/scripts/GenerateNewSpriteRects.cs +200 -0
- package/skills/sprite-editor/scripts/GetTextureSourceImageSize.cs +32 -0
- package/skills/sprite-editor/scripts/GetTextureToSlice.cs +55 -0
- package/skills/sprite-editor/scripts/GridSliceTexture.cs +40 -0
- package/skills/sprite-editor/scripts/IsometricSliceTexture.cs +141 -0
- package/skills/sprite-editor/scripts/README.md +134 -0
- package/skills/sprite-editor/scripts/SetPivotExample.cs +58 -0
- package/skills/sprite-editor/scripts/SpriteToPng.cs +88 -0
- package/skills/sprite-segment-3x3grid/SKILL.md +177 -0
- package/skills/sprite-segment-3x3grid/references/topic-map.md +37 -0
- package/skills/sprite-segment-3x3grid/scripts/SpriteGridAnalysis.cs +119 -0
- package/skills/ui/SKILL.md +142 -0
- package/skills/ui-imgui/SKILL.md +180 -0
- package/skills/ui-imgui/references/gui-elements.md +156 -0
- package/skills/ui-imgui/references/templates.md +141 -0
- package/skills/ui-ugui/SKILL.md +217 -0
- package/skills/ui-ugui/references/layout-and-anchors.md +61 -0
- package/skills/ui-ugui/references/scrollview-setup.md +29 -0
- package/skills/ui-uitk/SKILL.md +229 -0
- package/skills/ui-uitk/references/common-issues.md +74 -0
- package/skills/ui-uitk/references/custom-elements.md +241 -0
- package/skills/ui-uitk/references/painter2d.md +282 -0
- package/skills/ui-uitk/references/pointermanipulator-guide.md +94 -0
- package/skills/ui-uitk/references/svg-icons.md +136 -0
- package/skills/ui-uitk/references/ui-runtime-binding.md +234 -0
- package/skills/ui-uitk/references/uss-guide.md +138 -0
- package/skills/unity-cli/CHANGELOG.md +524 -0
- package/skills/unity-cli/SECURITY.md +68 -0
- package/skills/unity-cli/SKILL.md +160 -0
- package/skills/unity-cli/references/auth-license-cloud.md +318 -0
- package/skills/unity-cli/references/bootstrap-project.md +177 -0
- package/skills/unity-cli/references/build-run-test.md +555 -0
- package/skills/unity-cli/references/catalog-plugins.md +86 -0
- package/skills/unity-cli/references/ci-recipes.md +76 -0
- package/skills/unity-cli/references/cloud-automation.md +819 -0
- package/skills/unity-cli/references/cloud-workflows.md +19 -0
- package/skills/unity-cli/references/collaboration.md +533 -0
- package/skills/unity-cli/references/config-hub.md +239 -0
- package/skills/unity-cli/references/diagnostics-maintenance.md +718 -0
- package/skills/unity-cli/references/docs-workflow.md +179 -0
- package/skills/unity-cli/references/editor-targeting.md +29 -0
- package/skills/unity-cli/references/editors-install.md +490 -0
- package/skills/unity-cli/references/environment-variables.md +42 -0
- package/skills/unity-cli/references/exit-codes.md +47 -0
- package/skills/unity-cli/references/global-flags.md +32 -0
- package/skills/unity-cli/references/integration-advanced.md +1130 -0
- package/skills/unity-cli/references/notes.md +20 -0
- package/skills/unity-cli/references/notifications.md +39 -0
- package/skills/unity-cli/references/playmode-verification-loop.md +279 -0
- package/skills/unity-cli/references/projects-templates.md +997 -0
- package/skills/unity-cli/references/scene-editing-preflight.md +25 -0
- package/skills/unity-cli/references/setup-and-help.md +54 -0
- package/skills/unity-cli/references/version-control.md +612 -0
- package/skills/unity-package-management/SKILL.md +169 -0
- package/skills/unity-package-management/references/discovering-packages.md +66 -0
- package/skills/unity-package-management/references/headless-run.md +31 -0
- package/skills/unity-package-management/references/installer-script.md +92 -0
- package/skills/unity-package-management/references/select-packages.md +126 -0
- package/skills/unity-pipeline/SECURITY.md +17 -0
- package/skills/unity-pipeline/SKILL.md +205 -0
- package/skills/unity-pipeline/references/csharp-eval.md +23 -0
- package/skills/unity-pipeline/references/multiplayer-play-mode.md +103 -0
- package/skills/urp-postprocessing/SECURITY.md +16 -0
- package/skills/urp-postprocessing/SKILL.md +188 -0
- package/skills/urp-postprocessing/references/code-templates.md +150 -0
- package/skills/urp-postprocessing/references/effect-reference.md +86 -0
- package/skills/validate-urp-render-graph-renderer-feature/SKILL.md +92 -0
- package/skills/validate-urp-render-graph-renderer-feature/references/validation-checklist.md +179 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-tile-palette-or-rule-tiles
|
|
3
|
+
description: Creates a 2D tile palette from sprites or textures, or makes tiles change based on their neighbours. Use when the user wants a tile palette or tiles that connect to their neighbours as they paint, even when they don't name them.
|
|
4
|
+
required_packages:
|
|
5
|
+
com.unity.2d.tilemap: ">=1.0.0"
|
|
6
|
+
com.unity.2d.tilemap.extras: ">=4.0.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Create tile palettes and RuleTiles
|
|
10
|
+
|
|
11
|
+
## Important
|
|
12
|
+
|
|
13
|
+
- Use the unity cli (`unity command --format json`) and the `unity-cli` and `unity-pipeline` skills for each step.
|
|
14
|
+
- Before making changes, establish a baseline of the current behavior so you can tell whether a later result is actually caused by your change.
|
|
15
|
+
- Create a restore point you can roll back to if your changes fail.
|
|
16
|
+
- Do only what's asked. Don't change unrelated assets or files.
|
|
17
|
+
- Never leave verification code in the user's script. Never build logging or detection they didn't ask for. See [Final step](#final-step).
|
|
18
|
+
- Avoid long explanations.
|
|
19
|
+
|
|
20
|
+
Before you go forward with a workflow or diagnosis:
|
|
21
|
+
|
|
22
|
+
1. Open and read the [documentation page(s)](#full-topic-map) that cover the specific subject related to what you intend to do or fix and check if you've missed anything.
|
|
23
|
+
2. Name the file(s) you read in your response.
|
|
24
|
+
|
|
25
|
+
This is because your training knowledge about Unity might be out of date, incorrect, or for the wrong Unity version.
|
|
26
|
+
|
|
27
|
+
Prefer fetching the page directly (for example `WebFetch`) over searching (for example `WebSearch`) — faster and lands on the exact reference. Only fetch what you need, and only search if you don't have the exact URL. Replace `<VERSION>` with the following before fetching:
|
|
28
|
+
|
|
29
|
+
- **docs.unity3d.com**: The Unity version, eg `6000.6`
|
|
30
|
+
- **Package on docs.unity3d.com**: The package version, eg `@6.6` or `@2.0`. Check the package version if unsure.
|
|
31
|
+
- **Engine on docs.unity.com**: The Unity version, eg `6000.3`
|
|
32
|
+
|
|
33
|
+
Read the Unity version from `ProjectSettings/ProjectVersion.txt`. For package docs, use the package's major.minor from `Packages/packages-lock.json`, eg `1.0` for `com.unity.2d.tilemap` or `6.0` for `com.unity.2d.tilemap.extras`.
|
|
34
|
+
|
|
35
|
+
## Full topic map
|
|
36
|
+
|
|
37
|
+
Engine Manual pages: if the Editor install folder has a `Data/Documentation` folder (eg `.../Unity/Hub/Editor/6000.6.0b2/Editor/Data/Documentation`), read the html files from the `en/Manual` folder. Otherwise the docs pages are online at `https://docs.unity.com/en-us/engine/<VERSION>/manual/unity2d/tilemaps.md`.
|
|
38
|
+
|
|
39
|
+
- **Create a tile palette** — local `en/Manual/tilemaps/tiles-for-tilemaps/create-tile-assets.html`, online `https://docs.unity.com/en-us/engine/<VERSION>/manual/unity2d/tilemaps/create-tile-palette/assets.md` — the palette asset, its settings sub-asset, and adding tiles.
|
|
40
|
+
- **Tile Palette window reference** — local `en/Manual/tilemaps/tile-palettes/tile-palette-editor-reference.html`, online `https://docs.unity.com/en-us/engine/<VERSION>/manual/unity2d/tilemaps/create-tile-palette/tile-palette-editor-reference.md` — Cell Size, Sort Mode and Sort Axis settings.
|
|
41
|
+
|
|
42
|
+
Package manual pages: the docs pages are local markdown conversions of the Unity Manual, stored at `<project-folder>/Library/PackageCache/com.unity.2d.tilemap.extras@*/`. Read only the .md files in that specific `PackageCache` subfolder. You must not look at non-.md files, or look outside at other Library or PackageCache folders, otherwise it takes too much time. If that folder has no `.md` files, use the online pages at `https://docs.unity3d.com/Packages/com.unity.2d.tilemap.extras@<VERSION>/manual/`, because some packages don't ship their docs.
|
|
43
|
+
|
|
44
|
+
- **Rule Tile** — `Documentation~/RuleTile.md` — how Rule Tiles match neighbours, rule order, and the Default Sprite.
|
|
45
|
+
|
|
46
|
+
### API reference
|
|
47
|
+
|
|
48
|
+
The APIs are `UnityEditor.Tilemaps` (`GridPaletteUtility`) in the `com.unity.2d.tilemap` package, `RuleTile`, `HexagonalRuleTile` and `IsometricRuleTile` in the `com.unity.2d.tilemap.extras` package, and `AssetDatabase` in the Unity Engine. Package APIs are versioned by package version and Engine APIs by Unity version, so check both before relying on a specific class or method, because APIs are frequently marked obsolete between versions.
|
|
49
|
+
|
|
50
|
+
1. Use the `unity-cli` skill to check the project's Unity version and installed package versions.
|
|
51
|
+
2. For package APIs, fetch and cache `https://docs.unity3d.com/Packages/<package-name>@<version>/xrefmap.yml` (eg `com.unity.2d.tilemap.extras@6.0`). It maps each public member's fully qualified name to its docs page `href` (eg `href: api/UnityEngine.RuleTile.TilingRule.html` => `https://docs.unity3d.com/Packages/com.unity.2d.tilemap.extras@6.0/api/UnityEngine.RuleTile.TilingRule.html`). Grep it locally instead of refetching per lookup; don't read the whole file. Start with `GridPaletteUtility.CreateNewPalette`, `RuleTile.TilingRule` (`m_Neighbors`, `m_NeighborPositions`, `m_RuleTransform`) and `RuleTile.TilingRuleOutput.Neighbor` (`This`, `NotThis`).
|
|
52
|
+
3. For Engine APIs, if the Editor install folder has a `Data/Documentation` folder, grep the html files in its `en/ScriptReference` folder and skip the rest of this step. Otherwise fetch and cache `https://docs.unity3d.com/<VERSION>/Documentation/ScriptReference/xrefmap.yml` (about 6 MB, so grep it, don't read it) and convert the `uid` to a markdown page: remove the parameters in brackets, lowercase it, replace `.` with `/`, add `.md`, and fetch `https://docs.unity.com/en-us/engine/<VERSION>/script-reference/<converted uid>`. For example, `UnityEditor.AssetDatabase.LoadAllAssetsAtPath(System.String)` => `https://docs.unity.com/en-us/engine/6000.3/script-reference/unityeditor/assetdatabase/loadallassetsatpath.md`. If that page doesn't exist, use the entry's `href` under `https://docs.unity3d.com/<VERSION>/Documentation/ScriptReference/`.
|
|
53
|
+
|
|
54
|
+
## Glossary
|
|
55
|
+
|
|
56
|
+
The reference files write RuleTile rules as 3x3 text grids, read from the top row to the bottom row:
|
|
57
|
+
|
|
58
|
+
| Symbol | Meaning | In the API | In the Rule Tile Inspector |
|
|
59
|
+
|--------|---------|------------|----------------------------|
|
|
60
|
+
| `.` | The neighbour must be this RuleTile | `RuleTile.TilingRuleOutput.Neighbor.This` | Green arrow |
|
|
61
|
+
| `X` | Any neighbour (don't care) | Position left out of `m_Neighbors` and `m_NeighborPositions` | Empty cell |
|
|
62
|
+
| `*` | The tile itself | Not stored | Centre cell |
|
|
63
|
+
|
|
64
|
+
Don't read `X` as `NotThis`, because the Inspector draws `NotThis` as a red X, which means the opposite: the neighbour must not be this RuleTile.
|
|
65
|
+
|
|
66
|
+
## Workflow
|
|
67
|
+
|
|
68
|
+
Pick the matching reference doc based on what the user wants, then follow it:
|
|
69
|
+
|
|
70
|
+
- **Tile Palette** — [references/palette-create.md](references/palette-create.md) — when the user wants to organize tiles for 2D level design or create a new rectangular, hexagonal, isometric, or isometric Z as Y grid layout.
|
|
71
|
+
- **Blank/empty RuleTile** (no sprites provided) — [references/ruletile-createempty.md](references/ruletile-createempty.md) — when the user wants a blank RuleTile (rectangular grid), HexagonalRuleTile, or IsometricRuleTile for custom rule configuration and has not provided or referenced any sprites.
|
|
72
|
+
- **RuleTile built from existing sprites** (sprites, terrain art, edge tiles provided) — [references/ruletile-createfromsegment.md](references/ruletile-createfromsegment.md) — when the user wants tiles that autotile as they paint, or a RuleTile built from existing terrain or edge sprites so tiles connect correctly.
|
|
73
|
+
|
|
74
|
+
## Final step
|
|
75
|
+
|
|
76
|
+
Do the following checks:
|
|
77
|
+
|
|
78
|
+
1. Check the project has zero console errors. Use `console_status` for counts.
|
|
79
|
+
2. Read the assets back with `eval` (fully qualified), because an asset can exist without its settings having stuck:
|
|
80
|
+
- If you created a tile palette, check that `AssetDatabase.LoadAllAssetsAtPath` on the palette returns a `GridPalette` sub-asset, and that the `Grid` on the palette's root GameObject has the `cellLayout` and `cellSize` you chose.
|
|
81
|
+
- If you created a RuleTile, check that `AssetDatabase.LoadAssetAtPath` with the RuleTile type you created returns the asset, that `m_TilingRules.Count` equals the number of rules you created, and that each rule's `m_Sprites` has exactly one entry: `null` for an empty RuleTile, or the assigned sprite for one built from sprites.
|
|
82
|
+
3. If you built a RuleTile from sprites, check that it picks the right sprite as it's painted, because correct fields don't prove the rules match the art. Open a temporary scene with `EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive)`, add a Grid with a Tilemap, use `Tilemap.SetTile` to paint a 3x3 block of the RuleTile, and check that `Tilemap.GetSprite` at each cell returns the sprite of the rule that matches that cell's neighbours. For example, the centre cell gets the fully surrounded rule's sprite, if the RuleTile has that rule. Then close the scene with `EditorSceneManager.CloseScene(scene, true)` without saving it.
|
|
83
|
+
4. If a value doesn't match, fix the asset and repeat the check.
|
|
84
|
+
5. Stop there unless the user asked you to prove it works or you suspect a specific fault. If you do enter Play mode, do it once only to chase a fault you already suspect. Read the world through `eval` rather than adding logging. Take no screenshots, because they take too much time.
|
|
85
|
+
|
|
86
|
+
If a check fails, go back and reread the [docs pages](#full-topic-map) to find out what you missed.
|
|
87
|
+
|
|
88
|
+
## Final report
|
|
89
|
+
|
|
90
|
+
Report the following, in order:
|
|
91
|
+
|
|
92
|
+
1. What changed: each asset you created, with its path and type, and the settings you used (grid type, cell size, sort axis, or number of tiling rules).
|
|
93
|
+
2. Side effects: any other file or scene you created or changed, such as an editor script copied from `scripts/` into `Assets`, so the user can remove it.
|
|
94
|
+
3. The verification results from the final step.
|
|
95
|
+
4. Follow-up the user must do, such as assigning sprites to an empty RuleTile or adding the RuleTile to a tile palette.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Hexagonal RuleTile template
|
|
2
|
+
|
|
3
|
+
This file provides a template and logic for creating complex `HexagonalRuleTiles`. Use this to programmatically generate or manually configure new Hexagonal RuleTiles for pointy-top hex grids.
|
|
4
|
+
|
|
5
|
+
## Hexagonal Tile Rule Pattern (Pointy Top)
|
|
6
|
+
|
|
7
|
+
A Hexagonal RuleTile uses 6 possible neighbor directions. These neighbors are defined as follows:
|
|
8
|
+
|
|
9
|
+
### Neighbor Directions and Coordinate Mappings
|
|
10
|
+
|
|
11
|
+
For a tile at `(x, y, 0)`, the 6 neighbors are at:
|
|
12
|
+
1. **North-West (NW)**: `(-1, 1, 0)`
|
|
13
|
+
2. **North (N)**: `(0, 1, 0)`
|
|
14
|
+
3. **East (E)**: `(1, 0, 0)`
|
|
15
|
+
4. **South-West (SW)**: `(-1, -1, 0)`
|
|
16
|
+
5. **South (S)**: `(0, -1, 0)`
|
|
17
|
+
6. **West (W)**: `(-1, 0, 0)`
|
|
18
|
+
|
|
19
|
+
### Legend:
|
|
20
|
+
- `.`: **This** (Type 1)
|
|
21
|
+
- `X`: **Any** (Type 0)
|
|
22
|
+
- **Fixed**: Rule is applied exactly as defined.
|
|
23
|
+
- **MirrorX**: Rule is applied as defined and mirrored across the X-axis.
|
|
24
|
+
|
|
25
|
+
## Full Tiling Rules Template
|
|
26
|
+
|
|
27
|
+
The hexagonal tile set uses **MirrorX** and **Fixed** transforms. **Rotated** is not used in this specific set.
|
|
28
|
+
|
|
29
|
+
| Rule ID | Neighbor Configurations (Pos: Type) | Transform | Description |
|
|
30
|
+
|:--------|:------------------------------------| :--- | :--- |
|
|
31
|
+
| 0 | NW:., N:., E:., SW:., S:., W:. | Fixed | Full 6-neighbor surrounded |
|
|
32
|
+
| 1 | NW:., W:., SW:., S:., E:. | MirrorX | 5-neighbor surrounded |
|
|
33
|
+
| 2 | NW:., W:., E:., SW:., N:. | MirrorX | 5-neighbor surrounded variant |
|
|
34
|
+
| 3 | N:., NW:., W:., SW:., S:. | MirrorX | 5-neighbor surrounded variant |
|
|
35
|
+
| 4 | W:., SW:., S:., E:. | Fixed | 4-neighbor connectivity |
|
|
36
|
+
| 5 | W:., NW:., N:., E:. | Fixed | 4-neighbor connectivity |
|
|
37
|
+
| 6 | NW:., W:., SW:., S:. | MirrorX | 4-neighbor corner/edge |
|
|
38
|
+
| 7 | NW:., W:., SW:., N:. | MirrorX | 4-neighbor corner/edge |
|
|
39
|
+
| 8 | NW:., SW:., W:., E:. | MirrorX | 4-neighbor bridge |
|
|
40
|
+
| 9 | NW:., W:., E:., S:. | MirrorX | 4-neighbor connectivity |
|
|
41
|
+
| 10 | NW:., SW:., S:., E:. | MirrorX | 4-neighbor connectivity |
|
|
42
|
+
| 11 | NW:., N:., S:., SW:. | Fixed | 4-neighbor vertical-ish |
|
|
43
|
+
| 12 | N:., NW:., W:., S:. | Fixed | 4-neighbor horizontal-ish |
|
|
44
|
+
| 13 | W:., SW:., S:. | MirrorX | 3-neighbor corner |
|
|
45
|
+
| 14 | NW:., W:., SW:. | MirrorX | 3-neighbor flat edge |
|
|
46
|
+
| 15 | W:., NW:., N:. | MirrorX | 3-neighbor corner |
|
|
47
|
+
| 16 | NW:., N:., S:. | MirrorX | 3-neighbor T-junction |
|
|
48
|
+
| 17 | W:., SW:., E:. | MirrorX | 3-neighbor T-junction |
|
|
49
|
+
| 18 | W:., N:., SW:. | MirrorX | 3-neighbor wide corner |
|
|
50
|
+
| 19 | E:., NW:., SW:. | MirrorX | 3-neighbor wide corner |
|
|
51
|
+
| 20 | NW:., W:., E:. | MirrorX | 3-neighbor wide corner |
|
|
52
|
+
| 21 | SW:., S:., NW:. | MirrorX | 3-neighbor variant |
|
|
53
|
+
| 22 | W:., NW:., S:. | MirrorX | 3-neighbor variant |
|
|
54
|
+
| 23 | NW:., W:. | Fixed | 2-neighbor edge |
|
|
55
|
+
| 24 | W:., SW:. | Fixed | 2-neighbor edge |
|
|
56
|
+
| 25 | SW:., S:. | Fixed | 2-neighbor edge |
|
|
57
|
+
| 26 | E:., S:. | Fixed | 2-neighbor edge |
|
|
58
|
+
| 27 | N:., E:. | Fixed | 2-neighbor edge |
|
|
59
|
+
| 28 | NW:., N:. | Fixed | 2-neighbor edge |
|
|
60
|
+
| 29 | W:., E:. | MirrorX | 2-neighbor opposite bridge |
|
|
61
|
+
| 30 | N:., SW:. | MirrorX | 2-neighbor long bridge |
|
|
62
|
+
| 31 | W:., S:. | MirrorX | 2-neighbor acute corner |
|
|
63
|
+
| 32 | E:., NW:. | MirrorX | 2-neighbor long bridge variant |
|
|
64
|
+
| 33 | N:., S:. | MirrorX | 2-neighbor vertical bridge |
|
|
65
|
+
| 34 | N:. | MirrorX | Single neighbor North |
|
|
66
|
+
| 35 | E:. | MirrorX | Single neighbor East |
|
|
67
|
+
| 36 | S:. | MirrorX | Single neighbor South |
|
|
68
|
+
| 37 | all 6 surrounding positions: X | Fixed | Default / No-neighbor |
|
|
69
|
+
|
|
70
|
+
#### Usage
|
|
71
|
+
When applying this template to a new texture set, first ensure the texture is sliced into sprites matching these 38 logical configurations. Then, run a script using the description to map the sprites to each rule. Ensure that HexagonalRuleTile has all 38 TilingRules listed in the template.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Tilemap Palette Creation
|
|
2
|
+
|
|
3
|
+
Requires package: `com.unity.2d.tilemap` >=1.0.0
|
|
4
|
+
|
|
5
|
+
## Workflow
|
|
6
|
+
|
|
7
|
+
### Step 1: Parameter Gathering
|
|
8
|
+
WAIT for the user to specify the following parameters if not already provided, because the name sets the asset file name and the grid type sets the palette's cell layout and cell size:
|
|
9
|
+
- **Palette Name**: The name of the asset.
|
|
10
|
+
- **Grid Type**: Rectangular, Hexagonal, Isometric, or Isometric Z As Y.
|
|
11
|
+
- **Cell Size**: Optional (defaults based on Grid Type).
|
|
12
|
+
- **Sort Axis**: Required for Isometric palettes.
|
|
13
|
+
|
|
14
|
+
### Step 2: Asset Creation
|
|
15
|
+
Utilise `UnityEditor.Tilemaps.GridPaletteUtility.CreateNewPalette` to create the Tile Palette asset.
|
|
16
|
+
|
|
17
|
+
## Branching Logic (Grid Types)
|
|
18
|
+
|
|
19
|
+
### Path A: Rectangular
|
|
20
|
+
- Use **Automatic** cell sizing with a `cellSize` of `(1, 1, 0)`, as `CreatePaletteTemplate.cs` does, because square tiles then fill one cell each.
|
|
21
|
+
|
|
22
|
+
### Path B: Hexagonal
|
|
23
|
+
- Use cell size: `(0.8659766, 1, 1)`, because a hexagon's width is about 0.866 of its height, so neighbouring hex tiles meet without gaps.
|
|
24
|
+
|
|
25
|
+
### Path C: Isometric
|
|
26
|
+
- Use cell size: `(1, 0.5, 1)`, because isometric tiles are diamonds twice as wide as they are tall.
|
|
27
|
+
- Use a **Custom Sort Axis** with value `(0, 0, 1)`, because overlapping isometric tiles must draw in a fixed order or the palette shows them in front of each other wrongly.
|
|
28
|
+
|
|
29
|
+
### Path D: Isometric Z As Y
|
|
30
|
+
- Use cell size: `(1, 0.5, 1)`, for the same reason as Path C.
|
|
31
|
+
- Use a **Custom Sort Axis** with value `(0, 0, 1)`, for the same reason as Path C.
|
|
32
|
+
|
|
33
|
+
## Post-Creation
|
|
34
|
+
Ensure that there is a `GridPalette` as a sub-asset of the Tile Palette asset, because the Tile Palette window can't use the palette without that sub-asset. Check with `AssetDatabase.LoadAllAssetsAtPath`.
|
|
35
|
+
|
|
36
|
+
## References
|
|
37
|
+
|
|
38
|
+
Code Template: "../scripts/CreatePaletteTemplate.cs"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Tilemap RuleTile Create Empty
|
|
2
|
+
|
|
3
|
+
Links in this file are relative to this `references/` folder; `..` resolves to the skill directory.
|
|
4
|
+
|
|
5
|
+
Use ONLY when the user wants a blank RuleTile, HexagonalRuleTile, or IsometricRuleTile for custom rule configuration AND has not provided or referenced any sprites. If the user mentions existing sprites, terrain art, edge tiles, or a tiles folder, use [ruletile-createfromsegment.md](ruletile-createfromsegment.md) instead, never this.
|
|
6
|
+
|
|
7
|
+
Requires packages: `com.unity.2d.tilemap` >=1.0.0, `com.unity.2d.tilemap.extras` >=4.0.0
|
|
8
|
+
|
|
9
|
+
## Workflow
|
|
10
|
+
|
|
11
|
+
### Step 1: Verify No Sprite Inputs
|
|
12
|
+
**WAIT** - Confirm that no Sprites or Spritesheets were specified by the user. This skill is only for empty RuleTiles, because it leaves every rule's sprite empty. If there are Sprites or Spritesheets specified by the user, use [ruletile-createfromsegment.md](ruletile-createfromsegment.md) instead.
|
|
13
|
+
|
|
14
|
+
### Step 2: Determine RuleTile Type
|
|
15
|
+
Identify which RuleTile type to create based on user request:
|
|
16
|
+
- **RuleTile**: Standard rectangular grid
|
|
17
|
+
- **HexagonalRuleTile**: Hexagonal grid layout
|
|
18
|
+
- **IsometricRuleTile**: Isometric grid layout
|
|
19
|
+
|
|
20
|
+
### Step 3: Create Empty TilingRules
|
|
21
|
+
For each TilingRule, ensure the Sprite array has one `null` entry, because each rule outputs a single sprite and the user assigns it later.
|
|
22
|
+
|
|
23
|
+
## Branching Logic (RuleTile Types)
|
|
24
|
+
|
|
25
|
+
### Path A: RuleTile
|
|
26
|
+
- Use the rule pattern from [ruletile.md](ruletile.md). Skip its Usage steps that slice the texture and map sprites, because an empty RuleTile leaves every sprite `null` (Step 3).
|
|
27
|
+
|
|
28
|
+
### Path B: HexagonalRuleTile
|
|
29
|
+
- Use the rule pattern from [hexagonalruletile.md](hexagonalruletile.md). Skip its Usage steps that map sprites, because an empty RuleTile leaves every sprite `null` (Step 3).
|
|
30
|
+
|
|
31
|
+
### Path C: IsometricRuleTile
|
|
32
|
+
- Use the rule pattern from [ruletile.md](ruletile.md), because `IsometricRuleTile` uses the same 8 neighbor positions as `RuleTile`, from `(-1, 1, 0)` to `(1, -1, 0)`. Only the on-screen direction of each position differs. Skip the Usage steps that slice the texture and map sprites, because an empty RuleTile leaves every sprite `null` (Step 3).
|
|
33
|
+
|
|
34
|
+
## Important Notes
|
|
35
|
+
|
|
36
|
+
- **TilingRuleOutput.Neighbor.This**: Use to identify RuleTiles that are the same (matching neighbors).
|
|
37
|
+
- **TilingRuleOutput.Neighbor.NotThis**: Do NOT use unless explicitly specified by the user to ignore a Tile at a certain position, because a `NotThis` condition makes the rule fail whenever that neighbour is this RuleTile, which the templates don't expect.
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Tilemap RuleTile Create From Segment
|
|
2
|
+
|
|
3
|
+
Links in this file are relative to this `references/` folder; `..` resolves to the skill directory.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
Purpose, Workflow, Step 1, Step 2, Pattern Filtering, Deduplication, Rule Sorting, Sprite Assignment, Algorithm Summary, Scripts, Common Tile Patterns, Notes, Prerequisites, See Also.
|
|
8
|
+
|
|
9
|
+
Use when the user wants tiles that auto-tile (autotile) as they paint, wants a RuleTile built from existing terrain or edge sprites, or asks to make sprites "tile correctly" or "connect properly". Also converts sprite-segment-3x3grid output patterns into Unity RuleTile TilingRules: 3x3 grid text patterns (X, ., *) become TilingRule neighbor configurations, mapping '.' to 'This' rules and 'X' to 'DontCare', sorted by specificity (more 'This' rules first). Sprites must be provided as input.
|
|
10
|
+
|
|
11
|
+
Requires packages: `com.unity.2d.tilemap` >=1.0.0, `com.unity.2d.tilemap.extras` >=4.0.0
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
This skill creates Unity RuleTile TilingRules by first analyzing sprites using the `sprite-segment-3x3grid` skill, then converting the resulting text patterns into neighbor rule configurations. The user must specify Sprites or a Spritesheet input.
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Step 1: sprite-segment-3x3grid Step 2: Create TilingRules
|
|
21
|
+
+--------------------------+ +--------------------------+
|
|
22
|
+
| Analyze each Sprite | | Parse text patterns |
|
|
23
|
+
| using color matching | -> | Map to neighbor rules |
|
|
24
|
+
| Output: text pattern | | Sort by specificity |
|
|
25
|
+
+--------------------------+ +--------------------------+
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**CRITICAL**: Always run the `sprite-segment-3x3grid` skill first on each Sprite to generate the text pattern.
|
|
29
|
+
|
|
30
|
+
## Step 1: Apply sprite-segment-3x3grid (Required)
|
|
31
|
+
|
|
32
|
+
For each Sprite in your texture, analyze it with `sprite-segment-3x3grid`:
|
|
33
|
+
|
|
34
|
+
```csharp
|
|
35
|
+
string pattern = SpriteSegment3x3Grid.AnalyzeSpriteGrid(sprite, matchThreshold: 0.75f);
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Pattern Output Format
|
|
39
|
+
|
|
40
|
+
Single-line text pattern: `[TopRow] / [MiddleRow] / [BottomRow]`
|
|
41
|
+
|
|
42
|
+
Each row contains 3 characters separated by spaces:
|
|
43
|
+
- `X` - Cell does NOT meet match threshold
|
|
44
|
+
- `.` - Cell MEETS match threshold (matches center color)
|
|
45
|
+
- `*` - Center cell (the tile itself)
|
|
46
|
+
|
|
47
|
+
Example: `X X X / X * X / . . .`
|
|
48
|
+
|
|
49
|
+
## Step 2: Create TilingRules from Patterns
|
|
50
|
+
|
|
51
|
+
### Symbol to Rule Mapping
|
|
52
|
+
|
|
53
|
+
| Symbol | RuleTile Neighbor | Value | Behavior |
|
|
54
|
+
|--------|-------------------|-------|-----------------------------------------------|
|
|
55
|
+
| `.` | `This` | 1 | Neighbor must be an instance of this RuleTile |
|
|
56
|
+
| `X` | `DontCare` | 0 | Position not added to neighbors list |
|
|
57
|
+
| `*` | (center) | N/A | Ignored - represents the tile itself |
|
|
58
|
+
|
|
59
|
+
**Note**: "DontCare" is not an explicit constant. A position is "don't care" when it is simply not included in the `m_Neighbors` and `m_NeighborPositions` lists.
|
|
60
|
+
|
|
61
|
+
### Neighbor Position Mapping
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Grid Layout: Unity Vector3Int positions:
|
|
65
|
+
[0] [1] [2] (Top) (-1,1,0) (0,1,0) (1,1,0)
|
|
66
|
+
[3] [*] [5] (Middle) (-1,0,0) --- (1,0,0)
|
|
67
|
+
[6] [7] [8] (Bottom) (-1,-1,0) (0,-1,0) (1,-1,0)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Index | Position | Vector3Int |
|
|
71
|
+
|-------|--------------|----------------|
|
|
72
|
+
| 0 | Top-Left | `(-1, 1, 0)` |
|
|
73
|
+
| 1 | Top | `(0, 1, 0)` |
|
|
74
|
+
| 2 | Top-Right | `(1, 1, 0)` |
|
|
75
|
+
| 3 | Left | `(-1, 0, 0)` |
|
|
76
|
+
| 4 | Center | (skipped) |
|
|
77
|
+
| 5 | Right | `(1, 0, 0)` |
|
|
78
|
+
| 6 | Bottom-Left | `(-1, -1, 0)` |
|
|
79
|
+
| 7 | Bottom | `(0, -1, 0)` |
|
|
80
|
+
| 8 | Bottom-Right | `(1, -1, 0)` |
|
|
81
|
+
|
|
82
|
+
## Pattern Filtering
|
|
83
|
+
|
|
84
|
+
Discard detected patterns that don't match an entry in the Common Tile Patterns table, and keep only the 47 known patterns, because unexpected or noisy patterns add rules the user didn't draw art for. `CreateRuleTileFromSprites` does this by default.
|
|
85
|
+
|
|
86
|
+
If the user explicitly asks to keep non-standard patterns, set `filterToKnownPatterns: false` to skip this filter.
|
|
87
|
+
|
|
88
|
+
## Deduplication
|
|
89
|
+
|
|
90
|
+
Remove TilingRules that have identical neighbor configurations. When several sprites produce the same pattern, keep the first sprite, because the first matching rule wins and a duplicate rule is never reached.
|
|
91
|
+
|
|
92
|
+
## Rule Sorting
|
|
93
|
+
|
|
94
|
+
Sort rules by specificity (number of `This` neighbors), most specific first, because the RuleTile uses the first rule that matches, so a less specific rule placed earlier hides the rules after it.
|
|
95
|
+
|
|
96
|
+
| This Count | Example Pattern | Priority |
|
|
97
|
+
|------------|---------------------------------|----------|
|
|
98
|
+
| 8 | `. . . / . * . / . . .` | First |
|
|
99
|
+
| 5 | `. . . / . * . / X X X` | ... |
|
|
100
|
+
| 3 | `X X X / X * X / . . .` | ... |
|
|
101
|
+
| 0 | `X X X / X * X / X X X` | Last |
|
|
102
|
+
|
|
103
|
+
## Sprite Assignment
|
|
104
|
+
|
|
105
|
+
Assign at most 1 sprite to each TilingRule:
|
|
106
|
+
- Set `m_Output` to `TilingRuleOutput.OutputSprite.Single`
|
|
107
|
+
- Assign the sprite to `m_Sprites[0]`
|
|
108
|
+
|
|
109
|
+
Set the RuleTile's `m_DefaultSprite` to the sprite from the least specific rule, which is the last rule in the sorted list, because the RuleTile shows the default sprite when no TilingRule matches.
|
|
110
|
+
|
|
111
|
+
## Algorithm Summary
|
|
112
|
+
|
|
113
|
+
1. **For each Sprite**: Run `sprite-segment-3x3grid` and store the pattern
|
|
114
|
+
2. **Filter**: Discard patterns not in Common Tile Patterns (unless user opts out)
|
|
115
|
+
3. **Deduplicate**: Remove duplicate patterns (first sprite wins)
|
|
116
|
+
4. **Parse**: Split by ` / ` for rows, then by space for cells
|
|
117
|
+
5. **Extract Neighbors**: `.` -> add position with `This` (1); `X` -> skip
|
|
118
|
+
6. **Create TilingRule**: Populate `m_Neighbors` and `m_NeighborPositions`
|
|
119
|
+
7. **Assign Sprite**: Set single sprite output
|
|
120
|
+
8. **Sort**: Order by specificity descending
|
|
121
|
+
9. **Apply**: Add sorted rules to RuleTile asset
|
|
122
|
+
10. **Default Sprite**: Set `m_DefaultSprite` to the last (least specific) rule's sprite
|
|
123
|
+
|
|
124
|
+
## Scripts
|
|
125
|
+
|
|
126
|
+
Implementation and usage examples are in the `scripts/` folder:
|
|
127
|
+
|
|
128
|
+
| File | Description |
|
|
129
|
+
|------|-------------|
|
|
130
|
+
| [`TilemapRuleTileCreateFromSegment.cs`](../scripts/TilemapRuleTileCreateFromSegment.cs) | Core implementation with `CreateRuleTileFromSprites`, `CreateTilingRuleFromPattern`, `ParsePattern`, and `ApplyRulesToTile` |
|
|
131
|
+
| [`RuleTileGenerator.cs`](../scripts/RuleTileGenerator.cs) | Editor window example (`Tools > Generate RuleTile from Sprites`) |
|
|
132
|
+
| [`ManualWorkflowExample.cs`](../scripts/ManualWorkflowExample.cs) | Manual two-step workflow for finer control over analysis |
|
|
133
|
+
|
|
134
|
+
### Quick Usage
|
|
135
|
+
|
|
136
|
+
```csharp
|
|
137
|
+
// Get sprites and create rules in one call
|
|
138
|
+
var rules = TilemapRuleTileCreateFromSegment.CreateRuleTileFromSprites(
|
|
139
|
+
sprites, matchThreshold: 0.75f, colorTolerance: 0.04f);
|
|
140
|
+
|
|
141
|
+
// Apply to RuleTile
|
|
142
|
+
var ruleTile = ScriptableObject.CreateInstance<RuleTile>();
|
|
143
|
+
TilemapRuleTileCreateFromSegment.ApplyRulesToTile(ruleTile, rules);
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Common Tile Patterns
|
|
147
|
+
|
|
148
|
+
| Tile Type | Pattern | This Count |
|
|
149
|
+
|------------------------------------------------------|----------------------------------|------------|
|
|
150
|
+
| Fully surrounded (inner tile) | `. . . / . * . / . . .` | 8 |
|
|
151
|
+
| Top left corner missing | `X . . / . * . / . . .` | 7 |
|
|
152
|
+
| Top right corner missing | `. . X / . * . / . . .` | 7 |
|
|
153
|
+
| Bottom left corner missing | `. . . / . * . / X . .` | 7 |
|
|
154
|
+
| Bottom right corner missing | `. . . / . * . / . . X` | 7 |
|
|
155
|
+
| Top corners missing | `X . X / . * . / . . .` | 6 |
|
|
156
|
+
| Bottom corners missing | `. . . / . * . / X . X` | 6 |
|
|
157
|
+
| Left corners missing | `X . . / . * . / X . .` | 6 |
|
|
158
|
+
| Right corners missing | `. . X / . * . / . . X` | 6 |
|
|
159
|
+
| Top Left and Bottom Right diagonal corners missing | `X . . / . * . / . . X` | 6 |
|
|
160
|
+
| Top Right and Bottom Left diagonal corners missing | `. . X / . * . / X . .` | 6 |
|
|
161
|
+
| Top Left, Top Right and Bottom Left corners missing | `X . X / . * . / X . .` | 5 |
|
|
162
|
+
| Top Left, Top Right and Bottom Right corners missing | `X . X / . * . / . . X` | 5 |
|
|
163
|
+
| Top Left, Bottom Left and Bottom Right corners missing | `X . . / . * . / X . X` | 5 |
|
|
164
|
+
| Top Right, Bottom Left and Bottom Right corners missing | `. . X / . * . / X . X` | 5 |
|
|
165
|
+
| Cross Section | `X . X / . * . / X . X` | 4 |
|
|
166
|
+
| Flat edge (Bottom) | `X X X / . * . / . . .` | 5 |
|
|
167
|
+
| Flat edge (Top) | `. . . / . * . / X X X` | 5 |
|
|
168
|
+
| Flat edge (Left) | `. . X / . * X / . . X` | 5 |
|
|
169
|
+
| Flat edge (Right) | `X . . / X * . / X . .` | 5 |
|
|
170
|
+
| L-Shape, Point Right | `X X X / . * . / . . X` | 4 |
|
|
171
|
+
| L-Shape, Point Bottom | `. . X / . * X / X . X` | 4 |
|
|
172
|
+
| L-Shape, Point Left | `X . . / . * . / X X X` | 4 |
|
|
173
|
+
| L-Shape, Point Top | `X . X / X * . / X . .` | 4 |
|
|
174
|
+
| L-Shape Inverse, Point Left | `X X X / . * . / X . .` | 4 |
|
|
175
|
+
| L-Shape Inverse, Point Bottom | `X . . / X * . / X . X` | 4 |
|
|
176
|
+
| L-Shape Inverse, Point Right | `. . X / . * . / X X X` | 4 |
|
|
177
|
+
| L-Shape Inverse, Point Top | `X . X / . * X / . . X` | 4 |
|
|
178
|
+
| T-Shape, face down | `X X X / . * . / X . X` | 3 |
|
|
179
|
+
| T-Shape, face top | `X . X / . * . / X X X` | 3 |
|
|
180
|
+
| T-Shape, face left | `X . X / . * X / X . X` | 3 |
|
|
181
|
+
| T-Shape, face right | `X . X / X * . / X . X` | 3 |
|
|
182
|
+
| Horizontal bridge | `X X X / . * . / X X X` | 2 |
|
|
183
|
+
| Vertical bridge | `X . X / X * X / X . X` | 2 |
|
|
184
|
+
| Corner piece, Bottom Right | `X X X / X * . / X . .` | 3 |
|
|
185
|
+
| Corner piece, Bottom Left | `X X X / . * X / . . X` | 3 |
|
|
186
|
+
| Corner piece, Top Left | `. . X / . * X / X X X` | 3 |
|
|
187
|
+
| Corner piece, Top Right | `X . . / X * . / X X X` | 3 |
|
|
188
|
+
| Edge end, Bottom Right | `X X X / X * . / X . X` | 2 |
|
|
189
|
+
| Edge end, Bottom Left | `X X X / . * X / X . X` | 2 |
|
|
190
|
+
| Edge end, Top Left | `X . X / . * X / X X X` | 2 |
|
|
191
|
+
| Edge end, Top Right | `X . X / X * . / X X X` | 2 |
|
|
192
|
+
| Single isolated tile, Left | `X X X / . * X / X X X` | 1 |
|
|
193
|
+
| Single isolated tile, Right | `X X X / X * . / X X X` | 1 |
|
|
194
|
+
| Single isolated tile, Top | `X . X / X * X / X X X` | 1 |
|
|
195
|
+
| Single isolated tile, Bottom | `X X X / X * X / X . X` | 1 |
|
|
196
|
+
| Center | `X X X / X * X / X X X` | 0 |
|
|
197
|
+
|
|
198
|
+
## Notes
|
|
199
|
+
|
|
200
|
+
- Always run `sprite-segment-3x3grid` first -- this skill depends on its output
|
|
201
|
+
- Rules are evaluated in order; first matching rule wins
|
|
202
|
+
- A rule with 0 `This` conditions matches any configuration (use as fallback)
|
|
203
|
+
- The center cell (`*`) is always ignored in neighbor calculations
|
|
204
|
+
- Unity's RuleTile supports up to 8 neighbors in a standard 3x3 grid
|
|
205
|
+
- If the sprites are for an isometric grid, create an `IsometricRuleTile` with the same algorithm, because it uses the same 8 neighbor positions as `RuleTile`.
|
|
206
|
+
- If the sprites are for a hexagonal grid, don't use this algorithm, because a hex tile has 6 neighbors that the 3x3 pattern can't describe. Instead, create a `HexagonalRuleTile` from the rule pattern in [hexagonalruletile.md](hexagonalruletile.md) and follow its Usage steps to map the sprites.
|
|
207
|
+
|
|
208
|
+
## Prerequisites
|
|
209
|
+
|
|
210
|
+
- **`sprite-segment-3x3grid` skill**: generates the input patterns. It ships in this
|
|
211
|
+
same plugin as `sprite-segment-3x3grid`, so it is always available — invoke
|
|
212
|
+
it rather than treating it as an unmet dependency.
|
|
213
|
+
- **com.unity.2d.tilemap.extras package**: Required for RuleTile class
|
|
214
|
+
|
|
215
|
+
## See Also
|
|
216
|
+
|
|
217
|
+
- `sprite-segment-3x3grid` - required prerequisite; generates the input patterns
|
|
218
|
+
- `RuleTile` API: look members up with the `com.unity.2d.tilemap.extras` `xrefmap.yml`, as the skill's API reference section describes, rather than reading the package's C# source.
|
|
219
|
+
- Rule Tile manual: `<project>/Library/PackageCache/com.unity.2d.tilemap.extras@*/Documentation~/RuleTile.md` (read only .md files in that folder). If it isn't there, because some packages don't ship their docs, fetch `https://docs.unity3d.com/Packages/com.unity.2d.tilemap.extras@<VERSION>/manual/RuleTile.html`, replacing `<VERSION>` with the package's major.minor from `Packages/packages-lock.json`
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# RuleTile template
|
|
2
|
+
|
|
3
|
+
This file provides a template and logic for creating complex `RuleTiles`. Use this guide to programmatically generate or manually configure new RuleTiles that follow consistent connectivity patterns.
|
|
4
|
+
|
|
5
|
+
## Rule Tile Rule Pattern
|
|
6
|
+
|
|
7
|
+
The following rules define the connectivity for a standard 2D top-down layout. Each rule checks its 3x3 neighborhood for this RuleTile (`.`) or doesn't check the position at all (`X`).
|
|
8
|
+
|
|
9
|
+
Pick one template:
|
|
10
|
+
|
|
11
|
+
- If the sprite sheet has a separate sprite for each orientation of an edge, corner or end piece (for example, four flat-edge sprites), use the [Fixed template](#tiling-rules-template-for-fixed-rule-tiles), because each orientation needs its own rule and sprite.
|
|
12
|
+
- If the sprite sheet has one sprite per shape for the RuleTile to rotate, or the user has no sprites yet and doesn't say, use the [Rotated template](#tiling-rules-template-for-rotated-rule-tiles), because one rotated rule covers all four orientations, so the user has fewer sprites to assign.
|
|
13
|
+
|
|
14
|
+
## Legend
|
|
15
|
+
- `.`: **This** (Tile must be present)
|
|
16
|
+
- `X`: **Any** (Does not matter)
|
|
17
|
+
- `*`: The tile itself (Center)
|
|
18
|
+
|
|
19
|
+
### Tiling Rules Template for Fixed Rule Tiles
|
|
20
|
+
|
|
21
|
+
| Rule ID | Neighbors (Top to Bottom, Left to Right) | Rule Transform | Description |
|
|
22
|
+
|:--------|:-----------------------------------------|:---------------|:--------------------------------------------------------|
|
|
23
|
+
| 0 | `. . .` / `. * .` / `. . .` | Fixed | Fully surrounded (inner tile) |
|
|
24
|
+
| 1 | `X . .` / `. * .` / `. . .` | Fixed | Top left corner missing |
|
|
25
|
+
| 2 | `. . X` / `. * .` / `. . .` | Fixed | Top right corner missing |
|
|
26
|
+
| 3 | `. . .` / `. * .` / `X . .` | Fixed | Bottom left corner missing |
|
|
27
|
+
| 4 | `. . .` / `. * .` / `. . X` | Fixed | Bottom right corner missing |
|
|
28
|
+
| 5 | `X . X` / `. * .` / `. . .` | Fixed | Top corners missing |
|
|
29
|
+
| 6 | `. . .` / `. * .` / `X . X` | Fixed | Bottom corners missing |
|
|
30
|
+
| 7 | `X . .` / `. * .` / `X . .` | Fixed | Left corners missing |
|
|
31
|
+
| 8 | `. . X` / `. * .` / `. . X` | Fixed | Right corners missing |
|
|
32
|
+
| 9 | `X . .` / `. * .` / `. . X` | Fixed | Top Left and Bottom Right diagonal corners missing |
|
|
33
|
+
| 10 | `. . X` / `. * .` / `X . .` | Fixed | Top Right and Bottom Left diagonal corners missing |
|
|
34
|
+
| 11 | `X . X` / `. * .` / `X . .` | Fixed | Top Left, Top Right and Bottom Left corners missing |
|
|
35
|
+
| 12 | `X . X` / `. * .` / `. . X` | Fixed | Top Left, Top Right and Bottom Right corners missing |
|
|
36
|
+
| 13 | `X . .` / `. * .` / `X . X` | Fixed | Top Left, Bottom Left and Bottom Right corners missing |
|
|
37
|
+
| 14 | `. . X` / `. * .` / `X . X` | Fixed | Top Right, Bottom Left and Bottom Right corners missing |
|
|
38
|
+
| 15 | `X . X` / `. * .` / `X . X` | Fixed | Cross Section |
|
|
39
|
+
| 16 | `X X X` / `. * .` / `. . .` | Fixed | Flat edge (Bottom) |
|
|
40
|
+
| 17 | `. . .` / `. * .` / `X X X` | Fixed | Flat edge (Top) |
|
|
41
|
+
| 18 | `. . X` / `. * X` / `. . X` | Fixed | Flat edge (Left) |
|
|
42
|
+
| 19 | `X . .` / `X * .` / `X . .` | Fixed | Flat edge (Right) |
|
|
43
|
+
| 20 | `X X X` / `. * .` / `. . X` | Fixed | L-Shape, Point Right |
|
|
44
|
+
| 21 | `. . X` / `. * X` / `X . X` | Fixed | L-Shape, Point Bottom |
|
|
45
|
+
| 22 | `X . .` / `. * .` / `X X X` | Fixed | L-Shape, Point Left |
|
|
46
|
+
| 23 | `X . X` / `X * .` / `X . .` | Fixed | L-Shape, Point Top |
|
|
47
|
+
| 24 | `X X X` / `. * .` / `X . .` | Fixed | L-Shape Inverse, Point Left |
|
|
48
|
+
| 25 | `X . .` / `X * .` / `X . X` | Fixed | L-Shape Inverse, Point Bottom |
|
|
49
|
+
| 26 | `. . X` / `. * .` / `X X X` | Fixed | L-Shape Inverse, Point Right |
|
|
50
|
+
| 27 | `X . X` / `. * X` / `. . X` | Fixed | L-Shape Inverse, Point Top |
|
|
51
|
+
| 28 | `X X X` / `. * .` / `X . X` | Fixed | T-Shape, face down |
|
|
52
|
+
| 29 | `X . X` / `. * .` / `X X X` | Fixed | T-Shape, face top |
|
|
53
|
+
| 30 | `X . X` / `. * X` / `X . X` | Fixed | T-Shape, face left |
|
|
54
|
+
| 31 | `X . X` / `X * .` / `X . X` | Fixed | T-Shape, face right |
|
|
55
|
+
| 32 | `X X X` / `. * .` / `X X X` | Fixed | Horizontal bridge |
|
|
56
|
+
| 33 | `X . X` / `X * X` / `X . X` | Fixed | Vertical bridge |
|
|
57
|
+
| 34 | `X X X` / `X * .` / `X . .` | Fixed | Corner piece, Bottom Right |
|
|
58
|
+
| 35 | `X X X` / `. * X` / `. . X` | Fixed | Corner piece, Bottom Left |
|
|
59
|
+
| 36 | `. . X` / `. * X` / `X X X` | Fixed | Corner piece, Top Left |
|
|
60
|
+
| 37 | `X . .` / `X * .` / `X X X` | Fixed | Corner piece, Top Right |
|
|
61
|
+
| 38 | `X X X` / `X * .` / `X . X` | Fixed | Edge end, Bottom Right |
|
|
62
|
+
| 39 | `X X X` / `. * X` / `X . X` | Fixed | Edge end, Bottom Left |
|
|
63
|
+
| 40 | `X . X` / `. * X` / `X X X` | Fixed | Edge end, Top Left |
|
|
64
|
+
| 41 | `X . X` / `X * .` / `X X X` | Fixed | Edge end, Top Right |
|
|
65
|
+
| 42 | `X X X` / `. * X` / `X X X` | Fixed | Single isolated tile, Left |
|
|
66
|
+
| 43 | `X X X` / `X * .` / `X X X` | Fixed | Single isolated tile, Right |
|
|
67
|
+
| 44 | `X . X` / `X * X` / `X X X` | Fixed | Single isolated tile, Top |
|
|
68
|
+
| 45 | `X X X` / `X * X` / `X . X` | Fixed | Single isolated tile, Bottom |
|
|
69
|
+
| 46 | `X X X` / `X * X` / `X X X` | Fixed | Center |
|
|
70
|
+
|
|
71
|
+
#### Usage
|
|
72
|
+
When applying this template to a new texture set, first ensure the texture is sliced into sprites matching these 47 logical configurations. Then, run a script using the description to map the sprites to each rule. Ensure that RuleTile has all 47 TilingRules listed in the template.
|
|
73
|
+
|
|
74
|
+
### Tiling Rules Template for Rotated Rule Tiles
|
|
75
|
+
|
|
76
|
+
| Rule ID | Neighbors (Top to Bottom, Left to Right) | Rule Transform | Description |
|
|
77
|
+
|:--------|:-----------------------------------------|:---------------|:------------------------------|
|
|
78
|
+
| 0 | `. . .` / `. * .` / `. . .` | Fixed | Fully surrounded (inner tile) |
|
|
79
|
+
| 1 | `X . .` / `. * .` / `. . .` | Rotated | One corner missing |
|
|
80
|
+
| 2 | `X . X` / `. * .` / `. . .` | Rotated | Two corners missing |
|
|
81
|
+
| 3 | `X . .` / `. * .` / `. . X` | Rotated | Two diagonal corners missing |
|
|
82
|
+
| 4 | `X . X` / `. * .` / `. . X` | Rotated | Three corners missing |
|
|
83
|
+
| 5 | `X . X` / `. * .` / `X . X` | Fixed | Cross Section |
|
|
84
|
+
| 6 | `X X X` / `. * .` / `. . .` | Rotated | Flat edge |
|
|
85
|
+
| 7 | `X X X` / `. * .` / `. . X` | Rotated | L-Shape |
|
|
86
|
+
| 8 | `X X X` / `. * .` / `X . .` | Rotated | L-Shape Inverse |
|
|
87
|
+
| 9 | `X X X` / `. * .` / `X . X` | Rotated | Isolated edge |
|
|
88
|
+
| 10 | `X X X` / `. * .` / `X X X` | Rotated | Vertical/Horizontal bridge |
|
|
89
|
+
| 11 | `X X X` / `X * .` / `X . .` | Rotated | Corner piece |
|
|
90
|
+
| 12 | `X X X` / `X * .` / `X . X` | Rotated | Edge end |
|
|
91
|
+
| 13 | `X X X` / `. * X` / `X X X` | Rotated | Single isolated tile |
|
|
92
|
+
| 14 | `X X X` / `X * X` / `X X X` | Fixed | Center |
|
|
93
|
+
|
|
94
|
+
#### Usage
|
|
95
|
+
When applying this template to a new texture set, first ensure the texture is sliced into sprites matching these 15 logical configurations. Then, run a script using the description to map the sprites to each rule. Ensure that RuleTile has all 15 TilingRules listed in the template.
|