Skip to content

feat(live): the note highway, its skins and effect sets as products - #76

Merged
nichinichisou0609 merged 3 commits into
redesign/depotfrom
redesign/live-notes
Oct 15, 2026
Merged

nichinichisou0609 merged 3 commits into
redesign/depotfrom
redesign/live-notes

Conversation

@nichinichisou0609

Copy link
Copy Markdown
Collaborator

What a live spawns and animates per note becomes three products, each shared by every live that loads it.

Products

  • live.notes (default, manifest notes/default.json): the note view prefabs, the slide and guide line views, the pair line, the groove loop and the lane effect settings → notes.json: prefabs (name → GameObject id), laneEffect, and settings (option defaults of preset 1 and ranges, liveSettings, noteDisplayTimeMs, lane geometry, the default skin and effect set, and the names of every skin and effect set by option value).
  • live.noteskin (a MasterLiveNoteSkin._assetName, manifest noteskins/<name>.json): the LiveNoteSkinAsset; its roots also hold the three flick views, which play the arrow loop each flick unit gives.
  • live.noteeffect (a MasterLiveNoteEffectSkin._assetName or its Light variant, manifest noteeffects/<name>.json): the LiveNoteEffectAssetSettings and the effect prefabs it references.

Each document carries:

  • bindings: {prefab GameObject id: {Animator node path: {clip id: [{path, attribute}]}}}. An Animator plays its controller's clips and the _loopAnim of a LoopAnimationTimeSync on it; a skin's arrow loops play on the flick views' LoopAnimationTimeSync.
  • shaders: {name: object id}.

A product keeps every object but the MonoScripts. Of a shader it keeps the parsed form, the variant index and the GLSL ES 3.00 programs.

Pipeline

  • The object table (nnnotes.objects/1) lists the root objects of each key of the product under keys. Objects.key(key) gives them to an assembler.
  • A SpriteAtlas reached through a reference adds its textures but not the sprites it packs. An atlas a request or a product starts from still reaches them all. This applies both to the units a request exports and to what a product reaches. Before, one sprite of a large atlas brought every other sprite of it along.
  • content.prefabs gains controller_clips, clip_bindings and shader_table. Copies of one shader in several bundles (same parsed form and index) are one entry of the shader table; different shaders of one name are an error.
  • The product layout selects the three stages from the keys a selection holds.

nichinichisou0609 and others added 3 commits October 15, 2026 16:56
…ct table

The object table of a product task (nnnotes.objects/1) now lists, under
`keys`, the root objects of each catalog key the stage gives for the
subject. Assemblers read them with Objects.key(key), so a product with
several keys finds each object by the key the game loads it by.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tself

A SpriteAtlas references every sprite it packs, and each of those sprites
references the atlas, whose textures hold its image. Following both edges
made one sprite of a large atlas bring every other sprite of it into a
request and into a product's object table.

An atlas reached through a reference now adds its other references (its
textures) but not the sprites it packs; an atlas a request or a product
starts from still reaches all of them. The rule applies to the units a
request exports (units.build) and to what a product reaches
(assemble.reach).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…roducts

Three product stages make what a live spawns and animates per note, each
shared by every live that loads it:

- live.notes (subject `default`, manifest notes/default.json): the note
  view, line, pair line and groove loop prefabs, the lane effect settings
  and the note settings (option defaults and ranges, live settings, the
  display time, the lane geometry, the default skin and effect set, and
  the names of every skin and effect set by option value).
- live.noteskin (a MasterLiveNoteSkin asset name, noteskins/<name>.json):
  the LiveNoteSkinAsset, with the flick views whose arrows its units set
  up.
- live.noteeffect (a MasterLiveNoteEffectSkin asset name or its Light
  variant, noteeffects/<name>.json): the LiveNoteEffectAssetSettings and
  the effect prefabs it references.

Each document names objects by id and carries `bindings`, the clips each
Animator of its prefabs plays (its controller's clips, a
LoopAnimationTimeSync's loop, a skin's arrow loop on the flick views) named
from the Animator's node, and `shaders`, the shader table. The product
keeps every object but the MonoScripts, and of a shader its parsed form,
variant index and GLSL ES 3.00 programs.

content.prefabs gains the helpers these use (controller_clips,
clip_bindings, shader_table); copies of one shader in several bundles are
one entry of the shader table. The `product` layout selects the three
stages from the keys a selection holds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nichinichisou0609
nichinichisou0609 merged commit 00c9616 into redesign/depot Oct 15, 2026
8 checks passed
@nichinichisou0609
nichinichisou0609 deleted the redesign/live-notes branch October 15, 2026 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant