Skip to content

feat(live): assemble the live scene and each band's start timeline as a product - #77

Merged
nichinichisou0609 merged 4 commits into
redesign/depotfrom
feat/live-scene
Oct 15, 2026
Merged

nichinichisou0609 merged 4 commits into
redesign/depotfrom
feat/live-scene

Conversation

@nichinichisou0609

Copy link
Copy Markdown
Collaborator

The scene of a live becomes one product, shared by every live: what exists on the live screen before the first note, and the start timeline and LightWeight background of each band.

Scene keys

  • A scene bundle's container names a scene without an object; its scene hashes name the scene's serialized file. census.scenes reads them: a scene is the objects of that file outside a hierarchy (the root GameObjects and the scene's settings).
  • link.addresses (version 4) lists them as the objects of the scene's key and gives them stable addresses under the scene's path, so a product can start from a key such as EmbScene/Live.

Product

live.scene (default, manifest scenes/default.json) starts from:

  • the scene EmbScene/Live;
  • the lane line and judge effect prefabs;
  • the combo and judgement sprite assets;
  • the sprites of every lane skin;
  • the start timeline and LightWeight background of every band;
  • the built-in GraphicsSettings, QualitySettings and PlayerSettings.

scene.json (format 1) holds:

Field Contents
scene, renderSettings the scene's root GameObjects and its RenderSettings
graphics the built-in settings, by id
laneSkins, prefabs, spriteAssets the lane skins' sprites and the UI prefabs and assets, by id; prefabs includes the bar line view the scene's bar line container instantiates
bands per band: the timeline prefab, the background sprite, and {AnimationTrack id: {name, prefab, animator}}, the Animator each track plays on
settings the option defaults and ranges the render path reads, the quality settings, the lane skins by option value and the judgement sprite names
bindings every Animator's clip bindings, including the timeline tracks' clips on the Animators they play on
shaders the shaders a lookup by name finds

The scene's roots reference components of each other with $refs. The object table lists each such component as contained in the root GameObject that holds it.

Shaders

A material names its shader by id, so a product may hold different shaders of one name, for example a bundle's copy beside the copy in the APK's built-in files. The name table of shader_table gives what a lookup by name (Shader.Find) finds:

  • copies of one shader: the first id;
  • different shaders of one name: the one GraphicsSettings always includes;
  • otherwise no entry.

Every shader keeps its files either way. live.scene requires the shaders the live screen finds by name.

Content helpers

content.prefabs gains two helpers, and the note highway uses key_object:

  • key_object: the object of a key of a class.
  • component_ref: a component a field names, in the same hierarchy or through a $ref into another hierarchy.

nichinichisou0609 and others added 4 commits October 15, 2026 17:52
A scene bundle's container names a scene without an object; its scene
hashes name the scene's serialized file. census.scenes reads them: a
scene is the objects of that file outside a hierarchy (the root
GameObjects and the scene's settings). link.addresses (version 4) lists
them as the objects of the scene's key and gives them stable addresses
under the scene's path, so a product can start from a scene key such as
EmbScene/Live.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A material names its shader by id, so a product may hold different
shaders of one name: a bundle's copy of a shader beside the copy in the
APK's built-in files, each compiled on its own. The name table of
content.prefabs.shader_table now gives what a lookup by name
(Shader.Find) finds: the copies of one shader by the first id; of
different shaders of a name, the one of `found` (the shaders the lookup
finds first, which a product passes as GraphicsSettings' always-included
shaders); else the name names none of them. Every shader keeps its
files either way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
content.prefabs gains key_object, the one object of a catalog key of a
class (a prefab by its GameObject, a MonoBehaviour by its script class),
and component_ref, the component a field names: in the same hierarchy
by path, or in another hierarchy of the table by a $ref to a component
the table lists as contained in that hierarchy's root. The note highway
uses key_object, and livenotes.animator_bindings takes further clips an
Animator plays besides its controller's and its LoopAnimationTimeSyncs'.

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

live.scene (subject `default`, manifest scenes/default.json) starts
from the scene EmbScene/Live, the lane line and judge effect prefabs,
the combo and judgement sprite assets, the sprites of every lane skin,
the start timeline and LightWeight background of every band, and the
built-in GraphicsSettings, QualitySettings and PlayerSettings. Its
scene.json names by id the scene's root GameObjects and RenderSettings,
the graphics settings, the lane skins, the prefabs (with the bar line
view the scene's bar line container instantiates), the sprite assets,
and per band its timeline, background and the Animator each timeline
track plays on. It also holds the option defaults and ranges the render
path reads, the quality settings, the lane skins by option value and the
judgement sprite names, the clip bindings of every Animator (with the
timeline tracks' clips on theirs) and the shaders a lookup by name finds,
which must include those the live screen finds by name.

The product layout makes live.scene when the selection holds the scene
and the master data is there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nichinichisou0609
nichinichisou0609 merged commit 70114e8 into redesign/depot Oct 15, 2026
8 checks passed
@nichinichisou0609
nichinichisou0609 deleted the feat/live-scene branch October 15, 2026 09:57
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