Skip to content

Conversation

@kenowagb
Copy link
Collaborator

Summary

Adds a real BST tutorial that runs in its own scene using the same gameplay stack as a normal level (TreeRhythmController, Score HUD, falling notes, synthwave), then hands off to the selected song.

This PR stacks on feature/player-vs-bot. Merge the bot PR first, or retarget this PR to main after that lands.

Player flow

  • Title tree: choose 1P / VS Bot / 2P, then Tutorial? Yes or No
  • Yes: lock song and difficulty, load Tutorial.unity, play the lesson, then load GameScene
  • No: normal song select into GameScene
  • Human 2P: P1 completes the lesson, scene reloads for P2 with Player2 controls and matching on-screen hints, then GameScene
  • Rhythm menu: Play Sample Tutorial for a looping preview without the full menu path

File guide

Tutorial runtime

  • Assets/Tutorial/TutorialController.cs: steps the lesson, drives tutorial mode on TreeRhythmController, updates side guide panels
  • Assets/Tutorial/TutorialSceneController.cs: exits to GameScene (or P2 tutorial reload, or Menu if no song)
  • Assets/Tutorial/TutorialRuntimeBootstrap.cs: loads lesson assets from Resources and switches the scene controller into tutorial mode
  • Assets/Tutorial/TutorialBootstrapRefs.cs + Assets/Resources/TutorialBootstrapRefs.asset: play-mode safe asset bundle (no AssetDatabase at runtime)
  • Assets/Tutorial/TutorialAssetPaths.cs: canonical editor paths for setup tools
  • Assets/Tutorial/TutorialLessonConfig.cs + DefaultTutorialLesson.asset: starting tree, insert value, step copy
  • Assets/Tutorial/TutorialGuideStyle.cs + DefaultTutorialGuideStyle.asset: editable panel layout, type sizes, colors, labels
  • Assets/Tutorial/TutorialLayoutBuilder.cs / TutorialUILayout.cs: builds and caches left/right guide panels
  • Assets/Tutorial/TutorialInputLabels.cs: binding display strings from the active player's Input System map
  • Assets/Tutorial/TutorialPresentationGuards.cs: keeps sky off and restores the GameScene hit bar if the scene save drops it
  • Assets/Tutorial/TutorialSampleSession.cs / TutorialSampleBootstrap.cs: seeds a sample session for direct Tutorial play
  • Assets/Tutorial/Editor/TutorialEditorTools.cs: Rhythm setup, validate, and sample play menus
  • Assets/Scenes/Tutorial.unity: authored tutorial scene (GameScene-like stack)
  • Assets/ScriptableObjects/Tutorial/TutorialMetronomeBeatmap.asset: metronome chart

Menu wiring

  • Assets/Menu/MenuSceneController.cs: StartTutorialFromSongSelect / tutorial scene load
  • Assets/Menu/TitleScreen/TitleScreenController.cs: Tutorial? prompt after mode / bot tier
  • Assets/Menu/Data/MenuTutorialPromptTree.cs and TutorialPromptState.cs: alternate prompt helpers (live path is the title BST Yes/No)
  • Song select difficulty commit respects GameSession.WantsTutorial

Gameplay support

  • Assets/Integration/TreeRhythmController.cs: ConfigureTutorial, metronome mode, tutorial events, P1/P2 input swap for sequential lessons
  • Assets/Session/GameSession.cs: WantsTutorial and per-player tutorial completion flags
  • Rhythm manager / beat scheduler / visualizer and TreeAnimationConfig metronome clip support
  • Build settings include Tutorial.unity

Docs

  • AI/components/Tutorial.md plus changelog and index updates

Test plan

  • Menu: 1P then Tutorial? Yes then song then difficulty: lesson plays, then GameScene starts the chosen song
  • Menu: Tutorial? No: normal path into GameScene
  • Human 2P Tutorial? Yes: P1 lesson, then P2 lesson with arrow-key hints, then GameScene
  • VS Bot Tutorial? Yes: only P1 lesson (bot skips tutorial), then GameScene with bot
  • Rhythm then Play Sample Tutorial: lesson loops for iteration
  • Wrong inputs show the same world MISS label as the real game (no double guide flash)
  • Edit DefaultTutorialGuideStyle / DefaultTutorialLesson and confirm copy and look update

Kenneth Enow and others added 2 commits July 25, 2026 19:36
Players can opt into a metronome lesson after mode select, learn insertion with the same TreeRhythmController and hit feedback as a normal level, then continue into their chosen song. Includes editable guide style and lesson assets, sample play from the Rhythm menu, and Player 2 control hints when humans take turns.

Co-authored-by: Cursor <cursoragent@cursor.com>
The previous compile fix stripped TreeRunTracker/TreeShareConfig because those
types were not on the old base. Current main already has QR (#7), so this
commit instead keeps QR wiring, drops the unused ExitTutorialMode path (it
called a missing ResetForNewSession), dedupes QR fields after the rebase
merge, and adds the Tutorial ScriptableObjects folder meta.

Co-authored-by: Cursor <cursoragent@cursor.com>
@kenowagb kenowagb force-pushed the feature/player-vs-bot branch from d5e6765 to 5d410ee Compare July 25, 2026 23:37
@kenowagb kenowagb force-pushed the feature/bst-tutorial branch from ad140a6 to 5be7aa7 Compare July 25, 2026 23:37
Sign in to join this conversation on GitHub.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant