@almadar/std 16.253.0 → 16.255.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/behaviors/lolo/agent/atoms/std-agent-pool.lolo +355 -0
- package/behaviors/lolo/agent/evals/eval-agent-builder.lolo +159 -0
- package/behaviors/lolo/agent/organisms/std-agent-builder.lolo +321 -26
- package/behaviors/lolo-behavior-contracts.json +1 -1
- package/behaviors/registry/agent/atoms/std-agent-context.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-memory.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-planner.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-pool.orb +1 -0
- package/behaviors/registry/agent/atoms/std-agent-proposal.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-session.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-suggestions.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-trace.orb +1 -1
- package/behaviors/registry/agent/evals/eval-agent-builder.orb +1 -0
- package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1 -1
- package/behaviors/registry/agent/organisms/std-agent-builder.orb +1 -1
- package/behaviors/registry/infra/atoms/std-analytics.orb +1 -1
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +1 -1
- package/behaviors/registry/infra/atoms/std-audit-capture.orb +1 -1
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +1 -1
- package/behaviors/registry/infra/atoms/std-calendar-sync.orb +1 -1
- package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +1 -1
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -1
- package/behaviors/registry/infra/atoms/std-cross-reference.orb +1 -1
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +1 -1
- package/behaviors/registry/infra/atoms/std-data-import.orb +1 -1
- package/behaviors/registry/infra/atoms/std-global-search.orb +1 -1
- package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +1 -1
- package/behaviors/registry/infra/atoms/std-lifecycle.orb +1 -1
- package/behaviors/registry/infra/atoms/std-migration-job.orb +1 -1
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +1 -1
- package/behaviors/registry/infra/atoms/std-notification-center.orb +1 -1
- package/behaviors/registry/infra/atoms/std-notification-preferences.orb +1 -1
- package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1 -1
- package/behaviors/registry/infra/atoms/std-page-search.orb +1 -1
- package/behaviors/registry/infra/atoms/std-page-watch.orb +1 -1
- package/behaviors/registry/infra/atoms/std-permission-matrix.orb +1 -1
- package/behaviors/registry/infra/atoms/std-rate-limiter.orb +1 -1
- package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +1 -1
- package/behaviors/registry/infra/atoms/std-review-cycle.orb +1 -1
- package/behaviors/registry/infra/atoms/std-row-access-control.orb +1 -1
- package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +1 -1
- package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +1 -1
- package/behaviors/registry/ml/atoms/std-data-collector.orb +1 -1
- package/behaviors/registry/ml/atoms/std-graph-builder.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-classify.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-infer.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-label-capture.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-lookup.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-posterior.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-similarity.orb +1 -1
- package/behaviors/registry/ml/atoms/std-tokenizer.orb +1 -1
- package/behaviors/registry/ml/atoms/std-weight-validator.orb +1 -1
- package/behaviors/registry/ml/organisms/std-escalating-decision.orb +1 -1
- package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/std-avl-cosmic-zoom.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-glyph.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-transition-detail.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-transition-explainer.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +1 -1
- package/behaviors/registry/ui/avl/organisms/ui-flow-canvas.orb +1 -1
- package/behaviors/registry/ui/avl/organisms/ui-layers-panel.orb +1 -1
- package/behaviors/registry/ui/avl/organisms/ui-orb-inspector.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-app-search.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-behavior-catalog.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-behavior-tour.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-board.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-book-reader.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-browse.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-calendar.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-card-grid.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-confirmation.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-date-range.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-doc-page.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-esign-request.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-event-log.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-export.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-file-store.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-filter.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-gallery.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-geosearch.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-hero.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-home.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-import.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-language-picker.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-media-section.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-modal.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-notification-panel.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-panel-launcher.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-pricing.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-proof.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-prose.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-rating-review.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-record-detail.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-recurrence.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-related.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-role-gate.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-saved-search.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-scatter.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-scoped-list.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-search.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-selection.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-site-footer.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-site-header.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-slide-deck.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-stat-band.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-stats.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-step-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-steps.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tabs.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-thread.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tree.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-wizard.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-workspace-layout.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-animated-graphic.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-animated-reveal.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-avatar.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-badge.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-box.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-button.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-center.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-confetti-effect.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-dialog.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-divider.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-hstack.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-image.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-input.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-label.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-pattern-tile.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-presence.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-progress-bar.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-section-header.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-select.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-spacer.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-sparkline.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-spinner.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-stack.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-status-dot.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-branch.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-connection.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-grid.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-lobe.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-mesh.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-morph.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-node.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-pulse.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-ring.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-shield.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-stack.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-textarea.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-theme-toggle.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-trend-indicator.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-video-embed.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-vstack.orb +1 -1
- package/behaviors/registry/ui/core/molecules/std-stat-rows.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-accordion.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-activation-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-activity-rail.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-agent-activity-feed.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-agent-activity-row.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-agent-chat-feed.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-alert.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-bloom-quiz-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-carousel.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-change-list.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-chart.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-connection-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-container.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-search.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-document-details.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-error-boundary.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-error-state.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-flex.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-field.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-gantt.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-geometric-pattern.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-header.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-icon-button.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-input-group.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-loading-state.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-map-view.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-meter.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-modal.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-navigation.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-notification.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-page-header.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-pagination.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-reflection-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-scaled-diagram.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-search-input.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-section.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-simple-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-skeleton.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-split.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-tooltip.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-top-nav-item.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-code-runner-panel.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-form.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-runtime-debugger.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-area-fill.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-audio-cue.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-camera-rig.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-curve-fog.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-gather.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-gold.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-lives.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-motion-body.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-patience.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-pickup.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-production.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-score.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-tutorial-autodemo.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-xp.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-zone-card.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-canvas.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-control-button.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-audio-cue.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-score-display.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-timer-display.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/templates/ui-game-shell.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-generate.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1 -1
- package/dist/behaviors-embeddings.hash.json +2 -2
- package/dist/behaviors-embeddings.json +1 -1
- package/dist/knob-embeddings.hash.json +2 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"std-platformer-board-2d","version":"1.0.0","description":"2D run/jump platformer board FRAME: composes platformer-body (run/jump physics, one-way AABB collision, hazard/goal/fall signals) + fx-particles + objective-flow (win/lose gate) onto one shared GameState with a side-view canvas render. The intent trait owns only game RULES — input forwarding (LEFT/RIGHT/STOP/JUMP → STEER/JUMP intents), goal scoring, hazard/pit lives with respawn, PLAY_AGAIN reset — physics, particles, and the win gate belong to the atoms. Games consume this organism and supply level geometry (platforms, in both BodyAuthority.platforms for collision and the render-side platforms knob), theme/assets, and physics feel via config/traitOverrides.","orbitals":[{"name":"PlatformerBoard2DOrbital","id":"orb_GAWQKAB1NMGTTFMJMAAPEMCENK","uses":[{"from":"std/behaviors/std-platformer-body","as":"Body"},{"from":"std/behaviors/std-fx-particles","as":"Particles"},{"from":"std/behaviors/std-objective-flow","as":"Gate"}],"entity":{"name":"GameState","id":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"body","type":"object","default":{"x":80,"y":320,"width":32,"height":48,"vx":0,"vy":0,"grounded":false,"facingRight":true},"properties":{"width":{"name":"width","type":"number","required":true},"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true},"vy":{"name":"vy","type":"number","required":false},"facingRight":{"name":"facingRight","type":"boolean","required":false},"vx":{"name":"vx","type":"number","required":false},"grounded":{"name":"grounded","type":"boolean","required":false},"height":{"name":"height","type":"number","required":true}}},{"name":"fell","type":"boolean","default":false},{"name":"hazardId","type":"string","default":""},{"name":"goalId","type":"string","default":""},{"name":"skating","type":"boolean","default":false},{"name":"curveMods","type":"array","default":[],"items":{"type":"object","properties":{"k":{"name":"k","type":"number","required":true},"x1":{"name":"x1","type":"number","required":true},"b":{"name":"b","type":"number","required":true},"h":{"name":"h","type":"number","required":true},"a":{"name":"a","type":"number","required":true},"x0":{"name":"x0","type":"number","required":true}}}},{"name":"fx","type":"array","default":[],"items":{"type":"object","properties":{"space":{"name":"space","type":"string","required":false},"size":{"name":"size","type":"number","required":false},"maxTtl":{"name":"maxTtl","type":"number","required":false},"y":{"name":"y","type":"number","required":false},"vy":{"name":"vy","type":"number","required":false},"x":{"name":"x","type":"number","required":true},"message":{"name":"message","type":"string","required":false},"effect":{"name":"effect","type":"string","required":false},"ttl":{"name":"ttl","type":"number","required":true},"id":{"name":"id","type":"string","required":true},"vx":{"name":"vx","type":"number","required":false},"color":{"name":"color","type":"string","required":false},"bornAt":{"name":"bornAt","type":"number","required":false},"type":{"name":"type","type":"string","required":true},"z":{"name":"z","type":"number","required":false},"vz":{"name":"vz","type":"number","required":false},"particleCount":{"name":"particleCount","type":"number","required":false}}}},{"name":"result","type":"string","default":"none"},{"name":"score","type":"number","default":0},{"name":"lives","type":"number","default":3},{"name":"objectivesLeft","type":"number","default":1},{"name":"frame","type":"number","default":0},{"name":"celebrated","type":"boolean","default":false}],"shared":true},"traits":[{"ref":"Body.traits.PlatformerBody","id":"trt_5FKFKR2VJMDSAAZZYX4X7203C6","name":"BodyAuthority","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","config":{"xMax":{"type":"unknown","default":768},"maxFallSpeed":{"type":"unknown","default":600},"xMin":{"type":"unknown","default":0},"spawn":{"type":"unknown","default":{"x":80,"y":320,"width":32,"height":48,"vx":0,"vy":0,"grounded":false,"facingRight":true}},"jumpStrength":{"type":"unknown","default":365},"killY":{"type":"unknown","default":460},"platforms":{"type":"unknown","default":[{"id":"g0","x":0,"y":368,"width":800,"height":32,"type":"ground"},{"id":"p1","x":150,"y":280,"width":160,"height":16,"type":"platform"},{"id":"p2","x":420,"y":220,"width":160,"height":16,"type":"platform"},{"id":"h1","x":580,"y":300,"width":80,"height":16,"type":"hazard"},{"id":"goal","x":700,"y":340,"width":64,"height":28,"type":"goal"}]},"running":{"type":"unknown","default":true},"gravity":{"type":"unknown","default":550},"moveSpeed":{"type":"unknown","default":120}},"events":{"BODY_GOAL":"PLAT_GOAL","BODY_MOVED":"PLAT_MOVED","BODY_HAZARD":"PLAT_HAZARD","PLACE":"PLAT_PLACE","BODY_JUMPED":"PLAT_JUMPED","STEER":"PLAT_STEER","BODY_LANDED":"PLAT_LANDED","JUMP":"PLAT_JUMP","BODY_FELL":"PLAT_FELL"},"listens":[{"event":"PLAT_JUMP","triggers":"PLAT_JUMP","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"PLAT_PLACE","triggers":"PLAT_PLACE","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"PLAT_STEER","triggers":"PLAT_STEER","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"PlatformerIntent"}}]},{"ref":"Particles.traits.FxParticles","id":"trt_D2DXW78E4K729RFBMP7VP3KFVE","name":"FxDecay","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"PlatformerIntent"}}]},{"ref":"Gate.traits.ObjectiveFlow","id":"trt_5255CDBAPCNB6CP1TY7S517KAW","name":"RoundGate","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"PROGRESS","triggers":"PROGRESS","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"PlatformerIntent"}}]},{"name":"PlatformerIntent","id":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C","effectRow":[{"kind":"emit","resource":"BURST"},{"kind":"emit","resource":"PLAT_JUMP"},{"kind":"emit","resource":"PLAT_PLACE"},{"kind":"emit","resource":"PLAT_STEER"},{"kind":"emit","resource":"PROGRESS"},{"kind":"emit","resource":"RESTART"},{"kind":"render-ui","resource":"main"},{"kind":"render-ui","resource":"main","site":"tick"},{"kind":"set","resource":"@entity.celebrated"},{"kind":"set","resource":"@entity.frame","site":"tick"},{"kind":"set","resource":"@entity.lives"},{"kind":"set","resource":"@entity.objectivesLeft"},{"kind":"set","resource":"@entity.score"},{"kind":"ticks","site":"tick"}],"category":"interaction","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","entityRefIds":{"GameState":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6"},"emits":[{"event":"LEFT","eventId":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","description":"Move-left intent from ArrowLeft/KeyA keydown or d-pad (forwarded to the body authority as STEER dir −1)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"RIGHT","eventId":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","description":"Move-right intent from ArrowRight/KeyD keydown or d-pad (forwarded to the body authority as STEER dir +1)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"STOP","eventId":"evt_8NJC7V5P00V00DJPD50NX21VB7","description":"Horizontal key release (keyUpMap or d-pad directionReleaseEvents); forwarded as STEER dir 0 so the body stops","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"JUMP","eventId":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","description":"Jump intent from Space/ArrowUp/KeyW or d-pad up; forwarded to the body authority, which accepts it only while grounded","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAT_STEER","eventId":"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP","description":"Renamed STEER consumed by the platformer-body authority: −1/0/+1 × moveSpeed horizontal velocity","tier":"domain","scope":"external","payloadSchema":[{"name":"dir","type":"number","required":true}]},{"event":"PLAT_JUMP","eventId":"evt_EKTDPMVQC6VP3DNZHHR5K67F8A","description":"Renamed JUMP consumed by the platformer-body authority (grounded-gated vertical kick)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAT_PLACE","eventId":"evt_Z7SSF9ZW23Y11S011QC34AWYJN","description":"Renamed PLACE consumed by the platformer-body authority; hazard/pit respawn teleport","tier":"domain","scope":"external","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"PLAT_GOAL","eventId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","description":"Goal-tile contact signal from the platformer-body authority (renamed BODY_GOAL); scores and trips the win gate","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"PLAT_HAZARD","eventId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","description":"Hazard-tile contact signal from the platformer-body authority (renamed BODY_HAZARD); costs a life and respawns","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"PLAT_FELL","eventId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","description":"Pit-fall signal from the platformer-body authority (renamed BODY_FELL); costs a life and respawns","tier":"domain","scope":"external","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"BURST","eventId":"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07","description":"Floating-text particle batch spawned on score/damage; fx-particles fades it","tier":"domain","scope":"external","payloadSchema":[{"name":"particles","type":"[object]","properties":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"entity":"Fx"}]},{"event":"PROGRESS","eventId":"evt_Z005D8QEYZQFFT0A91TRVQKETG","description":"Sparse win/lose signal consumed by the objective-flow gate: objectivesLeft 0 = won, movesLeft 0 = lost","tier":"domain","scope":"external","payloadSchema":[{"name":"objectivesLeft","type":"number","required":true},{"name":"movesLeft","type":"number","required":true}]},{"event":"GAME_END","eventId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","description":"Win/lose resolution from the objective-flow gate; guarded by celebrated so it lands once","tier":"domain","scope":"external","payloadSchema":[{"name":"result","type":"string","required":true}]},{"event":"RESTART","eventId":"evt_WMY24M7KN5STJH5N5V58CYFQ5S","description":"Broadcast reset consumed by the platformer-body and objective-flow authorities on INIT/PLAY_AGAIN","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAY_AGAIN","eventId":"evt_572THF84H428J134PJPPR5WYG5","description":"End-overlay restart button; reseeds score/lives/objectives and broadcasts RESTART","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]}],"listens":[{"event":"PLAT_FELL","eventId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","triggers":"PLAT_FELL","triggersId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","source":{"kind":"trait","trait":"BodyAuthority","traitId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"}},{"event":"PLAT_GOAL","eventId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","triggers":"PLAT_GOAL","triggersId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","source":{"kind":"trait","trait":"BodyAuthority","traitId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"}},{"event":"PLAT_HAZARD","eventId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","triggers":"PLAT_HAZARD","triggersId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","source":{"kind":"trait","trait":"BodyAuthority","traitId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"}},{"event":"GAME_END","eventId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","triggers":"GAME_END","triggersId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","source":{"kind":"trait","trait":"RoundGate","traitId":"trt_5255CDBAPCNB6CP1TY7S517KAW"}}],"stateMachine":{"states":[{"name":"playing","isInitial":true}],"events":[{"key":"INIT","id":"evt_248QSED4XXJEYP655HRVCX61XR","name":"Initialize"},{"key":"LEFT","id":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","name":"Left","description":"Move-left intent from ArrowLeft/KeyA keydown or d-pad (forwarded to the body authority as STEER dir −1)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"RIGHT","id":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","name":"Right","description":"Move-right intent from ArrowRight/KeyD keydown or d-pad (forwarded to the body authority as STEER dir +1)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"STOP","id":"evt_8NJC7V5P00V00DJPD50NX21VB7","name":"Stop","description":"Horizontal key release (keyUpMap or d-pad directionReleaseEvents); forwarded as STEER dir 0 so the body stops","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"JUMP","id":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","name":"Jump","description":"Jump intent from Space/ArrowUp/KeyW or d-pad up; forwarded to the body authority, which accepts it only while grounded","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAT_GOAL","id":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","name":"Plat Goal","description":"Goal-tile contact signal from the platformer-body authority (renamed BODY_GOAL); scores and trips the win gate","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"PLAT_HAZARD","id":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","name":"Plat Hazard","description":"Hazard-tile contact signal from the platformer-body authority (renamed BODY_HAZARD); costs a life and respawns","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"PLAT_FELL","id":"evt_2ZD4176MB0A5GE69YQ395YJEY6","name":"Plat Fell","description":"Pit-fall signal from the platformer-body authority (renamed BODY_FELL); costs a life and respawns","tier":"domain","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"GAME_END","id":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","name":"Game End","description":"Win/lose resolution from the objective-flow gate; guarded by celebrated so it lands once","tier":"domain","payloadSchema":[{"name":"result","type":"string","required":true}]},{"key":"PLAY_AGAIN","id":"evt_572THF84H428J134PJPPR5WYG5","name":"Play Again","description":"End-overlay restart button; reseeds score/lives/objectives and broadcasts RESTART","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAT_STEER","id":"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP","name":"Plat Steer","description":"Renamed STEER consumed by the platformer-body authority: −1/0/+1 × moveSpeed horizontal velocity","tier":"domain","payloadSchema":[{"name":"dir","type":"number","required":true}]},{"key":"PLAT_JUMP","id":"evt_EKTDPMVQC6VP3DNZHHR5K67F8A","name":"Plat Jump","description":"Renamed JUMP consumed by the platformer-body authority (grounded-gated vertical kick)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAT_PLACE","id":"evt_Z7SSF9ZW23Y11S011QC34AWYJN","name":"Plat Place","description":"Renamed PLACE consumed by the platformer-body authority; hazard/pit respawn teleport","tier":"domain","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"BURST","id":"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07","name":"Burst","description":"Floating-text particle batch spawned on score/damage; fx-particles fades it","tier":"domain","payloadSchema":[{"name":"particles","type":"[object]","properties":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"entity":"Fx"}]},{"key":"PROGRESS","id":"evt_Z005D8QEYZQFFT0A91TRVQKETG","name":"Progress","description":"Sparse win/lose signal consumed by the objective-flow gate: objectivesLeft 0 = won, movesLeft 0 = lost","tier":"domain","payloadSchema":[{"name":"objectivesLeft","type":"number","required":true},{"name":"movesLeft","type":"number","required":true}]},{"key":"RESTART","id":"evt_WMY24M7KN5STJH5N5V58CYFQ5S","name":"Restart","description":"Broadcast reset consumed by the platformer-body and objective-flow authorities on INIT/PLAY_AGAIN","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]}],"transitions":[{"from":"playing","to":"playing","event":"INIT","eventId":"evt_248QSED4XXJEYP655HRVCX61XR","effects":[["set","@entity.score",0],["set","@entity.lives","@config.startLives"],["set","@entity.objectivesLeft",1],["set","@entity.celebrated",false],["emit","RESTART",{"id":"board"}],["render-ui","main",{"type":"game-shell","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"stack","direction":"horizontal","gap":"md","justify":"between","children":[{"type":"game-hud","stats":[{"label":"Score","value":"@entity.score"},{"label":"Lives","value":"@entity.lives"}]},{"type":"control-grid","kind":"dpad","directionEvents":{"left":"LEFT","right":"RIGHT","up":"JUMP"},"directionReleaseEvents":{"left":"STOP","right":"STOP"},"directionAssets":"@config.directionAssets"}]},"overlay":["if",["==","@entity.result","won"],{"type":"game-menu","title":"@config.clearTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["==","@entity.result","lost"],{"type":"game-menu","title":"@config.lostTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","camera":{"mode":"follow","zoom":1,"pos":{"x":["/","@config.worldWidth",2],"y":["/","@config.worldHeight",2]},"target":{"x":"@entity.body.x","y":"@entity.body.y"}},"projection":"side","worldWidth":"@config.worldWidth","worldHeight":"@config.worldHeight","backgroundColor":"@config.bgColor","backgroundImage":"@config.backgroundImage","keyMap":{"ArrowLeft":"LEFT","KeyA":"LEFT","ArrowRight":"RIGHT","KeyD":"RIGHT","ArrowUp":"JUMP","KeyW":"JUMP","Space":"JUMP"},"keyUpMap":{"ArrowLeft":"STOP","KeyA":"STOP","ArrowRight":"STOP","KeyD":"STOP"},"drawables":[{"type":"draw-sprite-layer","items":["array/map","@config.platforms",["fn","p",{"type":"draw-sprite","position":{"x":["object/get","@p","x"],"y":["object/get","@p","y"]},"width":["object/get","@p","width"],"height":["object/get","@p","height"],"asset":["object/get","@config.tileSprites",["object/get","@p","type"]]}]]},{"type":"draw-sprite-layer","items":[["object/merge",{"type":"draw-sprite","position":{"x":"@entity.body.x","y":"@entity.body.y"},"width":"@entity.body.width","height":"@entity.body.height","frame":"@entity.frame","flipX":["not","@entity.body.facingRight"]},{"asset":["object/merge","@config.playerSprite",{"sprite":["if","@entity.body.grounded",["if",["!=","@entity.body.vx",0],["if",["==",["%","@entity.frame",2],0],"adventurer_walk1.png","adventurer_walk2.png"],"adventurer_idle.png"],"adventurer_jump.png"]}]}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets"}]}]}]]},{"from":"playing","to":"playing","event":"LEFT","eventId":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_STEER",{"dir":-1}]]},{"from":"playing","to":"playing","event":"RIGHT","eventId":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_STEER",{"dir":1}]]},{"from":"playing","to":"playing","event":"STOP","eventId":"evt_8NJC7V5P00V00DJPD50NX21VB7","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_STEER",{"dir":0}]]},{"from":"playing","to":"playing","event":"JUMP","eventId":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_JUMP",{}]]},{"from":"playing","to":"playing","event":"PLAT_GOAL","eventId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","guard":["==","@entity.result","none"],"effects":[["set","@entity.score",["+","@entity.score","@config.goalScore"]],["set","@entity.objectivesLeft",0],["emit","BURST",{"particles":["array/map",["array/filter","@config.platforms",["fn","p",["==",["object/get","@p","id",""],"@payload.id"]]],["fn","p",{"id":["str/concat","fx-goal-","@payload.id"],"type":"score","x":"@payload.x","z":"@payload.y","message":["str/concat","+","@config.goalScore"],"ttl":3}]]}],["emit","PROGRESS",{"objectivesLeft":0,"movesLeft":"@entity.lives"}]]},{"from":"playing","to":"playing","event":"PLAT_HAZARD","eventId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","guard":["==","@entity.result","none"],"effects":[["if",["<=",["-","@entity.lives",1],0],["do",["set","@entity.lives",0],["emit","PROGRESS",{"objectivesLeft":1,"movesLeft":0}]],["do",["set","@entity.lives",["-","@entity.lives",1]],["emit","BURST",{"particles":["array/map",["array/filter","@config.platforms",["fn","p",["==",["object/get","@p","id",""],"@payload.id"]]],["fn","p",{"id":["str/concat","fx-hazard-","@payload.id"],"type":"damage","x":"@payload.x","z":"@payload.y","message":"-1","ttl":3}]]}],["emit","PLAT_PLACE",{"x":"@config.respawnX","y":"@config.respawnY"}]]]]},{"from":"playing","to":"playing","event":"PLAT_FELL","eventId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","guard":["==","@entity.result","none"],"effects":[["if",["<=",["-","@entity.lives",1],0],["do",["set","@entity.lives",0],["emit","PROGRESS",{"objectivesLeft":1,"movesLeft":0}]],["do",["set","@entity.lives",["-","@entity.lives",1]],["emit","BURST",{"particles":["array/map",["fx-fell"],["fn","fid",{"id":"@fid","type":"damage","x":"@payload.x","z":"@config.worldHeight","message":"-1","ttl":3}]]}],["emit","PLAT_PLACE",{"x":"@config.respawnX","y":"@config.respawnY"}]]]]},{"from":"playing","to":"playing","event":"GAME_END","eventId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","guard":["==","@entity.celebrated",false],"effects":[["set","@entity.celebrated",true]]},{"from":"playing","to":"playing","event":"PLAY_AGAIN","eventId":"evt_572THF84H428J134PJPPR5WYG5","effects":[["set","@entity.score",0],["set","@entity.lives","@config.startLives"],["set","@entity.objectivesLeft",1],["set","@entity.celebrated",false],["emit","RESTART",{"id":"board"}]]}]},"ticks":[{"name":"renderTick","interval":100,"effects":[["set","@entity.frame",["%",["+","@entity.frame",1],8]],["render-ui","main",{"type":"game-shell","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"stack","direction":"horizontal","gap":"md","justify":"between","children":[{"type":"game-hud","stats":[{"label":"Score","value":"@entity.score"},{"label":"Lives","value":"@entity.lives"}]},{"type":"control-grid","kind":"dpad","directionEvents":{"left":"LEFT","right":"RIGHT","up":"JUMP"},"directionReleaseEvents":{"left":"STOP","right":"STOP"},"directionAssets":"@config.directionAssets"}]},"overlay":["if",["==","@entity.result","won"],{"type":"game-menu","title":"@config.clearTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["==","@entity.result","lost"],{"type":"game-menu","title":"@config.lostTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","camera":{"mode":"follow","zoom":1,"pos":{"x":["/","@config.worldWidth",2],"y":["/","@config.worldHeight",2]},"target":{"x":"@entity.body.x","y":"@entity.body.y"}},"projection":"side","worldWidth":"@config.worldWidth","worldHeight":"@config.worldHeight","backgroundColor":"@config.bgColor","backgroundImage":"@config.backgroundImage","keyMap":{"ArrowLeft":"LEFT","KeyA":"LEFT","ArrowRight":"RIGHT","KeyD":"RIGHT","ArrowUp":"JUMP","KeyW":"JUMP","Space":"JUMP"},"keyUpMap":{"ArrowLeft":"STOP","KeyA":"STOP","ArrowRight":"STOP","KeyD":"STOP"},"drawables":[{"type":"draw-sprite-layer","items":["array/map","@config.platforms",["fn","p",{"type":"draw-sprite","position":{"x":["object/get","@p","x"],"y":["object/get","@p","y"]},"width":["object/get","@p","width"],"height":["object/get","@p","height"],"asset":["object/get","@config.tileSprites",["object/get","@p","type"]]}]]},{"type":"draw-sprite-layer","items":[["object/merge",{"type":"draw-sprite","position":{"x":"@entity.body.x","y":"@entity.body.y"},"width":"@entity.body.width","height":"@entity.body.height","frame":"@entity.frame","flipX":["not","@entity.body.facingRight"]},{"asset":["object/merge","@config.playerSprite",{"sprite":["if","@entity.body.grounded",["if",["!=","@entity.body.vx",0],["if",["==",["%","@entity.frame",2],0],"adventurer_walk1.png","adventurer_walk2.png"],"adventurer_idle.png"],"adventurer_jump.png"]}]}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets"}]}]}]]}],"config":{"directionAssets":{"type":"DirectionAssets","default":{},"label":"Direction Assets","description":"D-pad direction icon sprites","tier":"presentation","properties":{"left":{"name":"left","type":"object","required":false,"properties":{"name":{"name":"name","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"url":{"name":"url","type":"string","required":false}}},"up":{"name":"up","type":"object","required":false,"properties":{"style":{"name":"style","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"name":{"name":"name","type":"string","required":false}}},"down":{"name":"down","type":"object","required":false,"properties":{"variant":{"name":"variant","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false}}},"right":{"name":"right","type":"object","required":false,"properties":{"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"url":{"name":"url","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false}}}}},"backgroundAsset":{"type":"Asset","default":{},"label":"Background Asset","description":"Game-shell background panel sprite (theme chrome)","tier":"presentation","properties":{"aspect":{"name":"aspect","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false}}},"respawnY":{"type":"number","default":320,"label":"Respawn Y","description":"Y the body teleports to after hazard/pit damage (matches BodyAuthority spawn.y)","tier":"domain"},"respawnX":{"type":"number","default":80,"label":"Respawn X","description":"X the body teleports to after hazard/pit damage (matches BodyAuthority spawn.x)","tier":"domain"},"bgColor":{"type":"string","default":"#5c94fc","label":"Bg Color","description":"Canvas background color","tier":"presentation"},"backgroundImage":{"type":"Asset","default":{},"label":"Background Image","description":"Canvas background image Asset","tier":"presentation","properties":{"dimension":{"name":"dimension","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"aspect":{"name":"aspect","type":"string","required":false}}},"hudBackgroundAsset":{"type":"Asset","default":{},"label":"HUD Background Asset","description":"HUD panel background sprite (theme chrome)","tier":"presentation","properties":{"atlas":{"name":"atlas","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"sprite":{"name":"sprite","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false}}},"worldWidth":{"type":"number","default":800,"label":"World Width","description":"World pixel width (camera + canvas bounds)","tier":"presentation"},"goalScore":{"type":"number","default":100,"label":"Goal Score","description":"Points awarded when the body touches the goal tile","tier":"domain"},"startLives":{"type":"number","default":3,"label":"Start Lives","description":"Lives seeded on INIT/PLAY_AGAIN; hazard or pit contact costs one, zero loses the round","tier":"domain"},"fxPresets":{"type":"[FxPreset]","default":[{"type":"score","color":"#ffe066","color2":"#fff4cc","shape":"spark","size":22,"count":6,"glow":0.15,"vy":-35},{"type":"damage","color":"#ef4444","color2":"#7f1d1d","shape":"spark","size":20,"count":5,"glow":0.12,"gravity":40}],"label":"Fx Presets","description":"This board's effect vocabulary — one look/recipe row per fx type its intent trait emits (goal score, hazard/fell damage).","tier":"presentation","items":{"type":"object","properties":{"particleCount":{"name":"particleCount","type":"number","required":false},"effect":{"name":"effect","type":"string","required":false},"vz":{"name":"vz","type":"number","required":false},"shape":{"name":"shape","type":"string","required":false},"count":{"name":"count","type":"number","required":false},"glow":{"name":"glow","type":"number","required":false},"color":{"name":"color","type":"string","required":false},"vy":{"name":"vy","type":"number","required":false},"space":{"name":"space","type":"string","required":false},"color2":{"name":"color2","type":"string","required":false},"gravity":{"name":"gravity","type":"number","required":false},"type":{"name":"type","type":"string","required":true},"size":{"name":"size","type":"number","required":false},"vx":{"name":"vx","type":"number","required":false}}}},"platforms":{"type":"[PlatformerPlatform]","default":[{"id":"g0","x":0,"y":368,"width":800,"height":32,"type":"ground"},{"id":"p1","x":150,"y":280,"width":160,"height":16,"type":"platform"},{"id":"p2","x":420,"y":220,"width":160,"height":16,"type":"platform"},{"id":"h1","x":580,"y":300,"width":80,"height":16,"type":"hazard"},{"id":"goal","x":700,"y":340,"width":64,"height":28,"type":"goal"}],"label":"Platforms","description":"Level geometry rendered by the canvas (must match BodyAuthority.platforms, which owns collision — override both together)","tier":"domain","items":{"type":"object","properties":{"id":{"name":"id","type":"string","required":false},"height":{"name":"height","type":"number","required":true},"x":{"name":"x","type":"number","required":true},"type":{"name":"type","type":"string","required":false,"values":["ground","platform","hazard","goal"]},"width":{"name":"width","type":"number","required":true},"y":{"name":"y","type":"number","required":true}}}},"worldHeight":{"type":"number","default":400,"label":"World Height","description":"World pixel height (camera + canvas bounds)","tier":"presentation"},"playerSprite":{"type":"Asset","default":{},"label":"Player Sprite","description":"Player sprite Asset; its atlas must expose adventurer_idle/walk1/walk2/jump frames (or override the sprite-selection expression)","tier":"presentation","properties":{"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false}}},"lostTitle":{"type":"string","default":"GAME OVER","label":"Lost Title","description":"Overlay title when lives run out","tier":"presentation"},"clearTitle":{"type":"string","default":"YOU WIN!","label":"Clear Title","description":"Overlay title when the goal tile is reached","tier":"presentation"},"tileSprites":{"type":"Map<string,Asset>","default":{},"label":"Tile Sprites","description":"Map of platform type (ground/platform/hazard/goal) to tile sprite Asset","tier":"presentation","items":{"type":"object","properties":{"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"category":{"name":"category","type":"string","required":false}}}}},"scope":"instance"}],"pages":[{"name":"PlatformerBoard2DPage","id":"pag_FGA3J47NQSTVWQV8J01AGPCQ75","path":"/platformer-board-2d","traits":[{"ref":"BodyAuthority","refId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"},{"ref":"FxDecay","refId":"trt_D2DXW78E4K729RFBMP7VP3KFVE"},{"ref":"RoundGate","refId":"trt_5255CDBAPCNB6CP1TY7S517KAW"},{"ref":"PlatformerIntent","refId":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"}]}],"types":{"Asset":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}],"BoardCurveMod":[{"name":"x0","type":"number","required":true},{"name":"x1","type":"number","required":true},{"name":"a","type":"number","required":true},{"name":"b","type":"number","required":true},{"name":"h","type":"number","required":true},{"name":"k","type":"number","required":true}],"DirectionAssets":[{"name":"up","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"down","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"left","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"right","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Fx":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"FxPreset":[{"name":"type","type":"string","required":true},{"name":"color","type":"string"},{"name":"color2","type":"string"},{"name":"size","type":"number"},{"name":"shape","type":"string"},{"name":"count","type":"number"},{"name":"glow","type":"number"},{"name":"gravity","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"particleCount","type":"number"}],"PlatformerBody":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"grounded","type":"boolean"},{"name":"facingRight","type":"boolean"}],"PlatformerPlatform":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"type","type":"string","values":["ground","platform","hazard","goal"]}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_61HQHHDT1HX0RJ6ZVBPCD232W6":{"id":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","kind":"entity","bakedName":"GameState","curName":"GameState","renames":[],"owner":"workspace"},"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD":{"id":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","kind":"event","bakedName":"JUMP","curName":"JUMP","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_248QSED4XXJEYP655HRVCX61XR":{"id":"evt_248QSED4XXJEYP655HRVCX61XR","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5":{"id":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","kind":"event","bakedName":"LEFT","curName":"LEFT","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_2ZD4176MB0A5GE69YQ395YJEY6":{"id":"evt_2ZD4176MB0A5GE69YQ395YJEY6","kind":"event","bakedName":"PLAT_FELL","curName":"PLAT_FELL","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_572THF84H428J134PJPPR5WYG5":{"id":"evt_572THF84H428J134PJPPR5WYG5","kind":"event","bakedName":"PLAY_AGAIN","curName":"PLAY_AGAIN","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_8NJC7V5P00V00DJPD50NX21VB7":{"id":"evt_8NJC7V5P00V00DJPD50NX21VB7","kind":"event","bakedName":"STOP","curName":"STOP","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_AR30KSXXWNYYANG8RTZZ2D0S88":{"id":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","kind":"event","bakedName":"PLAT_GOAL","curName":"PLAT_GOAL","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_CYC6WPFHC4RP2CT9D39G5MBPZA":{"id":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","kind":"event","bakedName":"GAME_END","curName":"GAME_END","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_EKTDPMVQC6VP3DNZHHR5K67F8A":{"id":"evt_EKTDPMVQC6VP3DNZHHR5K67F8A","kind":"event","bakedName":"PLAT_JUMP","curName":"PLAT_JUMP","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S":{"id":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","kind":"event","bakedName":"PLAT_HAZARD","curName":"PLAT_HAZARD","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP":{"id":"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP","kind":"event","bakedName":"PLAT_STEER","curName":"PLAT_STEER","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_WMY24M7KN5STJH5N5V58CYFQ5S":{"id":"evt_WMY24M7KN5STJH5N5V58CYFQ5S","kind":"event","bakedName":"RESTART","curName":"RESTART","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07":{"id":"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07","kind":"event","bakedName":"BURST","curName":"BURST","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_Y9TT5R67FA3QN5VRKKT0GADFV4":{"id":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","kind":"event","bakedName":"RIGHT","curName":"RIGHT","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_Z005D8QEYZQFFT0A91TRVQKETG":{"id":"evt_Z005D8QEYZQFFT0A91TRVQKETG","kind":"event","bakedName":"PROGRESS","curName":"PROGRESS","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_Z7SSF9ZW23Y11S011QC34AWYJN":{"id":"evt_Z7SSF9ZW23Y11S011QC34AWYJN","kind":"event","bakedName":"PLAT_PLACE","curName":"PLAT_PLACE","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"orb_GAWQKAB1NMGTTFMJMAAPEMCENK":{"id":"orb_GAWQKAB1NMGTTFMJMAAPEMCENK","kind":"orbital","bakedName":"PlatformerBoard2DOrbital","curName":"PlatformerBoard2DOrbital","renames":[],"owner":"workspace"},"pag_FGA3J47NQSTVWQV8J01AGPCQ75":{"id":"pag_FGA3J47NQSTVWQV8J01AGPCQ75","kind":"page","bakedName":"PlatformerBoard2DPage","curName":"PlatformerBoard2DPage","renames":[],"owner":"workspace"},"trt_5255CDBAPCNB6CP1TY7S517KAW":{"id":"trt_5255CDBAPCNB6CP1TY7S517KAW","kind":"trait","bakedName":"RoundGate","curName":"RoundGate","renames":[],"owner":"workspace"},"trt_5FKFKR2VJMDSAAZZYX4X7203C6":{"id":"trt_5FKFKR2VJMDSAAZZYX4X7203C6","kind":"trait","bakedName":"BodyAuthority","curName":"BodyAuthority","renames":[],"owner":"workspace"},"trt_B9T7F5FV7XXKYXS80BPJRWMT3C":{"id":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C","kind":"trait","bakedName":"PlatformerIntent","curName":"PlatformerIntent","renames":[],"owner":"workspace"},"trt_D2DXW78E4K729RFBMP7VP3KFVE":{"id":"trt_D2DXW78E4K729RFBMP7VP3KFVE","kind":"trait","bakedName":"FxDecay","curName":"FxDecay","renames":[],"owner":"workspace"}}}}
|
|
1
|
+
{"name":"std-platformer-board-2d","version":"1.0.0","description":"2D run/jump platformer board FRAME: composes platformer-body (run/jump physics, one-way AABB collision, hazard/goal/fall signals) + fx-particles + objective-flow (win/lose gate) onto one shared GameState with a side-view canvas render. The intent trait owns only game RULES — input forwarding (LEFT/RIGHT/STOP/JUMP → STEER/JUMP intents), goal scoring, hazard/pit lives with respawn, PLAY_AGAIN reset — physics, particles, and the win gate belong to the atoms. Games consume this organism and supply level geometry (platforms, in both BodyAuthority.platforms for collision and the render-side platforms knob), theme/assets, and physics feel via config/traitOverrides.","orbitals":[{"name":"PlatformerBoard2DOrbital","id":"orb_GAWQKAB1NMGTTFMJMAAPEMCENK","uses":[{"from":"std/behaviors/std-platformer-body","as":"Body"},{"from":"std/behaviors/std-fx-particles","as":"Particles"},{"from":"std/behaviors/std-objective-flow","as":"Gate"}],"entity":{"name":"GameState","id":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"body","type":"object","default":{"x":80,"y":320,"width":32,"height":48,"vx":0,"vy":0,"grounded":false,"facingRight":true},"properties":{"grounded":{"name":"grounded","type":"boolean","required":false},"facingRight":{"name":"facingRight","type":"boolean","required":false},"width":{"name":"width","type":"number","required":true},"vy":{"name":"vy","type":"number","required":false},"x":{"name":"x","type":"number","required":true},"y":{"name":"y","type":"number","required":true},"height":{"name":"height","type":"number","required":true},"vx":{"name":"vx","type":"number","required":false}}},{"name":"fell","type":"boolean","default":false},{"name":"hazardId","type":"string","default":""},{"name":"goalId","type":"string","default":""},{"name":"skating","type":"boolean","default":false},{"name":"curveMods","type":"array","default":[],"items":{"type":"object","properties":{"a":{"name":"a","type":"number","required":true},"h":{"name":"h","type":"number","required":true},"b":{"name":"b","type":"number","required":true},"k":{"name":"k","type":"number","required":true},"x0":{"name":"x0","type":"number","required":true},"x1":{"name":"x1","type":"number","required":true}}}},{"name":"fx","type":"array","default":[],"items":{"type":"object","properties":{"particleCount":{"name":"particleCount","type":"number","required":false},"ttl":{"name":"ttl","type":"number","required":true},"message":{"name":"message","type":"string","required":false},"effect":{"name":"effect","type":"string","required":false},"vx":{"name":"vx","type":"number","required":false},"z":{"name":"z","type":"number","required":false},"size":{"name":"size","type":"number","required":false},"vy":{"name":"vy","type":"number","required":false},"space":{"name":"space","type":"string","required":false},"maxTtl":{"name":"maxTtl","type":"number","required":false},"color":{"name":"color","type":"string","required":false},"y":{"name":"y","type":"number","required":false},"vz":{"name":"vz","type":"number","required":false},"type":{"name":"type","type":"string","required":true},"id":{"name":"id","type":"string","required":true},"bornAt":{"name":"bornAt","type":"number","required":false},"x":{"name":"x","type":"number","required":true}}}},{"name":"result","type":"string","default":"none"},{"name":"score","type":"number","default":0},{"name":"lives","type":"number","default":3},{"name":"objectivesLeft","type":"number","default":1},{"name":"frame","type":"number","default":0},{"name":"celebrated","type":"boolean","default":false}],"shared":true},"traits":[{"ref":"Body.traits.PlatformerBody","id":"trt_5FKFKR2VJMDSAAZZYX4X7203C6","name":"BodyAuthority","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","config":{"running":{"type":"unknown","default":true},"maxFallSpeed":{"type":"unknown","default":600},"xMax":{"type":"unknown","default":768},"jumpStrength":{"type":"unknown","default":365},"killY":{"type":"unknown","default":460},"xMin":{"type":"unknown","default":0},"gravity":{"type":"unknown","default":550},"moveSpeed":{"type":"unknown","default":120},"platforms":{"type":"unknown","default":[{"id":"g0","x":0,"y":368,"width":800,"height":32,"type":"ground"},{"id":"p1","x":150,"y":280,"width":160,"height":16,"type":"platform"},{"id":"p2","x":420,"y":220,"width":160,"height":16,"type":"platform"},{"id":"h1","x":580,"y":300,"width":80,"height":16,"type":"hazard"},{"id":"goal","x":700,"y":340,"width":64,"height":28,"type":"goal"}]},"spawn":{"type":"unknown","default":{"x":80,"y":320,"width":32,"height":48,"vx":0,"vy":0,"grounded":false,"facingRight":true}}},"events":{"BODY_HAZARD":"PLAT_HAZARD","STEER":"PLAT_STEER","BODY_GOAL":"PLAT_GOAL","BODY_LANDED":"PLAT_LANDED","BODY_MOVED":"PLAT_MOVED","BODY_FELL":"PLAT_FELL","PLACE":"PLAT_PLACE","BODY_JUMPED":"PLAT_JUMPED","JUMP":"PLAT_JUMP"},"listens":[{"event":"PLAT_JUMP","triggers":"PLAT_JUMP","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"PLAT_PLACE","triggers":"PLAT_PLACE","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"PLAT_STEER","triggers":"PLAT_STEER","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"PlatformerIntent"}}]},{"ref":"Particles.traits.FxParticles","id":"trt_D2DXW78E4K729RFBMP7VP3KFVE","name":"FxDecay","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"PlatformerIntent"}}]},{"ref":"Gate.traits.ObjectiveFlow","id":"trt_5255CDBAPCNB6CP1TY7S517KAW","name":"RoundGate","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","config":{"running":{"type":"unknown","default":true}},"listens":[{"event":"PROGRESS","triggers":"PROGRESS","source":{"kind":"trait","trait":"PlatformerIntent"}},{"event":"RESTART","triggers":"RESTART","source":{"kind":"trait","trait":"PlatformerIntent"}}]},{"name":"PlatformerIntent","id":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C","effectRow":[{"kind":"emit","resource":"BURST"},{"kind":"emit","resource":"PLAT_JUMP"},{"kind":"emit","resource":"PLAT_PLACE"},{"kind":"emit","resource":"PLAT_STEER"},{"kind":"emit","resource":"PROGRESS"},{"kind":"emit","resource":"RESTART"},{"kind":"render-ui","resource":"main"},{"kind":"render-ui","resource":"main","site":"tick"},{"kind":"set","resource":"@entity.celebrated"},{"kind":"set","resource":"@entity.frame","site":"tick"},{"kind":"set","resource":"@entity.lives"},{"kind":"set","resource":"@entity.objectivesLeft"},{"kind":"set","resource":"@entity.score"},{"kind":"ticks","site":"tick"}],"category":"interaction","linkedEntity":"GameState","linkedEntityId":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","entityRefIds":{"GameState":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6"},"emits":[{"event":"LEFT","eventId":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","description":"Move-left intent from ArrowLeft/KeyA keydown or d-pad (forwarded to the body authority as STEER dir −1)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"RIGHT","eventId":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","description":"Move-right intent from ArrowRight/KeyD keydown or d-pad (forwarded to the body authority as STEER dir +1)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"STOP","eventId":"evt_8NJC7V5P00V00DJPD50NX21VB7","description":"Horizontal key release (keyUpMap or d-pad directionReleaseEvents); forwarded as STEER dir 0 so the body stops","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"JUMP","eventId":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","description":"Jump intent from Space/ArrowUp/KeyW or d-pad up; forwarded to the body authority, which accepts it only while grounded","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAT_STEER","eventId":"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP","description":"Renamed STEER consumed by the platformer-body authority: −1/0/+1 × moveSpeed horizontal velocity","tier":"domain","scope":"external","payloadSchema":[{"name":"dir","type":"number","required":true}]},{"event":"PLAT_JUMP","eventId":"evt_EKTDPMVQC6VP3DNZHHR5K67F8A","description":"Renamed JUMP consumed by the platformer-body authority (grounded-gated vertical kick)","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAT_PLACE","eventId":"evt_Z7SSF9ZW23Y11S011QC34AWYJN","description":"Renamed PLACE consumed by the platformer-body authority; hazard/pit respawn teleport","tier":"domain","scope":"external","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"PLAT_GOAL","eventId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","description":"Goal-tile contact signal from the platformer-body authority (renamed BODY_GOAL); scores and trips the win gate","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"PLAT_HAZARD","eventId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","description":"Hazard-tile contact signal from the platformer-body authority (renamed BODY_HAZARD); costs a life and respawns","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"PLAT_FELL","eventId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","description":"Pit-fall signal from the platformer-body authority (renamed BODY_FELL); costs a life and respawns","tier":"domain","scope":"external","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"event":"BURST","eventId":"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07","description":"Floating-text particle batch spawned on score/damage; fx-particles fades it","tier":"domain","scope":"external","payloadSchema":[{"name":"particles","type":"[object]","properties":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"entity":"Fx"}]},{"event":"PROGRESS","eventId":"evt_Z005D8QEYZQFFT0A91TRVQKETG","description":"Sparse win/lose signal consumed by the objective-flow gate: objectivesLeft 0 = won, movesLeft 0 = lost","tier":"domain","scope":"external","payloadSchema":[{"name":"objectivesLeft","type":"number","required":true},{"name":"movesLeft","type":"number","required":true}]},{"event":"GAME_END","eventId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","description":"Win/lose resolution from the objective-flow gate; guarded by celebrated so it lands once","tier":"domain","scope":"external","payloadSchema":[{"name":"result","type":"string","required":true}]},{"event":"RESTART","eventId":"evt_WMY24M7KN5STJH5N5V58CYFQ5S","description":"Broadcast reset consumed by the platformer-body and objective-flow authorities on INIT/PLAY_AGAIN","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]},{"event":"PLAY_AGAIN","eventId":"evt_572THF84H428J134PJPPR5WYG5","description":"End-overlay restart button; reseeds score/lives/objectives and broadcasts RESTART","tier":"domain","scope":"external","payloadSchema":[{"name":"id","type":"string"}]}],"listens":[{"event":"PLAT_FELL","eventId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","triggers":"PLAT_FELL","triggersId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","source":{"kind":"trait","trait":"BodyAuthority","traitId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"}},{"event":"PLAT_GOAL","eventId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","triggers":"PLAT_GOAL","triggersId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","source":{"kind":"trait","trait":"BodyAuthority","traitId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"}},{"event":"PLAT_HAZARD","eventId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","triggers":"PLAT_HAZARD","triggersId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","source":{"kind":"trait","trait":"BodyAuthority","traitId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"}},{"event":"GAME_END","eventId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","triggers":"GAME_END","triggersId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","source":{"kind":"trait","trait":"RoundGate","traitId":"trt_5255CDBAPCNB6CP1TY7S517KAW"}}],"stateMachine":{"states":[{"name":"playing","isInitial":true}],"events":[{"key":"INIT","id":"evt_248QSED4XXJEYP655HRVCX61XR","name":"Initialize"},{"key":"LEFT","id":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","name":"Left","description":"Move-left intent from ArrowLeft/KeyA keydown or d-pad (forwarded to the body authority as STEER dir −1)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"RIGHT","id":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","name":"Right","description":"Move-right intent from ArrowRight/KeyD keydown or d-pad (forwarded to the body authority as STEER dir +1)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"STOP","id":"evt_8NJC7V5P00V00DJPD50NX21VB7","name":"Stop","description":"Horizontal key release (keyUpMap or d-pad directionReleaseEvents); forwarded as STEER dir 0 so the body stops","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"JUMP","id":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","name":"Jump","description":"Jump intent from Space/ArrowUp/KeyW or d-pad up; forwarded to the body authority, which accepts it only while grounded","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAT_GOAL","id":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","name":"Plat Goal","description":"Goal-tile contact signal from the platformer-body authority (renamed BODY_GOAL); scores and trips the win gate","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"PLAT_HAZARD","id":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","name":"Plat Hazard","description":"Hazard-tile contact signal from the platformer-body authority (renamed BODY_HAZARD); costs a life and respawns","tier":"domain","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"PLAT_FELL","id":"evt_2ZD4176MB0A5GE69YQ395YJEY6","name":"Plat Fell","description":"Pit-fall signal from the platformer-body authority (renamed BODY_FELL); costs a life and respawns","tier":"domain","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"GAME_END","id":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","name":"Game End","description":"Win/lose resolution from the objective-flow gate; guarded by celebrated so it lands once","tier":"domain","payloadSchema":[{"name":"result","type":"string","required":true}]},{"key":"PLAY_AGAIN","id":"evt_572THF84H428J134PJPPR5WYG5","name":"Play Again","description":"End-overlay restart button; reseeds score/lives/objectives and broadcasts RESTART","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAT_STEER","id":"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP","name":"Plat Steer","description":"Renamed STEER consumed by the platformer-body authority: −1/0/+1 × moveSpeed horizontal velocity","tier":"domain","payloadSchema":[{"name":"dir","type":"number","required":true}]},{"key":"PLAT_JUMP","id":"evt_EKTDPMVQC6VP3DNZHHR5K67F8A","name":"Plat Jump","description":"Renamed JUMP consumed by the platformer-body authority (grounded-gated vertical kick)","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]},{"key":"PLAT_PLACE","id":"evt_Z7SSF9ZW23Y11S011QC34AWYJN","name":"Plat Place","description":"Renamed PLACE consumed by the platformer-body authority; hazard/pit respawn teleport","tier":"domain","payloadSchema":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]},{"key":"BURST","id":"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07","name":"Burst","description":"Floating-text particle batch spawned on score/damage; fx-particles fades it","tier":"domain","payloadSchema":[{"name":"particles","type":"[object]","properties":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"entity":"Fx"}]},{"key":"PROGRESS","id":"evt_Z005D8QEYZQFFT0A91TRVQKETG","name":"Progress","description":"Sparse win/lose signal consumed by the objective-flow gate: objectivesLeft 0 = won, movesLeft 0 = lost","tier":"domain","payloadSchema":[{"name":"objectivesLeft","type":"number","required":true},{"name":"movesLeft","type":"number","required":true}]},{"key":"RESTART","id":"evt_WMY24M7KN5STJH5N5V58CYFQ5S","name":"Restart","description":"Broadcast reset consumed by the platformer-body and objective-flow authorities on INIT/PLAY_AGAIN","tier":"domain","payloadSchema":[{"name":"id","type":"string"}]}],"transitions":[{"from":"playing","to":"playing","event":"INIT","eventId":"evt_248QSED4XXJEYP655HRVCX61XR","effects":[["set","@entity.score",0],["set","@entity.lives","@config.startLives"],["set","@entity.objectivesLeft",1],["set","@entity.celebrated",false],["emit","RESTART",{"id":"board"}],["render-ui","main",{"type":"game-shell","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"stack","direction":"horizontal","gap":"md","justify":"between","children":[{"type":"game-hud","stats":[{"label":"Score","value":"@entity.score"},{"label":"Lives","value":"@entity.lives"}]},{"type":"control-grid","kind":"dpad","directionEvents":{"left":"LEFT","right":"RIGHT","up":"JUMP"},"directionReleaseEvents":{"left":"STOP","right":"STOP"},"directionAssets":"@config.directionAssets"}]},"overlay":["if",["==","@entity.result","won"],{"type":"game-menu","title":"@config.clearTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["==","@entity.result","lost"],{"type":"game-menu","title":"@config.lostTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","camera":{"mode":"follow","zoom":1,"pos":{"x":["/","@config.worldWidth",2],"y":["/","@config.worldHeight",2]},"target":{"x":"@entity.body.x","y":"@entity.body.y"}},"projection":"side","worldWidth":"@config.worldWidth","worldHeight":"@config.worldHeight","backgroundColor":"@config.bgColor","backgroundImage":"@config.backgroundImage","keyMap":{"ArrowLeft":"LEFT","KeyA":"LEFT","ArrowRight":"RIGHT","KeyD":"RIGHT","ArrowUp":"JUMP","KeyW":"JUMP","Space":"JUMP"},"keyUpMap":{"ArrowLeft":"STOP","KeyA":"STOP","ArrowRight":"STOP","KeyD":"STOP"},"drawables":[{"type":"draw-sprite-layer","items":["array/map","@config.platforms",["fn","p",{"type":"draw-sprite","position":{"x":["object/get","@p","x"],"y":["object/get","@p","y"]},"width":["object/get","@p","width"],"height":["object/get","@p","height"],"asset":["object/get","@config.tileSprites",["object/get","@p","type"]]}]]},{"type":"draw-sprite-layer","items":[["object/merge",{"type":"draw-sprite","position":{"x":"@entity.body.x","y":"@entity.body.y"},"width":"@entity.body.width","height":"@entity.body.height","frame":"@entity.frame","flipX":["not","@entity.body.facingRight"]},{"asset":["object/merge","@config.playerSprite",{"sprite":["if","@entity.body.grounded",["if",["!=","@entity.body.vx",0],["if",["==",["%","@entity.frame",2],0],"adventurer_walk1.png","adventurer_walk2.png"],"adventurer_idle.png"],"adventurer_jump.png"]}]}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets"}]}]}]]},{"from":"playing","to":"playing","event":"LEFT","eventId":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_STEER",{"dir":-1}]]},{"from":"playing","to":"playing","event":"RIGHT","eventId":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_STEER",{"dir":1}]]},{"from":"playing","to":"playing","event":"STOP","eventId":"evt_8NJC7V5P00V00DJPD50NX21VB7","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_STEER",{"dir":0}]]},{"from":"playing","to":"playing","event":"JUMP","eventId":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","guard":["==","@entity.result","none"],"effects":[["emit","PLAT_JUMP",{}]]},{"from":"playing","to":"playing","event":"PLAT_GOAL","eventId":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","guard":["==","@entity.result","none"],"effects":[["set","@entity.score",["+","@entity.score","@config.goalScore"]],["set","@entity.objectivesLeft",0],["emit","BURST",{"particles":["array/map",["array/filter","@config.platforms",["fn","p",["==",["object/get","@p","id",""],"@payload.id"]]],["fn","p",{"id":["str/concat","fx-goal-","@payload.id"],"type":"score","x":"@payload.x","z":"@payload.y","message":["str/concat","+","@config.goalScore"],"ttl":3}]]}],["emit","PROGRESS",{"objectivesLeft":0,"movesLeft":"@entity.lives"}]]},{"from":"playing","to":"playing","event":"PLAT_HAZARD","eventId":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","guard":["==","@entity.result","none"],"effects":[["if",["<=",["-","@entity.lives",1],0],["do",["set","@entity.lives",0],["emit","PROGRESS",{"objectivesLeft":1,"movesLeft":0}]],["do",["set","@entity.lives",["-","@entity.lives",1]],["emit","BURST",{"particles":["array/map",["array/filter","@config.platforms",["fn","p",["==",["object/get","@p","id",""],"@payload.id"]]],["fn","p",{"id":["str/concat","fx-hazard-","@payload.id"],"type":"damage","x":"@payload.x","z":"@payload.y","message":"-1","ttl":3}]]}],["emit","PLAT_PLACE",{"x":"@config.respawnX","y":"@config.respawnY"}]]]]},{"from":"playing","to":"playing","event":"PLAT_FELL","eventId":"evt_2ZD4176MB0A5GE69YQ395YJEY6","guard":["==","@entity.result","none"],"effects":[["if",["<=",["-","@entity.lives",1],0],["do",["set","@entity.lives",0],["emit","PROGRESS",{"objectivesLeft":1,"movesLeft":0}]],["do",["set","@entity.lives",["-","@entity.lives",1]],["emit","BURST",{"particles":["array/map",["fx-fell"],["fn","fid",{"id":"@fid","type":"damage","x":"@payload.x","z":"@config.worldHeight","message":"-1","ttl":3}]]}],["emit","PLAT_PLACE",{"x":"@config.respawnX","y":"@config.respawnY"}]]]]},{"from":"playing","to":"playing","event":"GAME_END","eventId":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","guard":["==","@entity.celebrated",false],"effects":[["set","@entity.celebrated",true]]},{"from":"playing","to":"playing","event":"PLAY_AGAIN","eventId":"evt_572THF84H428J134PJPPR5WYG5","effects":[["set","@entity.score",0],["set","@entity.lives","@config.startLives"],["set","@entity.objectivesLeft",1],["set","@entity.celebrated",false],["emit","RESTART",{"id":"board"}]]}]},"ticks":[{"name":"renderTick","interval":100,"effects":[["set","@entity.frame",["%",["+","@entity.frame",1],8]],["render-ui","main",{"type":"game-shell","backgroundAsset":"@config.backgroundAsset","hudBackgroundAsset":"@config.hudBackgroundAsset","hud":{"type":"stack","direction":"horizontal","gap":"md","justify":"between","children":[{"type":"game-hud","stats":[{"label":"Score","value":"@entity.score"},{"label":"Lives","value":"@entity.lives"}]},{"type":"control-grid","kind":"dpad","directionEvents":{"left":"LEFT","right":"RIGHT","up":"JUMP"},"directionReleaseEvents":{"left":"STOP","right":"STOP"},"directionAssets":"@config.directionAssets"}]},"overlay":["if",["==","@entity.result","won"],{"type":"game-menu","title":"@config.clearTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},["if",["==","@entity.result","lost"],{"type":"game-menu","title":"@config.lostTitle","subtitle":["str/concat","Score: ","@entity.score"],"options":[{"id":"again","label":"Play Again","event":"PLAY_AGAIN","variant":"primary"}]},null]],"children":[{"type":"canvas","camera":{"mode":"follow","zoom":1,"pos":{"x":["/","@config.worldWidth",2],"y":["/","@config.worldHeight",2]},"target":{"x":"@entity.body.x","y":"@entity.body.y"}},"projection":"side","worldWidth":"@config.worldWidth","worldHeight":"@config.worldHeight","backgroundColor":"@config.bgColor","backgroundImage":"@config.backgroundImage","keyMap":{"ArrowLeft":"LEFT","KeyA":"LEFT","ArrowRight":"RIGHT","KeyD":"RIGHT","ArrowUp":"JUMP","KeyW":"JUMP","Space":"JUMP"},"keyUpMap":{"ArrowLeft":"STOP","KeyA":"STOP","ArrowRight":"STOP","KeyD":"STOP"},"drawables":[{"type":"draw-sprite-layer","items":["array/map","@config.platforms",["fn","p",{"type":"draw-sprite","position":{"x":["object/get","@p","x"],"y":["object/get","@p","y"]},"width":["object/get","@p","width"],"height":["object/get","@p","height"],"asset":["object/get","@config.tileSprites",["object/get","@p","type"]]}]]},{"type":"draw-sprite-layer","items":[["object/merge",{"type":"draw-sprite","position":{"x":"@entity.body.x","y":"@entity.body.y"},"width":"@entity.body.width","height":"@entity.body.height","frame":"@entity.frame","flipX":["not","@entity.body.facingRight"]},{"asset":["object/merge","@config.playerSprite",{"sprite":["if","@entity.body.grounded",["if",["!=","@entity.body.vx",0],["if",["==",["%","@entity.frame",2],0],"adventurer_walk1.png","adventurer_walk2.png"],"adventurer_idle.png"],"adventurer_jump.png"]}]}]]},{"type":"draw-fx-layer","items":"@entity.fx","tickMs":500,"presets":"@config.fxPresets"}]}]}]]}],"config":{"worldWidth":{"type":"number","default":800,"label":"World Width","description":"World pixel width (camera + canvas bounds)","tier":"presentation"},"respawnY":{"type":"number","default":320,"label":"Respawn Y","description":"Y the body teleports to after hazard/pit damage (matches BodyAuthority spawn.y)","tier":"domain"},"clearTitle":{"type":"string","default":"YOU WIN!","label":"Clear Title","description":"Overlay title when the goal tile is reached","tier":"presentation"},"playerSprite":{"type":"Asset","default":{},"label":"Player Sprite","description":"Player sprite Asset; its atlas must expose adventurer_idle/walk1/walk2/jump frames (or override the sprite-selection expression)","tier":"presentation","properties":{"variant":{"name":"variant","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"aspect":{"name":"aspect","type":"string","required":false}}},"directionAssets":{"type":"DirectionAssets","default":{},"label":"Direction Assets","description":"D-pad direction icon sprites","tier":"presentation","properties":{"left":{"name":"left","type":"object","required":false,"properties":{"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"url":{"name":"url","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false}}},"down":{"name":"down","type":"object","required":false,"properties":{"url":{"name":"url","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"aspect":{"name":"aspect","type":"string","required":false},"name":{"name":"name","type":"string","required":false}}},"up":{"name":"up","type":"object","required":false,"properties":{"sprite":{"name":"sprite","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"style":{"name":"style","type":"string","required":false}}},"right":{"name":"right","type":"object","required":false,"properties":{"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false}}}}},"tileSprites":{"type":"Map<string,Asset>","default":{},"label":"Tile Sprites","description":"Map of platform type (ground/platform/hazard/goal) to tile sprite Asset","tier":"presentation","items":{"type":"object","properties":{"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"dimension":{"name":"dimension","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"name":{"name":"name","type":"string","required":false}}}},"platforms":{"type":"[PlatformerPlatform]","default":[{"id":"g0","x":0,"y":368,"width":800,"height":32,"type":"ground"},{"id":"p1","x":150,"y":280,"width":160,"height":16,"type":"platform"},{"id":"p2","x":420,"y":220,"width":160,"height":16,"type":"platform"},{"id":"h1","x":580,"y":300,"width":80,"height":16,"type":"hazard"},{"id":"goal","x":700,"y":340,"width":64,"height":28,"type":"goal"}],"label":"Platforms","description":"Level geometry rendered by the canvas (must match BodyAuthority.platforms, which owns collision — override both together)","tier":"domain","items":{"type":"object","properties":{"width":{"name":"width","type":"number","required":true},"x":{"name":"x","type":"number","required":true},"id":{"name":"id","type":"string","required":false},"y":{"name":"y","type":"number","required":true},"height":{"name":"height","type":"number","required":true},"type":{"name":"type","type":"string","required":false,"values":["ground","platform","hazard","goal"]}}}},"hudBackgroundAsset":{"type":"Asset","default":{},"label":"HUD Background Asset","description":"HUD panel background sprite (theme chrome)","tier":"presentation","properties":{"url":{"name":"url","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"style":{"name":"style","type":"string","required":false},"name":{"name":"name","type":"string","required":false}}},"worldHeight":{"type":"number","default":400,"label":"World Height","description":"World pixel height (camera + canvas bounds)","tier":"presentation"},"goalScore":{"type":"number","default":100,"label":"Goal Score","description":"Points awarded when the body touches the goal tile","tier":"domain"},"fxPresets":{"type":"[FxPreset]","default":[{"type":"score","color":"#ffe066","color2":"#fff4cc","shape":"spark","size":22,"count":6,"glow":0.15,"vy":-35},{"type":"damage","color":"#ef4444","color2":"#7f1d1d","shape":"spark","size":20,"count":5,"glow":0.12,"gravity":40}],"label":"Fx Presets","description":"This board's effect vocabulary — one look/recipe row per fx type its intent trait emits (goal score, hazard/fell damage).","tier":"presentation","items":{"type":"object","properties":{"vy":{"name":"vy","type":"number","required":false},"shape":{"name":"shape","type":"string","required":false},"type":{"name":"type","type":"string","required":true},"color2":{"name":"color2","type":"string","required":false},"size":{"name":"size","type":"number","required":false},"effect":{"name":"effect","type":"string","required":false},"color":{"name":"color","type":"string","required":false},"vz":{"name":"vz","type":"number","required":false},"glow":{"name":"glow","type":"number","required":false},"particleCount":{"name":"particleCount","type":"number","required":false},"vx":{"name":"vx","type":"number","required":false},"gravity":{"name":"gravity","type":"number","required":false},"count":{"name":"count","type":"number","required":false},"space":{"name":"space","type":"string","required":false}}}},"bgColor":{"type":"string","default":"#5c94fc","label":"Bg Color","description":"Canvas background color","tier":"presentation"},"respawnX":{"type":"number","default":80,"label":"Respawn X","description":"X the body teleports to after hazard/pit damage (matches BodyAuthority spawn.x)","tier":"domain"},"backgroundAsset":{"type":"Asset","default":{},"label":"Background Asset","description":"Game-shell background panel sprite (theme chrome)","tier":"presentation","properties":{"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"sprite":{"name":"sprite","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"category":{"name":"category","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"style":{"name":"style","type":"string","required":false}}},"startLives":{"type":"number","default":3,"label":"Start Lives","description":"Lives seeded on INIT/PLAY_AGAIN; hazard or pit contact costs one, zero loses the round","tier":"domain"},"lostTitle":{"type":"string","default":"GAME OVER","label":"Lost Title","description":"Overlay title when lives run out","tier":"presentation"},"backgroundImage":{"type":"Asset","default":{},"label":"Background Image","description":"Canvas background image Asset","tier":"presentation","properties":{"animations":{"name":"animations","type":"array","required":false,"items":{"type":"string"}},"sprite":{"name":"sprite","type":"string","required":false},"dimension":{"name":"dimension","type":"string","required":false},"atlas":{"name":"atlas","type":"string","required":false},"variant":{"name":"variant","type":"string","required":false},"style":{"name":"style","type":"string","required":false},"aspect":{"name":"aspect","type":"string","required":false},"role":{"name":"role","type":"string","required":false},"name":{"name":"name","type":"string","required":false},"url":{"name":"url","type":"string","required":false},"thumbnailUrl":{"name":"thumbnailUrl","type":"string","required":false},"category":{"name":"category","type":"string","required":false}}}},"scope":"instance"}],"pages":[{"name":"PlatformerBoard2DPage","id":"pag_FGA3J47NQSTVWQV8J01AGPCQ75","path":"/platformer-board-2d","traits":[{"ref":"BodyAuthority","refId":"trt_5FKFKR2VJMDSAAZZYX4X7203C6"},{"ref":"FxDecay","refId":"trt_D2DXW78E4K729RFBMP7VP3KFVE"},{"ref":"RoundGate","refId":"trt_5255CDBAPCNB6CP1TY7S517KAW"},{"ref":"PlatformerIntent","refId":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"}]}],"types":{"Asset":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}],"BoardCurveMod":[{"name":"x0","type":"number","required":true},{"name":"x1","type":"number","required":true},{"name":"a","type":"number","required":true},{"name":"b","type":"number","required":true},{"name":"h","type":"number","required":true},{"name":"k","type":"number","required":true}],"DirectionAssets":[{"name":"up","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"down","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"left","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]},{"name":"right","type":"object","properties":[{"name":"url","type":"asset"},{"name":"atlas","type":"asset"},{"name":"sprite","type":"string"},{"name":"role","type":"string"},{"name":"category","type":"string"},{"name":"animations","type":"[string]"},{"name":"style","type":"string"},{"name":"variant","type":"string"},{"name":"dimension","type":"string"},{"name":"aspect","type":"string"},{"name":"name","type":"string"},{"name":"thumbnailUrl","type":"string"}]}],"Fx":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"}],"FxPreset":[{"name":"type","type":"string","required":true},{"name":"color","type":"string"},{"name":"color2","type":"string"},{"name":"size","type":"number"},{"name":"shape","type":"string"},{"name":"count","type":"number"},{"name":"glow","type":"number"},{"name":"gravity","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"particleCount","type":"number"}],"PlatformerBody":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"grounded","type":"boolean"},{"name":"facingRight","type":"boolean"}],"PlatformerPlatform":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"type","type":"string","values":["ground","platform","hazard","goal"]}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_61HQHHDT1HX0RJ6ZVBPCD232W6":{"id":"ent_61HQHHDT1HX0RJ6ZVBPCD232W6","kind":"entity","bakedName":"GameState","curName":"GameState","renames":[],"owner":"workspace"},"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD":{"id":"evt_0EJ5ER1WXXYEYX2Q6WXE6N26JD","kind":"event","bakedName":"JUMP","curName":"JUMP","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_248QSED4XXJEYP655HRVCX61XR":{"id":"evt_248QSED4XXJEYP655HRVCX61XR","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5":{"id":"evt_2XHG4NHSNXWTYJG65FT0ZD1PK5","kind":"event","bakedName":"LEFT","curName":"LEFT","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_2ZD4176MB0A5GE69YQ395YJEY6":{"id":"evt_2ZD4176MB0A5GE69YQ395YJEY6","kind":"event","bakedName":"PLAT_FELL","curName":"PLAT_FELL","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_572THF84H428J134PJPPR5WYG5":{"id":"evt_572THF84H428J134PJPPR5WYG5","kind":"event","bakedName":"PLAY_AGAIN","curName":"PLAY_AGAIN","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_8NJC7V5P00V00DJPD50NX21VB7":{"id":"evt_8NJC7V5P00V00DJPD50NX21VB7","kind":"event","bakedName":"STOP","curName":"STOP","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_AR30KSXXWNYYANG8RTZZ2D0S88":{"id":"evt_AR30KSXXWNYYANG8RTZZ2D0S88","kind":"event","bakedName":"PLAT_GOAL","curName":"PLAT_GOAL","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_CYC6WPFHC4RP2CT9D39G5MBPZA":{"id":"evt_CYC6WPFHC4RP2CT9D39G5MBPZA","kind":"event","bakedName":"GAME_END","curName":"GAME_END","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_EKTDPMVQC6VP3DNZHHR5K67F8A":{"id":"evt_EKTDPMVQC6VP3DNZHHR5K67F8A","kind":"event","bakedName":"PLAT_JUMP","curName":"PLAT_JUMP","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S":{"id":"evt_EVZMZG2ZK5FSJZJ8YMAXC6CN2S","kind":"event","bakedName":"PLAT_HAZARD","curName":"PLAT_HAZARD","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP":{"id":"evt_W6ENGBZKZ5SZJZJE3BJKFJKJEP","kind":"event","bakedName":"PLAT_STEER","curName":"PLAT_STEER","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_WMY24M7KN5STJH5N5V58CYFQ5S":{"id":"evt_WMY24M7KN5STJH5N5V58CYFQ5S","kind":"event","bakedName":"RESTART","curName":"RESTART","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07":{"id":"evt_WVVS821Y1EZ0Q5NRS8KZ6ZED07","kind":"event","bakedName":"BURST","curName":"BURST","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_Y9TT5R67FA3QN5VRKKT0GADFV4":{"id":"evt_Y9TT5R67FA3QN5VRKKT0GADFV4","kind":"event","bakedName":"RIGHT","curName":"RIGHT","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_Z005D8QEYZQFFT0A91TRVQKETG":{"id":"evt_Z005D8QEYZQFFT0A91TRVQKETG","kind":"event","bakedName":"PROGRESS","curName":"PROGRESS","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"evt_Z7SSF9ZW23Y11S011QC34AWYJN":{"id":"evt_Z7SSF9ZW23Y11S011QC34AWYJN","kind":"event","bakedName":"PLAT_PLACE","curName":"PLAT_PLACE","renames":[],"owner":"workspace","parent":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C"},"orb_GAWQKAB1NMGTTFMJMAAPEMCENK":{"id":"orb_GAWQKAB1NMGTTFMJMAAPEMCENK","kind":"orbital","bakedName":"PlatformerBoard2DOrbital","curName":"PlatformerBoard2DOrbital","renames":[],"owner":"workspace"},"pag_FGA3J47NQSTVWQV8J01AGPCQ75":{"id":"pag_FGA3J47NQSTVWQV8J01AGPCQ75","kind":"page","bakedName":"PlatformerBoard2DPage","curName":"PlatformerBoard2DPage","renames":[],"owner":"workspace"},"trt_5255CDBAPCNB6CP1TY7S517KAW":{"id":"trt_5255CDBAPCNB6CP1TY7S517KAW","kind":"trait","bakedName":"RoundGate","curName":"RoundGate","renames":[],"owner":"workspace"},"trt_5FKFKR2VJMDSAAZZYX4X7203C6":{"id":"trt_5FKFKR2VJMDSAAZZYX4X7203C6","kind":"trait","bakedName":"BodyAuthority","curName":"BodyAuthority","renames":[],"owner":"workspace"},"trt_B9T7F5FV7XXKYXS80BPJRWMT3C":{"id":"trt_B9T7F5FV7XXKYXS80BPJRWMT3C","kind":"trait","bakedName":"PlatformerIntent","curName":"PlatformerIntent","renames":[],"owner":"workspace"},"trt_D2DXW78E4K729RFBMP7VP3KFVE":{"id":"trt_D2DXW78E4K729RFBMP7VP3KFVE","kind":"trait","bakedName":"FxDecay","curName":"FxDecay","renames":[],"owner":"workspace"}}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"std-platformer-puzzle","version":"1.0.0","description":"Platformer + puzzle genre substrate organism. Composes the standard authorities — platformer-body, pickup, objective-flow, choice-gate, fx-particles, fx-narrative, tutorial-overlay — as the pillars a level rebinds: agency (body), challenge (choice), goal (objective), reward (pickup), feedback (fx, narrative, tutorial). Levels rebind these authorities locally and add their own geometry, render, and math rules. Math targets and grade levels stay downstream in the domain package; this substrate is domain-agnostic.","orbitals":[{"name":"PlatformerPuzzleOrbital","id":"orb_AD67KTBBMGNT8CBT8DN3GA509P","uses":[{"from":"std/behaviors/std-platformer-body","as":"Body"},{"from":"std/behaviors/std-pickup","as":"Pickup"},{"from":"std/behaviors/std-objective-flow","as":"Gate"},{"from":"std/behaviors/std-choice-gate","as":"Choice"},{"from":"std/behaviors/std-fx-particles","as":"Particles"},{"from":"std/behaviors/std-fx-narrative","as":"Narrative"},{"from":"std/behaviors/std-tutorial-overlay","as":"Tutorial"}],"entity":{"name":"PlatformerPuzzleData","id":"ent_48M4BFTCXY6EZ1HNAETCN623KW","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"body","type":"object","default":{"x":0,"y":0,"width":1,"height":1,"vx":0,"vy":0,"grounded":false,"facingRight":true},"properties":{"y":{"name":"y","type":"number","required":true},"vx":{"name":"vx","type":"number","required":false},"vy":{"name":"vy","type":"number","required":false},"grounded":{"name":"grounded","type":"boolean","required":false},"width":{"name":"width","type":"number","required":true},"height":{"name":"height","type":"number","required":true},"facingRight":{"name":"facingRight","type":"boolean","required":false},"x":{"name":"x","type":"number","required":true}}},{"name":"fell","type":"boolean","default":false},{"name":"hazardId","type":"string","default":""},{"name":"goalId","type":"string","default":""},{"name":"skating","type":"boolean","default":false},{"name":"curveMods","type":"array","default":[],"items":{"type":"object","properties":{"h":{"name":"h","type":"number","required":true},"a":{"name":"a","type":"number","required":true},"x0":{"name":"x0","type":"number","required":true},"x1":{"name":"x1","type":"number","required":true},"b":{"name":"b","type":"number","required":false},"k":{"name":"k","type":"number","required":true}}}},{"name":"tuning","type":"object","default":{},"properties":{"gravity":{"name":"gravity","type":"number","required":false},"jumpStrength":{"name":"jumpStrength","type":"number","required":false},"moveSpeed":{"name":"moveSpeed","type":"number","required":false}}},{"name":"pickups","type":"array","default":[],"items":{"type":"object","properties":{"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true},"message":{"name":"message","type":"string","required":false},"active":{"name":"active","type":"boolean","required":false},"id":{"name":"id","type":"string","required":true},"glyph":{"name":"glyph","type":"string","required":false},"collected":{"name":"collected","type":"boolean","required":false},"kind":{"name":"kind","type":"string","required":true}}}},{"name":"pickupCompleted","type":"boolean","default":false},{"name":"total","type":"number","default":0},{"name":"choices","type":"array","default":[],"items":{"type":"object","properties":{"options":{"name":"options","type":"array","required":true,"items":{"type":"object","properties":{"correct":{"name":"correct","type":"boolean","required":true},"dx":{"name":"dx","type":"number","required":true},"label":{"name":"label","type":"string","required":true},"id":{"name":"id","type":"string","required":true}}}},"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true},"hint":{"name":"hint","type":"string","required":false},"solved":{"name":"solved","type":"boolean","required":false},"chosen":{"name":"chosen","type":"string","required":false},"id":{"name":"id","type":"string","required":true}}}},{"name":"result","type":"string","default":"none"},{"name":"fx","type":"array","default":[],"items":{"type":"object","properties":{"z":{"name":"z","type":"number","required":false},"color":{"name":"color","type":"string","required":false},"maxTtl":{"name":"maxTtl","type":"number","required":false},"effect":{"name":"effect","type":"string","required":false},"size":{"name":"size","type":"number","required":false},"vz":{"name":"vz","type":"number","required":false},"id":{"name":"id","type":"string","required":true},"vx":{"name":"vx","type":"number","required":false},"y":{"name":"y","type":"number","required":false},"type":{"name":"type","type":"string","required":true},"vy":{"name":"vy","type":"number","required":false},"animation":{"name":"animation","type":"string","required":false},"space":{"name":"space","type":"string","required":false},"bornAt":{"name":"bornAt","type":"number","required":false},"message":{"name":"message","type":"string","required":false},"particleCount":{"name":"particleCount","type":"number","required":false},"ttl":{"name":"ttl","type":"number","required":true},"x":{"name":"x","type":"number","required":true}}}},{"name":"narrativeSeq","type":"number","default":0},{"name":"lastNarrative","type":"string","default":""},{"name":"step","type":"number","default":0},{"name":"done","type":"boolean","default":false},{"name":"score","type":"number","default":0},{"name":"lives","type":"number","default":3},{"name":"objectivesLeft","type":"number","default":1},{"name":"celebrated","type":"boolean","default":false}],"shared":true},"traits":[{"ref":"Body.traits.PlatformerBody","id":"trt_W7ESKWTAJ3591SRC7SNH60RS8K","name":"PlatformerPuzzleBody","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"SET_TUNING":"SET_TUNING","BODY_LANDED":"BODY_LANDED","BODY_MOVED":"BODY_MOVED","PLACE":"PLACE","BODY_GOAL":"BODY_GOAL","CURVE_MOD_ADD":"CURVE_MOD_ADD","JUMP":"JUMP","BODY_JUMPED":"BODY_JUMPED","BODY_HAZARD":"BODY_HAZARD","STEER":"STEER","CURVE_MOD_CLEAR":"CURVE_MOD_CLEAR","BODY_SKATE_END":"BODY_SKATE_END","BODY_SKATE_START":"BODY_SKATE_START","BODY_FELL":"BODY_FELL"}},{"ref":"Pickup.traits.Pickup","id":"trt_4SDTVT9WT0YD0DKQVYD36NP4MR","name":"PlatformerPuzzlePickup","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"BODY_MOVED":"BODY_MOVED"},"listens":[{"event":"BODY_MOVED","triggers":"BODY_MOVED","source":{"kind":"trait","trait":"PlatformerPuzzleBody"}}]},{"ref":"Gate.traits.ObjectiveFlow","id":"trt_XE6XEP28CG468BMC7NCZB92850","name":"PlatformerPuzzleObjective","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"GAME_END":"GAME_END","PROGRESS":"PROGRESS"}},{"ref":"Choice.traits.ChoiceGate","id":"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85","name":"PlatformerPuzzleChoice","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"BODY_MOVED":"BODY_MOVED"},"listens":[{"event":"BODY_MOVED","triggers":"BODY_MOVED","source":{"kind":"trait","trait":"PlatformerPuzzleBody"}}]},{"ref":"Particles.traits.FxParticles","id":"trt_BJPY0TADQ66VK8R8MRRE7HF9YD","name":"PlatformerPuzzleFx","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"BURST":"BURST"},"listens":[{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"PlatformerPuzzleNarrative"}}]},{"ref":"Narrative.traits.FxNarrative","id":"trt_Y0JVTH2WGJE893GKPC5Z7QW95X","name":"PlatformerPuzzleNarrative","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"NARRATE":"NARRATE","BURST":"BURST"}},{"ref":"Tutorial.traits.TutorialOverlay","id":"trt_7YMPTJBFVPQXVFHPQF024MNMNH","name":"PlatformerPuzzleTutorial","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"autoShow":{"type":"unknown","default":false},"previewTrait":{"type":"unknown","default":"@trait.PlatformerPuzzleNoopPreview"}},"events":{"SHOW":"SHOW","TUTORIAL_DONE":"TUTORIAL_DONE"},"listens":[{"event":"SHOW","triggers":"SHOW","source":{"kind":"trait","trait":"PlatformerPuzzleNarrative"}}]},{"name":"PlatformerPuzzleNoopPreview","id":"trt_6B8H0MKM67T33HM54SDQFM86DT","effectRow":[{"kind":"render-ui","resource":"overlay"}],"category":"interaction","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","entityRefIds":{"PlatformerPuzzleData":"ent_48M4BFTCXY6EZ1HNAETCN623KW"},"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"INIT","id":"evt_SMBN3TW54R2JC03TJ1YZPWCDZR","name":"Initialize"}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_SMBN3TW54R2JC03TJ1YZPWCDZR","effects":[["render-ui","overlay",null]]}]},"scope":"instance"}],"pages":[{"name":"PlatformerPuzzlePage","id":"pag_43XSY21MZ2TFH056YW6KGMCA66","path":"/platformer-puzzle","traits":[{"ref":"PlatformerPuzzleBody","refId":"trt_W7ESKWTAJ3591SRC7SNH60RS8K"},{"ref":"PlatformerPuzzlePickup","refId":"trt_4SDTVT9WT0YD0DKQVYD36NP4MR"},{"ref":"PlatformerPuzzleObjective","refId":"trt_XE6XEP28CG468BMC7NCZB92850"},{"ref":"PlatformerPuzzleChoice","refId":"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85"},{"ref":"PlatformerPuzzleFx","refId":"trt_BJPY0TADQ66VK8R8MRRE7HF9YD"},{"ref":"PlatformerPuzzleNarrative","refId":"trt_Y0JVTH2WGJE893GKPC5Z7QW95X"},{"ref":"PlatformerPuzzleTutorial","refId":"trt_7YMPTJBFVPQXVFHPQF024MNMNH"}]}],"types":{"BodyDriftRegion":[{"name":"id","type":"string","required":true},{"name":"x0","type":"number","required":true},{"name":"x1","type":"number","required":true},{"name":"y0","type":"number","required":true},{"name":"y1","type":"number","required":true},{"name":"ax","type":"number","required":true},{"name":"ay","type":"number","required":true}],"ChoiceGate":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"hint","type":"string"},{"name":"options","type":"[object]","required":true,"properties":[{"name":"id","type":"string","required":true},{"name":"dx","type":"number","required":true},{"name":"label","type":"string","required":true},{"name":"correct","type":"boolean","required":true}]},{"name":"solved","type":"boolean"},{"name":"chosen","type":"string"}],"ChoiceOption":[{"name":"id","type":"string","required":true},{"name":"dx","type":"number","required":true},{"name":"label","type":"string","required":true},{"name":"correct","type":"boolean","required":true}],"CurveMod":[{"name":"x0","type":"number","required":true},{"name":"x1","type":"number","required":true},{"name":"a","type":"number","required":true},{"name":"b","type":"number"},{"name":"h","type":"number","required":true},{"name":"k","type":"number","required":true}],"Fx":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"},{"name":"animation","type":"string"}],"FxPreset":[{"name":"type","type":"string","required":true},{"name":"color","type":"string"},{"name":"color2","type":"string"},{"name":"size","type":"number"},{"name":"shape","type":"string"},{"name":"count","type":"number"},{"name":"glow","type":"number"},{"name":"gravity","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"particleCount","type":"number"},{"name":"animation","type":"string"}],"NarrativeCue":[{"name":"text","type":"string","required":true},{"name":"style","type":"string","values":["hint","fact","warn","celebrate"]},{"name":"x","type":"number"},{"name":"y","type":"number"},{"name":"ttl","type":"number"},{"name":"space","type":"string","values":["screen","world"]}],"PickupFeature":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"kind","type":"string","required":true},{"name":"glyph","type":"string"},{"name":"message","type":"string"},{"name":"collected","type":"boolean"},{"name":"active","type":"boolean"}],"PlatformerBody":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"grounded","type":"boolean"},{"name":"facingRight","type":"boolean"}],"PlatformerCurveSample":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}],"PlatformerPlatform":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"type","type":"string","values":["ground","platform","hazard","goal"]}],"PlatformerTuning":[{"name":"jumpStrength","type":"number"},{"name":"moveSpeed","type":"number"},{"name":"gravity","type":"number"}],"StyleDef":[{"name":"color","type":"string","required":true},{"name":"size","type":"number","required":true},{"name":"ttl","type":"number","required":true},{"name":"effect","type":"string","required":true}],"TutorialStep":[{"name":"id","type":"string","required":true},{"name":"title","type":"string","required":true},{"name":"body","type":"string"},{"name":"demoId","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_48M4BFTCXY6EZ1HNAETCN623KW":{"id":"ent_48M4BFTCXY6EZ1HNAETCN623KW","kind":"entity","bakedName":"PlatformerPuzzleData","curName":"PlatformerPuzzleData","renames":[],"owner":"workspace"},"evt_SMBN3TW54R2JC03TJ1YZPWCDZR":{"id":"evt_SMBN3TW54R2JC03TJ1YZPWCDZR","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_6B8H0MKM67T33HM54SDQFM86DT"},"orb_AD67KTBBMGNT8CBT8DN3GA509P":{"id":"orb_AD67KTBBMGNT8CBT8DN3GA509P","kind":"orbital","bakedName":"PlatformerPuzzleOrbital","curName":"PlatformerPuzzleOrbital","renames":[],"owner":"workspace"},"pag_43XSY21MZ2TFH056YW6KGMCA66":{"id":"pag_43XSY21MZ2TFH056YW6KGMCA66","kind":"page","bakedName":"PlatformerPuzzlePage","curName":"PlatformerPuzzlePage","renames":[],"owner":"workspace"},"trt_4SDTVT9WT0YD0DKQVYD36NP4MR":{"id":"trt_4SDTVT9WT0YD0DKQVYD36NP4MR","kind":"trait","bakedName":"PlatformerPuzzlePickup","curName":"PlatformerPuzzlePickup","renames":[],"owner":"workspace"},"trt_6B8H0MKM67T33HM54SDQFM86DT":{"id":"trt_6B8H0MKM67T33HM54SDQFM86DT","kind":"trait","bakedName":"PlatformerPuzzleNoopPreview","curName":"PlatformerPuzzleNoopPreview","renames":[],"owner":"workspace"},"trt_7YMPTJBFVPQXVFHPQF024MNMNH":{"id":"trt_7YMPTJBFVPQXVFHPQF024MNMNH","kind":"trait","bakedName":"PlatformerPuzzleTutorial","curName":"PlatformerPuzzleTutorial","renames":[],"owner":"workspace"},"trt_BJPY0TADQ66VK8R8MRRE7HF9YD":{"id":"trt_BJPY0TADQ66VK8R8MRRE7HF9YD","kind":"trait","bakedName":"PlatformerPuzzleFx","curName":"PlatformerPuzzleFx","renames":[],"owner":"workspace"},"trt_W7ESKWTAJ3591SRC7SNH60RS8K":{"id":"trt_W7ESKWTAJ3591SRC7SNH60RS8K","kind":"trait","bakedName":"PlatformerPuzzleBody","curName":"PlatformerPuzzleBody","renames":[],"owner":"workspace"},"trt_XE6XEP28CG468BMC7NCZB92850":{"id":"trt_XE6XEP28CG468BMC7NCZB92850","kind":"trait","bakedName":"PlatformerPuzzleObjective","curName":"PlatformerPuzzleObjective","renames":[],"owner":"workspace"},"trt_Y0JVTH2WGJE893GKPC5Z7QW95X":{"id":"trt_Y0JVTH2WGJE893GKPC5Z7QW95X","kind":"trait","bakedName":"PlatformerPuzzleNarrative","curName":"PlatformerPuzzleNarrative","renames":[],"owner":"workspace"},"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85":{"id":"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85","kind":"trait","bakedName":"PlatformerPuzzleChoice","curName":"PlatformerPuzzleChoice","renames":[],"owner":"workspace"}}}}
|
|
1
|
+
{"name":"std-platformer-puzzle","version":"1.0.0","description":"Platformer + puzzle genre substrate organism. Composes the standard authorities — platformer-body, pickup, objective-flow, choice-gate, fx-particles, fx-narrative, tutorial-overlay — as the pillars a level rebinds: agency (body), challenge (choice), goal (objective), reward (pickup), feedback (fx, narrative, tutorial). Levels rebind these authorities locally and add their own geometry, render, and math rules. Math targets and grade levels stay downstream in the domain package; this substrate is domain-agnostic.","orbitals":[{"name":"PlatformerPuzzleOrbital","id":"orb_AD67KTBBMGNT8CBT8DN3GA509P","uses":[{"from":"std/behaviors/std-platformer-body","as":"Body"},{"from":"std/behaviors/std-pickup","as":"Pickup"},{"from":"std/behaviors/std-objective-flow","as":"Gate"},{"from":"std/behaviors/std-choice-gate","as":"Choice"},{"from":"std/behaviors/std-fx-particles","as":"Particles"},{"from":"std/behaviors/std-fx-narrative","as":"Narrative"},{"from":"std/behaviors/std-tutorial-overlay","as":"Tutorial"}],"entity":{"name":"PlatformerPuzzleData","id":"ent_48M4BFTCXY6EZ1HNAETCN623KW","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"body","type":"object","default":{"x":0,"y":0,"width":1,"height":1,"vx":0,"vy":0,"grounded":false,"facingRight":true},"properties":{"width":{"name":"width","type":"number","required":true},"vx":{"name":"vx","type":"number","required":false},"x":{"name":"x","type":"number","required":true},"vy":{"name":"vy","type":"number","required":false},"y":{"name":"y","type":"number","required":true},"height":{"name":"height","type":"number","required":true},"grounded":{"name":"grounded","type":"boolean","required":false},"facingRight":{"name":"facingRight","type":"boolean","required":false}}},{"name":"fell","type":"boolean","default":false},{"name":"hazardId","type":"string","default":""},{"name":"goalId","type":"string","default":""},{"name":"skating","type":"boolean","default":false},{"name":"curveMods","type":"array","default":[],"items":{"type":"object","properties":{"h":{"name":"h","type":"number","required":true},"a":{"name":"a","type":"number","required":true},"b":{"name":"b","type":"number","required":false},"x1":{"name":"x1","type":"number","required":true},"x0":{"name":"x0","type":"number","required":true},"k":{"name":"k","type":"number","required":true}}}},{"name":"tuning","type":"object","default":{},"properties":{"gravity":{"name":"gravity","type":"number","required":false},"moveSpeed":{"name":"moveSpeed","type":"number","required":false},"jumpStrength":{"name":"jumpStrength","type":"number","required":false}}},{"name":"pickups","type":"array","default":[],"items":{"type":"object","properties":{"glyph":{"name":"glyph","type":"string","required":false},"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true},"kind":{"name":"kind","type":"string","required":true},"id":{"name":"id","type":"string","required":true},"active":{"name":"active","type":"boolean","required":false},"message":{"name":"message","type":"string","required":false},"collected":{"name":"collected","type":"boolean","required":false}}}},{"name":"pickupCompleted","type":"boolean","default":false},{"name":"total","type":"number","default":0},{"name":"choices","type":"array","default":[],"items":{"type":"object","properties":{"solved":{"name":"solved","type":"boolean","required":false},"id":{"name":"id","type":"string","required":true},"x":{"name":"x","type":"number","required":true},"y":{"name":"y","type":"number","required":true},"hint":{"name":"hint","type":"string","required":false},"options":{"name":"options","type":"array","required":true,"items":{"type":"object","properties":{"correct":{"name":"correct","type":"boolean","required":true},"label":{"name":"label","type":"string","required":true},"id":{"name":"id","type":"string","required":true},"dx":{"name":"dx","type":"number","required":true}}}},"chosen":{"name":"chosen","type":"string","required":false}}}},{"name":"result","type":"string","default":"none"},{"name":"fx","type":"array","default":[],"items":{"type":"object","properties":{"maxTtl":{"name":"maxTtl","type":"number","required":false},"message":{"name":"message","type":"string","required":false},"space":{"name":"space","type":"string","required":false},"vx":{"name":"vx","type":"number","required":false},"effect":{"name":"effect","type":"string","required":false},"z":{"name":"z","type":"number","required":false},"y":{"name":"y","type":"number","required":false},"id":{"name":"id","type":"string","required":true},"type":{"name":"type","type":"string","required":true},"vy":{"name":"vy","type":"number","required":false},"size":{"name":"size","type":"number","required":false},"x":{"name":"x","type":"number","required":true},"vz":{"name":"vz","type":"number","required":false},"bornAt":{"name":"bornAt","type":"number","required":false},"ttl":{"name":"ttl","type":"number","required":true},"color":{"name":"color","type":"string","required":false},"particleCount":{"name":"particleCount","type":"number","required":false},"animation":{"name":"animation","type":"string","required":false}}}},{"name":"narrativeSeq","type":"number","default":0},{"name":"lastNarrative","type":"string","default":""},{"name":"step","type":"number","default":0},{"name":"done","type":"boolean","default":false},{"name":"score","type":"number","default":0},{"name":"lives","type":"number","default":3},{"name":"objectivesLeft","type":"number","default":1},{"name":"celebrated","type":"boolean","default":false}],"shared":true},"traits":[{"ref":"Body.traits.PlatformerBody","id":"trt_W7ESKWTAJ3591SRC7SNH60RS8K","name":"PlatformerPuzzleBody","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"CURVE_MOD_CLEAR":"CURVE_MOD_CLEAR","BODY_SKATE_START":"BODY_SKATE_START","SET_TUNING":"SET_TUNING","BODY_JUMPED":"BODY_JUMPED","STEER":"STEER","PLACE":"PLACE","BODY_LANDED":"BODY_LANDED","BODY_FELL":"BODY_FELL","BODY_MOVED":"BODY_MOVED","JUMP":"JUMP","CURVE_MOD_ADD":"CURVE_MOD_ADD","BODY_GOAL":"BODY_GOAL","BODY_HAZARD":"BODY_HAZARD","BODY_SKATE_END":"BODY_SKATE_END"}},{"ref":"Pickup.traits.Pickup","id":"trt_4SDTVT9WT0YD0DKQVYD36NP4MR","name":"PlatformerPuzzlePickup","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"BODY_MOVED":"BODY_MOVED"},"listens":[{"event":"BODY_MOVED","triggers":"BODY_MOVED","source":{"kind":"trait","trait":"PlatformerPuzzleBody"}}]},{"ref":"Gate.traits.ObjectiveFlow","id":"trt_XE6XEP28CG468BMC7NCZB92850","name":"PlatformerPuzzleObjective","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"PROGRESS":"PROGRESS","GAME_END":"GAME_END"}},{"ref":"Choice.traits.ChoiceGate","id":"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85","name":"PlatformerPuzzleChoice","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"BODY_MOVED":"BODY_MOVED"},"listens":[{"event":"BODY_MOVED","triggers":"BODY_MOVED","source":{"kind":"trait","trait":"PlatformerPuzzleBody"}}]},{"ref":"Particles.traits.FxParticles","id":"trt_BJPY0TADQ66VK8R8MRRE7HF9YD","name":"PlatformerPuzzleFx","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"BURST":"BURST"},"listens":[{"event":"BURST","triggers":"BURST","source":{"kind":"trait","trait":"PlatformerPuzzleNarrative"}}]},{"ref":"Narrative.traits.FxNarrative","id":"trt_Y0JVTH2WGJE893GKPC5Z7QW95X","name":"PlatformerPuzzleNarrative","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"running":{"type":"unknown","default":true}},"events":{"NARRATE":"NARRATE","BURST":"BURST"}},{"ref":"Tutorial.traits.TutorialOverlay","id":"trt_7YMPTJBFVPQXVFHPQF024MNMNH","name":"PlatformerPuzzleTutorial","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","config":{"autoShow":{"type":"unknown","default":false},"previewTrait":{"type":"unknown","default":"@trait.PlatformerPuzzleNoopPreview"}},"events":{"SHOW":"SHOW","TUTORIAL_DONE":"TUTORIAL_DONE"},"listens":[{"event":"SHOW","triggers":"SHOW","source":{"kind":"trait","trait":"PlatformerPuzzleNarrative"}}]},{"name":"PlatformerPuzzleNoopPreview","id":"trt_6B8H0MKM67T33HM54SDQFM86DT","effectRow":[{"kind":"render-ui","resource":"overlay"}],"category":"interaction","linkedEntity":"PlatformerPuzzleData","linkedEntityId":"ent_48M4BFTCXY6EZ1HNAETCN623KW","entityRefIds":{"PlatformerPuzzleData":"ent_48M4BFTCXY6EZ1HNAETCN623KW"},"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"INIT","id":"evt_SMBN3TW54R2JC03TJ1YZPWCDZR","name":"Initialize"}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_SMBN3TW54R2JC03TJ1YZPWCDZR","effects":[["render-ui","overlay",null]]}]},"scope":"instance"}],"pages":[{"name":"PlatformerPuzzlePage","id":"pag_43XSY21MZ2TFH056YW6KGMCA66","path":"/platformer-puzzle","traits":[{"ref":"PlatformerPuzzleBody","refId":"trt_W7ESKWTAJ3591SRC7SNH60RS8K"},{"ref":"PlatformerPuzzlePickup","refId":"trt_4SDTVT9WT0YD0DKQVYD36NP4MR"},{"ref":"PlatformerPuzzleObjective","refId":"trt_XE6XEP28CG468BMC7NCZB92850"},{"ref":"PlatformerPuzzleChoice","refId":"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85"},{"ref":"PlatformerPuzzleFx","refId":"trt_BJPY0TADQ66VK8R8MRRE7HF9YD"},{"ref":"PlatformerPuzzleNarrative","refId":"trt_Y0JVTH2WGJE893GKPC5Z7QW95X"},{"ref":"PlatformerPuzzleTutorial","refId":"trt_7YMPTJBFVPQXVFHPQF024MNMNH"}]}],"types":{"BodyDriftRegion":[{"name":"id","type":"string","required":true},{"name":"x0","type":"number","required":true},{"name":"x1","type":"number","required":true},{"name":"y0","type":"number","required":true},{"name":"y1","type":"number","required":true},{"name":"ax","type":"number","required":true},{"name":"ay","type":"number","required":true}],"ChoiceGate":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"hint","type":"string"},{"name":"options","type":"[object]","required":true,"properties":[{"name":"id","type":"string","required":true},{"name":"dx","type":"number","required":true},{"name":"label","type":"string","required":true},{"name":"correct","type":"boolean","required":true}]},{"name":"solved","type":"boolean"},{"name":"chosen","type":"string"}],"ChoiceOption":[{"name":"id","type":"string","required":true},{"name":"dx","type":"number","required":true},{"name":"label","type":"string","required":true},{"name":"correct","type":"boolean","required":true}],"CurveMod":[{"name":"x0","type":"number","required":true},{"name":"x1","type":"number","required":true},{"name":"a","type":"number","required":true},{"name":"b","type":"number"},{"name":"h","type":"number","required":true},{"name":"k","type":"number","required":true}],"Fx":[{"name":"id","type":"string","required":true},{"name":"type","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"z","type":"number"},{"name":"y","type":"number"},{"name":"message","type":"string"},{"name":"ttl","type":"number","required":true},{"name":"maxTtl","type":"number"},{"name":"bornAt","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"color","type":"string"},{"name":"size","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"particleCount","type":"number"},{"name":"animation","type":"string"}],"FxPreset":[{"name":"type","type":"string","required":true},{"name":"color","type":"string"},{"name":"color2","type":"string"},{"name":"size","type":"number"},{"name":"shape","type":"string"},{"name":"count","type":"number"},{"name":"glow","type":"number"},{"name":"gravity","type":"number"},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"vz","type":"number"},{"name":"space","type":"string"},{"name":"effect","type":"string"},{"name":"particleCount","type":"number"},{"name":"animation","type":"string"}],"NarrativeCue":[{"name":"text","type":"string","required":true},{"name":"style","type":"string","values":["hint","fact","warn","celebrate"]},{"name":"x","type":"number"},{"name":"y","type":"number"},{"name":"ttl","type":"number"},{"name":"space","type":"string","values":["screen","world"]}],"PickupFeature":[{"name":"id","type":"string","required":true},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"kind","type":"string","required":true},{"name":"glyph","type":"string"},{"name":"message","type":"string"},{"name":"collected","type":"boolean"},{"name":"active","type":"boolean"}],"PlatformerBody":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"vx","type":"number"},{"name":"vy","type":"number"},{"name":"grounded","type":"boolean"},{"name":"facingRight","type":"boolean"}],"PlatformerCurveSample":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}],"PlatformerPlatform":[{"name":"id","type":"string"},{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true},{"name":"width","type":"number","required":true},{"name":"height","type":"number","required":true},{"name":"type","type":"string","values":["ground","platform","hazard","goal"]}],"PlatformerTuning":[{"name":"jumpStrength","type":"number"},{"name":"moveSpeed","type":"number"},{"name":"gravity","type":"number"}],"StyleDef":[{"name":"color","type":"string","required":true},{"name":"size","type":"number","required":true},{"name":"ttl","type":"number","required":true},{"name":"effect","type":"string","required":true}],"TutorialStep":[{"name":"id","type":"string","required":true},{"name":"title","type":"string","required":true},{"name":"body","type":"string"},{"name":"demoId","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_48M4BFTCXY6EZ1HNAETCN623KW":{"id":"ent_48M4BFTCXY6EZ1HNAETCN623KW","kind":"entity","bakedName":"PlatformerPuzzleData","curName":"PlatformerPuzzleData","renames":[],"owner":"workspace"},"evt_SMBN3TW54R2JC03TJ1YZPWCDZR":{"id":"evt_SMBN3TW54R2JC03TJ1YZPWCDZR","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_6B8H0MKM67T33HM54SDQFM86DT"},"orb_AD67KTBBMGNT8CBT8DN3GA509P":{"id":"orb_AD67KTBBMGNT8CBT8DN3GA509P","kind":"orbital","bakedName":"PlatformerPuzzleOrbital","curName":"PlatformerPuzzleOrbital","renames":[],"owner":"workspace"},"pag_43XSY21MZ2TFH056YW6KGMCA66":{"id":"pag_43XSY21MZ2TFH056YW6KGMCA66","kind":"page","bakedName":"PlatformerPuzzlePage","curName":"PlatformerPuzzlePage","renames":[],"owner":"workspace"},"trt_4SDTVT9WT0YD0DKQVYD36NP4MR":{"id":"trt_4SDTVT9WT0YD0DKQVYD36NP4MR","kind":"trait","bakedName":"PlatformerPuzzlePickup","curName":"PlatformerPuzzlePickup","renames":[],"owner":"workspace"},"trt_6B8H0MKM67T33HM54SDQFM86DT":{"id":"trt_6B8H0MKM67T33HM54SDQFM86DT","kind":"trait","bakedName":"PlatformerPuzzleNoopPreview","curName":"PlatformerPuzzleNoopPreview","renames":[],"owner":"workspace"},"trt_7YMPTJBFVPQXVFHPQF024MNMNH":{"id":"trt_7YMPTJBFVPQXVFHPQF024MNMNH","kind":"trait","bakedName":"PlatformerPuzzleTutorial","curName":"PlatformerPuzzleTutorial","renames":[],"owner":"workspace"},"trt_BJPY0TADQ66VK8R8MRRE7HF9YD":{"id":"trt_BJPY0TADQ66VK8R8MRRE7HF9YD","kind":"trait","bakedName":"PlatformerPuzzleFx","curName":"PlatformerPuzzleFx","renames":[],"owner":"workspace"},"trt_W7ESKWTAJ3591SRC7SNH60RS8K":{"id":"trt_W7ESKWTAJ3591SRC7SNH60RS8K","kind":"trait","bakedName":"PlatformerPuzzleBody","curName":"PlatformerPuzzleBody","renames":[],"owner":"workspace"},"trt_XE6XEP28CG468BMC7NCZB92850":{"id":"trt_XE6XEP28CG468BMC7NCZB92850","kind":"trait","bakedName":"PlatformerPuzzleObjective","curName":"PlatformerPuzzleObjective","renames":[],"owner":"workspace"},"trt_Y0JVTH2WGJE893GKPC5Z7QW95X":{"id":"trt_Y0JVTH2WGJE893GKPC5Z7QW95X","kind":"trait","bakedName":"PlatformerPuzzleNarrative","curName":"PlatformerPuzzleNarrative","renames":[],"owner":"workspace"},"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85":{"id":"trt_YA0A10D1ZEGZQFCY5B9VSE9Q85","kind":"trait","bakedName":"PlatformerPuzzleChoice","curName":"PlatformerPuzzleChoice","renames":[],"owner":"workspace"}}}}
|