[ArtStudio P7] Class gallery + staff moderation + use-your-asset-in-games handoff, curriculum tie-in #353

Closed
opened 2026-07-04 05:12:03 +00:00 by spikerj · 1 comment
Owner

Sub-ticket of epic #346. Depends on #351 (studio UI) and #352 (moderation plumbing).

What: close the loop that motivated the epic — students share what they made and use it in the games they build. Mirrors the student-video share/moderate flow (#336–#339) and lands the learning-coding-games tie-in.

Scope:

  • Share-to-gallery: student submits a completed asset for sharing → staff moderation queue (reuse the moderation UI/flow patterns from lesson-video P5c #338) → approved assets appear in a class/school gallery with turntable previews and attribution
  • Gallery view in the art-studio lib: browse, filter by type, view in the three.js viewer, "remix" (clone an approved asset's prompt/settings into your own pipeline — provenance recorded)
  • Games handoff: an "use in game" affordance that makes an approved (or own) exported GLB loadable from the game playgrounds — start with one concrete integration (e.g. the three.js games under _components/_games/ or libraries/game/hex-tower-defence, which already GLTFLoad meshes) and define the asset-manifest contract so other games follow
  • Serving path for approved gallery assets (GridFS-backed endpoint with caching headers; anonymous read only if the gallery is public — default authenticated)
  • Curriculum tie-in: a lesson/section in the shared playground shell ("How game studios build a character: the pipeline you just used") linking each studio stage to the concepts, using the student's own asset as the example — coordinate with the Playgrounds content-layer work (#326/#327)
  • Deletion/ownership rules: unsharing removes gallery visibility but not game saves that already embed the asset; document the policy

Note: the games handoff contract (how a playground references an asset id + how skeleton/animation clips map to game-side players) is the design decision here — keep it a small JSON manifest next to the GLB rather than game-specific code in the studio.

Acceptance: a student shares a rigged character, staff approves it, a classmate views it in the gallery and loads it in a game playground scene; remixing records provenance; an unapproved asset is never visible beyond its owner and staff.

Sub-ticket of epic #346. Depends on #351 (studio UI) and #352 (moderation plumbing). **What:** close the loop that motivated the epic — students share what they made and *use it in the games they build*. Mirrors the student-video share/moderate flow (#336–#339) and lands the learning-coding-games tie-in. **Scope:** - [ ] Share-to-gallery: student submits a completed asset for sharing → staff moderation queue (reuse the moderation UI/flow patterns from lesson-video P5c #338) → approved assets appear in a class/school gallery with turntable previews and attribution - [ ] Gallery view in the art-studio lib: browse, filter by type, view in the three.js viewer, "remix" (clone an approved asset's prompt/settings into your own pipeline — provenance recorded) - [ ] **Games handoff**: an "use in game" affordance that makes an approved (or own) exported GLB loadable from the game playgrounds — start with one concrete integration (e.g. the three.js games under `_components/_games/` or `libraries/game/hex-tower-defence`, which already GLTFLoad meshes) and define the asset-manifest contract so other games follow - [ ] Serving path for approved gallery assets (GridFS-backed endpoint with caching headers; anonymous read only if the gallery is public — default authenticated) - [ ] Curriculum tie-in: a lesson/section in the shared playground shell ("How game studios build a character: the pipeline you just used") linking each studio stage to the concepts, using the student's own asset as the example — coordinate with the Playgrounds content-layer work (#326/#327) - [ ] Deletion/ownership rules: unsharing removes gallery visibility but not game saves that already embed the asset; document the policy **Note:** the games handoff contract (how a playground references an asset id + how skeleton/animation clips map to game-side players) is the design decision here — keep it a small JSON manifest next to the GLB rather than game-specific code in the studio. **Acceptance:** a student shares a rigged character, staff approves it, a classmate views it in the gallery and loads it in a game playground scene; remixing records provenance; an unapproved asset is never visible beyond its owner and staff.
spikerj added the enhancement label 2026-07-04 05:12:03 +00:00
Author
Owner

All three delivery PRs merged to master: backend #71 (share → staff moderation → approved gallery, approval-authorized downloads, games-handoff manifest, remix with provenance through the P6 guardrails), angular #119 (gallery UI + share affordances + /admin/art-gallery-review), angular #120 (game-side loader — a student's asset becomes the hex-tower-defence Command Center, idle-animating when rigged, with the reusable ArtAssetGameLoaderService for the next games).

Acceptance met end-to-end: share → staff approve → classmate views in gallery → loads it in a game; remix records provenance; unapproved assets invisible beyond owner+staff. The curriculum tie-in is split to its own ticket (content-authoring work); other-game integrations ride the loader service. Closing.

All three delivery PRs merged to `master`: backend #71 (share → staff moderation → approved gallery, approval-authorized downloads, games-handoff manifest, remix with provenance through the P6 guardrails), angular #119 (gallery UI + share affordances + `/admin/art-gallery-review`), angular #120 (game-side loader — a student's asset becomes the hex-tower-defence Command Center, idle-animating when rigged, with the reusable `ArtAssetGameLoaderService` for the next games). Acceptance met end-to-end: share → staff approve → classmate views in gallery → loads it in a game; remix records provenance; unapproved assets invisible beyond owner+staff. The curriculum tie-in is split to its own ticket (content-authoring work); other-game integrations ride the loader service. Closing.
Sign in to join this conversation.