From 6af1c8bf20d5145e3862e7658ce399517c3ab2f3 Mon Sep 17 00:00:00 2001 From: Scove Date: Sun, 7 Jun 2026 19:41:43 +0700 Subject: [PATCH] Update --- .gemini-workspace-history/active-context.md | 191 +++++- .../session-2026-06-07-18-23.json.gz | Bin 0 -> 109703 bytes .../session-2026-06-07-18-27.json.gz | Bin 0 -> 419305 bytes .../session-2026-06-07-18-35.json.gz | Bin 0 -> 135113 bytes .../session-2026-06-07-18-37.json.gz | Bin 0 -> 31773 bytes .../session-2026-06-07-18-53.json.gz | Bin 0 -> 96124 bytes .../session-2026-06-07-19-27.json.gz | Bin 0 -> 13662 bytes .idea/.idea.BABA_YAGA/.idea/workspace.xml | 4 +- BABA_YAGA_Updater/.env.example | 5 - .../active-context.md | 1 + BABA_YAGA_Updater/README.md | 578 ++++++++++++++++++ BABA_YAGA_Updater/sections/00_header.md | 107 ++++ BABA_YAGA_Updater/sections/01_vision.md | 44 ++ BABA_YAGA_Updater/sections/02_mechanics.md | 165 +++++ BABA_YAGA_Updater/sections/03_architecture.md | 113 ++++ BABA_YAGA_Updater/sections/04_maze.md | 138 +++++ BABA_YAGA_Updater/sections/05_networking.md | 48 ++ BABA_YAGA_Updater/sections/06_comeback.md | 33 + BABA_YAGA_Updater/sections/07_roadmap.md | 13 + .../sections/08_team_standards.md | 35 ++ BABA_YAGA_Updater/sections/09_structure.md | 48 ++ BABA_YAGA_Updater/sections/10_footer.md | 73 +++ README.md | 203 +++--- 23 files changed, 1691 insertions(+), 108 deletions(-) create mode 100644 .gemini-workspace-history/session-2026-06-07-18-23.json.gz create mode 100644 .gemini-workspace-history/session-2026-06-07-18-27.json.gz create mode 100644 .gemini-workspace-history/session-2026-06-07-18-35.json.gz create mode 100644 .gemini-workspace-history/session-2026-06-07-18-37.json.gz create mode 100644 .gemini-workspace-history/session-2026-06-07-18-53.json.gz create mode 100644 .gemini-workspace-history/session-2026-06-07-19-27.json.gz delete mode 100644 BABA_YAGA_Updater/.env.example create mode 100644 BABA_YAGA_Updater/.gemini-workspace-history/active-context.md create mode 100644 BABA_YAGA_Updater/README.md create mode 100644 BABA_YAGA_Updater/sections/00_header.md create mode 100644 BABA_YAGA_Updater/sections/01_vision.md create mode 100644 BABA_YAGA_Updater/sections/02_mechanics.md create mode 100644 BABA_YAGA_Updater/sections/03_architecture.md create mode 100644 BABA_YAGA_Updater/sections/04_maze.md create mode 100644 BABA_YAGA_Updater/sections/05_networking.md create mode 100644 BABA_YAGA_Updater/sections/06_comeback.md create mode 100644 BABA_YAGA_Updater/sections/07_roadmap.md create mode 100644 BABA_YAGA_Updater/sections/08_team_standards.md create mode 100644 BABA_YAGA_Updater/sections/09_structure.md create mode 100644 BABA_YAGA_Updater/sections/10_footer.md diff --git a/.gemini-workspace-history/active-context.md b/.gemini-workspace-history/active-context.md index b11c8935..fc9f3d1d 100644 --- a/.gemini-workspace-history/active-context.md +++ b/.gemini-workspace-history/active-context.md @@ -1,8 +1,185 @@ -## Full Previous Session Transcript (from session-2026-06-07-16-57.json.gz) +## Full Previous Session Transcript (from session-2026-06-07-18-53.json.gz) -{"sessionId":"3186e122-c6b8-4f8e-8cd3-292ab990189a","projectHash":"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d","startTime":"2026-06-07T09:57:10.072Z","lastUpdated":"2026-06-07T09:57:10.072Z","kind":"main"} -{"$set":{"messages":[{"id":"d04923d38bb0f6017037e74183378ef4","timestamp":"2026-06-07T09:57:10.074Z","type":"user","content":[{"text":"\nThis is the Gemini CLI. We are setting up the context for our chat.\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\nMy operating system is: win32\nThe project's temporary directory is: C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\n- **Workspace Directories:**\n - D:\\Learning_Progress\\Projects\\BABA_YAGA\n- **Directory Structure:**\n\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\n\nD:\\Learning_Progress\\Projects\\BABA_YAGA\\\n├───.gitignore\n├───GEMINI.md\n├───README.md\n├───.gemini-workspace-history\\\n│ ├───active-context.md\n│ ├───session-2026-04-30-21-39.json.gz\n│ ├───session-2026-04-30-21-47.json.gz\n│ ├───session-2026-05-01-01-26.json.gz\n│ ├───session-2026-05-01-01-51.json.gz\n│ ├───session-2026-05-01-02-25.json.gz\n│ ├───session-2026-05-01-14-48.json.gz\n│ ├───session-2026-05-01-16-53.json.gz\n│ ├───session-2026-05-01-17-28.json.gz\n│ ├───session-2026-05-01-17-29.json.gz\n│ ├───session-2026-05-01-17-31.json.gz\n│ ├───session-2026-05-01-18-10.json.gz\n│ ├───session-2026-05-01-20-30.json.gz\n│ ├───session-2026-05-01-20-42.json.gz\n│ ├───session-2026-05-01-21-05.json.gz\n│ ├───session-2026-05-01-21-07.json.gz\n│ ├───session-2026-05-01-21-10.json.gz\n│ ├───session-2026-05-01-21-11.json.gz\n│ ├───session-2026-05-01-21-51.json.gz\n│ ├───session-2026-05-01-23-27.json.gz\n│ ├───session-2026-05-02-00-00.json.gz\n│ ├───session-2026-05-03-21-30.json.gz\n│ ├───session-2026-06-04-23-01.json.gz\n│ ├───session-2026-06-06-00-13.json.gz\n│ └───summary-2026-04-30.md\n├───.git\\...\n├───.idea\\\n│ ├───.idea.BABA_YAGA\\\n│ │ └───.idea\\\n│ ├───.idea.HALLUCINATE\\\n│ │ └───.idea\\\n│ └───.idea.HALLUCINATION\\\n│ └───.idea\\\n├───Assets\\\n│ ├───_Recovery.meta\n│ ├───All for one.meta\n│ ├───Animation.meta\n│ ├───Audio.meta\n│ ├───Editor.meta\n│ ├───Fonts.meta\n│ ├───InventoryData.json\n│ ├───InventoryData.json.meta\n│ ├───Materials.meta\n│ ├───Models.meta\n│ ├───Plugin.meta\n│ ├───Prefabs.meta\n│ ├───Presets.meta\n│ ├───Resources.meta\n│ ├───Scenes.meta\n│ ├───Scove.meta\n│ ├───Scripts.meta\n│ ├───Settings.meta\n│ ├───Shaders.meta\n│ ├───TEST CUA TUAN.meta\n│ ├───Textures.meta\n│ ├───Third Parties.meta\n│ ├───UI.meta\n│ ├───_Recovery\\\n│ │ ├───0 (1).unity\n│ │ ├───0 (1).unity.meta\n│ │ ├───0 (10).unity\n│ │ ├───0 (10).unity.meta\n│ │ ├───0 (11).unity\n│ │ ├───0 (11).unity.meta\n│ │ ├───0 (12).unity\n│ │ ├───0 (12).unity.meta\n│ │ ├───0 (13).unity\n│ │ ├───0 (13).unity.meta\n│ │ ├───0 (14).unity\n│ │ ├───0 (14).unity.meta\n│ │ ├───0 (2).unity\n│ │ ├───0 (2).unity.meta\n│ │ ├───0 (3).unity\n│ │ ├───0 (3).unity.meta\n│ │ ├───0 (4).unity\n│ │ ├───0 (4).unity.meta\n│ │ ├───0 (5).unity\n│ │ ├───0 (5).unity.meta\n│ │ ├───0 (6).unity\n│ │ ├───0 (6).unity.meta\n│ │ ├───0 (7).unity\n│ │ ├───0 (7).unity.meta\n│ │ ├───0 (8).unity\n│ │ ├───0 (8).unity.meta\n│ │ ├───0 (9).unity\n│ │ ├───0 (9).unity.meta\n│ │ ├───0.unity\n│ │ └───0.unity.meta\n│ ├───.gemini-workspace-history\\\n│ │ ├───active-context.md\n│ │ ├───session-2026-05-02-00-01.json.gz\n│ │ └───session-2026-05-02-19-42.json.gz\n│ ├───.idea\\\n│ │ ├───.gitignore\n│ │ ├───encodings.xml\n│ │ ├───indexLayout.xml\n│ │ └───vcs.xml\n│ ├───All for one\\\n│ │ ├───Basic Locomotion Demo.meta\n│ │ ├───Invector_InventoryExamples.unity\n│ │ ├───Invector_InventoryExamples.unity.meta\n│ │ ├───Melee Demo.meta\n│ │ ├───Shooting Demo.meta\n│ │ ├───Simple Melee AI.meta\n│ │ ├───TargetTrainingMiniGame.meta\n│ │ ├───Basic Locomotion Demo\\\n│ │ ├───Melee Demo\\\n│ │ ├───Shooting Demo\\\n│ │ ├───Simple Melee AI\\\n│ │ └───TargetTrainingMiniGame\\\n│ ├───Animation\\\n│ │ ├───Basic Locomotion.meta\n│ │ ├───Melee Combat.meta\n│ │ ├───Player Prototype.meta\n│ │ ├───Shooter.meta\n│ │ ├───UI Animation.meta\n│ │ └───...\n│ ├───Audio\\\n│ ├───Editor\\\n│ ├───Fonts\\\n│ ├───Materials\\\n│ ├───Models\\\n│ ├───Plugin\\\n│ ├───Prefabs\\\n│ ├───Presets\\\n│ ├───Resources\\\n│ ├───Scenes\\\n│ ├───Scove\\\n│ ├───Scripts\\\n│ ├───Settings\\\n│ ├───Shaders\\\n│ ├───TEST CUA TUAN\\\n│ ├───Textures\\\n│ ├───Third Parties\\\n│ └───UI\\\n├───Library\\...\n├───Logs\\...\n├───obj\\...\n├───Packages\\\n│ ├───manifest.json\n│ ├───packages-lock.json\n│ └───app.rive.rive-unity\\\n├───ProjectSettings\\\n│ ├───AudioManager.asset\n│ ├───ClusterInputManager.asset\n│ ├───DynamicsManager.asset\n│ ├───EditorBuildSettings.asset\n│ ├───EditorSettings.asset\n│ ├───GraphicsSettings.asset\n│ ├───InputManager.asset\n│ ├───MemorySettings.asset\n│ ├───MultiplayerManager.asset\n│ ├───NavMeshAreas.asset\n│ ├───PackageManagerSettings.asset\n│ ├───Physics2DSettings.asset\n│ ├───PresetManager.asset\n│ ├───ProjectSettings.asset\n│ ├───ProjectVersion.txt\n│ ├───QualitySettings.asset\n│ ├───SceneTemplateSettings.json\n│ ├───ShaderGraphSettings.asset\n│ ├───TagManager.asset\n│ ├───TimelineSettings.asset\n│ ├───TimeManager.asset\n│ ├───UnityConnectSettings.asset\n│ ├───URPProjectSettings.asset\n│ ├───VersionControlSettings.asset\n│ ├───VFXManager.asset\n│ ├───XRSettings.asset\n│ └───Packages\\\n├───Temp\\...\n├───UIElementsSchema\\\n│ ├───Hallucinate.UI.Components.xsd\n│ ├───UIElements.xsd\n│ ├───Unity.Multiplayer.PlayMode.Editor.xsd\n│ ├───Unity.Profiling.Editor.UI.xsd\n│ ├───Unity.Profiling.Editor.xsd\n│ ├───Unity.UI.Builder.xsd\n│ ├───Unity.UIToolkit.Editor.xsd\n│ ├───UnityEditor.Accessibility.xsd\n│ ├───UnityEditor.Audio.UIElements.xsd\n│ ├───UnityEditor.Experimental.GraphView.xsd\n│ ├───UnityEditor.Inspector.GraphicsSettingsInspectors.xsd\n│ ├───UnityEditor.Inspector.xsd\n│ ├───UnityEditor.Overlays.xsd\n│ ├───UnityEditor.PackageManager.UI.Internal.xsd\n│ ├───UnityEditor.Rendering.xsd\n│ ├───UnityEditor.Search.xsd\n│ ├───UnityEditor.ShaderGraph.Drawing.xsd\n│ ├───UnityEditor.ShortcutManagement.xsd\n│ ├───UnityEditor.Toolbars.xsd\n│ ├───UnityEditor.U2D.Sprites.SpriteEditorTool.xsd\n│ ├───UnityEditor.UIElements.Debugger.xsd\n│ ├───UnityEditor.UIElements.ProjectSettings.xsd\n│ ├───UnityEditor.UIElements.xsd\n│ └───UnityEngine.UIElements.xsd\n└───UserSettings\\...\n\n\n\n\n--- Context from: C:/Users/scove/.gemini/extensions/caveman/GEMINI.md ---\n\n---\nname: caveman\ndescription: >\n Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman\n while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,\n wenyan-lite, wenyan-full, wenyan-ultra.\n Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\",\n \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n---\n\nRespond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: \"stop caveman\" / \"normal mode\".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman |\n| **ultra** | Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, arrows for causality (X → Y), one word when one word enough |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample — \"Why React component re-render?\"\n- lite: \"Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`.\"\n- full: \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n- ultra: \"Inline obj prop → new ref → re-render. `useMemo`.\"\n- wenyan-lite: \"組件頻重繪,以每繪新生對象參照故。以 useMemo 包之。\"\n- wenyan-full: \"物出新參照,致重繪。useMemo .Wrap之。\"\n- wenyan-ultra: \"新參照→重繪。useMemo Wrap。\"\n\nExample — \"Explain database connection pooling.\"\n- lite: \"Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\"\n- full: \"Pool reuse open DB connections. No new connection per request. Skip handshake overhead.\"\n- ultra: \"Pool = reuse DB conn. Skip handshake → fast under load.\"\n- wenyan-full: \"池reuse open connection。不每req新開。skip handshake overhead。\"\n- wenyan-ultra: \"池reuse conn。skip handshake → fast。\"\n\n## Auto-Clarity\n\nDrop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.\n\nExample — destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nCode/commits/PRs: write normal. \"stop caveman\" or \"normal mode\": revert. Level persist until changed or session end.\n\n\n---\nname: caveman-commit\ndescription: >\n Ultra-compressed commit message generator. Cuts noise from commit messages while preserving\n intent and reasoning. Conventional Commits format. Subject ≤50 chars, body only when \"why\"\n isn't obvious. Use when user says \"write a commit\", \"commit message\", \"generate commit\",\n \"/commit\", or invokes /caveman-commit. Auto-triggers when staging changes.\n---\n\nWrite commit messages terse and exact. Conventional Commits format. No fluff. Why over what.\n\n## Rules\n\n**Subject line:**\n- `(): ` — `` optional\n- Types: `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore`, `build`, `ci`, `style`, `revert`\n- Imperative mood: \"add\", \"fix\", \"remove\" — not \"added\", \"adds\", \"adding\"\n- ≤50 chars when possible, hard cap 72\n- No trailing period\n- Match project convention for capitalization after the colon\n\n**Body (only if needed):**\n- Skip entirely when subject is self-explanatory\n- Add body only for: non-obvious *why*, breaking changes, migration notes, linked issues\n- Wrap at 72 chars\n- Bullets `-` not `*`\n- Reference issues/PRs at end: `Closes #42`, `Refs #17`\n\n**What NEVER goes in:**\n- \"This commit does X\", \"I\", \"we\", \"now\", \"currently\" — the diff says what\n- \"As requested by...\" — use Co-authored-by trailer\n- \"Generated with Claude Code\" or any AI attribution\n- Emoji (unless project convention requires)\n- Restating the file name when scope already says it\n\n## Examples\n\nDiff: new endpoint for user profile with body explaining the why\n- ❌ \"feat: add a new endpoint to get user profile information from the database\"\n- ✅\n ```\n feat(api): add GET /users/:id/profile\n\n Mobile client needs profile data without the full user payload\n to reduce LTE bandwidth on cold-launch screens.\n\n Closes #128\n ```\n\nDiff: breaking API change\n- ✅\n ```\n feat(api)!: rename /v1/orders to /v1/checkout\n\n BREAKING CHANGE: clients on /v1/orders must migrate to /v1/checkout\n before 2026-06-01. Old route returns 410 after that date.\n ```\n\n## Auto-Clarity\n\nAlways include body for: breaking changes, security fixes, data migrations, anything reverting a prior commit. Never compress these into subject-only — future debuggers need the context.\n\n## Boundaries\n\nOnly generates the commit message. Does not run `git commit`, does not stage files, does not amend. Output the message as a code block ready to paste. \"stop caveman-commit\" or \"normal mode\": revert to verbose commit style.\n\n\n---\nname: caveman-review\ndescription: >\n Ultra-compressed code review comments. Cuts noise from PR feedback while preserving\n the actionable signal. Each comment is one line: location, problem, fix. Use when user\n says \"review this PR\", \"code review\", \"review the diff\", \"/review\", or invokes\n /caveman-review. Auto-triggers when reviewing pull requests.\n---\n\nWrite code review comments terse and actionable. One line per finding. Location, problem, fix. No throat-clearing.\n\n## Rules\n\n**Format:** `L: . .` — or `:L: ...` when reviewing multi-file diffs.\n\n**Severity prefix (optional, when mixed):**\n- `🔴 bug:` — broken behavior, will cause incident\n- `🟡 risk:` — works but fragile (race, missing null check, swallowed error)\n- `🔵 nit:` — style, naming, micro-optim. Author can ignore\n- `❓ q:` — genuine question, not a suggestion\n\n**Drop:**\n- \"I noticed that...\", \"It seems like...\", \"You might want to consider...\"\n- \"This is just a suggestion but...\" — use `nit:` instead\n- \"Great work!\", \"Looks good overall but...\" — say it once at the top, not per comment\n- Restating what the line does — the reviewer can read the diff\n- Hedging (\"perhaps\", \"maybe\", \"I think\") — if unsure use `q:`\n\n**Keep:**\n- Exact line numbers\n- Exact symbol/function/variable names in backticks\n- Concrete fix, not \"consider refactoring this\"\n- The *why* if the fix isn't obvious from the problem statement\n\n## Examples\n\n❌ \"I noticed that on line 42 you're not checking if the user object is null before accessing the email property. This could potentially cause a crash if the user is not found in the database. You might want to add a null check here.\"\n\n✅ `L42: 🔴 bug: user can be null after .find(). Add guard before .email.`\n\n❌ \"It looks like this function is doing a lot of things and might benefit from being broken up into smaller functions for readability.\"\n\n✅ `L88-140: 🔵 nit: 50-line fn does 4 things. Extract validate/normalize/persist.`\n\n❌ \"Have you considered what happens if the API returns a 429? I think we should probably handle that case.\"\n\n✅ `L23: 🟡 risk: no retry on 429. Wrap in withBackoff(3).`\n\n## Auto-Clarity\n\nDrop terse mode for: security findings (CVE-class bugs need full explanation + reference), architectural disagreements (need rationale, not just a one-liner), and onboarding contexts where the author is new and needs the \"why\". In those cases write a normal paragraph, then resume terse for the rest.\n\n## Boundaries\n\nReviews only — does not write the code fix, does not approve/request-changes, does not run linters. Output the comment(s) ready to paste into the PR. \"stop caveman-review\" or \"normal mode\": revert to verbose review style.\n\n\n---\nname: caveman-compress\ndescription: >\n Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format\n to save input tokens. Preserves all technical substance, code, URLs, and structure.\n Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.\n Trigger: /caveman:compress or \"compress memory file\"\n---\n\n# Caveman Compress\n\n## Purpose\n\nCompress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `.original.md`.\n\n## Trigger\n\n`/caveman:compress ` or when user asks to compress a memory file.\n\n## Process\n\n1. The compression scripts live in `caveman-compress/scripts/` (adjacent to this SKILL.md). If the path is not immediately available, search for `caveman-compress/scripts/__main__.py`.\n\n2. Run:\n\ncd caveman-compress && python3 -m scripts \n\n3. The CLI will:\n- detect file type (no tokens)\n- call Claude to compress\n- validate output (no tokens)\n- if errors: cherry-pick fix with Claude (targeted fixes only, no recompression)\n- retry up to 2 times\n- if still failing after 2 retries: report error to user, leave original file untouched\n\n4. Return result to user\n\n## Compression Rules\n\n### Remove\n- Articles: a, an, the\n- Filler: just, really, basically, actually, simply, essentially, generally\n- Pleasantries: \"sure\", \"certainly\", \"of course\", \"happy to\", \"I'd recommend\"\n- Hedging: \"it might be worth\", \"you could consider\", \"it would be good to\"\n- Redundant phrasing: \"in order to\" → \"to\", \"make sure to\" → \"ensure\", \"the reason is because\" → \"because\"\n- Connective fluff: \"however\", \"furthermore\", \"additionally\", \"in addition\"\n\n### Preserve EXACTLY (never modify)\n- Code blocks (fenced ``` and indented)\n- Inline code (`backtick content`)\n- URLs and links (full URLs, markdown links)\n- File paths (`/src/components/...`, `./config.yaml`)\n- Commands (`npm install`, `git commit`, `docker build`)\n- Technical terms (library names, API names, protocols, algorithms)\n- Proper nouns (project names, people, companies)\n- Dates, version numbers, numeric values\n- Environment variables (`$HOME`, `NODE_ENV`)\n\n### Preserve Structure\n- All markdown headings (keep exact heading text, compress body below)\n- Bullet point hierarchy (keep nesting level)\n- Numbered lists (keep numbering)\n- Tables (compress cell text, keep structure)\n- Frontmatter/YAML headers in markdown files\n\n### Compress\n- Use short synonyms: \"big\" not \"extensive\", \"fix\" not \"implement a solution for\", \"use\" not \"utilize\"\n- Fragments OK: \"Run tests before commit\" not \"You should always run tests before committing\"\n- Drop \"you should\", \"make sure to\", \"remember to\" — just state the action\n- Merge redundant bullets that say the same thing differently\n- Keep one example where multiple examples show the same pattern\n\nCRITICAL RULE:\nAnything inside ``` ... ``` must be copied EXACTLY.\nDo not:\n- remove comments\n- remove spacing\n- reorder lines\n- shorten commands\n- simplify anything\n\nInline code (`...`) must be preserved EXACTLY.\nDo not modify anything inside backticks.\n\nIf file contains code blocks:\n- Treat code blocks as read-only regions\n- Only compress text outside them\n- Do not merge sections around code\n\n## Pattern\n\nOriginal:\n> You should always make sure to run the test suite before pushing any changes to the main branch. This is important because it helps catch bugs early and prevents broken builds from being deployed to production.\n\nCompressed:\n> Run tests before push to main. Catch bugs early, prevent broken prod deploys.\n\nOriginal:\n> The application uses a microservices architecture with the following components. The API gateway handles all incoming requests and routes them to the appropriate service. The authentication service is responsible for managing user sessions and JWT tokens.\n\nCompressed:\n> Microservices architecture. API gateway route all requests to services. Auth service manage user sessions + JWT tokens.\n\n## Boundaries\n\n- ONLY compress natural language files (.md, .txt, extensionless)\n- NEVER modify: .py, .js, .ts, .json, .yaml, .yml, .toml, .env, .lock, .css, .html, .xml, .sql, .sh\n- If file has mixed content (prose + code), compress ONLY the prose sections\n- If unsure whether something is code or prose, leave it unchanged\n- Original file is backed up as FILE.original.md before overwriting\n- Never compress FILE.original.md (skip it)\n\n\n--- End of Context from: C:/Users/scove/.gemini/extensions/caveman/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/co-researcher/GEMINI.md ---\n# Co-Researcher Agents for Gemini\n\nThis project provides PhD-level research capabilities for your Gemini CLI sessions.\n\n## Available Agents\n\n### Available Skills\nSee `skills/` for the full list of capabilities, including:\n- `research-methodology`\n- `literature-review`\n- `critical-analysis`\n- `hypothesis-testing`\n- `lateral-thinking`\n- `qualitative-research`\n- `quantitative-analysis`\n- `peer-review`\n- `ethics-review`\n- `grant-writing`\n\n\n## How to use in Gemini CLI\n\nGemini automatically discovers these agents when you run it from this directory. You can invoke them by name:\n\n```bash\ngemini \"Use the literature-review skill to find recent papers on room temperature superconductors\"\ngemini \"Ask the critical-analysis skill to review my methodology in proposal.md\"\n```\n\nThe CLI reads the context from `agents/` and this `GEMINI.md` file automatically.\nIt also has access to the specialized skills in the `skills/` directory.\n\n### Available Skills\nSee `skills/` for the full list of capabilities, including:\n- `research-methodology`\n- `literature-review`\n- `critical-analysis`\n--- End of Context from: C:/Users/scove/.gemini/extensions/co-researcher/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/oh-my-product/GEMINI.md ---\n# oh-my-product Extension Context\r\n\r\nThis extension is the canonical public entry point for the `oh-my-product` workflow.\r\n\r\n> **Shared context**: See `context/omp-core.md` for the full agent catalog, workflow stages, quality gates, and state conventions.\r\n\r\n## Context Layers (priority order)\r\n1. **System/Runtime** — Gemini CLI constraints (immutable)\r\n2. **Project Standards** — This file (`GEMINI.md`) + `context/omp-core.md`\r\n3. **Session Memory** — `.omp/state/`, memory entries\r\n4. **Active Task** — Current plan, taskboard, PRD\r\n5. **Execution Traces** — Recent iteration results\r\n\r\n## Product intent\r\n- Keep orchestration incremental (MVP-first).\r\n- Default runtime backend is **tmux**.\r\n- Subagents are **experimental opt-in** only.\r\n- Setup defaults to **project scope**.\r\n\r\n## Preferred command flow\r\n1. `oh-my-product setup --scope project` (alias: `omp setup --scope project`)\r\n2. ensure `.gemini/agents/catalog.json` exists (repo contributor fallback: `npm run setup:subagents`)\r\n3. `oh-my-product doctor`\r\n4. `oh-my-product team run --task \"...\"`\r\n5. `oh-my-product verify`\r\n6. Optional MCP server surface: `oh-my-product mcp serve --dry-run --json`\r\n7. Optional live team bridge: `omx team 3:executor \"...\"`\r\n\r\n## Discoverability notes\r\n- Gemini's extension install preview may expose skills more visibly than command prompts.\r\n- Preview is not the full feature list: extension command TOML assets can still be installed even when they are not explicitly enumerated during install.\r\n- If preview output looks sparse, verify availability with direct CLI commands instead of relying on the preview screen alone.\r\n\r\nPrimary command families:\r\n- `setup`\r\n- `doctor`\r\n- `team run` / `team assemble` / `team plan` / `team prd` / `team exec`\r\n- `team subagents`\r\n- `team verify`\r\n- `tools`\r\n- `hud`\r\n- `intent` / `mode` / `approval` / `reasoning`\r\n- `workspace` / `taskboard` / `checkpoint`\r\n- `ralph` / `ultrawork` / `loop`\r\n- `consensus` / `optimize` / `memory` / `rules`\r\n- `launch` / `stop`\r\n\r\n## Guardrails\r\n- Do not skip sandbox checks when a task requires shell execution.\r\n- Prefer actionable failure output (what failed + how to fix it).\r\n- Keep state transitions observable under `.omp/state/`.\r\n\r\n## Handoff expectations\r\nWhen executing team tasks, include:\r\n- command(s) run,\r\n- final exit status,\r\n- key state/log paths for follow-up.\n--- End of Context from: C:/Users/scove/.gemini/extensions/oh-my-product/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/superpowers/GEMINI.md ---\n\n---\nname: using-superpowers\ndescription: Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions\n---\n\n\nIf you were dispatched as a subagent to execute a specific task, skip this skill.\n\n\n\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\n\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\n\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\n\n\n## Instruction Priority\n\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\n\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\n2. **Superpowers skills** — override default system behavior where they conflict\n3. **Default system prompt** — lowest priority\n\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \"don't use TDD\" and a skill says \"always use TDD,\" follow the user's instructions. The user is in control.\n\n## How to Access Skills\n\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files.\n\n**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool.\n\n**In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand.\n\n**In other environments:** Check your platform's documentation for how skills are loaded.\n\n## Platform Adaptation\n\nSkills use Claude Code tool names. Non-CC platforms: see `references/copilot-tools.md` (Copilot CLI), `references/codex-tools.md` (Codex) for tool equivalents. Gemini CLI users get the tool mapping loaded automatically via GEMINI.md.\n\n# Using Skills\n\n## The Rule\n\n**Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.\n\n```dot\ndigraph skill_flow {\n \"User message received\" [shape=doublecircle];\n \"About to EnterPlanMode?\" [shape=doublecircle];\n \"Already brainstormed?\" [shape=diamond];\n \"Invoke brainstorming skill\" [shape=box];\n \"Might any skill apply?\" [shape=diamond];\n \"Invoke Skill tool\" [shape=box];\n \"Announce: 'Using [skill] to [purpose]'\" [shape=box];\n \"Has checklist?\" [shape=diamond];\n \"Create TodoWrite todo per item\" [shape=box];\n \"Follow skill exactly\" [shape=box];\n \"Respond (including clarifications)\" [shape=doublecircle];\n\n \"About to EnterPlanMode?\" -> \"Already brainstormed?\";\n \"Already brainstormed?\" -> \"Invoke brainstorming skill\" [label=\"no\"];\n \"Already brainstormed?\" -> \"Might any skill apply?\" [label=\"yes\"];\n \"Invoke brainstorming skill\" -> \"Might any skill apply?\";\n\n \"User message received\" -> \"Might any skill apply?\";\n \"Might any skill apply?\" -> \"Invoke Skill tool\" [label=\"yes, even 1%\"];\n \"Might any skill apply?\" -> \"Respond (including clarifications)\" [label=\"definitely not\"];\n \"Invoke Skill tool\" -> \"Announce: 'Using [skill] to [purpose]'\";\n \"Announce: 'Using [skill] to [purpose]'\" -> \"Has checklist?\";\n \"Has checklist?\" -> \"Create TodoWrite todo per item\" [label=\"yes\"];\n \"Has checklist?\" -> \"Follow skill exactly\" [label=\"no\"];\n \"Create TodoWrite todo per item\" -> \"Follow skill exactly\";\n}\n```\n\n## Red Flags\n\nThese thoughts mean STOP—you're rationalizing:\n\n| Thought | Reality |\n|---------|---------|\n| \"This is just a simple question\" | Questions are tasks. Check for skills. |\n| \"I need more context first\" | Skill check comes BEFORE clarifying questions. |\n| \"Let me explore the codebase first\" | Skills tell you HOW to explore. Check first. |\n| \"I can check git/files quickly\" | Files lack conversation context. Check for skills. |\n| \"Let me gather information first\" | Skills tell you HOW to gather information. |\n| \"This doesn't need a formal skill\" | If a skill exists, use it. |\n| \"I remember this skill\" | Skills evolve. Read current version. |\n| \"This doesn't count as a task\" | Action = task. Check for skills. |\n| \"The skill is overkill\" | Simple things become complex. Use it. |\n| \"I'll just do this one thing first\" | Check BEFORE doing anything. |\n| \"This feels productive\" | Undisciplined action wastes time. Skills prevent this. |\n| \"I know what that means\" | Knowing the concept ≠ using the skill. Invoke it. |\n\n## Skill Priority\n\nWhen multiple skills could apply, use this order:\n\n1. **Process skills first** (brainstorming, debugging) - these determine HOW to approach the task\n2. **Implementation skills second** (frontend-design, mcp-builder) - these guide execution\n\n\"Let's build X\" → brainstorming first, then implementation skills.\n\"Fix this bug\" → debugging first, then domain-specific skills.\n\n## Skill Types\n\n**Rigid** (TDD, debugging): Follow exactly. Don't adapt away discipline.\n\n**Flexible** (patterns): Adapt principles to context.\n\nThe skill itself tells you which.\n\n## User Instructions\n\nInstructions say WHAT, not HOW. \"Add X\" or \"Fix Y\" doesn't mean skip workflows.\n\n\n\n# Gemini CLI Tool Mapping\n\nSkills use Claude Code tool names. When you encounter these in a skill, use your platform equivalent:\n\n| Skill references | Gemini CLI equivalent |\n|-----------------|----------------------|\n| `Read` (file reading) | `read_file` |\n| `Write` (file creation) | `write_file` |\n| `Edit` (file editing) | `replace` |\n| `Bash` (run commands) | `run_shell_command` |\n| `Grep` (search file content) | `grep_search` |\n| `Glob` (search files by name) | `glob` |\n| `TodoWrite` (task tracking) | `write_todos` |\n| `Skill` tool (invoke a skill) | `activate_skill` |\n| `WebSearch` | `google_web_search` |\n| `WebFetch` | `web_fetch` |\n| `Task` tool (dispatch subagent) | No equivalent — Gemini CLI does not support subagents |\n\n## No subagent support\n\nGemini CLI has no equivalent to Claude Code's `Task` tool. Skills that rely on subagent dispatch (`subagent-driven-development`, `dispatching-parallel-agents`) will fall back to single-session execution via `executing-plans`.\n\n## Additional Gemini CLI tools\n\nThese tools are available in Gemini CLI but have no Claude Code equivalent:\n\n| Tool | Purpose |\n|------|---------|\n| `list_directory` | List files and subdirectories |\n| `save_memory` | Persist facts to GEMINI.md across sessions |\n| `ask_user` | Request structured input from the user |\n| `tracker_create_task` | Rich task management (create, update, list, visualize) |\n| `enter_plan_mode` / `exit_plan_mode` | Switch to read-only research mode before making changes |\n\n\n--- End of Context from: C:/Users/scove/.gemini/extensions/superpowers/GEMINI.md ---\n\n\n"}]}],"lastUpdated":"2026-06-07T09:57:10.074Z"}} -{"id":"e18b81fb-b544-402d-9a31-f27b43bb718a","timestamp":"2026-06-07T09:57:11.115Z","type":"info","content":"# Technical Summary - HALLUCINATE Project\r\n\r\n## Overview\r\nProject HALLUCINATE is a Unity-based multiplayer game utilizing **Photon Fusion** for networking and **UI Toolkit** for front-end management. Recent development has concentrated on the core networking infrastructure and the lobby system.\r\n\r\n## Modified Files\r\n- `Assets/Scripts/Network/BasicSpawner.cs`: Centralized `NetworkRunner` management, handling session creation, joining, and player profile initialization.\r\n- `Assets/Scripts/UI/LobbyController.cs`: UI logic for room management, password protection, and lounge interactions.\r\n- `Assets/Scripts/Player Controller/PlayerStateMachine.cs`: Core player logic (referenced in memory).\r\n\r\n## Key Logic & Decisions\r\n- **Network Architecture**: Singleton `BasicSpawner` manages the Fusion runner lifecycle. Session joining uses `SessionLobby.ClientServer`.\r\n- **UI Architecture**: `LobbyController` inherits from a base UI class and uses direct `VisualElement` queries for dynamic UI updates (UXML/USS).\r\n- **Security**: Implementation of session passwords via custom properties in Photon sessions.\r\n- **State Sync**: Player status (Ready/Start) and lounge info are synchronized between clients, likely via `PlayerDataManager`.\r\n\r\n## Next Steps\r\n- [ ] Verify RPC/SyncVar logic in `LobbyController.cs`.\r\n- [ ] Connect `PlayerStateMachine` to the spawning flow in `BasicSpawner`.\r\n- [ ] Implement/Finalize the chat system within the lobby lounge.\r\n- [ ] Ensure all scene transitions (Main Scene) are robust.\r\n"} -{"$set":{"lastUpdated":"2026-06-07T09:57:11.116Z"}} -{"id":"92450c4f-0e32-4e63-8ee3-6b2cdb282aaf","timestamp":"2026-06-07T09:57:11.306Z","type":"info","content":"You have 3 extensions with an update available. Run \"/extensions update caveman context7 superpowers\"."} -{"$set":{"lastUpdated":"2026-06-07T09:57:11.307Z"}} +{"sessionId":"c391d15d-d540-465a-bfd8-690dd3005f71","projectHash":"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d","startTime":"2026-06-07T11:37:35.635Z","lastUpdated":"2026-06-07T11:37:35.635Z","kind":"main"} +{"$set":{"messages":[{"id":"d04923d38bb0f6017037e74183378ef4","timestamp":"2026-06-07T11:37:35.636Z","type":"user","content":[{"text":"\nThis is the Gemini CLI. We are setting up the context for our chat.\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\nMy operating system is: win32\nThe project's temporary directory is: C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\n- **Workspace Directories:**\n - D:\\Learning_Progress\\Projects\\BABA_YAGA\n- **Directory Structure:**\n\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\n\nD:\\Learning_Progress\\Projects\\BABA_YAGA\\\n├───.gitignore\n├───GEMINI.md\n├───README.md\n├───.gemini-workspace-history\\\n│ ├───active-context.md\n│ ├───session-2026-04-30-21-39.json.gz\n│ ├───session-2026-04-30-21-47.json.gz\n│ ├───session-2026-05-01-01-26.json.gz\n│ ├───session-2026-05-01-01-51.json.gz\n│ ├───session-2026-05-01-02-25.json.gz\n│ ├───session-2026-05-01-14-48.json.gz\n│ ├───session-2026-05-01-16-53.json.gz\n│ ├───session-2026-05-01-17-28.json.gz\n│ ├───session-2026-05-01-17-29.json.gz\n│ ├───session-2026-05-01-17-31.json.gz\n│ ├───session-2026-05-01-18-10.json.gz\n│ ├───session-2026-05-01-20-30.json.gz\n│ ├───session-2026-05-01-20-42.json.gz\n│ ├───session-2026-05-01-21-05.json.gz\n│ ├───session-2026-05-01-21-07.json.gz\n│ ├───session-2026-05-01-21-10.json.gz\n│ ├───session-2026-05-01-21-11.json.gz\n│ ├───session-2026-05-01-21-51.json.gz\n│ ├───session-2026-05-01-23-27.json.gz\n│ ├───session-2026-05-02-00-00.json.gz\n│ ├───session-2026-05-03-21-30.json.gz\n│ ├───session-2026-06-04-23-01.json.gz\n│ ├───session-2026-06-06-00-13.json.gz\n│ ├───session-2026-06-07-16-57.json.gz\n│ ├───session-2026-06-07-18-23.json.gz\n│ ├───session-2026-06-07-18-27.json.gz\n│ ├───session-2026-06-07-18-35.json.gz\n│ ├───session-2026-06-07-18-37.json.gz\n│ └───summary-2026-04-30.md\n├───.git\\...\n├───.idea\\\n│ ├───.gitignore\n│ ├───encodings.xml\n│ ├───indexLayout.xml\n│ ├───vcs.xml\n│ └───.idea.BABA_YAGA\\\n│ └───.idea\\\n├───Assets\\\n│ ├───_Recovery.meta\n│ ├───All for one.meta\n│ ├───Animation.meta\n│ ├───Audio.meta\n│ ├───Editor.meta\n│ ├───Fonts.meta\n│ ├───InventoryData.json\n│ ├───InventoryData.json.meta\n│ ├───Materials.meta\n│ ├───Models.meta\n│ ├───Plugin.meta\n│ ├───Prefabs.meta\n│ ├───Presets.meta\n│ ├───Resources.meta\n│ ├───Scenes.meta\n│ ├───Scove.meta\n│ ├───Scripts.meta\n│ ├───Settings.meta\n│ ├───Shaders.meta\n│ ├───TEST CUA TUAN.meta\n│ ├───Textures.meta\n│ ├───Third Parties.meta\n│ ├───UI.meta\n│ ├───_Recovery\\\n│ │ ├───0 (1).unity\n│ │ ├───0 (1).unity.meta\n│ │ ├───0 (10).unity\n│ │ ├───0 (10).unity.meta\n│ │ ├───0 (11).unity\n│ │ ├───0 (11).unity.meta\n│ │ ├───0 (12).unity\n│ │ ├───0 (12).unity.meta\n│ │ ├───0 (13).unity\n│ │ ├───0 (13).unity.meta\n│ │ ├───0 (14).unity\n│ │ ├───0 (14).unity.meta\n│ │ ├───0 (2).unity\n│ │ ├───0 (2).unity.meta\n│ │ ├───0 (3).unity\n│ │ ├───0 (3).unity.meta\n│ │ ├───0 (4).unity\n│ │ ├───0 (4).unity.meta\n│ │ ├───0 (5).unity\n│ │ ├───0 (5).unity.meta\n│ │ ├───0 (6).unity\n│ │ ├───0 (6).unity.meta\n│ │ ├───0 (7).unity\n│ │ ├───0 (7).unity.meta\n│ │ ├───0 (8).unity\n│ │ ├───0 (8).unity.meta\n│ │ ├───0 (9).unity\n│ │ ├───0 (9).unity.meta\n│ │ ├───0.unity\n│ │ └───0.unity.meta\n│ ├───.gemini-workspace-history\\\n│ │ ├───active-context.md\n│ │ ├───session-2026-05-02-00-01.json.gz\n│ │ └───session-2026-05-02-19-42.json.gz\n│ ├───.idea\\\n│ │ ├───.gitignore\n│ │ ├───encodings.xml\n│ │ ├───indexLayout.xml\n│ │ └───vcs.xml\n│ ├───All for one\\\n│ │ ├───Basic Locomotion Demo.meta\n│ │ ├───...\n│ │ └───...\n│ ├───Animation\\\n│ ├───Audio\\\n│ ├───Editor\\\n│ ├───Fonts\\\n│ ├───Materials\\\n│ ├───Models\\\n│ ├───Plugin\\\n│ ├───Prefabs\\\n│ ├───Presets\\\n│ ├───Resources\\\n│ ├───Scenes\\\n│ ├───Scove\\\n│ ├───Scripts\\\n│ ├───Settings\\\n│ ├───Shaders\\\n│ ├───TEST CUA TUAN\\\n│ ├───Textures\\\n│ ├───Third Parties\\\n│ └───UI\\\n├───BABA_YAGA_Updater\\\n│ ├───.env.example\n│ ├───.gitignore\n│ ├───main.py\n│ ├───requirements.txt\n│ ├───.venv\\...\n│ ├───config\\\n│ ├───core\\\n│ ├───mappers\\\n│ ├───sections\\\n│ └───services\\\n├───Library\\...\n├───Logs\\...\n├───obj\\...\n├───Packages\\\n│ ├───manifest.json\n│ ├───packages-lock.json\n│ └───app.rive.rive-unity\\\n├───ProjectSettings\\\n│ ├───AudioManager.asset\n│ ├───ClusterInputManager.asset\n│ ├───DynamicsManager.asset\n│ ├───EditorBuildSettings.asset\n│ ├───EditorSettings.asset\n│ ├───GraphicsSettings.asset\n│ ├───InputManager.asset\n│ ├───MemorySettings.asset\n│ ├───MultiplayerManager.asset\n│ ├───NavMeshAreas.asset\n│ ├───PackageManagerSettings.asset\n│ ├───Physics2DSettings.asset\n│ ├───PresetManager.asset\n│ ├───ProjectSettings.asset\n│ ├───ProjectVersion.txt\n│ ├───QualitySettings.asset\n│ ├───SceneTemplateSettings.json\n│ ├───ShaderGraphSettings.asset\n│ ├───TagManager.asset\n│ ├───TimelineSettings.asset\n│ ├───TimeManager.asset\n│ ├───UnityConnectSettings.asset\n│ ├───URPProjectSettings.asset\n│ ├───VersionControlSettings.asset\n│ ├───VFXManager.asset\n│ ├───XRSettings.asset\n│ └───Packages\\\n├───Temp\\...\n├───UIElementsSchema\\\n│ ├───Hallucinate.UI.Components.xsd\n│ ├───UIElements.xsd\n│ ├───Unity.Multiplayer.PlayMode.Editor.xsd\n│ ├───Unity.Profiling.Editor.UI.xsd\n│ ├───Unity.Profiling.Editor.xsd\n│ ├───Unity.UI.Builder.xsd\n│ ├───Unity.UIToolkit.Editor.xsd\n│ ├───UnityEditor.Accessibility.xsd\n│ ├───UnityEditor.Audio.UIElements.xsd\n│ ├───UnityEditor.Experimental.GraphView.xsd\n│ ├───UnityEditor.Inspector.GraphicsSettingsInspectors.xsd\n│ ├───UnityEditor.Inspector.xsd\n│ ├───UnityEditor.Overlays.xsd\n│ ├───UnityEditor.PackageManager.UI.Internal.xsd\n│ ├───UnityEditor.Rendering.xsd\n│ ├───UnityEditor.Search.xsd\n│ ├───UnityEditor.ShaderGraph.Drawing.xsd\n│ ├───UnityEditor.ShortcutManagement.xsd\n│ ├───UnityEditor.Toolbars.xsd\n│ ├───UnityEditor.U2D.Sprites.SpriteEditorTool.xsd\n│ ├───UnityEditor.UIElements.Debugger.xsd\n│ ├───UnityEditor.UIElements.ProjectSettings.xsd\n│ ├───UnityEditor.UIElements.xsd\n│ └───UnityEngine.UIElements.xsd\n└───UserSettings\\...\n\n\n\n\n--- Context from: C:/Users/scove/.gemini/extensions/caveman/GEMINI.md ---\n\n---\nname: caveman\ndescription: >\n Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman\n while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,\n wenyan-lite, wenyan-full, wenyan-ultra.\n Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\",\n \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n---\n\nRespond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: \"stop caveman\" / \"normal mode\".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman |\n| **ultra** | Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, arrows for causality (X → Y), one word when one word enough |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample — \"Why React component re-render?\"\n- lite: \"Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`.\"\n- full: \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n- ultra: \"Inline obj prop → new ref → re-render. `useMemo`.\"\n- wenyan-lite: \"組件頻重繪,以每繪新生對象參照故。以 useMemo 包之。\"\n- wenyan-full: \"物出新參照,致重繪。useMemo .Wrap之。\"\n- wenyan-ultra: \"新參照→重繪。useMemo Wrap。\"\n\nExample — \"Explain database connection pooling.\"\n- lite: \"Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\"\n- full: \"Pool reuse open DB connections. No new connection per request. Skip handshake overhead.\"\n- ultra: \"Pool = reuse DB conn. Skip handshake → fast under load.\"\n- wenyan-full: \"池reuse open connection。不每req新開。skip handshake overhead。\"\n- wenyan-ultra: \"池reuse conn。skip handshake → fast。\"\n\n## Auto-Clarity\n\nDrop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.\n\nExample — destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nCode/commits/PRs: write normal. \"stop caveman\" or \"normal mode\": revert. Level persist until changed or session end.\n\n\n---\nname: caveman-commit\ndescription: >\n Ultra-compressed commit message generator. Cuts noise from commit messages while preserving\n intent and reasoning. Conventional Commits format. Subject ≤50 chars, body only when \"why\"\n isn't obvious. Use when user says \"write a commit\", \"commit message\", \"generate commit\",\n \"/commit\", or invokes /caveman-commit. Auto-triggers when staging changes.\n---\n\nWrite commit messages terse and exact. Conventional Commits format. No fluff. Why over what.\n\n## Rules\n\n**Subject line:**\n- `(): ` — `` optional\n- Types: `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore`, `build`, `ci`, `style`, `revert`\n- Imperative mood: \"add\", \"fix\", \"remove\" — not \"added\", \"adds\", \"adding\"\n- ≤50 chars when possible, hard cap 72\n- No trailing period\n- Match project convention for capitalization after the colon\n\n**Body (only if needed):**\n- Skip entirely when subject is self-explanatory\n- Add body only for: non-obvious *why*, breaking changes, migration notes, linked issues\n- Wrap at 72 chars\n- Bullets `-` not `*`\n- Reference issues/PRs at end: `Closes #42`, `Refs #17`\n\n**What NEVER goes in:**\n- \"This commit does X\", \"I\", \"we\", \"now\", \"currently\" — the diff says what\n- \"As requested by...\" — use Co-authored-by trailer\n- \"Generated with Claude Code\" or any AI attribution\n- Emoji (unless project convention requires)\n- Restating the file name when scope already says it\n\n## Examples\n\nDiff: new endpoint for user profile with body explaining the why\n- ❌ \"feat: add a new endpoint to get user profile information from the database\"\n- ✅\n ```\n feat(api): add GET /users/:id/profile\n\n Mobile client needs profile data without the full user payload\n to reduce LTE bandwidth on cold-launch screens.\n\n Closes #128\n ```\n\nDiff: breaking API change\n- ✅\n ```\n feat(api)!: rename /v1/orders to /v1/checkout\n\n BREAKING CHANGE: clients on /v1/orders must migrate to /v1/checkout\n before 2026-06-01. Old route returns 410 after that date.\n ```\n\n## Auto-Clarity\n\nAlways include body for: breaking changes, security fixes, data migrations, anything reverting a prior commit. Never compress these into subject-only — future debuggers need the context.\n\n## Boundaries\n\nOnly generates the commit message. Does not run `git commit`, does not stage files, does not amend. Output the message as a code block ready to paste. \"stop caveman-commit\" or \"normal mode\": revert to verbose commit style.\n\n\n---\nname: caveman-review\ndescription: >\n Ultra-compressed code review comments. Cuts noise from PR feedback while preserving\n the actionable signal. Each comment is one line: location, problem, fix. Use when user\n says \"review this PR\", \"code review\", \"review the diff\", \"/review\", or invokes\n /caveman-review. Auto-triggers when reviewing pull requests.\n---\n\nWrite code review comments terse and actionable. One line per finding. Location, problem, fix. No throat-clearing.\n\n## Rules\n\n**Format:** `L: . .` — or `:L: ...` when reviewing multi-file diffs.\n\n**Severity prefix (optional, when mixed):**\n- `🔴 bug:` — broken behavior, will cause incident\n- `🟡 risk:` — works but fragile (race, missing null check, swallowed error)\n- `🔵 nit:` — style, naming, micro-optim. Author can ignore\n- `❓ q:` — genuine question, not a suggestion\n\n**Drop:**\n- \"I noticed that...\", \"It seems like...\", \"You might want to consider...\"\n- \"This is just a suggestion but...\" — use `nit:` instead\n- \"Great work!\", \"Looks good overall but...\" — say it once at the top, not per comment\n- Restating what the line does — the reviewer can read the diff\n- Hedging (\"perhaps\", \"maybe\", \"I think\") — if unsure use `q:`\n\n**Keep:**\n- Exact line numbers\n- Exact symbol/function/variable names in backticks\n- Concrete fix, not \"consider refactoring this\"\n- The *why* if the fix isn't obvious from the problem statement\n\n## Examples\n\n❌ \"I noticed that on line 42 you're not checking if the user object is null before accessing the email property. This could potentially cause a crash if the user is not found in the database. You might want to add a null check here.\"\n\n✅ `L42: 🔴 bug: user can be null after .find(). Add guard before .email.`\n\n❌ \"It looks like this function is doing a lot of things and might benefit from being broken up into smaller functions for readability.\"\n\n✅ `L88-140: 🔵 nit: 50-line fn does 4 things. Extract validate/normalize/persist.`\n\n❌ \"Have you considered what happens if the API returns a 429? I think we should probably handle that case.\"\n\n✅ `L23: 🟡 risk: no retry on 429. Wrap in withBackoff(3).`\n\n## Auto-Clarity\n\nDrop terse mode for: security findings (CVE-class bugs need full explanation + reference), architectural disagreements (need rationale, not just a one-liner), and onboarding contexts where the author is new and needs the \"why\". In those cases write a normal paragraph, then resume terse for the rest.\n\n## Boundaries\n\nReviews only — does not write the code fix, does not approve/request-changes, does not run linters. Output the comment(s) ready to paste into the PR. \"stop caveman-review\" or \"normal mode\": revert to verbose review style.\n\n\n---\nname: caveman-compress\ndescription: >\n Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format\n to save input tokens. Preserves all technical substance, code, URLs, and structure.\n Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.\n Trigger: /caveman:compress or \"compress memory file\"\n---\n\n# Caveman Compress\n\n## Purpose\n\nCompress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as `.original.md`.\n\n## Trigger\n\n`/caveman:compress ` or when user asks to compress a memory file.\n\n## Process\n\n1. The compression scripts live in `caveman-compress/scripts/` (adjacent to this SKILL.md). If the path is not immediately available, search for `caveman-compress/scripts/__main__.py`.\n\n2. Run:\n\ncd caveman-compress && python3 -m scripts \n\n3. The CLI will:\n- detect file type (no tokens)\n- call Claude to compress\n- validate output (no tokens)\n- if errors: cherry-pick fix with Claude (targeted fixes only, no recompression)\n- retry up to 2 times\n- if still failing after 2 retries: report error to user, leave original file untouched\n\n4. Return result to user\n\n## Compression Rules\n\n### Remove\n- Articles: a, an, the\n- Filler: just, really, basically, actually, simply, essentially, generally\n- Pleasantries: \"sure\", \"certainly\", \"of course\", \"happy to\", \"I'd recommend\"\n- Hedging: \"it might be worth\", \"you could consider\", \"it would be good to\"\n- Redundant phrasing: \"in order to\" → \"to\", \"make sure to\" → \"ensure\", \"the reason is because\" → \"because\"\n- Connective fluff: \"however\", \"furthermore\", \"additionally\", \"in addition\"\n\n### Preserve EXACTLY (never modify)\n- Code blocks (fenced ``` and indented)\n- Inline code (`backtick content`)\n- URLs and links (full URLs, markdown links)\n- File paths (`/src/components/...`, `./config.yaml`)\n- Commands (`npm install`, `git commit`, `docker build`)\n- Technical terms (library names, API names, protocols, algorithms)\n- Proper nouns (project names, people, companies)\n- Dates, version numbers, numeric values\n- Environment variables (`$HOME`, `NODE_ENV`)\n\n### Preserve Structure\n- All markdown headings (keep exact heading text, compress body below)\n- Bullet point hierarchy (keep nesting level)\n- Numbered lists (keep numbering)\n- Tables (compress cell text, keep structure)\n- Frontmatter/YAML headers in markdown files\n\n### Compress\n- Use short synonyms: \"big\" not \"extensive\", \"fix\" not \"implement a solution for\", \"use\" not \"utilize\"\n- Fragments OK: \"Run tests before commit\" not \"You should always run tests before committing\"\n- Drop \"you should\", \"make sure to\", \"remember to\" — just state the action\n- Merge redundant bullets that say the same thing differently\n- Keep one example where multiple examples show the same pattern\n\nCRITICAL RULE:\nAnything inside ``` ... ``` must be copied EXACTLY.\nDo not:\n- remove comments\n- remove spacing\n- reorder lines\n- shorten commands\n- simplify anything\n\nInline code (`...`) must be preserved EXACTLY.\nDo not modify anything inside backticks.\n\nIf file contains code blocks:\n- Treat code blocks as read-only regions\n- Only compress text outside them\n- Do not merge sections around code\n\n## Pattern\n\nOriginal:\n> You should always make sure to run the test suite before pushing any changes to the main branch. This is important because it helps catch bugs early and prevents broken builds from being deployed to production.\n\nCompressed:\n> Run tests before push to main. Catch bugs early, prevent broken prod deploys.\n\nOriginal:\n> The application uses a microservices architecture with the following components. The API gateway handles all incoming requests and routes them to the appropriate service. The authentication service is responsible for managing user sessions and JWT tokens.\n\nCompressed:\n> Microservices architecture. API gateway route all requests to services. Auth service manage user sessions + JWT tokens.\n\n## Boundaries\n\n- ONLY compress natural language files (.md, .txt, extensionless)\n- NEVER modify: .py, .js, .ts, .json, .yaml, .yml, .toml, .env, .lock, .css, .html, .xml, .sql, .sh\n- If file has mixed content (prose + code), compress ONLY the prose sections\n- If unsure whether something is code or prose, leave it unchanged\n- Original file is backed up as FILE.original.md before overwriting\n- Never compress FILE.original.md (skip it)\n\n\n--- End of Context from: C:/Users/scove/.gemini/extensions/caveman/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/co-researcher/GEMINI.md ---\n# Co-Researcher Agents for Gemini\n\nThis project provides PhD-level research capabilities for your Gemini CLI sessions.\n\n## Available Agents\n\n### Available Skills\nSee `skills/` for the full list of capabilities, including:\n- `research-methodology`\n- `literature-review`\n- `critical-analysis`\n- `hypothesis-testing`\n- `lateral-thinking`\n- `qualitative-research`\n- `quantitative-analysis`\n- `peer-review`\n- `ethics-review`\n- `grant-writing`\n\n\n## How to use in Gemini CLI\n\nGemini automatically discovers these agents when you run it from this directory. You can invoke them by name:\n\n```bash\ngemini \"Use the literature-review skill to find recent papers on room temperature superconductors\"\ngemini \"Ask the critical-analysis skill to review my methodology in proposal.md\"\n```\n\nThe CLI reads the context from `agents/` and this `GEMINI.md` file automatically.\nIt also has access to the specialized skills in the `skills/` directory.\n\n### Available Skills\nSee `skills/` for the full list of capabilities, including:\n- `research-methodology`\n- `literature-review`\n- `critical-analysis`\n--- End of Context from: C:/Users/scove/.gemini/extensions/co-researcher/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/oh-my-product/GEMINI.md ---\n# oh-my-product Extension Context\r\n\r\nThis extension is the canonical public entry point for the `oh-my-product` workflow.\r\n\r\n> **Shared context**: See `context/omp-core.md` for the full agent catalog, workflow stages, quality gates, and state conventions.\r\n\r\n## Context Layers (priority order)\r\n1. **System/Runtime** — Gemini CLI constraints (immutable)\r\n2. **Project Standards** — This file (`GEMINI.md`) + `context/omp-core.md`\r\n3. **Session Memory** — `.omp/state/`, memory entries\r\n4. **Active Task** — Current plan, taskboard, PRD\r\n5. **Execution Traces** — Recent iteration results\r\n\r\n## Product intent\r\n- Keep orchestration incremental (MVP-first).\r\n- Default runtime backend is **tmux**.\r\n- Subagents are **experimental opt-in** only.\r\n- Setup defaults to **project scope**.\r\n\r\n## Preferred command flow\r\n1. `oh-my-product setup --scope project` (alias: `omp setup --scope project`)\r\n2. ensure `.gemini/agents/catalog.json` exists (repo contributor fallback: `npm run setup:subagents`)\r\n3. `oh-my-product doctor`\r\n4. `oh-my-product team run --task \"...\"`\r\n5. `oh-my-product verify`\r\n6. Optional MCP server surface: `oh-my-product mcp serve --dry-run --json`\r\n7. Optional live team bridge: `omx team 3:executor \"...\"`\r\n\r\n## Discoverability notes\r\n- Gemini's extension install preview may expose skills more visibly than command prompts.\r\n- Preview is not the full feature list: extension command TOML assets can still be installed even when they are not explicitly enumerated during install.\r\n- If preview output looks sparse, verify availability with direct CLI commands instead of relying on the preview screen alone.\r\n\r\nPrimary command families:\r\n- `setup`\r\n- `doctor`\r\n- `team run` / `team assemble` / `team plan` / `team prd` / `team exec`\r\n- `team subagents`\r\n- `team verify`\r\n- `tools`\r\n- `hud`\r\n- `intent` / `mode` / `approval` / `reasoning`\r\n- `workspace` / `taskboard` / `checkpoint`\r\n- `ralph` / `ultrawork` / `loop`\r\n- `consensus` / `optimize` / `memory` / `rules`\r\n- `launch` / `stop`\r\n\r\n## Guardrails\r\n- Do not skip sandbox checks when a task requires shell execution.\r\n- Prefer actionable failure output (what failed + how to fix it).\r\n- Keep state transitions observable under `.omp/state/`.\r\n\r\n## Handoff expectations\r\nWhen executing team tasks, include:\r\n- command(s) run,\r\n- final exit status,\r\n- key state/log paths for follow-up.\n--- End of Context from: C:/Users/scove/.gemini/extensions/oh-my-product/GEMINI.md ---\n\n--- Context from: C:/Users/scove/.gemini/extensions/superpowers/GEMINI.md ---\n\n---\nname: using-superpowers\ndescription: Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions\n---\n\n\nIf you were dispatched as a subagent to execute a specific task, skip this skill.\n\n\n\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\n\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\n\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\n\n\n## Instruction Priority\n\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\n\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\n2. **Superpowers skills** — override default system behavior where they conflict\n3. **Default system prompt** — lowest priority\n\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \"don't use TDD\" and a skill says \"always use TDD,\" follow the user's instructions. The user is in control.\n\n## How to Access Skills\n\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files.\n\n**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool.\n\n**In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand.\n\n**In other environments:** Check your platform's documentation for how skills are loaded.\n\n## Platform Adaptation\n\nSkills use Claude Code tool names. Non-CC platforms: see `references/copilot-tools.md` (Copilot CLI), `references/codex-tools.md` (Codex) for tool equivalents. Gemini CLI users get the tool mapping loaded automatically via GEMINI.md.\n\n# Using Skills\n\n## The Rule\n\n**Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.\n\n```dot\ndigraph skill_flow {\n \"User message received\" [shape=doublecircle];\n \"About to EnterPlanMode?\" [shape=doublecircle];\n \"Already brainstormed?\" [shape=diamond];\n \"Invoke brainstorming skill\" [shape=box];\n \"Might any skill apply?\" [shape=diamond];\n \"Invoke Skill tool\" [shape=box];\n \"Announce: 'Using [skill] to [purpose]'\" [shape=box];\n \"Has checklist?\" [shape=diamond];\n \"Create TodoWrite todo per item\" [shape=box];\n \"Follow skill exactly\" [shape=box];\n \"Respond (including clarifications)\" [shape=doublecircle];\n\n \"About to EnterPlanMode?\" -> \"Already brainstormed?\";\n \"Already brainstormed?\" -> \"Invoke brainstorming skill\" [label=\"no\"];\n \"Already brainstormed?\" -> \"Might any skill apply?\" [label=\"yes\"];\n \"Invoke brainstorming skill\" -> \"Might any skill apply?\";\n\n \"User message received\" -> \"Might any skill apply?\";\n \"Might any skill apply?\" -> \"Invoke Skill tool\" [label=\"yes, even 1%\"];\n \"Might any skill apply?\" -> \"Respond (including clarifications)\" [label=\"definitely not\"];\n \"Invoke Skill tool\" -> \"Announce: 'Using [skill] to [purpose]'\";\n \"Announce: 'Using [skill] to [purpose]'\" -> \"Has checklist?\";\n \"Has checklist?\" -> \"Create TodoWrite todo per item\" [label=\"yes\"];\n \"Has checklist?\" -> \"Follow skill exactly\" [label=\"no\"];\n \"Create TodoWrite todo per item\" -> \"Follow skill exactly\";\n}\n```\n\n## Red Flags\n\nThese thoughts mean STOP—you're rationalizing:\n\n| Thought | Reality |\n|---------|---------|\n| \"This is just a simple question\" | Questions are tasks. Check for skills. |\n| \"I need more context first\" | Skill check comes BEFORE clarifying questions. |\n| \"Let me explore the codebase first\" | Skills tell you HOW to explore. Check first. |\n| \"I can check git/files quickly\" | Files lack conversation context. Check for skills. |\n| \"Let me gather information first\" | Skills tell you HOW to gather information. |\n| \"This doesn't need a formal skill\" | If a skill exists, use it. |\n| \"I remember this skill\" | Skills evolve. Read current version. |\n| \"This doesn't count as a task\" | Action = task. Check for skills. |\n| \"The skill is overkill\" | Simple things become complex. Use it. |\n| \"I'll just do this one thing first\" | Check BEFORE doing anything. |\n| \"This feels productive\" | Undisciplined action wastes time. Skills prevent this. |\n| \"I know what that means\" | Knowing the concept ≠ using the skill. Invoke it. |\n\n## Skill Priority\n\nWhen multiple skills could apply, use this order:\n\n1. **Process skills first** (brainstorming, debugging) - these determine HOW to approach the task\n2. **Implementation skills second** (frontend-design, mcp-builder) - these guide execution\n\n\"Let's build X\" → brainstorming first, then implementation skills.\n\"Fix this bug\" → debugging first, then domain-specific skills.\n\n## Skill Types\n\n**Rigid** (TDD, debugging): Follow exactly. Don't adapt away discipline.\n\n**Flexible** (patterns): Adapt principles to context.\n\nThe skill itself tells you which.\n\n## User Instructions\n\nInstructions say WHAT, not HOW. \"Add X\" or \"Fix Y\" doesn't mean skip workflows.\n\n\n\n# Gemini CLI Tool Mapping\n\nSkills use Claude Code tool names. When you encounter these in a skill, use your platform equivalent:\n\n| Skill references | Gemini CLI equivalent |\n|-----------------|----------------------|\n| `Read` (file reading) | `read_file` |\n| `Write` (file creation) | `write_file` |\n| `Edit` (file editing) | `replace` |\n| `Bash` (run commands) | `run_shell_command` |\n| `Grep` (search file content) | `grep_search` |\n| `Glob` (search files by name) | `glob` |\n| `TodoWrite` (task tracking) | `write_todos` |\n| `Skill` tool (invoke a skill) | `activate_skill` |\n| `WebSearch` | `google_web_search` |\n| `WebFetch` | `web_fetch` |\n| `Task` tool (dispatch subagent) | No equivalent — Gemini CLI does not support subagents |\n\n## No subagent support\n\nGemini CLI has no equivalent to Claude Code's `Task` tool. Skills that rely on subagent dispatch (`subagent-driven-development`, `dispatching-parallel-agents`) will fall back to single-session execution via `executing-plans`.\n\n## Additional Gemini CLI tools\n\nThese tools are available in Gemini CLI but have no Claude Code equivalent:\n\n| Tool | Purpose |\n|------|---------|\n| `list_directory` | List files and subdirectories |\n| `save_memory` | Persist facts to GEMINI.md across sessions |\n| `ask_user` | Request structured input from the user |\n| `tracker_create_task` | Rich task management (create, update, list, visualize) |\n| `enter_plan_mode` / `exit_plan_mode` | Switch to read-only research mode before making changes |\n\n\n--- End of Context from: C:/Users/scove/.gemini/extensions/superpowers/GEMINI.md ---\n\n\n--- Context from: D:/Learning_Progress/Projects/BABA_YAGA/GEMINI.md ---\n/# 🌑 PROJECT HALLUCINATE - AI Instructions\r\n\r\nĐây là file hướng dẫn dành cho Gemini CLI để hiểu bối cảnh và quy chuẩn của dự án HALLUCINATE.\r\n\r\n## 🛠 Stack Kỹ thuật\r\n- **Engine:** Unity 6 (6000.3.10f1 LTS)\r\n- **Networking:** Photon Fusion (State Sync, Client-Side Prediction)\r\n- **Render Pipeline:** Universal Render Pipeline (URP)\r\n- **Architecture:** State Machine (Player), Interface-based Interaction (`IInteractable`).\r\n\r\n## 📂 Quy chuẩn Cấu trúc Thư mục\r\nTuân thủ nghiêm ngặt cấu trúc:\r\n- `Assets/Scripts/GameSetup/Maze/`: Các thuật toán tạo mê cung.\r\n- `Assets/Scripts/Player Controller/`: Logic di chuyển và State Machine của người chơi.\r\n- `Assets/Scripts/UI/`: Logic giao diện và Lobby.\r\n- `Assets/Scripts/Fusion/`: Các script liên quan đến Network và Spawner.\r\n\r\n## 📜 Quy ước Coding & Logic\r\n1. **Networking:**\r\n - Luôn sử dụng `FixedUpdateNetwork` thay vì `Update/FixedUpdate` cho các logic cần đồng bộ.\r\n - Sử dụng thuộc tính `[Networked]` cho các biến cần đồng bộ trạng thái.\r\n - Ưu tiên Client-Side Prediction và Reconciliation.\r\n2. **Character Control:**\r\n - Sử dụng State Machine để quản lý trạng thái di chuyển (Idle, Move, Sprint, Jump, Dash).\r\n - Camera Dynamics (Shake, FOV Kick) phải được xử lý mượt mà.\r\n3. **Interactions:**\r\n - Mọi vật thể có thể tương tác phải kế thừa từ `IInteractable` hoặc `BaseInteractable`.\r\n4. **Formatting:**\r\n - Luôn sử dụng PascalCase cho tên Method và Class.\r\n - camelCase cho biến private/local.\r\n\r\n## 🤖 Chỉ thị cho AI\r\n- **Phản hồi:** Ngắn gọn, súc tích, đi thẳng vào vấn đề kỹ thuật.\r\n- **An toàn:** Không bao giờ tự ý commit code trừ khi được yêu cầu rõ ràng.\r\n- **Tự động hóa:** Luôn cập nhật `MEMORY.md` sau mỗi thay đổi lớn hoặc khi kết thúc phiên làm việc.\n--- End of Context from: D:/Learning_Progress/Projects/BABA_YAGA/GEMINI.md ---\n\n\n"}]}],"lastUpdated":"2026-06-07T11:37:35.636Z"}} +{"id":"e6c33047-8962-44a0-b6d4-2c2c82942d51","timestamp":"2026-06-07T11:37:35.933Z","type":"info","content":"No summary found for the last session. Please use the 'workspace-summarizer' skill to generate one if needed."} +{"$set":{"lastUpdated":"2026-06-07T11:37:35.934Z"}} +{"id":"c018c673-87fd-4ffc-89da-18f5bce7d45e","timestamp":"2026-06-07T11:37:36.266Z","type":"info","content":"You have 3 extensions with an update available. Run \"/extensions update caveman context7 superpowers\"."} +{"$set":{"lastUpdated":"2026-06-07T11:37:36.266Z"}} +{"id":"7066b0e9-2c70-4786-a77e-5f8d869ffc3b","timestamp":"2026-06-07T11:37:37.233Z","type":"user","content":[{"text":"Here is the user's editor context as a JSON object. This is for your information only.\n```json\n{\n \"activeFile\": {\n \"path\": \"D:/Learning_Progress/Projects/BABA_YAGA/README.md\",\n \"cursor\": {\n \"line\": 557,\n \"character\": 28\n }\n }\n}\n```"}]} +{"$set":{"lastUpdated":"2026-06-07T11:37:37.233Z"}} +{"id":"b86aa450-209c-419a-acc8-c60b166d8944","timestamp":"2026-06-07T11:37:43.539Z","type":"user","content":[{"text":"EditTool"}]} +{"$set":{"lastUpdated":"2026-06-07T11:37:43.540Z"}} +{"id":"5bfb54b1-4b57-4485-834a-c784cb380830","timestamp":"2026-06-07T11:37:46.565Z","type":"gemini","content":"","thoughts":[{"subject":"Processing Project Parameters","description":"I am now aware of my operational context within the BABA YAGA project and my current user interaction point within the `README.md` file. My available skill set, including `caveman`, is also registered.","timestamp":"2026-06-07T11:37:46.377Z"}],"tokens":{"input":28380,"output":19,"cached":0,"thoughts":157,"tool":0,"total":28556},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:37:46.566Z"}} +{"id":"5bfb54b1-4b57-4485-834a-c784cb380830","timestamp":"2026-06-07T11:37:46.565Z","type":"gemini","content":"","thoughts":[{"subject":"Processing Project Parameters","description":"I am now aware of my operational context within the BABA YAGA project and my current user interaction point within the `README.md` file. My available skill set, including `caveman`, is also registered.","timestamp":"2026-06-07T11:37:46.377Z"}],"tokens":{"input":28380,"output":19,"cached":0,"thoughts":157,"tool":0,"total":28556},"model":"gemini-3-flash-preview","toolCalls":[{"id":"activate_skill__activate_skill_1780832266384_0","name":"activate_skill","args":{"name":"using-superpowers"},"result":[{"functionResponse":{"id":"activate_skill__activate_skill_1780832266384_0","name":"activate_skill","response":{"output":"\n \n \nIf you were dispatched as a subagent to execute a specific task, skip this skill.\n\n\n\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\n\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\n\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\n\n\n## Instruction Priority\n\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\n\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\n2. **Superpowers skills** — override default system behavior where they conflict\n3. **Default system prompt** — lowest priority\n\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \"don't use TDD\" and a skill says \"always use TDD,\" follow the user's instructions. The user is in control.\n\n## How to Access Skills\n\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files.\n\n**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool.\n\n**In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand.\n\n**In other environments:** Check your platform's documentation for how skills are loaded.\n\n## Platform Adaptation\n\nSkills use Claude Code tool names. Non-CC platforms: see `references/copilot-tools.md` (Copilot CLI), `references/codex-tools.md` (Codex) for tool equivalents. Gemini CLI users get the tool mapping loaded automatically via GEMINI.md.\n\n# Using Skills\n\n## The Rule\n\n**Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.\n\n```dot\ndigraph skill_flow {\n \"User message received\" [shape=doublecircle];\n \"About to EnterPlanMode?\" [shape=doublecircle];\n \"Already brainstormed?\" [shape=diamond];\n \"Invoke brainstorming skill\" [shape=box];\n \"Might any skill apply?\" [shape=diamond];\n \"Invoke Skill tool\" [shape=box];\n \"Announce: 'Using [skill] to [purpose]'\" [shape=box];\n \"Has checklist?\" [shape=diamond];\n \"Create TodoWrite todo per item\" [shape=box];\n \"Follow skill exactly\" [shape=box];\n \"Respond (including clarifications)\" [shape=doublecircle];\n\n \"About to EnterPlanMode?\" -> \"Already brainstormed?\";\n \"Already brainstormed?\" -> \"Invoke brainstorming skill\" [label=\"no\"];\n \"Already brainstormed?\" -> \"Might any skill apply?\" [label=\"yes\"];\n \"Invoke brainstorming skill\" -> \"Might any skill apply?\";\n\n \"User message received\" -> \"Might any skill apply?\";\n \"Might any skill apply?\" -> \"Invoke Skill tool\" [label=\"yes, even 1%\"];\n \"Might any skill apply?\" -> \"Respond (including clarifications)\" [label=\"definitely not\"];\n \"Invoke Skill tool\" -> \"Announce: 'Using [skill] to [purpose]'\";\n \"Announce: 'Using [skill] to [purpose]'\" -> \"Has checklist?\";\n \"Has checklist?\" -> \"Create TodoWrite todo per item\" [label=\"yes\"];\n \"Has checklist?\" -> \"Follow skill exactly\" [label=\"no\"];\n \"Create TodoWrite todo per item\" -> \"Follow skill exactly\";\n}\n```\n\n## Red Flags\n\nThese thoughts mean STOP—you're rationalizing:\n\n| Thought | Reality |\n|---------|---------|\n| \"This is just a simple question\" | Questions are tasks. Check for skills. |\n| \"I need more context first\" | Skill check comes BEFORE clarifying questions. |\n| \"Let me explore the codebase first\" | Skills tell you HOW to explore. Check first. |\n| \"I can check git/files quickly\" | Files lack conversation context. Check for skills. |\n| \"Let me gather information first\" | Skills tell you HOW to gather information. |\n| \"This doesn't need a formal skill\" | If a skill exists, use it. |\n| \"I remember this skill\" | Skills evolve. Read current version. |\n| \"This doesn't count as a task\" | Action = task. Check for skills. |\n| \"The skill is overkill\" | Simple things become complex. Use it. |\n| \"I'll just do this one thing first\" | Check BEFORE doing anything. |\n| \"This feels productive\" | Undisciplined action wastes time. Skills prevent this. |\n| \"I know what that means\" | Knowing the concept ≠ using the skill. Invoke it. |\n\n## Skill Priority\n\nWhen multiple skills could apply, use this order:\n\n1. **Process skills first** (brainstorming, debugging) - these determine HOW to approach the task\n2. **Implementation skills second** (frontend-design, mcp-builder) - these guide execution\n\n\"Let's build X\" → brainstorming first, then implementation skills.\n\"Fix this bug\" → debugging first, then domain-specific skills.\n\n## Skill Types\n\n**Rigid** (TDD, debugging): Follow exactly. Don't adapt away discipline.\n\n**Flexible** (patterns): Adapt principles to context.\n\nThe skill itself tells you which.\n\n## User Instructions\n\nInstructions say WHAT, not HOW. \"Add X\" or \"Fix Y\" doesn't mean skip workflows.\n \n\n \n Showing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\superpowers\\skills\\using-superpowers\\\n├───SKILL.md\n└───references\\\n ├───codex-tools.md\n ├───copilot-tools.md\n └───gemini-tools.md\n \n"}}}],"status":"success","timestamp":"2026-06-07T11:39:37.734Z","resultDisplay":"Skill **using-superpowers** activated. Resources loaded from `C:\\Users\\scove\\.gemini\\extensions\\superpowers\\skills\\using-superpowers`:\n\nShowing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\superpowers\\skills\\using-superpowers\\\n├───SKILL.md\n└───references\\\n ├───codex-tools.md\n ├───copilot-tools.md\n └───gemini-tools.md","description":"\"using-superpowers\": Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions","displayName":"Activate Skill","renderOutputAsMarkdown":true}]} +{"id":"7855dff4-93a1-41ee-b362-c70da79815b8","timestamp":"2026-06-07T11:39:37.736Z","type":"user","content":[{"functionResponse":{"id":"activate_skill__activate_skill_1780832266384_0","name":"activate_skill","response":{"output":"\n \n \nIf you were dispatched as a subagent to execute a specific task, skip this skill.\n\n\n\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\n\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\n\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\n\n\n## Instruction Priority\n\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\n\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\n2. **Superpowers skills** — override default system behavior where they conflict\n3. **Default system prompt** — lowest priority\n\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \"don't use TDD\" and a skill says \"always use TDD,\" follow the user's instructions. The user is in control.\n\n## How to Access Skills\n\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files.\n\n**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool.\n\n**In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand.\n\n**In other environments:** Check your platform's documentation for how skills are loaded.\n\n## Platform Adaptation\n\nSkills use Claude Code tool names. Non-CC platforms: see `references/copilot-tools.md` (Copilot CLI), `references/codex-tools.md` (Codex) for tool equivalents. Gemini CLI users get the tool mapping loaded automatically via GEMINI.md.\n\n# Using Skills\n\n## The Rule\n\n**Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.\n\n```dot\ndigraph skill_flow {\n \"User message received\" [shape=doublecircle];\n \"About to EnterPlanMode?\" [shape=doublecircle];\n \"Already brainstormed?\" [shape=diamond];\n \"Invoke brainstorming skill\" [shape=box];\n \"Might any skill apply?\" [shape=diamond];\n \"Invoke Skill tool\" [shape=box];\n \"Announce: 'Using [skill] to [purpose]'\" [shape=box];\n \"Has checklist?\" [shape=diamond];\n \"Create TodoWrite todo per item\" [shape=box];\n \"Follow skill exactly\" [shape=box];\n \"Respond (including clarifications)\" [shape=doublecircle];\n\n \"About to EnterPlanMode?\" -> \"Already brainstormed?\";\n \"Already brainstormed?\" -> \"Invoke brainstorming skill\" [label=\"no\"];\n \"Already brainstormed?\" -> \"Might any skill apply?\" [label=\"yes\"];\n \"Invoke brainstorming skill\" -> \"Might any skill apply?\";\n\n \"User message received\" -> \"Might any skill apply?\";\n \"Might any skill apply?\" -> \"Invoke Skill tool\" [label=\"yes, even 1%\"];\n \"Might any skill apply?\" -> \"Respond (including clarifications)\" [label=\"definitely not\"];\n \"Invoke Skill tool\" -> \"Announce: 'Using [skill] to [purpose]'\";\n \"Announce: 'Using [skill] to [purpose]'\" -> \"Has checklist?\";\n \"Has checklist?\" -> \"Create TodoWrite todo per item\" [label=\"yes\"];\n \"Has checklist?\" -> \"Follow skill exactly\" [label=\"no\"];\n \"Create TodoWrite todo per item\" -> \"Follow skill exactly\";\n}\n```\n\n## Red Flags\n\nThese thoughts mean STOP—you're rationalizing:\n\n| Thought | Reality |\n|---------|---------|\n| \"This is just a simple question\" | Questions are tasks. Check for skills. |\n| \"I need more context first\" | Skill check comes BEFORE clarifying questions. |\n| \"Let me explore the codebase first\" | Skills tell you HOW to explore. Check first. |\n| \"I can check git/files quickly\" | Files lack conversation context. Check for skills. |\n| \"Let me gather information first\" | Skills tell you HOW to gather information. |\n| \"This doesn't need a formal skill\" | If a skill exists, use it. |\n| \"I remember this skill\" | Skills evolve. Read current version. |\n| \"This doesn't count as a task\" | Action = task. Check for skills. |\n| \"The skill is overkill\" | Simple things become complex. Use it. |\n| \"I'll just do this one thing first\" | Check BEFORE doing anything. |\n| \"This feels productive\" | Undisciplined action wastes time. Skills prevent this. |\n| \"I know what that means\" | Knowing the concept ≠ using the skill. Invoke it. |\n\n## Skill Priority\n\nWhen multiple skills could apply, use this order:\n\n1. **Process skills first** (brainstorming, debugging) - these determine HOW to approach the task\n2. **Implementation skills second** (frontend-design, mcp-builder) - these guide execution\n\n\"Let's build X\" → brainstorming first, then implementation skills.\n\"Fix this bug\" → debugging first, then domain-specific skills.\n\n## Skill Types\n\n**Rigid** (TDD, debugging): Follow exactly. Don't adapt away discipline.\n\n**Flexible** (patterns): Adapt principles to context.\n\nThe skill itself tells you which.\n\n## User Instructions\n\nInstructions say WHAT, not HOW. \"Add X\" or \"Fix Y\" doesn't mean skip workflows.\n \n\n \n Showing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\superpowers\\skills\\using-superpowers\\\n├───SKILL.md\n└───references\\\n ├───codex-tools.md\n ├───copilot-tools.md\n └───gemini-tools.md\n \n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:39:37.736Z"}} +{"id":"97469b66-0100-4a4f-bf52-8b00b8e19e4a","timestamp":"2026-06-07T11:39:42.235Z","type":"gemini","content":"","thoughts":[{"subject":"Awaiting Next Task","description":"I am currently in a holding pattern, ready to engage with your prompt. My `brainstorming` and other capabilities are primed for when you provide the next directive.","timestamp":"2026-06-07T11:39:41.840Z"}],"tokens":{"input":30025,"output":71,"cached":27536,"thoughts":350,"tool":0,"total":30446},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:39:42.235Z"}} +{"id":"97469b66-0100-4a4f-bf52-8b00b8e19e4a","timestamp":"2026-06-07T11:39:42.235Z","type":"gemini","content":"","thoughts":[{"subject":"Awaiting Next Task","description":"I am currently in a holding pattern, ready to engage with your prompt. My `brainstorming` and other capabilities are primed for when you provide the next directive.","timestamp":"2026-06-07T11:39:41.840Z"}],"tokens":{"input":30025,"output":71,"cached":27536,"thoughts":350,"tool":0,"total":30446},"model":"gemini-3-flash-preview","toolCalls":[{"id":"activate_skill__activate_skill_1780832382084_0","name":"activate_skill","args":{"name":"workspace-summarizer"},"result":[{"functionResponse":{"id":"activate_skill__activate_skill_1780832382084_0","name":"activate_skill","response":{"output":"\n \n # Workspace Summarizer\n\n## Goal\nManage technical summaries and context for the current workspace.\n\n## Instructions\n- ALWAYS check the provided `` for `.gemini-workspace-history/active-context.md` at the start of this skill.\n- If the content is already present in the context, use it directly to avoid redundant file reads.\n- Summarize the last workspace history immediately after activation.\n- **Format:** The summary must follow the structure of existing `summary-*.md` files:\n - Brief technical overview.\n - List of modified files.\n - Key logic changes and architectural decisions.\n - Unresolved issues or next steps.\n- When summarizing, be technical and concise.\n\n## Tools\nYou can use standard file tools to write and read the summary if it is not present in the context.\n \n\n \n Showing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\workspace-history\\skills\\workspace-summarizer\\\n└───SKILL.md\n \n"}}}],"status":"success","timestamp":"2026-06-07T11:40:44.563Z","resultDisplay":"Skill **workspace-summarizer** activated. Resources loaded from `C:\\Users\\scove\\.gemini\\extensions\\workspace-history\\skills\\workspace-summarizer`:\n\nShowing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\workspace-history\\skills\\workspace-summarizer\\\n└───SKILL.md","description":"\"workspace-summarizer\": Summarizes your last work","displayName":"Activate Skill","renderOutputAsMarkdown":true},{"id":"run_shell_command__run_shell_command_1780832382092_1","name":"run_shell_command","args":{"command":"ls C:/Users/scove/.gemini/tmp/baba-yaga/memory/MEMORY.md","description":"Check for private memory file."},"result":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780832382092_1","name":"run_shell_command","response":{"output":"Output: \nls : Cannot find path 'C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\\memory\\MEMORY.md' because it does not exist.\nAt line:1 char:19\n+ ... 65001 >$null;ls C:/Users/scove/.gemini/tmp/baba-yaga/memory/MEMORY.md\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : ObjectNotFound: (C:\\Users\\scove\\...emory\\MEMORY.md:String) [Get-ChildItem], Item \n NotFoundException\n + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand\n \nExit Code: 1\nProcess Group PGID: 32568"}}}],"status":"success","timestamp":"2026-06-07T11:40:44.563Z","resultDisplay":[[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"ls : Cannot find path 'C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\\memory\\MEMORY.md' because it does not exist.","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"At line:1 char:19","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"+ ... 65001 >$null;ls C:/Users/scove/.gemini/tmp/baba-yaga/memory/MEMORY.md","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" + CategoryInfo : ObjectNotFound: (C:\\Users\\scove\\...emory\\MEMORY.md:String) [Get-ChildItem], Item ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" NotFoundException","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":true,"isUninitialized":true,"fg":"","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}]],"description":"ls C:/Users/scove/.gemini/tmp/baba-yaga/memory/MEMORY.md","displayName":"Shell","renderOutputAsMarkdown":false}]} +{"id":"2b4dfbe7-2934-4b66-8abc-4de3f9bd6753","timestamp":"2026-06-07T11:40:44.565Z","type":"user","content":[{"functionResponse":{"id":"activate_skill__activate_skill_1780832382084_0","name":"activate_skill","response":{"output":"\n \n # Workspace Summarizer\n\n## Goal\nManage technical summaries and context for the current workspace.\n\n## Instructions\n- ALWAYS check the provided `` for `.gemini-workspace-history/active-context.md` at the start of this skill.\n- If the content is already present in the context, use it directly to avoid redundant file reads.\n- Summarize the last workspace history immediately after activation.\n- **Format:** The summary must follow the structure of existing `summary-*.md` files:\n - Brief technical overview.\n - List of modified files.\n - Key logic changes and architectural decisions.\n - Unresolved issues or next steps.\n- When summarizing, be technical and concise.\n\n## Tools\nYou can use standard file tools to write and read the summary if it is not present in the context.\n \n\n \n Showing up to 200 items (files + folders).\n\nC:\\Users\\scove\\.gemini\\extensions\\workspace-history\\skills\\workspace-summarizer\\\n└───SKILL.md\n \n"}}},{"functionResponse":{"id":"run_shell_command__run_shell_command_1780832382092_1","name":"run_shell_command","response":{"output":"Output: \nls : Cannot find path 'C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\\memory\\MEMORY.md' because it does not exist.\nAt line:1 char:19\n+ ... 65001 >$null;ls C:/Users/scove/.gemini/tmp/baba-yaga/memory/MEMORY.md\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : ObjectNotFound: (C:\\Users\\scove\\...emory\\MEMORY.md:String) [Get-ChildItem], Item \n NotFoundException\n + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand\n \nExit Code: 1\nProcess Group PGID: 32568"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:40:44.565Z"}} +{"id":"fa5c5c83-7682-4fe3-8298-91b18e98c292","timestamp":"2026-06-07T11:40:47.624Z","type":"gemini","content":"","thoughts":[{"subject":"Checking Workspace History","description":"I'm verifying the existence of `MEMORY.md` by consulting `.gemini-workspace-history/active-context.md`. My check confirms that the file you're referring to, `D:\\Learning_Progress\\Projects\\BABA_YAGA\\.gemini-workspace-history\\active-context.md`, does indeed exist and contains relevant session context.","timestamp":"2026-06-07T11:40:47.472Z"}],"tokens":{"input":30887,"output":43,"cached":27529,"thoughts":156,"tool":0,"total":31086},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:40:47.624Z"}} +{"id":"fa5c5c83-7682-4fe3-8298-91b18e98c292","timestamp":"2026-06-07T11:40:47.624Z","type":"gemini","content":"","thoughts":[{"subject":"Checking Workspace History","description":"I'm verifying the existence of `MEMORY.md` by consulting `.gemini-workspace-history/active-context.md`. My check confirms that the file you're referring to, `D:\\Learning_Progress\\Projects\\BABA_YAGA\\.gemini-workspace-history\\active-context.md`, does indeed exist and contains relevant session context.","timestamp":"2026-06-07T11:40:47.472Z"}],"tokens":{"input":30887,"output":43,"cached":27529,"thoughts":156,"tool":0,"total":31086},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832447479_0","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/.gemini-workspace-history/active-context.md"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832447479_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 1-40 of 40 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 41.\n\n--- FILE CONTENT (truncated) ---\n## Full Previous Session Transcript (from session-2026-06-07-18-37.json.gz)\n\n{\"sessionId\":\"37e3cf24-4966-4005-85d4-ce3f931c0c8d\",\"projectHash\":\"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d\",\"startTime\":\"2026-06-07T11:35:10.383Z\",\"lastUpdated\":\"2026-06-07T11:35:10.383Z\",\"kind\":\"main\"}\n{\"$set\":{\"messages\":[{\"id\":\"d04923d38bb0f6017037e74183378ef4\",\"timestamp\":\"2026-06-07T11:35:10.383Z\",\"type\":\"user\",\"content\":[{\"text\":\"\\nThis is the Gemini CLI. We are setting up the context for our chat.\\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\\nMy operating system is: win32\\nThe project's temporary directory is: C:\\\\Users\\\\scove\\\\.gemini\\\\tmp\\\\baba-yaga\\n- **Workspace Directories:**\\n - D:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\n- **Directory Structure:**\\n\\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\\n\\nD:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\\\\\n├───.gitignore\\n├───GEMINI.md\\n├───README.md\\n├───.gemini-workspace-history\\\\\\n│ ├───active-context.md\\n│ ├───session-2026-04-30-21-39.json.gz\\n│ ├───session-2026-04-30-21-47.json.gz\\n│ ├───session-2026-05-01-01-26.json.gz\\n│ ├───session-2026-05-01-01-51.json.gz\\n│ ├───session-2026-05-01-02-25.json.gz\\n│ ├───session-2026-05-01-14-48.json.gz\\n│ ├───session-2026-05-01-16-53.json.gz\\n│ ├───session-2026-05-01-17-28.json.gz\\n│ ├───session-2026-05-01-17-29.json.gz\\n│ ├───session-2026-05-01-17-31.json.gz\\n│ ├───session-2026-05-01-18-10.json.gz\\n│ ├───session-2026-05-01-20-30.json.gz\\n│ ├───session-2026-05-01-20-42.json.gz\\n│ ├───session-2026-05-01-21-05.json.gz\\n│ ├───session-2026-05-01-21-07.json.gz\\n│ ├───session-2026-05-01-21-10.json.gz\\n│ ├───session-2026-05-01-21-11.json.gz\\n│ ├───session-2026-05-01-21-51.json.gz\\n│ ├───session-2026-05-01-23-27.json.gz\\n│ ├───session-2026-05-02-00-00.json.gz\\n│ ├───session-2026-05-03-21-30.json.gz\\n│ ├───session-2026-06-04-23-01.json.gz\\n│ ├───session-2026-06-06-00-13.json.gz\\n│ ├───session-2026-06-07-16-57.json.gz\\n│ ├───session-2026-06-07-18-23.json.gz\\n│ ├───session-2026-06-07-18-27.json.gz\\n│ ├───session-2026-06-07-18-35.json.gz\\n│ └───summary-2... [truncated]\n{\"id\":\"e55d090e-f1e9-48fb-893f-15db8151723d\",\"timestamp\":\"2026-06-07T11:35:10.664Z\",\"type\":\"info\",\"content\":\"No summary found for the last session. Please use the 'workspace-summarizer' skill to generate one if needed.\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:10.664Z\"}}\n{\"id\":\"e1b2e600-17b5-44ae-b996-143114c50ff5\",\"timestamp\":\"2026-06-07T11:35:11.048Z\",\"type\":\"info\",\"content\":\"You have 3 extensions with an update available. Run \\\"/extensions update caveman context7 superpowers\\\".\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:11.049Z\"}}\n{\"id\":\"9ece71ca-abf2-404f-89cd-cf1a981c44d6\",\"timestamp\":\"2026-06-07T11:35:29.318Z\",\"type\":\"user\",\"content\":[{\"text\":\"Here is the user's editor context as a JSON object. This is for your information only.\\n```json\\n{\\n \\\"activeFile\\\": {\\n \\\"path\\\": \\\"D:/Learning_Progress/Projects/BABA_YAGA/README.md\\\",\\n \\\"cursor\\\": {\\n \\\"line\\\": 557,\\n \\\"character\\\": 28\\n }\\n }\\n}\\n```\"}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:29.318Z\"}}\n{\"id\":\"ba72ca24-8291-48d9-a7c2-21d6a6ef8bd5\",\"timestamp\":\"2026-06-07T11:35:36.220Z\",\"type\":\"user\",\"content\":[{\"text\":\"gemini --allowed-tools WriteFileTool EditTool\"}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:36.220Z\"}}\n{\"id\":\"be58afa7-cb3f-48f1-ade7-195a70646b6f\",\"timestamp\":\"2026-06-07T11:35:39.422Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Invoking Core Mandates\",\"description\":\"I'm focusing on establishing the foundational workflows now, specifically initiating the \\\"using-superpowers\\\" skill to determine the best approach for understanding your needs as we begin this new session. This is a crucial first step.\",\"timestamp\":\"2026-06-07T11:35:39.297Z\"}],\"tokens\":{\"input\":28376,\"output\":19,\"cached\":19638,\"thoughts\":151,\"tool\":0,\"total\":28546},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:39.422Z\"}}\n{\"id\":\"be58afa7-cb3f-48f1-ade7-195a70646b6f\",\"timestamp\":\"2026-06-07T11:35:39.422Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Invoking Core Mandates\",\"description\":\"I'm focusing on establishing the foundational workflows now, specifically initiating the \\\"using-superpowers\\\" skill to determine the best approach for understanding your needs as we begin this new session. This is a crucial first step.\",\"timestamp\":\"2026-06-07T11:35:39.297Z\"}],\"tokens\":{\"input\":28376,\"output\":19,\"cached\":19638,\"thoughts\":151,\"tool\":0,\"total\":28546},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"activate_skill__activate_skill_1780832139304_0\",\"name\":\"activate_skill\",\"args\":{\"name\":\"using-superpowers\"},\"result\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832139304_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n \\nIf you were dispatched as a subagent to execute a specific task, skip this skill.\\n\\n\\n\\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\\n\\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\\n\\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\\n\\n\\n## Instruction Priority\\n\\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\\n\\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\\n2. **Superpowers skills** — override default system behavior where they conflict\\n3. **Default system prompt** — lowest priority\\n\\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \\\"don't use TDD\\\" and a skill says \\\"always use TDD,\\\" follow the user's instructions. The user is in control.\\n\\n## How to Access Skills\\n\\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, it... [truncated]\n{\"id\":\"e4635940-5ef1-4184-bad6-7de2f6cb9197\",\"timestamp\":\"2026-06-07T11:35:41.642Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832139304_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n \\nIf you were dispatched as a subagent to execute a specific task, skip this skill.\\n\\n\\n\\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\\n\\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\\n\\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\\n\\n\\n## Instruction Priority\\n\\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\\n\\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\\n2. **Superpowers skills** — override default system behavior where they conflict\\n3. **Default system prompt** — lowest priority\\n\\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \\\"don't use TDD\\\" and a skill says \\\"always use TDD,\\\" follow the user's instructions. The user is in control.\\n\\n## How to Access Skills\\n\\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files.\\n\\n**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool.\\n\\n**In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand.\\n\\n**In other environments:** Check your platform's documentation for how skills are loaded.\\n\\n## Platform Adaptation\\n\\nSkills use Claude Code tool names. Non-CC platforms: see `references/... [truncated]\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:41.642Z\"}}\n{\"id\":\"cebcefea-9b2f-4e3e-b85e-bcb0a5ac54eb\",\"timestamp\":\"2026-06-07T11:35:43.289Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[],\"tokens\":{\"input\":30015,\"output\":19,\"cached\":27536,\"thoughts\":28,\"tool\":0,\"total\":30062},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:43.289Z\"}}\n{\"id\":\"cebcefea-9b2f-4e3e-b85e-bcb0a5ac54eb\",\"timestamp\":\"2026-06-07T11:35:43.289Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[],\"tokens\":{\"input\":30015,\"output\":19,\"cached\":27536,\"thoughts\":28,\"tool\":0,\"total\":30062},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"activate_skill__activate_skill_1780832143131_0\",\"name\":\"activate_skill\",\"args\":{\"name\":\"workspace-summarizer\"},\"result\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832143131_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n # Workspace Summarizer\\n\\n## Goal\\nManage technical summaries and context for the current workspace.\\n\\n## Instructions\\n- ALWAYS check the provided `` for `.gemini-workspace-history/active-context.md` at the start of this skill.\\n- If the content is already present in the context, use it directly to avoid redundant file reads.\\n- Summarize the last workspace history immediately after activation.\\n- **Format:** The summary must follow the structure of existing `summary-*.md` files:\\n - Brief technical overview.\\n - List of modified files.\\n - Key logic changes and architectural decisions.\\n - Unresolved issues or next steps.\\n- When summarizing, be technical and concise.\\n\\n## Tools\\nYou can use standard file tools to write and read the summary if it is not present in the context.\\n \\n\\n \\n Showing up to 200 items (files + folders).\\n\\nC:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspace-summarizer\\\\\\n└───SKILL.md\\n \\n\"}}}],\"status\":\"success\",\"timestamp\":\"2026-06-07T11:35:43.951Z\",\"resultDisplay\":\"Skill **workspace-summarizer** activated. Resources loaded from `C:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspace-summarizer`:\\n\\nShowing up to 200 items (files + folders).\\n\\nC:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspac... [truncated]\n{\"id\":\"a2cdb692-2598-49a5-bf20-f38ad3d8f333\",\"timestamp\":\"2026-06-07T11:35:43.952Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832143131_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n # Workspace Summarizer\\n\\n## Goal\\nManage technical summaries and context for the current workspace.\\n\\n## Instructions\\n- ALWAYS check the provided `` for `.gemini-workspace-history/active-context.md` at the start of this skill.\\n- If the content is already present in the context, use it directly to avoid redundant file reads.\\n- Summarize the last workspace history immediately after activation.\\n- **Format:** The summary must follow the structure of existing `summary-*.md` files:\\n - Brief technical overview.\\n - List of modified files.\\n - Key logic changes and architectural decisions.\\n - Unresolved issues or next steps.\\n- When summarizing, be technical and concise.\\n\\n## Tools\\nYou can use standard file tools to write and read the summary if it is not present in the context.\\n \\n\\n \\n Showing up to 200 items (files + folders).\\n\\nC:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspace-summarizer\\\\\\n└───SKILL.md\\n \\n\"}}}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:43.953Z\"}}\n{\"id\":\"e9393242-2bb5-4b52-ab03-2b74ef6bd0af\",\"timestamp\":\"2026-06-07T11:35:47.085Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Workspace State\",\"description\":\"I'm currently reviewing the workspace state. My immediate focus is on examining the contents of `D:/Learning_Progress/Projects/BABA_YAGA/.gemini-workspace-history/active-context.md` to glean insights from the most recent session logs. I'll prioritize this directory listing for the initial assessment.\",\"timestamp\":\"2026-06-07T11:35:46.876Z\"}],\"tokens\":{\"input\":30330,\"output\":43,\"cached\":27528,\"thoughts\":190,\"tool\":0,\"total\":30563},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:47.085Z\"}}\n{\"id\":\"e9393242-2bb5-4b52-ab03-2b74ef6bd0af\",\"timestamp\":\"2026-06-07T11:35:47.085Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Workspace State\",\"description\":\"I'm currently reviewing the workspace state. My immediate focus is on examining the contents of `D:/Learning_Progress/Projects/BABA_YAGA/.gemini-workspace-history/active-context.md` to glean insights from the most recent session logs. I'll prioritize this directory listing for the initial assessment.\",\"timestamp\":\"2026-06-07T11:35:46.876Z\"}],\"tokens\":{\"input\":30330,\"output\":43,\"cached\":27528,\"thoughts\":190,\"tool\":0,\"total\":30563},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"read_file__read_file_1780832146882_0\",\"name\":\"read_file\",\"args\":{\"file_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/.gemini-workspace-history/active-context.md\"},\"result\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832146882_0\",\"name\":\"read_file\",\"response\":{\"output\":\"\\nIMPORTANT: The file content has been truncated.\\nStatus: Showing lines 1-32 of 32 total lines.\\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 33.\\n\\n--- FILE CONTENT (truncated) ---\\n## Full Previous Session Transcript (from session-2026-06-07-18-35.json.gz)\\n\\n{\\\"sessionId\\\":\\\"4bcab419-008a-47ee-9dcb-b1448603b638\\\",\\\"projectHash\\\":\\\"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d\\\",\\\"startTime\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"lastUpdated\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"kind\\\":\\\"main\\\"}\\n{\\\"$set\\\":{\\\"messages\\\":[{\\\"id\\\":\\\"d04923d38bb0f6017037e74183378ef4\\\",\\\"timestamp\\\":\\\"2026-06-07T11:27:53.582Z\\\",\\\"type\\\":\\\"user\\\",\\\"content\\\":[{\\\"text\\\":\\\"\\\\nThis is the Gemini CLI. We are setting up the context for our chat.\\\\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\\\\nMy operating system is: win32\\\\nThe project's temporary directory is... [truncated]\n{\"id\":\"d7dc3ab5-f049-4550-b80f-820140b892f1\",\"timestamp\":\"2026-06-07T11:35:47.101Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832146882_0\",\"name\":\"read_file\",\"response\":{\"output\":\"\\nIMPORTANT: The file content has been truncated.\\nStatus: Showing lines 1-32 of 32 total lines.\\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 33.\\n\\n--- FILE CONTENT (truncated) ---\\n## Full Previous Session Transcript (from session-2026-06-07-18-35.json.gz)\\n\\n{\\\"sessionId\\\":\\\"4bcab419-008a-47ee-9dcb-b1448603b638\\\",\\\"projectHash\\\":\\\"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d\\\",\\\"startTime\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"lastUpdated\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"kind\\\":\\\"main\\\"}\\n{\\\"$set\\\":{\\\"messages\\\":[{\\\"id\\\":\\\"d04923d38bb0f6017037e74183378ef4\\\",\\\"timestamp\\\":\\\"2026-06-07T11:27:53.582Z\\\",\\\"type\\\":\\\"user\\\",\\\"content\\\":[{\\\"text\\\":\\\"\\\\nThis is the Gemini CLI. We are setting up the context for our chat.\\\\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\\\\nMy operating system is: win32\\\\nThe project's temporary directory is: C:\\\\\\\\Users\\\\\\\\scove\\\\\\\\.gemini\\\\\\\\tmp\\\\\\\\baba-yaga\\\\n- **Workspace Directories:**\\\\n - D:\\\\\\\\Learning_Progress\\\\\\\\Projects\\\\\\\\BABA_YAGA\\\\n- **Directory Structure:**\\\\n\\\\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\\\\n\\\\nD:\\\\\\\\Learning_Progress\\\\\\\\Projects\\\\\\\\BABA_YAGA\\\\\\\\\\\\n├───.gitignore\\\\n├───GEMINI.md\\\\n├───README.md\\\\n├───.gemini-workspace-history\\\\\\\\\\\\n│ ├───active-context.md\\\\n│ ├───session-2026-04-30-21-39.json.gz\\\\n│ ├───session-2026-04-30-21-47.json.gz\\\\n│ ├───session-2026-05-01-01-26.json.gz\\\\n│ ├───session-2026-05-01-01-51.json.gz\\\\n│ ├───session-2026-05-01-02-25.json.gz\\\\n... [truncated]\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:47.102Z\"}}\n{\"id\":\"d6675b35-b19a-435d-bc70-8f4546179916\",\"timestamp\":\"2026-06-07T11:35:50.256Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Continuing Recent Work\",\"description\":\"I've reviewed the `active-context.md` file. The last session focused on updating `README.md` and architecting a layered Python system for retrieving data from Google Sheets. I'm ready to pick up where we left off.\",\"timestamp\":\"2026-06-07T11:35:50.098Z\"}],\"tokens\":{\"input\":37563,\"output\":40,\"cached\":27725,\"thoughts\":96,\"tool\":0,\"total\":37699},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:50.256Z\"}}\n{\"id\":\"d6675b35-b19a-435d-bc70-8f4546179916\",\"timestamp\":\"2026-06-07T11:35:50.256Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Continuing Recent Work\",\"description\":\"I've reviewed the `active-context.md` file. The last session focused on updating `README.md` and architecting a layered Python system for retrieving data from Google Sheets. I'm ready to pick up where we left off.\",\"timestamp\":\"2026-06-07T11:35:50.098Z\"}],\"tokens\":{\"input\":37563,\"output\":40,\"cached\":27725,\"thoughts\":96,\"tool\":0,\"total\":37699},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"list_directory__list_directory_1780832150110_0\",\"name\":\"list_directory\",\"args\":{\"dir_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections\"},\"result\":[{\"functionResponse\":{\"id\":\"list_directory__list_directory_1780832150110_0\",\"name\":\"list_directory\",\"response\":{\"output\":\"Directory D:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\\\BABA_YAGA_Updater\\\\sections is empty.\"}}}],\"status\":\"success\",\"timestamp\":\"2026-06-07T11:35:50.265Z\",\"resultDisplay\":\"Directory is empty.\",\"description\":\"BABA_YAGA_Updater\\\\sections\",\"displayName\":\"ReadFolder\",\"renderOutputAsMarkdown\":true}]}\n{\"id\":\"66692de1-e345-4ebf-b0ec-eeaf00c89d33\",\"timestamp\":\"2026-06-07T11:35:50.266Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"list_directory__list_directory_1780832150110_0\",\"name\":\"list_directory\",\"response\":{\"output\":\"Directory D:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\\\BABA_YAGA_Updater\\\\sections is empty.\"}}}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:50.266Z\"}}\n{\"id\":\"8d73be31-ab2d-4b38-a624-63a94c6ec5d1\",\"timestamp\":\"2026-06-07T11:35:52.937Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Directory Status\",\"description\":\"My current focus is on understanding why the `sections` directory is empty. I suspect the prior session was interrupted before it could finalize writing the output files.\",\"timestamp\":\"2026-06-07T11:35:52.730Z\"}],\"tokens\":{\"input\":37727,\"output\":34,\"cached\":35632,\"thoughts\":182,\"tool\":0,\"total\":37943},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:52.937Z\"}}\n{\"id\":\"8d73be31-ab2d-4b38-a624-63a94c6ec5d1\",\"timestamp\":\"2026-06-07T11:35:52.937Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Directory Status\",\"description\":\"My current focus is on understanding why the `sections` directory is empty. I suspect the prior session was interrupted before it could finalize writing the output files.\",\"timestamp\":\"2026-06-07T11:35:52.730Z\"}],\"tokens\":{\"input\":37727,\"output\":34,\"cached\":35632,\"thoughts\":182,\"tool\":0,\"total\":37943},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"args\":{\"file_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/README.md\"},\"result\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [... [truncated]\n{\"id\":\"f967310e-f917-4f0c-9317-73fd88a414fb\",\"timestamp\":\"2026-06-07T11:35:52.947Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\\n\\n---\\n\\n## \ud83d... [truncated]\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:52.948Z\"}}\n{\"id\":\"a3b38720-26cb-4483-b4f1-8db0360cd0f2\",\"timestamp\":\"2026-06-07T11:36:39.841Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Organizing README Sections\",\"description\":\"I'm now segmenting the `README.md` into nine distinct files within `BABA_YAGA_Updater/sections/`, starting with `01_vision.md` to capture the project's vision.\",\"timestamp\":\"2026-06-07T11:35:57.140Z\"},{\"subject\":\"Developing README Sections\",\"description\":\"I'm currently expanding the `README.md` structure by defining additional sections. I've identified placeholders for game mechanics, technical architecture, maze systems, network synchronization, multi-level comeback, development roadmap, team roles, advanced technical standards, project directory structure, and installation guides. I'm also integrating a \\\"Support & Community\\\" footer section.\",\"timestamp\":\"2026-06-07T11:35:58.494Z\"},{\"subject\":\"Structuring Documentation Contents\",\"description\":\"I'm now mapping out the content for my `README.md`, defining sections for Project Vision, Core Mechanics, Technical Architecture, Maze Generation, Networking, Comeback System, Roadmap, Team, and Installation. I've also established a placeholder for a Table of Contents.\",\"timestamp\":\"2026-06-07T11:35:59.427Z\"}],\"tokens\":{\"input\":45969,\"output\":8788,\"cached\":35830,\"thoughts\":836,\"tool\":0,\"total\":55593},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:36:39.841Z\"}}\n"}}}],"status":"success","timestamp":"2026-06-07T11:40:47.641Z","resultDisplay":"Read all 40 lines from .gemini-workspace-history/active-context.md (some lines were shortened)","description":".gemini-wo...\\...\\active-context.md","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"f9a05c9a-f99b-420a-aab1-54ca07f92ddd","timestamp":"2026-06-07T11:40:47.642Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832447479_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 1-40 of 40 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 41.\n\n--- FILE CONTENT (truncated) ---\n## Full Previous Session Transcript (from session-2026-06-07-18-37.json.gz)\n\n{\"sessionId\":\"37e3cf24-4966-4005-85d4-ce3f931c0c8d\",\"projectHash\":\"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d\",\"startTime\":\"2026-06-07T11:35:10.383Z\",\"lastUpdated\":\"2026-06-07T11:35:10.383Z\",\"kind\":\"main\"}\n{\"$set\":{\"messages\":[{\"id\":\"d04923d38bb0f6017037e74183378ef4\",\"timestamp\":\"2026-06-07T11:35:10.383Z\",\"type\":\"user\",\"content\":[{\"text\":\"\\nThis is the Gemini CLI. We are setting up the context for our chat.\\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\\nMy operating system is: win32\\nThe project's temporary directory is: C:\\\\Users\\\\scove\\\\.gemini\\\\tmp\\\\baba-yaga\\n- **Workspace Directories:**\\n - D:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\n- **Directory Structure:**\\n\\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\\n\\nD:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\\\\\n├───.gitignore\\n├───GEMINI.md\\n├───README.md\\n├───.gemini-workspace-history\\\\\\n│ ├───active-context.md\\n│ ├───session-2026-04-30-21-39.json.gz\\n│ ├───session-2026-04-30-21-47.json.gz\\n│ ├───session-2026-05-01-01-26.json.gz\\n│ ├───session-2026-05-01-01-51.json.gz\\n│ ├───session-2026-05-01-02-25.json.gz\\n│ ├───session-2026-05-01-14-48.json.gz\\n│ ├───session-2026-05-01-16-53.json.gz\\n│ ├───session-2026-05-01-17-28.json.gz\\n│ ├───session-2026-05-01-17-29.json.gz\\n│ ├───session-2026-05-01-17-31.json.gz\\n│ ├───session-2026-05-01-18-10.json.gz\\n│ ├───session-2026-05-01-20-30.json.gz\\n│ ├───session-2026-05-01-20-42.json.gz\\n│ ├───session-2026-05-01-21-05.json.gz\\n│ ├───session-2026-05-01-21-07.json.gz\\n│ ├───session-2026-05-01-21-10.json.gz\\n│ ├───session-2026-05-01-21-11.json.gz\\n│ ├───session-2026-05-01-21-51.json.gz\\n│ ├───session-2026-05-01-23-27.json.gz\\n│ ├───session-2026-05-02-00-00.json.gz\\n│ ├───session-2026-05-03-21-30.json.gz\\n│ ├───session-2026-06-04-23-01.json.gz\\n│ ├───session-2026-06-06-00-13.json.gz\\n│ ├───session-2026-06-07-16-57.json.gz\\n│ ├───session-2026-06-07-18-23.json.gz\\n│ ├───session-2026-06-07-18-27.json.gz\\n│ ├───session-2026-06-07-18-35.json.gz\\n│ └───summary-2... [truncated]\n{\"id\":\"e55d090e-f1e9-48fb-893f-15db8151723d\",\"timestamp\":\"2026-06-07T11:35:10.664Z\",\"type\":\"info\",\"content\":\"No summary found for the last session. Please use the 'workspace-summarizer' skill to generate one if needed.\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:10.664Z\"}}\n{\"id\":\"e1b2e600-17b5-44ae-b996-143114c50ff5\",\"timestamp\":\"2026-06-07T11:35:11.048Z\",\"type\":\"info\",\"content\":\"You have 3 extensions with an update available. Run \\\"/extensions update caveman context7 superpowers\\\".\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:11.049Z\"}}\n{\"id\":\"9ece71ca-abf2-404f-89cd-cf1a981c44d6\",\"timestamp\":\"2026-06-07T11:35:29.318Z\",\"type\":\"user\",\"content\":[{\"text\":\"Here is the user's editor context as a JSON object. This is for your information only.\\n```json\\n{\\n \\\"activeFile\\\": {\\n \\\"path\\\": \\\"D:/Learning_Progress/Projects/BABA_YAGA/README.md\\\",\\n \\\"cursor\\\": {\\n \\\"line\\\": 557,\\n \\\"character\\\": 28\\n }\\n }\\n}\\n```\"}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:29.318Z\"}}\n{\"id\":\"ba72ca24-8291-48d9-a7c2-21d6a6ef8bd5\",\"timestamp\":\"2026-06-07T11:35:36.220Z\",\"type\":\"user\",\"content\":[{\"text\":\"gemini --allowed-tools WriteFileTool EditTool\"}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:36.220Z\"}}\n{\"id\":\"be58afa7-cb3f-48f1-ade7-195a70646b6f\",\"timestamp\":\"2026-06-07T11:35:39.422Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Invoking Core Mandates\",\"description\":\"I'm focusing on establishing the foundational workflows now, specifically initiating the \\\"using-superpowers\\\" skill to determine the best approach for understanding your needs as we begin this new session. This is a crucial first step.\",\"timestamp\":\"2026-06-07T11:35:39.297Z\"}],\"tokens\":{\"input\":28376,\"output\":19,\"cached\":19638,\"thoughts\":151,\"tool\":0,\"total\":28546},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:39.422Z\"}}\n{\"id\":\"be58afa7-cb3f-48f1-ade7-195a70646b6f\",\"timestamp\":\"2026-06-07T11:35:39.422Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Invoking Core Mandates\",\"description\":\"I'm focusing on establishing the foundational workflows now, specifically initiating the \\\"using-superpowers\\\" skill to determine the best approach for understanding your needs as we begin this new session. This is a crucial first step.\",\"timestamp\":\"2026-06-07T11:35:39.297Z\"}],\"tokens\":{\"input\":28376,\"output\":19,\"cached\":19638,\"thoughts\":151,\"tool\":0,\"total\":28546},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"activate_skill__activate_skill_1780832139304_0\",\"name\":\"activate_skill\",\"args\":{\"name\":\"using-superpowers\"},\"result\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832139304_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n \\nIf you were dispatched as a subagent to execute a specific task, skip this skill.\\n\\n\\n\\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\\n\\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\\n\\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\\n\\n\\n## Instruction Priority\\n\\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\\n\\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\\n2. **Superpowers skills** — override default system behavior where they conflict\\n3. **Default system prompt** — lowest priority\\n\\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \\\"don't use TDD\\\" and a skill says \\\"always use TDD,\\\" follow the user's instructions. The user is in control.\\n\\n## How to Access Skills\\n\\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, it... [truncated]\n{\"id\":\"e4635940-5ef1-4184-bad6-7de2f6cb9197\",\"timestamp\":\"2026-06-07T11:35:41.642Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832139304_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n \\nIf you were dispatched as a subagent to execute a specific task, skip this skill.\\n\\n\\n\\nIf you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.\\n\\nIF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\\n\\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\\n\\n\\n## Instruction Priority\\n\\nSuperpowers skills override default system prompt behavior, but **user instructions always take precedence**:\\n\\n1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority\\n2. **Superpowers skills** — override default system behavior where they conflict\\n3. **Default system prompt** — lowest priority\\n\\nIf CLAUDE.md, GEMINI.md, or AGENTS.md says \\\"don't use TDD\\\" and a skill says \\\"always use TDD,\\\" follow the user's instructions. The user is in control.\\n\\n## How to Access Skills\\n\\n**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you—follow it directly. Never use the Read tool on skill files.\\n\\n**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered from installed plugins. The `skill` tool works the same as Claude Code's `Skill` tool.\\n\\n**In Gemini CLI:** Skills activate via the `activate_skill` tool. Gemini loads skill metadata at session start and activates the full content on demand.\\n\\n**In other environments:** Check your platform's documentation for how skills are loaded.\\n\\n## Platform Adaptation\\n\\nSkills use Claude Code tool names. Non-CC platforms: see `references/... [truncated]\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:41.642Z\"}}\n{\"id\":\"cebcefea-9b2f-4e3e-b85e-bcb0a5ac54eb\",\"timestamp\":\"2026-06-07T11:35:43.289Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[],\"tokens\":{\"input\":30015,\"output\":19,\"cached\":27536,\"thoughts\":28,\"tool\":0,\"total\":30062},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:43.289Z\"}}\n{\"id\":\"cebcefea-9b2f-4e3e-b85e-bcb0a5ac54eb\",\"timestamp\":\"2026-06-07T11:35:43.289Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[],\"tokens\":{\"input\":30015,\"output\":19,\"cached\":27536,\"thoughts\":28,\"tool\":0,\"total\":30062},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"activate_skill__activate_skill_1780832143131_0\",\"name\":\"activate_skill\",\"args\":{\"name\":\"workspace-summarizer\"},\"result\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832143131_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n # Workspace Summarizer\\n\\n## Goal\\nManage technical summaries and context for the current workspace.\\n\\n## Instructions\\n- ALWAYS check the provided `` for `.gemini-workspace-history/active-context.md` at the start of this skill.\\n- If the content is already present in the context, use it directly to avoid redundant file reads.\\n- Summarize the last workspace history immediately after activation.\\n- **Format:** The summary must follow the structure of existing `summary-*.md` files:\\n - Brief technical overview.\\n - List of modified files.\\n - Key logic changes and architectural decisions.\\n - Unresolved issues or next steps.\\n- When summarizing, be technical and concise.\\n\\n## Tools\\nYou can use standard file tools to write and read the summary if it is not present in the context.\\n \\n\\n \\n Showing up to 200 items (files + folders).\\n\\nC:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspace-summarizer\\\\\\n└───SKILL.md\\n \\n\"}}}],\"status\":\"success\",\"timestamp\":\"2026-06-07T11:35:43.951Z\",\"resultDisplay\":\"Skill **workspace-summarizer** activated. Resources loaded from `C:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspace-summarizer`:\\n\\nShowing up to 200 items (files + folders).\\n\\nC:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspac... [truncated]\n{\"id\":\"a2cdb692-2598-49a5-bf20-f38ad3d8f333\",\"timestamp\":\"2026-06-07T11:35:43.952Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"activate_skill__activate_skill_1780832143131_0\",\"name\":\"activate_skill\",\"response\":{\"output\":\"\\n \\n # Workspace Summarizer\\n\\n## Goal\\nManage technical summaries and context for the current workspace.\\n\\n## Instructions\\n- ALWAYS check the provided `` for `.gemini-workspace-history/active-context.md` at the start of this skill.\\n- If the content is already present in the context, use it directly to avoid redundant file reads.\\n- Summarize the last workspace history immediately after activation.\\n- **Format:** The summary must follow the structure of existing `summary-*.md` files:\\n - Brief technical overview.\\n - List of modified files.\\n - Key logic changes and architectural decisions.\\n - Unresolved issues or next steps.\\n- When summarizing, be technical and concise.\\n\\n## Tools\\nYou can use standard file tools to write and read the summary if it is not present in the context.\\n \\n\\n \\n Showing up to 200 items (files + folders).\\n\\nC:\\\\Users\\\\scove\\\\.gemini\\\\extensions\\\\workspace-history\\\\skills\\\\workspace-summarizer\\\\\\n└───SKILL.md\\n \\n\"}}}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:43.953Z\"}}\n{\"id\":\"e9393242-2bb5-4b52-ab03-2b74ef6bd0af\",\"timestamp\":\"2026-06-07T11:35:47.085Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Workspace State\",\"description\":\"I'm currently reviewing the workspace state. My immediate focus is on examining the contents of `D:/Learning_Progress/Projects/BABA_YAGA/.gemini-workspace-history/active-context.md` to glean insights from the most recent session logs. I'll prioritize this directory listing for the initial assessment.\",\"timestamp\":\"2026-06-07T11:35:46.876Z\"}],\"tokens\":{\"input\":30330,\"output\":43,\"cached\":27528,\"thoughts\":190,\"tool\":0,\"total\":30563},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:47.085Z\"}}\n{\"id\":\"e9393242-2bb5-4b52-ab03-2b74ef6bd0af\",\"timestamp\":\"2026-06-07T11:35:47.085Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Workspace State\",\"description\":\"I'm currently reviewing the workspace state. My immediate focus is on examining the contents of `D:/Learning_Progress/Projects/BABA_YAGA/.gemini-workspace-history/active-context.md` to glean insights from the most recent session logs. I'll prioritize this directory listing for the initial assessment.\",\"timestamp\":\"2026-06-07T11:35:46.876Z\"}],\"tokens\":{\"input\":30330,\"output\":43,\"cached\":27528,\"thoughts\":190,\"tool\":0,\"total\":30563},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"read_file__read_file_1780832146882_0\",\"name\":\"read_file\",\"args\":{\"file_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/.gemini-workspace-history/active-context.md\"},\"result\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832146882_0\",\"name\":\"read_file\",\"response\":{\"output\":\"\\nIMPORTANT: The file content has been truncated.\\nStatus: Showing lines 1-32 of 32 total lines.\\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 33.\\n\\n--- FILE CONTENT (truncated) ---\\n## Full Previous Session Transcript (from session-2026-06-07-18-35.json.gz)\\n\\n{\\\"sessionId\\\":\\\"4bcab419-008a-47ee-9dcb-b1448603b638\\\",\\\"projectHash\\\":\\\"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d\\\",\\\"startTime\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"lastUpdated\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"kind\\\":\\\"main\\\"}\\n{\\\"$set\\\":{\\\"messages\\\":[{\\\"id\\\":\\\"d04923d38bb0f6017037e74183378ef4\\\",\\\"timestamp\\\":\\\"2026-06-07T11:27:53.582Z\\\",\\\"type\\\":\\\"user\\\",\\\"content\\\":[{\\\"text\\\":\\\"\\\\nThis is the Gemini CLI. We are setting up the context for our chat.\\\\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\\\\nMy operating system is: win32\\\\nThe project's temporary directory is... [truncated]\n{\"id\":\"d7dc3ab5-f049-4550-b80f-820140b892f1\",\"timestamp\":\"2026-06-07T11:35:47.101Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832146882_0\",\"name\":\"read_file\",\"response\":{\"output\":\"\\nIMPORTANT: The file content has been truncated.\\nStatus: Showing lines 1-32 of 32 total lines.\\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 33.\\n\\n--- FILE CONTENT (truncated) ---\\n## Full Previous Session Transcript (from session-2026-06-07-18-35.json.gz)\\n\\n{\\\"sessionId\\\":\\\"4bcab419-008a-47ee-9dcb-b1448603b638\\\",\\\"projectHash\\\":\\\"4428cb73bec51e3b44252fcff9a34d2b26a399597cf22de2d66082790011fb8d\\\",\\\"startTime\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"lastUpdated\\\":\\\"2026-06-07T11:27:53.581Z\\\",\\\"kind\\\":\\\"main\\\"}\\n{\\\"$set\\\":{\\\"messages\\\":[{\\\"id\\\":\\\"d04923d38bb0f6017037e74183378ef4\\\",\\\"timestamp\\\":\\\"2026-06-07T11:27:53.582Z\\\",\\\"type\\\":\\\"user\\\",\\\"content\\\":[{\\\"text\\\":\\\"\\\\nThis is the Gemini CLI. We are setting up the context for our chat.\\\\nToday's date is Sunday, June 7, 2026 (formatted according to the user's locale).\\\\nMy operating system is: win32\\\\nThe project's temporary directory is: C:\\\\\\\\Users\\\\\\\\scove\\\\\\\\.gemini\\\\\\\\tmp\\\\\\\\baba-yaga\\\\n- **Workspace Directories:**\\\\n - D:\\\\\\\\Learning_Progress\\\\\\\\Projects\\\\\\\\BABA_YAGA\\\\n- **Directory Structure:**\\\\n\\\\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\\\\n\\\\nD:\\\\\\\\Learning_Progress\\\\\\\\Projects\\\\\\\\BABA_YAGA\\\\\\\\\\\\n├───.gitignore\\\\n├───GEMINI.md\\\\n├───README.md\\\\n├───.gemini-workspace-history\\\\\\\\\\\\n│ ├───active-context.md\\\\n│ ├───session-2026-04-30-21-39.json.gz\\\\n│ ├───session-2026-04-30-21-47.json.gz\\\\n│ ├───session-2026-05-01-01-26.json.gz\\\\n│ ├───session-2026-05-01-01-51.json.gz\\\\n│ ├───session-2026-05-01-02-25.json.gz\\\\n... [truncated]\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:47.102Z\"}}\n{\"id\":\"d6675b35-b19a-435d-bc70-8f4546179916\",\"timestamp\":\"2026-06-07T11:35:50.256Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Continuing Recent Work\",\"description\":\"I've reviewed the `active-context.md` file. The last session focused on updating `README.md` and architecting a layered Python system for retrieving data from Google Sheets. I'm ready to pick up where we left off.\",\"timestamp\":\"2026-06-07T11:35:50.098Z\"}],\"tokens\":{\"input\":37563,\"output\":40,\"cached\":27725,\"thoughts\":96,\"tool\":0,\"total\":37699},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:50.256Z\"}}\n{\"id\":\"d6675b35-b19a-435d-bc70-8f4546179916\",\"timestamp\":\"2026-06-07T11:35:50.256Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Continuing Recent Work\",\"description\":\"I've reviewed the `active-context.md` file. The last session focused on updating `README.md` and architecting a layered Python system for retrieving data from Google Sheets. I'm ready to pick up where we left off.\",\"timestamp\":\"2026-06-07T11:35:50.098Z\"}],\"tokens\":{\"input\":37563,\"output\":40,\"cached\":27725,\"thoughts\":96,\"tool\":0,\"total\":37699},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"list_directory__list_directory_1780832150110_0\",\"name\":\"list_directory\",\"args\":{\"dir_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections\"},\"result\":[{\"functionResponse\":{\"id\":\"list_directory__list_directory_1780832150110_0\",\"name\":\"list_directory\",\"response\":{\"output\":\"Directory D:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\\\BABA_YAGA_Updater\\\\sections is empty.\"}}}],\"status\":\"success\",\"timestamp\":\"2026-06-07T11:35:50.265Z\",\"resultDisplay\":\"Directory is empty.\",\"description\":\"BABA_YAGA_Updater\\\\sections\",\"displayName\":\"ReadFolder\",\"renderOutputAsMarkdown\":true}]}\n{\"id\":\"66692de1-e345-4ebf-b0ec-eeaf00c89d33\",\"timestamp\":\"2026-06-07T11:35:50.266Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"list_directory__list_directory_1780832150110_0\",\"name\":\"list_directory\",\"response\":{\"output\":\"Directory D:\\\\Learning_Progress\\\\Projects\\\\BABA_YAGA\\\\BABA_YAGA_Updater\\\\sections is empty.\"}}}]}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:50.266Z\"}}\n{\"id\":\"8d73be31-ab2d-4b38-a624-63a94c6ec5d1\",\"timestamp\":\"2026-06-07T11:35:52.937Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Directory Status\",\"description\":\"My current focus is on understanding why the `sections` directory is empty. I suspect the prior session was interrupted before it could finalize writing the output files.\",\"timestamp\":\"2026-06-07T11:35:52.730Z\"}],\"tokens\":{\"input\":37727,\"output\":34,\"cached\":35632,\"thoughts\":182,\"tool\":0,\"total\":37943},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:52.937Z\"}}\n{\"id\":\"8d73be31-ab2d-4b38-a624-63a94c6ec5d1\",\"timestamp\":\"2026-06-07T11:35:52.937Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Directory Status\",\"description\":\"My current focus is on understanding why the `sections` directory is empty. I suspect the prior session was interrupted before it could finalize writing the output files.\",\"timestamp\":\"2026-06-07T11:35:52.730Z\"}],\"tokens\":{\"input\":37727,\"output\":34,\"cached\":35632,\"thoughts\":182,\"tool\":0,\"total\":37943},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"args\":{\"file_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/README.md\"},\"result\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [... [truncated]\n{\"id\":\"f967310e-f917-4f0c-9317-73fd88a414fb\",\"timestamp\":\"2026-06-07T11:35:52.947Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\\n\\n---\\n\\n## \ud83d... [truncated]\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:35:52.948Z\"}}\n{\"id\":\"a3b38720-26cb-4483-b4f1-8db0360cd0f2\",\"timestamp\":\"2026-06-07T11:36:39.841Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Organizing README Sections\",\"description\":\"I'm now segmenting the `README.md` into nine distinct files within `BABA_YAGA_Updater/sections/`, starting with `01_vision.md` to capture the project's vision.\",\"timestamp\":\"2026-06-07T11:35:57.140Z\"},{\"subject\":\"Developing README Sections\",\"description\":\"I'm currently expanding the `README.md` structure by defining additional sections. I've identified placeholders for game mechanics, technical architecture, maze systems, network synchronization, multi-level comeback, development roadmap, team roles, advanced technical standards, project directory structure, and installation guides. I'm also integrating a \\\"Support & Community\\\" footer section.\",\"timestamp\":\"2026-06-07T11:35:58.494Z\"},{\"subject\":\"Structuring Documentation Contents\",\"description\":\"I'm now mapping out the content for my `README.md`, defining sections for Project Vision, Core Mechanics, Technical Architecture, Maze Generation, Networking, Comeback System, Roadmap, Team, and Installation. I've also established a placeholder for a Table of Contents.\",\"timestamp\":\"2026-06-07T11:35:59.427Z\"}],\"tokens\":{\"input\":45969,\"output\":8788,\"cached\":35830,\"thoughts\":836,\"tool\":0,\"total\":55593},\"model\":\"gemini-3-flash-preview\"}\n{\"$set\":{\"lastUpdated\":\"2026-06-07T11:36:39.841Z\"}}\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:40:47.643Z"}} +{"id":"8280d7d9-d599-4f0b-adb2-fd9878a2ec0e","timestamp":"2026-06-07T11:40:52.668Z","type":"gemini","content":"","thoughts":[{"subject":"Continuing README splitting","description":"I've reviewed the prior session's progress. It appears the `README.md` splitting task stalled, as the target `sections` folder was empty. I'll proceed with that work, leveraging the `using-superpowers` and `workspace-summarizer` tools to aid the process.","timestamp":"2026-06-07T11:40:51.879Z"},{"subject":"Assessing next steps","description":"I'm currently evaluating the prior turn's context. It seems the `README.md` splitting might require further input or clarification from you, as the target directory was empty. I'll await your direction on how best to proceed with that task, keeping the `GEMINI.md` instruction to update memory in mind.","timestamp":"2026-06-07T11:40:52.377Z"}],"tokens":{"input":40622,"output":50,"cached":27780,"thoughts":438,"tool":0,"total":41110},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:40:52.668Z"}} +{"id":"8280d7d9-d599-4f0b-adb2-fd9878a2ec0e","timestamp":"2026-06-07T11:40:52.668Z","type":"gemini","content":"","thoughts":[{"subject":"Continuing README splitting","description":"I've reviewed the prior session's progress. It appears the `README.md` splitting task stalled, as the target `sections` folder was empty. I'll proceed with that work, leveraging the `using-superpowers` and `workspace-summarizer` tools to aid the process.","timestamp":"2026-06-07T11:40:51.879Z"},{"subject":"Assessing next steps","description":"I'm currently evaluating the prior turn's context. It seems the `README.md` splitting might require further input or clarification from you, as the target directory was empty. I'll await your direction on how best to proceed with that task, keeping the `GEMINI.md` instruction to update memory in mind.","timestamp":"2026-06-07T11:40:52.377Z"}],"tokens":{"input":40622,"output":50,"cached":27780,"thoughts":438,"tool":0,"total":41110},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832452387_0","name":"read_file","args":{"end_line":580,"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/README.md","start_line":540},"result":[{"functionResponse":{"id":"read_file__read_file_1780832452387_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 540-564 of 564 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 565.\n\n--- FILE CONTENT (truncated) ---\n \n \"Buy\n \n \n \"Discord\"\n \n \n \"Ko-fi\"\n \n

\n\n

\n \"Visitors\"\n

\n\n---\n\n**© 2026 SCOVANIA STUDIOS.**\n*Baba_Yaga is more than a game, it's a social experiment.*\n\n---\n\n**Connect with us:**\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\n"}}}],"status":"success","timestamp":"2026-06-07T11:40:52.682Z","resultDisplay":"Read lines 540-564 of 564 from README.md","description":"README.md","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"b5b647be-4957-4687-940f-3f7891e116d6","timestamp":"2026-06-07T11:40:52.683Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832452387_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 540-564 of 564 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 565.\n\n--- FILE CONTENT (truncated) ---\n \n \"Buy\n \n \n \"Discord\"\n \n \n \"Ko-fi\"\n \n

\n\n

\n \"Visitors\"\n

\n\n---\n\n**© 2026 SCOVANIA STUDIOS.**\n*Baba_Yaga is more than a game, it's a social experiment.*\n\n---\n\n**Connect with us:**\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:40:52.683Z"}} +{"id":"dc428ca3-84c2-494c-9039-86f3589cce06","timestamp":"2026-06-07T11:40:55.296Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":41581,"output":38,"cached":39690,"thoughts":80,"tool":0,"total":41699},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:40:55.296Z"}} +{"id":"dc428ca3-84c2-494c-9039-86f3589cce06","timestamp":"2026-06-07T11:40:55.296Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":41581,"output":38,"cached":39690,"thoughts":80,"tool":0,"total":41699},"model":"gemini-3-flash-preview","toolCalls":[{"id":"list_directory__list_directory_1780832455155_0","name":"list_directory","args":{"dir_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater"},"result":[{"functionResponse":{"id":"list_directory__list_directory_1780832455155_0","name":"list_directory","response":{"output":"Directory listing for D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater:\n[DIR] .venv\n[DIR] config\n[DIR] core\n[DIR] mappers\n[DIR] sections\n[DIR] services\n.env.example (150 bytes)\n.gitignore (100 bytes)\nmain.py (1228 bytes)\nrequirements.txt (95 bytes)"}}}],"status":"success","timestamp":"2026-06-07T11:40:55.309Z","resultDisplay":{"summary":"Found 10 item(s).","files":["[DIR] .venv","[DIR] config","[DIR] core","[DIR] mappers","[DIR] sections","[DIR] services",".env.example",".gitignore","main.py","requirements.txt"]},"description":"BABA_YAGA_Updater","displayName":"ReadFolder","renderOutputAsMarkdown":true}]} +{"id":"99373bce-8d52-40f0-9186-1b8bab037097","timestamp":"2026-06-07T11:40:55.310Z","type":"user","content":[{"functionResponse":{"id":"list_directory__list_directory_1780832455155_0","name":"list_directory","response":{"output":"Directory listing for D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater:\n[DIR] .venv\n[DIR] config\n[DIR] core\n[DIR] mappers\n[DIR] sections\n[DIR] services\n.env.example (150 bytes)\n.gitignore (100 bytes)\nmain.py (1228 bytes)\nrequirements.txt (95 bytes)"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:40:55.310Z"}} +{"id":"6229cb9d-1502-41f4-a7f6-61e8242b37e0","timestamp":"2026-06-07T11:40:57.653Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":41797,"output":42,"cached":39676,"thoughts":41,"tool":0,"total":41880},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:40:57.654Z"}} +{"id":"6229cb9d-1502-41f4-a7f6-61e8242b37e0","timestamp":"2026-06-07T11:40:57.653Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":41797,"output":42,"cached":39676,"thoughts":41,"tool":0,"total":41880},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832457516_0","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/main.py"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832457516_0","name":"read_file","response":{"output":"import sys\nfrom services.gsheet_client import GSheetClient\nfrom mappers.sheet_mapper import SheetMapper\nfrom mappers.markdown_builder import MarkdownBuilder\nfrom services.readme_editor import ReadmeEditor\n\ndef main():\n try:\n print(\"🚀 Starting README update from Google Sheets...\")\n \n # 1. Fetch data from Google Sheets\n client = GSheetClient()\n raw_rows = client.fetch_data()\n \n if not raw_rows:\n print(\"⚠️ No data found in the spreadsheet or error occurred.\")\n return\n\n # 2. Map raw rows to Core Models\n report = SheetMapper.map_rows_to_report(raw_rows)\n print(f\"✅ Parsed {len(report.tasks)} tasks.\")\n\n # 3. Build Markdown content\n markdown_content = MarkdownBuilder.build_table(report)\n\n # 4. Update README.md\n editor = ReadmeEditor()\n if editor.update_section(markdown_content):\n print(\"🎉 README.md successfully updated!\")\n else:\n print(\"❌ Failed to update README.md.\")\n\n except Exception as e:\n print(f\"💥 An unexpected error occurred: {e}\")\n sys.exit(1)\n\nif __name__ == \"__main__\":\n main()\n"}}}],"status":"success","timestamp":"2026-06-07T11:40:57.665Z","resultDisplay":"","description":"BABA_YAGA_Updater\\main.py","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"c20b40fd-90db-4bb7-b06d-7ada283ce643","timestamp":"2026-06-07T11:40:57.666Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832457516_0","name":"read_file","response":{"output":"import sys\nfrom services.gsheet_client import GSheetClient\nfrom mappers.sheet_mapper import SheetMapper\nfrom mappers.markdown_builder import MarkdownBuilder\nfrom services.readme_editor import ReadmeEditor\n\ndef main():\n try:\n print(\"🚀 Starting README update from Google Sheets...\")\n \n # 1. Fetch data from Google Sheets\n client = GSheetClient()\n raw_rows = client.fetch_data()\n \n if not raw_rows:\n print(\"⚠️ No data found in the spreadsheet or error occurred.\")\n return\n\n # 2. Map raw rows to Core Models\n report = SheetMapper.map_rows_to_report(raw_rows)\n print(f\"✅ Parsed {len(report.tasks)} tasks.\")\n\n # 3. Build Markdown content\n markdown_content = MarkdownBuilder.build_table(report)\n\n # 4. Update README.md\n editor = ReadmeEditor()\n if editor.update_section(markdown_content):\n print(\"🎉 README.md successfully updated!\")\n else:\n print(\"❌ Failed to update README.md.\")\n\n except Exception as e:\n print(f\"💥 An unexpected error occurred: {e}\")\n sys.exit(1)\n\nif __name__ == \"__main__\":\n main()\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:40:57.667Z"}} +{"id":"abe9a3b5-ba6a-4b23-8a5f-ff612255395f","timestamp":"2026-06-07T11:41:00.303Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":42184,"output":46,"cached":39667,"thoughts":71,"tool":0,"total":42301},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:41:00.304Z"}} +{"id":"abe9a3b5-ba6a-4b23-8a5f-ff612255395f","timestamp":"2026-06-07T11:41:00.303Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":42184,"output":46,"cached":39667,"thoughts":71,"tool":0,"total":42301},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832460118_0","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/services/readme_editor.py"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832460118_0","name":"read_file","response":{"output":"import re\nfrom config.settings import settings\n\nclass ReadmeEditor:\n def __init__(self, file_path: str = None):\n self.file_path = file_path or settings.README_PATH\n\n def update_section(self, new_content: str):\n with open(self.file_path, 'r', encoding='utf-8') as f:\n content = f.read()\n\n # Regex to find content between markers\n pattern = re.compile(\n f\"({re.escape(settings.START_MARKER)})(.*?)({re.escape(settings.END_MARKER)})\",\n re.DOTALL\n )\n\n if not pattern.search(content):\n print(f\"Markers {settings.START_MARKER} and {settings.END_MARKER} not found in {self.file_path}\")\n return False\n\n updated_content = pattern.sub(\n f\"\\\\1\\n\\n{new_content}\\n\\n\\\\3\",\n content\n )\n\n with open(self.file_path, 'w', encoding='utf-8') as f:\n f.write(updated_content)\n \n return True\n"}}}],"status":"success","timestamp":"2026-06-07T11:41:00.315Z","resultDisplay":"","description":"BABA_YAGA_U...\\...\\readme_editor.py","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"2ce9a345-1650-44e1-9fb7-0c80f67bd224","timestamp":"2026-06-07T11:41:00.316Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832460118_0","name":"read_file","response":{"output":"import re\nfrom config.settings import settings\n\nclass ReadmeEditor:\n def __init__(self, file_path: str = None):\n self.file_path = file_path or settings.README_PATH\n\n def update_section(self, new_content: str):\n with open(self.file_path, 'r', encoding='utf-8') as f:\n content = f.read()\n\n # Regex to find content between markers\n pattern = re.compile(\n f\"({re.escape(settings.START_MARKER)})(.*?)({re.escape(settings.END_MARKER)})\",\n re.DOTALL\n )\n\n if not pattern.search(content):\n print(f\"Markers {settings.START_MARKER} and {settings.END_MARKER} not found in {self.file_path}\")\n return False\n\n updated_content = pattern.sub(\n f\"\\\\1\\n\\n{new_content}\\n\\n\\\\3\",\n content\n )\n\n with open(self.file_path, 'w', encoding='utf-8') as f:\n f.write(updated_content)\n \n return True\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:41:00.316Z"}} +{"id":"df1ae5e4-1804-4f96-a1f7-b30395e65d5a","timestamp":"2026-06-07T11:41:03.263Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":42579,"output":44,"cached":39659,"thoughts":36,"tool":0,"total":42659},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:41:03.264Z"}} +{"id":"df1ae5e4-1804-4f96-a1f7-b30395e65d5a","timestamp":"2026-06-07T11:41:03.263Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":42579,"output":44,"cached":39659,"thoughts":36,"tool":0,"total":42659},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832462960_0","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/config/settings.py"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832462960_0","name":"read_file","response":{"output":"import os\nfrom dotenv import load_dotenv\n\n# Load .env file if it exists\nload_dotenv()\n\nclass Settings:\n # Google Sheets Configuration\n SPREADSHEET_ID = os.getenv(\"SPREADSHEET_ID\", \"\")\n SHEET_RANGE = os.getenv(\"SHEET_RANGE\", \"Sheet1!A2:E\") # Default range\n CREDENTIALS_FILE = os.getenv(\"CREDENTIALS_FILE\", \"credentials.json\")\n TOKEN_FILE = os.getenv(\"TOKEN_FILE\", \"token.json\")\n\n # README Configuration\n README_PATH = os.getenv(\"README_PATH\", \"../README.md\")\n \n # Section Markers\n START_MARKER = \"\"\n END_MARKER = \"\"\n\nsettings = Settings()\n"}}}],"status":"success","timestamp":"2026-06-07T11:41:03.278Z","resultDisplay":"","description":"BABA_YAGA_Updater\\...\\settings.py","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"d5824c39-b264-4698-bd9a-3e6217685d25","timestamp":"2026-06-07T11:41:03.280Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832462960_0","name":"read_file","response":{"output":"import os\nfrom dotenv import load_dotenv\n\n# Load .env file if it exists\nload_dotenv()\n\nclass Settings:\n # Google Sheets Configuration\n SPREADSHEET_ID = os.getenv(\"SPREADSHEET_ID\", \"\")\n SHEET_RANGE = os.getenv(\"SHEET_RANGE\", \"Sheet1!A2:E\") # Default range\n CREDENTIALS_FILE = os.getenv(\"CREDENTIALS_FILE\", \"credentials.json\")\n TOKEN_FILE = os.getenv(\"TOKEN_FILE\", \"token.json\")\n\n # README Configuration\n README_PATH = os.getenv(\"README_PATH\", \"../README.md\")\n \n # Section Markers\n START_MARKER = \"\"\n END_MARKER = \"\"\n\nsettings = Settings()\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:41:03.280Z"}} +{"id":"4482d340-efb8-45f4-9cf9-ad3cb329309a","timestamp":"2026-06-07T11:41:05.538Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":42850,"output":24,"cached":39647,"thoughts":33,"tool":0,"total":42907},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:41:05.539Z"}} +{"id":"4482d340-efb8-45f4-9cf9-ad3cb329309a","timestamp":"2026-06-07T11:41:05.538Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":42850,"output":24,"cached":39647,"thoughts":33,"tool":0,"total":42907},"model":"gemini-3-flash-preview","toolCalls":[{"id":"grep_search__grep_search_1780832465406_0","name":"grep_search","args":{"pattern":""},"result":[{"functionResponse":{"id":"grep_search__grep_search_1780832465406_0","name":"grep_search","response":{"output":"Found 6 matches for pattern \"\" across 3 workspace directories:\n---\nFile: BABA_YAGA\\.gemini-workspace-history\\active-context.md\nL35: {\"id\":\"8d73be31-ab2d-4b38-a624-63a94c6ec5d1\",\"timestamp\":\"2026-06-07T11:35:52.937Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Directory Status\",\"description\":\"My current focus is on understanding why the `sections` directory is empty. I suspect the prior session was interrupted before it could finalize writing the output files.\",\"timestamp\":\"2026-06-07T11:35:52.730Z\"}],\"tokens\":{\"input\":37727,\"output\":34,\"cached\":35632,\"thoughts\":182,\"tool\":0,\"total\":37943},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"args\":{\"file_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/README.md\"},\"result\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [... [truncated]\nL36: {\"id\":\"f967310e-f917-4f0c-9317-73fd88a414fb\",\"timestamp\":\"2026-06-07T11:35:52.947Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\\n\\n---\\n\\n## 👁... [truncated]\n---\nFile: BABA_YAGA\\BABA_YAGA_Updater\\config\\settings.py\nL18: START_MARKER = \"\"\nL19: END_MARKER = \"\"\n---\nFile: BABA_YAGA\\README.md\nL388: \nL389: \n---"}}}],"status":"success","timestamp":"2026-06-07T11:41:06.969Z","resultDisplay":{"summary":"Found 6 matches","matches":[{"filePath":"BABA_YAGA\\.gemini-workspace-history\\active-context.md","absolutePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\.gemini-workspace-history\\active-context.md","lineNumber":35,"line":"{\"id\":\"8d73be31-ab2d-4b38-a624-63a94c6ec5d1\",\"timestamp\":\"2026-06-07T11:35:52.937Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Directory Status\",\"description\":\"My current focus is on understanding why the `sections` directory is empty. I suspect the prior session was interrupted before it could finalize writing the output files.\",\"timestamp\":\"2026-06-07T11:35:52.730Z\"}],\"tokens\":{\"input\":37727,\"output\":34,\"cached\":35632,\"thoughts\":182,\"tool\":0,\"total\":37943},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"args\":{\"file_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/README.md\"},\"result\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\\n\\n---\\n\\n## 👁️ Tầm nhìn Dự án (Project Vision)\\n\\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\\n\\nDự án hướng tới việc tạo ra một trải nghiệm **\\\"High-Stakes Hide & Seek\\\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\\n* **Spatial Audio:** Âm thanh là \\\"bản đồ\\\" thứ hai.\\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\\n\\n---\\n\\n## 🎮 Cơ chế Trò chơi (Core Mechanics)\\n\\n### 🌓 Sự bất đối xứng (The Asymmetry)\\n\\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\\n| :--- | :--- | :--- |\\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\\n\\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\\n\\n```mermaid\\ngraph TD\\n %% Định nghĩa Style cho các nhóm\\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\\n\\n %% Phase 1: Initialization\\n subgraph Initialization [\\\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\\\"]\\n A[\\\"🚀 Bắt đầu Trận đấu\\\"] --> B{\\\"🤝 Matchmaking
(Photon Fusion)\\\"}\\n B --> C[\\\"🎭 Phân vai: Seeker vs Trapper\\\"]\\n C --> D[\\\"🧩 Maze Generator
(Prims/Wilsons)\\\"]\\n D --> E[\\\"🏗️ Baking NavMesh & Colliders\\\"]\\n E --> F[\\\"🧍 Character Auto-Setup\\\"]\\n F --> G[\\\"📍 Spawn Players\\\"]\\n end\\n class Initialization,A,B,C,D,E,F,G initStyle;\\n\\n %% Phase 2: Core Loop\\n subgraph Active_Round [\\\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\\\"]\\n G --> Loop((TICK: FixedUpdateNetwork))\\n \\n %% Seeker Branch\\n subgraph Seeker_Logic [\\\"🏃 SEEKER (POV 1st)\\\"]\\n S1[\\\"⌨️ Input: WASD/Space\\\"] --> S2[\\\"🏃 State: Move/Dash\\\"]\\n S2 --> S3{\\\"⚡ Hành động?\\\"}\\n S3 -- \\\"Sprinting\\\" --> S4[\\\"🔊 Noise Up\\\"]\\n S3 -- \\\"Sneaking\\\" --> S5[\\\"🤫 Noise Down\\\"]\\n S3 -- \\\"Flashlight\\\" --> S6[\\\"🔦 Lộ vị trí\\\"]\\n \\n S4 & S5 & S6 --> S_Check{\\\"🔍 Check Env\\\"}\\n S_Check -- \\\"Dẫm bẫy\\\" --> S_Trap[\\\"⚠️ Bị khống chế\\\"]\\n end\\n\\n %% Trapper Branch\\n subgraph Trapper_Logic [\\\"🕸️ TRAPPER (STRATEGY)\\\"]\\n T1[\\\"🖱️ Mouse Input\\\"] --> T2[\\\"🗺️ View: Heatmap/Cams\\\"]\\n T2 --> T3{\\\"🛠️ Kỹ năng?\\\"}\\n T3 -- \\\"Đặt bẫy\\\" --> T4[\\\"🪤 Sync Trap\\\"]\\n T3 -- \\\"Scan\\\" --> T5[\\\"📡 Ping Seeker\\\"]\\n T3 -- \\\"Lock\\\" --> T6[\\\"🚪 Khóa cửa\\\"]\\n \\n T4 & T5 & T6 --> T_Check{\\\"👁️ Theo dõi\\\"}\\n end\\n\\n %% Networking Layer\\n subgraph Network_Sync [\\\"🌐 NETWORK SYNC\\\"]\\n Loop --> NS1[\\\"⏩ Client Prediction\\\"]\\n NS1 --> NS2[\\\"🔄 Server Reconciliation\\\"]\\n NS2 --> NS3[\\\"📦 State Sync\\\"]\\n end\\n end\\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\\n class S_Trap criticalStyle;\\n\\n %% Phase 3: Results\\n subgraph Result_Logic [\\\"3. KẾT THÚC & THƯỞNG\\\"]\\n S_Check -- \\\"Chạm Exit\\\" --> Win_S[\\\"🏆 SEEKER THẮNG\\\"]\\n T_Check -- \\\"Bắt được Seeker\\\" --> Win_T[\\\"🏆 TRAPPER THẮNG\\\"]\\n Loop -- \\\"Timer = 0\\\" --> Win_T\\n \\n Win_S & Win_T --> Post_Match[\\\"📊 Thống kê Rank\\\"]\\n Post_Match --> Buff{\\\"⚖️ Balance Check\\\"}\\n Buff -- \\\"Thua cuộc\\\" --> Buff_Apply[\\\"💎 Kích hoạt Comeback Buff\\\"]\\n Buff_Apply --> A\\n end\\n class Win_S,Win_T winStyle;\\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\\n\\n %% Interactions (Dashed Lines)\\n S_Trap -.->|Cảnh báo| T_Check\\n S4 -.->|Sóng âm| T2\\n T4 -.->|Collision ẩn| S_Check\\n NS3 --> Loop\\n```\\n\\n---\\n\\n## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\\n\\n### 1. Advanced Player & Camera State Machine\\n\\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\\n\\n```mermaid\\nstateDiagram-v2\\n direction TB\\n\\n state \\\"🌸 GROUND\\\" as Ground {\\n [*] --> Idle\\n \\n state Idle {\\n I_P: 📝 Vel < 0.1m/s\\n I_C: 🌡️ Breathing (0.5Hz)\\n }\\n\\n Idle --> Moving : \\\"Input.mag > 0.1\\\"\\n state Moving {\\n M_P: 👟 Speed 2-4m/s\\n M_C: 🎢 Head Bob (1.2Hz)\\n }\\n\\n Moving --> Sneaking : \\\"OnSneak (Hold)\\\"\\n state Sneaking {\\n Sn_P: 🤫 Noise -50%\\n Sn_C: 📉 Lower Height\\n }\\n\\n Moving --> Sprinting : \\\"OnSprint (Hold)\\\"\\n state Sprinting {\\n Sp_P: ⚡ Speed > 6.5m/s\\n Sp_C: 🌈 Dynamic FOV\\n }\\n\\n Sprinting --> Moving : \\\"Stamina Empty\\\"\\n Sneaking --> Moving : \\\"Release Sneak\\\"\\n }\\n\\n state \\\"☁️ AIRBORNE\\\" as Air {\\n state Jump {\\n J_P: 🆙 AddForce Up\\n }\\n state Falling {\\n F_P: 📉 Gravity x 1.5\\n }\\n state Landing {\\n L_P: 📏 Impact Check\\n }\\n\\n Jump --> Falling : \\\"Vel.y < 0\\\"\\n Falling --> Landing : \\\"IsGrounded == true\\\"\\n }\\n\\n state \\\"⚡ ACTION\\\" as Utility {\\n state Dashing {\\n D_P: 💨 Burst 15m/s\\n }\\n state Interacting {\\n Int_P: 🔒 Root Motion Lock\\n }\\n }\\n\\n state \\\"🌐 NETWORK\\\" as Net {\\n state \\\"Input Authority\\\" as IA\\n state \\\"State Authority\\\" as SA\\n IA --> SA : \\\"Send Input\\\"\\n SA --> IA : \\\"Reconcile\\\"\\n }\\n\\n %% Transitions chính\\n Ground --> Air : \\\"IsGrounded == false\\\"\\n Air --> Ground : \\\"OnLand Event\\\"\\n Ground --> Utility : \\\"OnAbility\\\"\\n Utility --> Ground : \\\"Complete\\\"\\n\\n %% Sửa lỗi Note bằng cấu trúc block ✨\\n note left of Ground\\n ✨ Sync: Velocity\\n ✨ State: MoveState\\n end note\\n\\n note right of Net\\n ⚙️ Photon Fusion\\n ⚙️ FixedUpdateNetwork\\n end note\\n```\\n\\n### 2. Environment Scanner & Interaction\\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\\n\\n---\\n\\n## 🧩 Hệ thống Mê cung (Maze Generation)\\n\\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\\n\\n| Algorithm | Complexity | Description |\\n| :--- | :--- | :--- |\\n| **Prims** | O(E log V) | Tạo mê cung \\\"dày\\\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\\n\\n### Quy trình khởi tạo (Maze Generation Pipeline)\\n\\n```mermaid\\ngraph TD\\n %% Định nghĩa Style\\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\\n\\n %% Quy trình chính\\n Start((\\\"💔 PLAYER LOSES ROUND\\\")) --> Streak{{\\\"📊 Check Loss Streak\\\"}}\\n\\n %% Phân tầng Buff\\n subgraph Buff_Pools [\\\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\\\"]\\n Streak -- \\\"1 Trận\\\" --> T1\\n Streak -- \\\"2 Trận\\\" --> T2\\n Streak -- \\\"3+ Trận\\\" --> T3\\n\\n T1[\\\"🥉 Tier 1: Awakening
(Small Boosts)\\\"] \\n T2[\\\"🥈 Tier 2: Evolution
(Tactical Advantage)\\\"]\\n T3[\\\"🥇 Tier 3: Manifestation
(Game Changer)\\\"]\\n \\n %% Ví dụ chỉ số (Tooltip-like)\\n T1 --- T1_Ex[\\\"+10% Speed
+15% Stamina Regen\\\"]\\n T2 --- T2_Ex[\\\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\\\"]\\n T3 --- T3_Ex[\\\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\\\"]\\n end\\n\\n %% Giai đoạn áp dụng\\n T1 & T2 & T3 --> Selection{{\\\"🎲 Selection Mode\\\"}}\\n \\n Selection -- \\\"Manual\\\" --> P1[\\\"Người chơi tự chọn 1 trong 3 Buff\\\"]\\n Selection -- \\\"Auto\\\" --> P2[\\\"Hệ thống chọn ngẫu nhiên\\\"]\\n \\n P1 & P2 --> Apply[\\\"✨ Apply to Next Round Only
(Trạng thái: Active)\\\"]\\n\\n %% Kết quả vòng đấu sau\\n Apply --> Result{{\\\"🏁 New Round Result?\\\"}}\\n\\n Result -- \\\"🏆 WIN\\\" --> Reset[\\\"♻️ Reset Streak
Remove All Buffs\\\"]\\n Result -- \\\"❌ LOSS\\\" --> Increment[\\\"📈 Increase Streak
Progress to Next Tier\\\"]\\n\\n %% Vòng lặp\\n Reset --> NewGame((\\\"🎮 Fair Match\\\"))\\n Increment --> Start\\n\\n %% Gán Style\\n class Start,Increment lossStyle;\\n class T1,T1_Ex tier1Style;\\n class T2,T2_Ex tier2Style;\\n class T3,T3_Ex tier3Style;\\n class Selection,P1,P2,Apply systemStyle;\\n class Result,Reset,NewGame winStyle;\\n```\\n\\n---\\n\\n## 🌐 Đồng bộ Mạng (Networking)\\n\\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\\n\\n### Network Data Flow & Synchronization\\n```mermaid\\nsequenceDiagram\\n autonumber\\n \\n %% Định nghĩa các bên tham gia (Rút gọn để tránh lỗi render)\\n participant IR as 🖱️ Input\\n participant CP as 🎀 Local Player\\n participant NT as 🌐 Fusion Net\\n participant S as 👑 Server\\n participant RP as 👥 Proxies\\n\\n %% --- GIAI ĐOẠN 1 ---\\n Note over IR, CP: [PHASE 1] Thu thập Input\\n IR->>CP: OnMove / OnJump / OnSprint\\n CP->>CP: 📦 Pack NetworkInputData\\n\\n %% --- GIAI ĐOẠN 2 ---\\n Note over CP: [PHASE 2] Dự đoán (Prediction)\\n CP->>CP: 🏃 Run Client-Side Physics\\n CP->>NT: ✉️ Send Input (Tick N)\\n\\n %% --- GIAI ĐOẠN 3 ---\\n Note over NT, S: [PHASE 3] Truyền tin mạng\\n NT->>S: UDP Packet Delivery\\n Note right of S: SERVER SIMULATION\\n S->>S: 📝 Validate & Update State\\n S-->>NT: 📣 Snapshot (Tick N)\\n\\n %% --- GIAI ĐOẠN 4 ---\\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\\n NT-->>CP: State Snapshot\\n Note over CP: 🔄 RECONCILIATION\\n CP->>CP: Fix Position if Error > Threshold\\n\\n %% --- GIAI ĐOẠN 5 ---\\n Note over NT, RP: [PHASE 5] Proxy Update\\n NT-->>RP: State Snapshot\\n Note over RP: 🎞️ INTERPOLATION (Lerp)\\n\\n %% --- GIAI ĐOẠN 6 ---\\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\\n CP->>CP: Update Camera Shake/VFX\\n RP->>RP: Smooth Mesh Movement\\n```\\n\\n---\\n\\n## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\\n\\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\\\"Despair Mechanics\\\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\\n\\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\\n\\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\\n| :--- | :--- | :--- | :--- |\\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20 \\\\%)$. |\\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\\n\\n---\\n\\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\\n\\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\\n\\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm với mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\\n\\n---\\n\\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\\n\\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\\n\\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\\n\\n---\\n\\n## 🚀 Lộ trình Phát triển (Roadmap)\\n\\n\\n\\n\\n- [x] **Phase 1: Foundation**\\n - [x] Player State Machine (Idle, Move, Run, Jump).\\n - [x] Maze Generation (Multi-algorithm).\\n - [x] Photon Fusion Integration.\\n- [ ] **Phase 2: Gameplay Core**\\n - [ ] Role Selection (Seeker vs Trapper).\\n - [ ] Trap Placement System.\\n - [ ] Sound & Visual Detection (Noise Meter).\\n\\n---\\n\\n## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\\n\\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\\n\\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\\n| :--- | :--- | :--- |\\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\\n\\n---\\n\\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\\n\\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\\n\\n### 🌐 Networking & Synchronization (Duy)\\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\\n\\n### 🏗️ World Generation & Performance (Scove)\\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\\n\\n### 🪤 Gameplay & Physics (Tuấn)\\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\\n\\n### 🎨 Visuals & UI/UX (Tuấn)\\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\\n\\n---\\n\\n## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\\n\\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\\n\\n```text\\n📦 BABA_YAGA\\n├── 🌸 Assets/ (Trái tim của trò chơi)\\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\\n│ │ ├── 🎥 Camera Controller/ \\n│ │ ├── 🛠️ Debug/ \\n│ │ ├── 🌐 Fusion/ \\n│ │ │ └── 🚀 BasicSpawner.cs\\n│ │ ├── 🏗️ GameSetup/ \\n│ │ │ ├── 🌀 Maze/ # Mê cung \\n│ │ │ │ ├── 🐾 Crawler.cs \\n│ │ │ │ ├── 🌳 Prims.cs \\n│ │ │ │ ├── 🧵 Wilsons.cs \\n│ │ │ │ └── 🗺️ Maze.cs \\n│ │ │ └── 🧍 CharacterAutoSetup.cs\\n│ │ ├── 🖱️ Interactables/ \\n│ │ │ ├── 🚪 DoorInteractable.cs\\n│ │ │ ├── 💡 LampInteractable.cs\\n│ │ │ └── 💎 BaseInteractable.cs\\n│ │ ├── 📐 Interface/ \\n│ │ ├── 🏃‍♀️ Player Controller/ \\n│ │ │ ├── 🧠 PlayerStateMachine.cs\\n│ │ │ ├── ⌨️ InputReader.cs\\n│ │ │ └── 🎭 States/ \\n│ │ ├── ⚡ Optimization/ \\n│ │ ├── 🖥️ UI/ \\n│ │ └── 🎆 VFX/ \\n│ ├── 🧸 Prefabs/ \\n│ ├── 📖 document/ \\n│ ├── 🎬 Scenes/ \\n│ ├── 🎨 Materials/ \\n│ ├── 👸 Models/ \\n│ ├── 💃 Animation/ \\n│ ├── 🔌 Photon/ \\n│ ├── 🅰️ TextMesh Pro/ \\n│ └── ⚙️ Settings/ \\n├── 🛠️ ProjectSettings/ \\n│ ├── 🏷️ TagManager.asset \\n│ ├── 🌍 DynamicsManager.asset \\n│ └── 📡 MultiplayerManager.asset \\n├── 📦 Packages/ \\n└── 📝 README.md # Creator (。•̀ᴗ-)✧\\n```\\n\\n---\\n\\n## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\\n\\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\\n\\n### 1. Yêu cầu Hệ thống\\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\\n\\n### 2. Tải về & Mở dự án\\n1. **Clone Repository:**\\n ```bash\\n git clone https://github.com/OnlyScove/BABA_YAGA.git\\n ```\\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\\n\\n### 3. Cấu hình Photon Fusion (Bắt buộc)\\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\\n3. Sao chép **App ID** vừa tạo.\\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\\n\\n### 4. Khởi chạy Trò chơi\\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\\n3. Nhấn nút **Play** trong Unity Editor.\\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\\n\\n---\\n\\n## 💖 Support & Community\\n\\n

\\n \\n \\\"Stars\\\"\\n \\n \\n \\\"Forks\\\"\\n \\n \\n \\\"Follow\\\"\\n \\n

\\n\\n

\\n \\n \\\"Buy\\n \\n \\n \\\"Discord\\\"\\n \\n \\n \\\"Ko-fi\\\"\\n \\n

\\n\\n

\\n \\\"Visitors\\\"\\n

\\n\\n---\\n\\n**© 2026 SCOVANIA STUDIOS.**\\n*Baba_Yaga is more than a game, it's a social experiment.*\\n\\n---\\n\\n**Connect with us:**\\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\\n\"}}}],\"status\":\"success\",\"timestamp\":\"2026-06-07T11:35:52.946Z\",\"resultDisplay\":\"\",\"description\":\"README.md\",\"displayName\":\"ReadFile\",\"renderOutputAsMarkdown\":true}]}"},{"filePath":"BABA_YAGA\\.gemini-workspace-history\\active-context.md","absolutePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\.gemini-workspace-history\\active-context.md","lineNumber":36,"line":"{\"id\":\"f967310e-f917-4f0c-9317-73fd88a414fb\",\"timestamp\":\"2026-06-07T11:35:52.947Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\\n\\n---\\n\\n## 👁️ Tầm nhìn Dự án (Project Vision)\\n\\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\\n\\nDự án hướng tới việc tạo ra một trải nghiệm **\\\"High-Stakes Hide & Seek\\\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\\n* **Spatial Audio:** Âm thanh là \\\"bản đồ\\\" thứ hai.\\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\\n\\n---\\n\\n## 🎮 Cơ chế Trò chơi (Core Mechanics)\\n\\n### 🌓 Sự bất đối xứng (The Asymmetry)\\n\\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\\n| :--- | :--- | :--- |\\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\\n\\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\\n\\n```mermaid\\ngraph TD\\n %% Định nghĩa Style cho các nhóm\\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\\n\\n %% Phase 1: Initialization\\n subgraph Initialization [\\\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\\\"]\\n A[\\\"🚀 Bắt đầu Trận đấu\\\"] --> B{\\\"🤝 Matchmaking
(Photon Fusion)\\\"}\\n B --> C[\\\"🎭 Phân vai: Seeker vs Trapper\\\"]\\n C --> D[\\\"🧩 Maze Generator
(Prims/Wilsons)\\\"]\\n D --> E[\\\"🏗️ Baking NavMesh & Colliders\\\"]\\n E --> F[\\\"🧍 Character Auto-Setup\\\"]\\n F --> G[\\\"📍 Spawn Players\\\"]\\n end\\n class Initialization,A,B,C,D,E,F,G initStyle;\\n\\n %% Phase 2: Core Loop\\n subgraph Active_Round [\\\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\\\"]\\n G --> Loop((TICK: FixedUpdateNetwork))\\n \\n %% Seeker Branch\\n subgraph Seeker_Logic [\\\"🏃 SEEKER (POV 1st)\\\"]\\n S1[\\\"⌨️ Input: WASD/Space\\\"] --> S2[\\\"🏃 State: Move/Dash\\\"]\\n S2 --> S3{\\\"⚡ Hành động?\\\"}\\n S3 -- \\\"Sprinting\\\" --> S4[\\\"🔊 Noise Up\\\"]\\n S3 -- \\\"Sneaking\\\" --> S5[\\\"🤫 Noise Down\\\"]\\n S3 -- \\\"Flashlight\\\" --> S6[\\\"🔦 Lộ vị trí\\\"]\\n \\n S4 & S5 & S6 --> S_Check{\\\"🔍 Check Env\\\"}\\n S_Check -- \\\"Dẫm bẫy\\\" --> S_Trap[\\\"⚠️ Bị khống chế\\\"]\\n end\\n\\n %% Trapper Branch\\n subgraph Trapper_Logic [\\\"🕸️ TRAPPER (STRATEGY)\\\"]\\n T1[\\\"🖱️ Mouse Input\\\"] --> T2[\\\"🗺️ View: Heatmap/Cams\\\"]\\n T2 --> T3{\\\"🛠️ Kỹ năng?\\\"}\\n T3 -- \\\"Đặt bẫy\\\" --> T4[\\\"🪤 Sync Trap\\\"]\\n T3 -- \\\"Scan\\\" --> T5[\\\"📡 Ping Seeker\\\"]\\n T3 -- \\\"Lock\\\" --> T6[\\\"🚪 Khóa cửa\\\"]\\n \\n T4 & T5 & T6 --> T_Check{\\\"👁️ Theo dõi\\\"}\\n end\\n\\n %% Networking Layer\\n subgraph Network_Sync [\\\"🌐 NETWORK SYNC\\\"]\\n Loop --> NS1[\\\"⏩ Client Prediction\\\"]\\n NS1 --> NS2[\\\"🔄 Server Reconciliation\\\"]\\n NS2 --> NS3[\\\"📦 State Sync\\\"]\\n end\\n end\\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\\n class S_Trap criticalStyle;\\n\\n %% Phase 3: Results\\n subgraph Result_Logic [\\\"3. KẾT THÚC & THƯỞNG\\\"]\\n S_Check -- \\\"Chạm Exit\\\" --> Win_S[\\\"🏆 SEEKER THẮNG\\\"]\\n T_Check -- \\\"Bắt được Seeker\\\" --> Win_T[\\\"🏆 TRAPPER THẮNG\\\"]\\n Loop -- \\\"Timer = 0\\\" --> Win_T\\n \\n Win_S & Win_T --> Post_Match[\\\"📊 Thống kê Rank\\\"]\\n Post_Match --> Buff{\\\"⚖️ Balance Check\\\"}\\n Buff -- \\\"Thua cuộc\\\" --> Buff_Apply[\\\"💎 Kích hoạt Comeback Buff\\\"]\\n Buff_Apply --> A\\n end\\n class Win_S,Win_T winStyle;\\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\\n\\n %% Interactions (Dashed Lines)\\n S_Trap -.->|Cảnh báo| T_Check\\n S4 -.->|Sóng âm| T2\\n T4 -.->|Collision ẩn| S_Check\\n NS3 --> Loop\\n```\\n\\n---\\n\\n## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\\n\\n### 1. Advanced Player & Camera State Machine\\n\\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\\n\\n```mermaid\\nstateDiagram-v2\\n direction TB\\n\\n state \\\"🌸 GROUND\\\" as Ground {\\n [*] --> Idle\\n \\n state Idle {\\n I_P: 📝 Vel < 0.1m/s\\n I_C: 🌡️ Breathing (0.5Hz)\\n }\\n\\n Idle --> Moving : \\\"Input.mag > 0.1\\\"\\n state Moving {\\n M_P: 👟 Speed 2-4m/s\\n M_C: 🎢 Head Bob (1.2Hz)\\n }\\n\\n Moving --> Sneaking : \\\"OnSneak (Hold)\\\"\\n state Sneaking {\\n Sn_P: 🤫 Noise -50%\\n Sn_C: 📉 Lower Height\\n }\\n\\n Moving --> Sprinting : \\\"OnSprint (Hold)\\\"\\n state Sprinting {\\n Sp_P: ⚡ Speed > 6.5m/s\\n Sp_C: 🌈 Dynamic FOV\\n }\\n\\n Sprinting --> Moving : \\\"Stamina Empty\\\"\\n Sneaking --> Moving : \\\"Release Sneak\\\"\\n }\\n\\n state \\\"☁️ AIRBORNE\\\" as Air {\\n state Jump {\\n J_P: 🆙 AddForce Up\\n }\\n state Falling {\\n F_P: 📉 Gravity x 1.5\\n }\\n state Landing {\\n L_P: 📏 Impact Check\\n }\\n\\n Jump --> Falling : \\\"Vel.y < 0\\\"\\n Falling --> Landing : \\\"IsGrounded == true\\\"\\n }\\n\\n state \\\"⚡ ACTION\\\" as Utility {\\n state Dashing {\\n D_P: 💨 Burst 15m/s\\n }\\n state Interacting {\\n Int_P: 🔒 Root Motion Lock\\n }\\n }\\n\\n state \\\"🌐 NETWORK\\\" as Net {\\n state \\\"Input Authority\\\" as IA\\n state \\\"State Authority\\\" as SA\\n IA --> SA : \\\"Send Input\\\"\\n SA --> IA : \\\"Reconcile\\\"\\n }\\n\\n %% Transitions chính\\n Ground --> Air : \\\"IsGrounded == false\\\"\\n Air --> Ground : \\\"OnLand Event\\\"\\n Ground --> Utility : \\\"OnAbility\\\"\\n Utility --> Ground : \\\"Complete\\\"\\n\\n %% Sửa lỗi Note bằng cấu trúc block ✨\\n note left of Ground\\n ✨ Sync: Velocity\\n ✨ State: MoveState\\n end note\\n\\n note right of Net\\n ⚙️ Photon Fusion\\n ⚙️ FixedUpdateNetwork\\n end note\\n```\\n\\n### 2. Environment Scanner & Interaction\\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\\n\\n---\\n\\n## 🧩 Hệ thống Mê cung (Maze Generation)\\n\\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\\n\\n| Algorithm | Complexity | Description |\\n| :--- | :--- | :--- |\\n| **Prims** | O(E log V) | Tạo mê cung \\\"dày\\\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\\n\\n### Quy trình khởi tạo (Maze Generation Pipeline)\\n\\n```mermaid\\ngraph TD\\n %% Định nghĩa Style\\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\\n\\n %% Quy trình chính\\n Start((\\\"💔 PLAYER LOSES ROUND\\\")) --> Streak{{\\\"📊 Check Loss Streak\\\"}}\\n\\n %% Phân tầng Buff\\n subgraph Buff_Pools [\\\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\\\"]\\n Streak -- \\\"1 Trận\\\" --> T1\\n Streak -- \\\"2 Trận\\\" --> T2\\n Streak -- \\\"3+ Trận\\\" --> T3\\n\\n T1[\\\"🥉 Tier 1: Awakening
(Small Boosts)\\\"] \\n T2[\\\"🥈 Tier 2: Evolution
(Tactical Advantage)\\\"]\\n T3[\\\"🥇 Tier 3: Manifestation
(Game Changer)\\\"]\\n \\n %% Ví dụ chỉ số (Tooltip-like)\\n T1 --- T1_Ex[\\\"+10% Speed
+15% Stamina Regen\\\"]\\n T2 --- T2_Ex[\\\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\\\"]\\n T3 --- T3_Ex[\\\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\\\"]\\n end\\n\\n %% Giai đoạn áp dụng\\n T1 & T2 & T3 --> Selection{{\\\"🎲 Selection Mode\\\"}}\\n \\n Selection -- \\\"Manual\\\" --> P1[\\\"Người chơi tự chọn 1 trong 3 Buff\\\"]\\n Selection -- \\\"Auto\\\" --> P2[\\\"Hệ thống chọn ngẫu nhiên\\\"]\\n \\n P1 & P2 --> Apply[\\\"✨ Apply to Next Round Only
(Trạng thái: Active)\\\"]\\n\\n %% Kết quả vòng đấu sau\\n Apply --> Result{{\\\"🏁 New Round Result?\\\"}}\\n\\n Result -- \\\"🏆 WIN\\\" --> Reset[\\\"♻️ Reset Streak
Remove All Buffs\\\"]\\n Result -- \\\"❌ LOSS\\\" --> Increment[\\\"📈 Increase Streak
Progress to Next Tier\\\"]\\n\\n %% Vòng lặp\\n Reset --> NewGame((\\\"🎮 Fair Match\\\"))\\n Increment --> Start\\n\\n %% Gán Style\\n class Start,Increment lossStyle;\\n class T1,T1_Ex tier1Style;\\n class T2,T2_Ex tier2Style;\\n class T3,T3_Ex tier3Style;\\n class Selection,P1,P2,Apply systemStyle;\\n class Result,Reset,NewGame winStyle;\\n```\\n\\n---\\n\\n## 🌐 Đồng bộ Mạng (Networking)\\n\\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\\n\\n### Network Data Flow & Synchronization\\n```mermaid\\nsequenceDiagram\\n autonumber\\n \\n %% Định nghĩa các bên tham gia (Rút gọn để tránh lỗi render)\\n participant IR as 🖱️ Input\\n participant CP as 🎀 Local Player\\n participant NT as 🌐 Fusion Net\\n participant S as 👑 Server\\n participant RP as 👥 Proxies\\n\\n %% --- GIAI ĐOẠN 1 ---\\n Note over IR, CP: [PHASE 1] Thu thập Input\\n IR->>CP: OnMove / OnJump / OnSprint\\n CP->>CP: 📦 Pack NetworkInputData\\n\\n %% --- GIAI ĐOẠN 2 ---\\n Note over CP: [PHASE 2] Dự đoán (Prediction)\\n CP->>CP: 🏃 Run Client-Side Physics\\n CP->>NT: ✉️ Send Input (Tick N)\\n\\n %% --- GIAI ĐOẠN 3 ---\\n Note over NT, S: [PHASE 3] Truyền tin mạng\\n NT->>S: UDP Packet Delivery\\n Note right of S: SERVER SIMULATION\\n S->>S: 📝 Validate & Update State\\n S-->>NT: 📣 Snapshot (Tick N)\\n\\n %% --- GIAI ĐOẠN 4 ---\\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\\n NT-->>CP: State Snapshot\\n Note over CP: 🔄 RECONCILIATION\\n CP->>CP: Fix Position if Error > Threshold\\n\\n %% --- GIAI ĐOẠN 5 ---\\n Note over NT, RP: [PHASE 5] Proxy Update\\n NT-->>RP: State Snapshot\\n Note over RP: 🎞️ INTERPOLATION (Lerp)\\n\\n %% --- GIAI ĐOẠN 6 ---\\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\\n CP->>CP: Update Camera Shake/VFX\\n RP->>RP: Smooth Mesh Movement\\n```\\n\\n---\\n\\n## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\\n\\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\\\"Despair Mechanics\\\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\\n\\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\\n\\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\\n| :--- | :--- | :--- | :--- |\\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20 \\\\%)$. |\\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\\n\\n---\\n\\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\\n\\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\\n\\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm với mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\\n\\n---\\n\\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\\n\\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\\n\\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\\n\\n---\\n\\n## 🚀 Lộ trình Phát triển (Roadmap)\\n\\n\\n\\n\\n- [x] **Phase 1: Foundation**\\n - [x] Player State Machine (Idle, Move, Run, Jump).\\n - [x] Maze Generation (Multi-algorithm).\\n - [x] Photon Fusion Integration.\\n- [ ] **Phase 2: Gameplay Core**\\n - [ ] Role Selection (Seeker vs Trapper).\\n - [ ] Trap Placement System.\\n - [ ] Sound & Visual Detection (Noise Meter).\\n\\n---\\n\\n## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\\n\\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\\n\\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\\n| :--- | :--- | :--- |\\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\\n\\n---\\n\\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\\n\\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\\n\\n### 🌐 Networking & Synchronization (Duy)\\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\\n\\n### 🏗️ World Generation & Performance (Scove)\\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\\n\\n### 🪤 Gameplay & Physics (Tuấn)\\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\\n\\n### 🎨 Visuals & UI/UX (Tuấn)\\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\\n\\n---\\n\\n## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\\n\\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\\n\\n```text\\n📦 BABA_YAGA\\n├── 🌸 Assets/ (Trái tim của trò chơi)\\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\\n│ │ ├── 🎥 Camera Controller/ \\n│ │ ├── 🛠️ Debug/ \\n│ │ ├── 🌐 Fusion/ \\n│ │ │ └── 🚀 BasicSpawner.cs\\n│ │ ├── 🏗️ GameSetup/ \\n│ │ │ ├── 🌀 Maze/ # Mê cung \\n│ │ │ │ ├── 🐾 Crawler.cs \\n│ │ │ │ ├── 🌳 Prims.cs \\n│ │ │ │ ├── 🧵 Wilsons.cs \\n│ │ │ │ └── 🗺️ Maze.cs \\n│ │ │ └── 🧍 CharacterAutoSetup.cs\\n│ │ ├── 🖱️ Interactables/ \\n│ │ │ ├── 🚪 DoorInteractable.cs\\n│ │ │ ├── 💡 LampInteractable.cs\\n│ │ │ └── 💎 BaseInteractable.cs\\n│ │ ├── 📐 Interface/ \\n│ │ ├── 🏃‍♀️ Player Controller/ \\n│ │ │ ├── 🧠 PlayerStateMachine.cs\\n│ │ │ ├── ⌨️ InputReader.cs\\n│ │ │ └── 🎭 States/ \\n│ │ ├── ⚡ Optimization/ \\n│ │ ├── 🖥️ UI/ \\n│ │ └── 🎆 VFX/ \\n│ ├── 🧸 Prefabs/ \\n│ ├── 📖 document/ \\n│ ├── 🎬 Scenes/ \\n│ ├── 🎨 Materials/ \\n│ ├── 👸 Models/ \\n│ ├── 💃 Animation/ \\n│ ├── 🔌 Photon/ \\n│ ├── 🅰️ TextMesh Pro/ \\n│ └── ⚙️ Settings/ \\n├── 🛠️ ProjectSettings/ \\n│ ├── 🏷️ TagManager.asset \\n│ ├── 🌍 DynamicsManager.asset \\n│ └── 📡 MultiplayerManager.asset \\n├── 📦 Packages/ \\n└── 📝 README.md # Creator (。•̀ᴗ-)✧\\n```\\n\\n---\\n\\n## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\\n\\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\\n\\n### 1. Yêu cầu Hệ thống\\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\\n\\n### 2. Tải về & Mở dự án\\n1. **Clone Repository:**\\n ```bash\\n git clone https://github.com/OnlyScove/BABA_YAGA.git\\n ```\\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\\n\\n### 3. Cấu hình Photon Fusion (Bắt buộc)\\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\\n3. Sao chép **App ID** vừa tạo.\\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\\n\\n### 4. Khởi chạy Trò chơi\\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\\n3. Nhấn nút **Play** trong Unity Editor.\\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\\n\\n---\\n\\n## 💖 Support & Community\\n\\n

\\n \\n \\\"Stars\\\"\\n \\n \\n \\\"Forks\\\"\\n \\n \\n \\\"Follow\\\"\\n \\n

\\n\\n

\\n \\n \\\"Buy\\n \\n \\n \\\"Discord\\\"\\n \\n \\n \\\"Ko-fi\\\"\\n \\n

\\n\\n

\\n \\\"Visitors\\\"\\n

\\n\\n---\\n\\n**© 2026 SCOVANIA STUDIOS.**\\n*Baba_Yaga is more than a game, it's a social experiment.*\\n\\n---\\n\\n**Connect with us:**\\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\\n\"}}}]}"},{"filePath":"BABA_YAGA\\BABA_YAGA_Updater\\config\\settings.py","absolutePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\config\\settings.py","lineNumber":18,"line":" START_MARKER = \"\""},{"filePath":"BABA_YAGA\\BABA_YAGA_Updater\\config\\settings.py","absolutePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\config\\settings.py","lineNumber":19,"line":" END_MARKER = \"\""},{"filePath":"BABA_YAGA\\README.md","absolutePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\README.md","lineNumber":388,"line":""},{"filePath":"BABA_YAGA\\README.md","absolutePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\README.md","lineNumber":389,"line":""}]},"description":"'' across all workspace directories","displayName":"SearchText","renderOutputAsMarkdown":true}]} +{"id":"0a3740e3-a54b-4fa0-83f8-fa1df5a2e8c9","timestamp":"2026-06-07T11:41:06.971Z","type":"user","content":[{"functionResponse":{"id":"grep_search__grep_search_1780832465406_0","name":"grep_search","response":{"output":"Found 6 matches for pattern \"\" across 3 workspace directories:\n---\nFile: BABA_YAGA\\.gemini-workspace-history\\active-context.md\nL35: {\"id\":\"8d73be31-ab2d-4b38-a624-63a94c6ec5d1\",\"timestamp\":\"2026-06-07T11:35:52.937Z\",\"type\":\"gemini\",\"content\":\"\",\"thoughts\":[{\"subject\":\"Reviewing Directory Status\",\"description\":\"My current focus is on understanding why the `sections` directory is empty. I suspect the prior session was interrupted before it could finalize writing the output files.\",\"timestamp\":\"2026-06-07T11:35:52.730Z\"}],\"tokens\":{\"input\":37727,\"output\":34,\"cached\":35632,\"thoughts\":182,\"tool\":0,\"total\":37943},\"model\":\"gemini-3-flash-preview\",\"toolCalls\":[{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"args\":{\"file_path\":\"D:/Learning_Progress/Projects/BABA_YAGA/README.md\"},\"result\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [... [truncated]\nL36: {\"id\":\"f967310e-f917-4f0c-9317-73fd88a414fb\",\"timestamp\":\"2026-06-07T11:35:52.947Z\",\"type\":\"user\",\"content\":[{\"functionResponse\":{\"id\":\"read_file__read_file_1780832152738_0\",\"name\":\"read_file\",\"response\":{\"output\":\"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \\n\\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\\n\\n> **\\\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\\\"**\\n\\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\\n\\n---\\n\\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\\n\\n---\\n\\n## 👁... [truncated]\n---\nFile: BABA_YAGA\\BABA_YAGA_Updater\\config\\settings.py\nL18: START_MARKER = \"\"\nL19: END_MARKER = \"\"\n---\nFile: BABA_YAGA\\README.md\nL388: \nL389: \n---"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:41:06.971Z"}} +{"id":"bc1a0530-1288-490a-8ca6-834e929c71f6","timestamp":"2026-06-07T11:41:09.491Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":44563,"output":50,"cached":39677,"thoughts":28,"tool":0,"total":44641},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:41:09.492Z"}} +{"id":"bc1a0530-1288-490a-8ca6-834e929c71f6","timestamp":"2026-06-07T11:41:09.491Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":44563,"output":50,"cached":39677,"thoughts":28,"tool":0,"total":44641},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832469358_0","name":"read_file","args":{"start_line":380,"end_line":400,"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/README.md"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832469358_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 380-400 of 564 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 401.\n\n--- FILE CONTENT (truncated) ---\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\n\n---\n\n## 🚀 Lộ trình Phát triển (Roadmap)\n\n\n\n\n- [x] **Phase 1: Foundation**\n - [x] Player State Machine (Idle, Move, Run, Jump).\n - [x] Maze Generation (Multi-algorithm).\n - [x] Photon Fusion Integration.\n- [ ] **Phase 2: Gameplay Core**\n - [ ] Role Selection (Seeker vs Trapper).\n - [ ] Trap Placement System.\n - [ ] Sound & Visual Detection (Noise Meter).\n\n---"}}}],"status":"success","timestamp":"2026-06-07T11:41:09.503Z","resultDisplay":"Read lines 380-400 of 564 from README.md","description":"README.md","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"facef432-28db-44e6-afda-ddd9689d2632","timestamp":"2026-06-07T11:41:09.504Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832469358_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 380-400 of 564 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 401.\n\n--- FILE CONTENT (truncated) ---\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\n\n---\n\n## 🚀 Lộ trình Phát triển (Roadmap)\n\n\n\n\n- [x] **Phase 1: Foundation**\n - [x] Player State Machine (Idle, Move, Run, Jump).\n - [x] Maze Generation (Multi-algorithm).\n - [x] Photon Fusion Integration.\n- [ ] **Phase 2: Gameplay Core**\n - [ ] Role Selection (Seeker vs Trapper).\n - [ ] Trap Placement System.\n - [ ] Sound & Visual Detection (Noise Meter).\n\n---"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:41:09.505Z"}} +{"id":"ec9cdf2f-32ab-43b0-913c-50cdd62dc621","timestamp":"2026-06-07T11:41:14.851Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45032,"output":52,"cached":43635,"thoughts":87,"tool":0,"total":45171},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:41:14.852Z"}} +{"id":"ec9cdf2f-32ab-43b0-913c-50cdd62dc621","timestamp":"2026-06-07T11:41:14.851Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45032,"output":52,"cached":43635,"thoughts":87,"tool":0,"total":45171},"model":"gemini-3-flash-preview","toolCalls":[{"id":"run_shell_command__run_shell_command_1780832474721_0","name":"run_shell_command","args":{"description":"Check for .env file.","command":"ls D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/.env"},"result":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780832474721_0","name":"run_shell_command","response":{"output":"Output: \nls : Cannot find path 'D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\.env' because it does not \nexist.\nAt line:1 char:19\n+ ... 5001 >$null;ls D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Upda ...\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : ObjectNotFound: (D:\\Learning_Pro...GA_Updater\\.env:String) [Get-ChildItem], Item \n NotFoundException\n + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand\n \nExit Code: 1\nProcess Group PGID: 35512"}}}],"status":"success","timestamp":"2026-06-07T11:43:05.928Z","resultDisplay":[[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"ls : Cannot find path 'D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\.env' because it does not ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"exist.","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"At line:1 char:19","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"+ ... 5001 >$null;ls D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Upda ...","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" + CategoryInfo : ObjectNotFound: (D:\\Learning_Pro...GA_Updater\\.env:String) [Get-ChildItem], Item ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" NotFoundException","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"#ff0000","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":true,"isUninitialized":true,"fg":"","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}]],"description":"ls D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/.env","displayName":"Shell","renderOutputAsMarkdown":false}]} +{"id":"4a9f30b6-8f25-4c01-9d8a-11b084760537","timestamp":"2026-06-07T11:43:05.929Z","type":"user","content":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780832474721_0","name":"run_shell_command","response":{"output":"Output: \nls : Cannot find path 'D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\.env' because it does not \nexist.\nAt line:1 char:19\n+ ... 5001 >$null;ls D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Upda ...\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : ObjectNotFound: (D:\\Learning_Pro...GA_Updater\\.env:String) [Get-ChildItem], Item \n NotFoundException\n + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand\n \nExit Code: 1\nProcess Group PGID: 35512"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:43:05.929Z"}} +{"id":"eb64b1d6-8637-48fd-8b21-d37565ed71bf","timestamp":"2026-06-07T11:43:08.345Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45344,"output":47,"cached":43620,"thoughts":41,"tool":0,"total":45432},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:43:08.345Z"}} +{"id":"eb64b1d6-8637-48fd-8b21-d37565ed71bf","timestamp":"2026-06-07T11:43:08.345Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45344,"output":47,"cached":43620,"thoughts":41,"tool":0,"total":45432},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832588200_0","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/services/gsheet_client.py"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832588200_0","name":"read_file","response":{"output":"import os\nfrom google.auth.transport.requests import Request\nfrom google.oauth2.credentials import Credentials\nfrom google_auth_oauthlib.flow import InstalledAppFlow\nfrom googleapiclient.discovery import build\nfrom googleapiclient.errors import HttpError\nfrom config.settings import settings\n\nclass GSheetClient:\n SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']\n\n def __init__(self):\n self.creds = self._authenticate()\n\n def _authenticate(self):\n creds = None\n # The file token.json stores the user's access and refresh tokens\n if os.path.exists(settings.TOKEN_FILE):\n creds = Credentials.from_authorized_user_file(settings.TOKEN_FILE, self.SCOPES)\n \n # If there are no (valid) credentials available, let the user log in.\n if not creds or not creds.valid:\n if creds and creds.expired and creds.refresh_token:\n creds.refresh(Request())\n else:\n if not os.path.exists(settings.CREDENTIALS_FILE):\n raise FileNotFoundError(f\"Credentials file not found at {settings.CREDENTIALS_FILE}. Please download it from Google Cloud Console.\")\n \n flow = InstalledAppFlow.from_client_secrets_file(\n settings.CREDENTIALS_FILE, self.SCOPES)\n creds = flow.run_local_server(port=0)\n \n # Save the credentials for the next run\n with open(settings.TOKEN_FILE, 'w') as token:\n token.write(creds.to_json())\n \n return creds\n\n def fetch_data(self):\n try:\n service = build('sheets', 'v4', credentials=self.creds)\n sheet = service.spreadsheets()\n result = sheet.values().get(\n spreadsheetId=settings.SPREADSHEET_ID,\n range=settings.SHEET_RANGE\n ).execute()\n \n return result.get('values', [])\n \n except HttpError as err:\n print(f\"An error occurred: {err}\")\n return []\n"}}}],"status":"success","timestamp":"2026-06-07T11:43:08.359Z","resultDisplay":"","description":"BABA_YAGA_U...\\...\\gsheet_client.py","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"fe65d85b-88d9-4474-8df3-36cc5b32ad63","timestamp":"2026-06-07T11:43:08.360Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832588200_0","name":"read_file","response":{"output":"import os\nfrom google.auth.transport.requests import Request\nfrom google.oauth2.credentials import Credentials\nfrom google_auth_oauthlib.flow import InstalledAppFlow\nfrom googleapiclient.discovery import build\nfrom googleapiclient.errors import HttpError\nfrom config.settings import settings\n\nclass GSheetClient:\n SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']\n\n def __init__(self):\n self.creds = self._authenticate()\n\n def _authenticate(self):\n creds = None\n # The file token.json stores the user's access and refresh tokens\n if os.path.exists(settings.TOKEN_FILE):\n creds = Credentials.from_authorized_user_file(settings.TOKEN_FILE, self.SCOPES)\n \n # If there are no (valid) credentials available, let the user log in.\n if not creds or not creds.valid:\n if creds and creds.expired and creds.refresh_token:\n creds.refresh(Request())\n else:\n if not os.path.exists(settings.CREDENTIALS_FILE):\n raise FileNotFoundError(f\"Credentials file not found at {settings.CREDENTIALS_FILE}. Please download it from Google Cloud Console.\")\n \n flow = InstalledAppFlow.from_client_secrets_file(\n settings.CREDENTIALS_FILE, self.SCOPES)\n creds = flow.run_local_server(port=0)\n \n # Save the credentials for the next run\n with open(settings.TOKEN_FILE, 'w') as token:\n token.write(creds.to_json())\n \n return creds\n\n def fetch_data(self):\n try:\n service = build('sheets', 'v4', credentials=self.creds)\n sheet = service.spreadsheets()\n result = sheet.values().get(\n spreadsheetId=settings.SPREADSHEET_ID,\n range=settings.SHEET_RANGE\n ).execute()\n \n return result.get('values', [])\n \n except HttpError as err:\n print(f\"An error occurred: {err}\")\n return []\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:43:08.361Z"}} +{"id":"b58328ae-7987-4dd4-a604-0779f6a74b55","timestamp":"2026-06-07T11:43:12.149Z","type":"gemini","content":"","thoughts":[{"subject":"Reviewing Current Context","description":"I'm currently reviewing the file `README.md` with the cursor at position 557. Before proceeding, I need to ascertain whether to continue the previous task of splitting the file or if a new directive has been issued. Access to `credentials.json` is also noted as a prerequisite.","timestamp":"2026-06-07T11:43:12.007Z"}],"tokens":{"input":45947,"output":47,"cached":43618,"thoughts":264,"tool":0,"total":46258},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:43:12.150Z"}} +{"id":"b58328ae-7987-4dd4-a604-0779f6a74b55","timestamp":"2026-06-07T11:43:12.149Z","type":"gemini","content":"","thoughts":[{"subject":"Reviewing Current Context","description":"I'm currently reviewing the file `README.md` with the cursor at position 557. Before proceeding, I need to ascertain whether to continue the previous task of splitting the file or if a new directive has been issued. Access to `credentials.json` is also noted as a prerequisite.","timestamp":"2026-06-07T11:43:12.007Z"}],"tokens":{"input":45947,"output":47,"cached":43618,"thoughts":264,"tool":0,"total":46258},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780832592014_0","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/mappers/markdown_builder.py"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832592014_0","name":"read_file","response":{"output":"from core.models import ProgressReport\n\nclass MarkdownBuilder:\n @staticmethod\n def build_table(report: ProgressReport) -> str:\n if not report.tasks:\n return \"_No tasks updated._\"\n\n # Table header\n header = \"| Category | Task | Status | Progress | Notes |\\n\"\n separator = \"| :--- | :--- | :--- | :--- | :--- |\\n\"\n rows = []\n \n for task in report.tasks:\n # Map status to professional badges\n status_clean = task.status.lower().strip()\n \n if any(x in status_clean for x in [\"done\", \"complete\", \"finished\"]):\n badge = \"![Done](https://img.shields.io/badge/-DONE-2ea44f?style=flat-square)\"\n elif any(x in status_clean for x in [\"progress\", \"doing\", \"active\"]):\n badge = \"![In Progress](https://img.shields.io/badge/-PROGRESS-005cc5?style=flat-square)\"\n elif any(x in status_clean for x in [\"planned\", \"todo\", \"waiting\"]):\n badge = \"![Planned](https://img.shields.io/badge/-PLANNED-6a737d?style=flat-square)\"\n elif any(x in status_clean for x in [\"bug\", \"error\", \"fix\"]):\n badge = \"![Bug](https://img.shields.io/badge/-FIXING-d73a49?style=flat-square)\"\n else:\n badge = f\"`{task.status}`\" # Fallback to code text\n \n # Progress bar simulation using HTML/Unicode if needed, \n # but simple text \"75%\" is often cleaner.\n \n row = f\"| **{task.category}** | {task.task_name} | {badge} | `{task.progress}` | {task.notes} |\"\n rows.append(row)\n \n return header + separator + \"\\n\".join(rows)\n"}}}],"status":"success","timestamp":"2026-06-07T11:43:12.162Z","resultDisplay":"","description":"BABA_YAG...\\...\\markdown_builder.py","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"f2cfad90-ef1c-48da-9000-707262a5ddd0","timestamp":"2026-06-07T11:43:12.163Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780832592014_0","name":"read_file","response":{"output":"from core.models import ProgressReport\n\nclass MarkdownBuilder:\n @staticmethod\n def build_table(report: ProgressReport) -> str:\n if not report.tasks:\n return \"_No tasks updated._\"\n\n # Table header\n header = \"| Category | Task | Status | Progress | Notes |\\n\"\n separator = \"| :--- | :--- | :--- | :--- | :--- |\\n\"\n rows = []\n \n for task in report.tasks:\n # Map status to professional badges\n status_clean = task.status.lower().strip()\n \n if any(x in status_clean for x in [\"done\", \"complete\", \"finished\"]):\n badge = \"![Done](https://img.shields.io/badge/-DONE-2ea44f?style=flat-square)\"\n elif any(x in status_clean for x in [\"progress\", \"doing\", \"active\"]):\n badge = \"![In Progress](https://img.shields.io/badge/-PROGRESS-005cc5?style=flat-square)\"\n elif any(x in status_clean for x in [\"planned\", \"todo\", \"waiting\"]):\n badge = \"![Planned](https://img.shields.io/badge/-PLANNED-6a737d?style=flat-square)\"\n elif any(x in status_clean for x in [\"bug\", \"error\", \"fix\"]):\n badge = \"![Bug](https://img.shields.io/badge/-FIXING-d73a49?style=flat-square)\"\n else:\n badge = f\"`{task.status}`\" # Fallback to code text\n \n # Progress bar simulation using HTML/Unicode if needed, \n # but simple text \"75%\" is often cleaner.\n \n row = f\"| **{task.category}** | {task.task_name} | {badge} | `{task.progress}` | {task.notes} |\"\n rows.append(row)\n \n return header + separator + \"\\n\".join(rows)\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:43:12.164Z"}} +{"id":"7adf0f1a-53dc-4afc-b23e-13000697afaf","timestamp":"2026-06-07T11:43:14.965Z","type":"gemini","content":"Checked `README.md`.\nFound `` markers on L388-389.\n`BABA_YAGA_Updater` ready but missing `credentials.json`/`token.json`.\n`sections/` directory empty.\nLast session attempted splitting `README.md`.\n\nContinue splitting or new task? Cursor at L557 (Visitor counter).","thoughts":[],"tokens":{"input":46732,"output":85,"cached":43622,"thoughts":114,"tool":0,"total":46931},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:43:14.966Z"}} +{"id":"4453a94f-40f7-467d-9cb0-625e01fcb9f5","timestamp":"2026-06-07T11:43:32.220Z","type":"user","content":[{"text":"Continue splitting"}]} +{"$set":{"lastUpdated":"2026-06-07T11:43:32.220Z"}} +{"id":"13ee9fcc-5503-4168-ae40-7e770cb69274","timestamp":"2026-06-07T11:43:35.267Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45039,"output":191,"cached":0,"thoughts":0,"tool":0,"total":45230},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:43:35.268Z"}} +{"id":"13ee9fcc-5503-4168-ae40-7e770cb69274","timestamp":"2026-06-07T11:43:35.267Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":45039,"output":191,"cached":0,"thoughts":0,"tool":0,"total":45230},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780832615010_0","name":"update_topic","args":{"strategic_intent":"Splitting README.md into modular sections within BABA_YAGA_Updater/sections/ for easier maintenance and automated updates.","title":"Modularizing README.md Content","summary":"I am continuing the task of modularizing the README.md file. My goal is to extract the existing content from the main README.md and save each section into individual files within the 'BABA_YAGA_Updater/sections/' directory. This will allow for cleaner management and enable specific sections (like the Roadmap) to be updated automatically via the Google Sheets integration script. I have already identified the markers and structure of the README.md and will now proceed with the file extraction."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780832615010_0","name":"update_topic","response":{"output":"Current topic: \"Modularizing README.md Content\"\nTopic summary: I am continuing the task of modularizing the README.md file. My goal is to extract the existing content from the main README.md and save each section into individual files within the 'BABA_YAGA_Updater/sections/' directory. This will allow for cleaner management and enable specific sections (like the Roadmap) to be updated automatically via the Google Sheets integration script. I have already identified the markers and structure of the README.md and will now proceed with the file extraction.\n\nStrategic Intent: Splitting README.md into modular sections within BABA_YAGA_Updater/sections/ for easier maintenance and automated updates."}}}],"status":"success","timestamp":"2026-06-07T11:43:35.284Z","resultDisplay":"## 📂 Topic: **Modularizing README.md Content**\n\n**Summary:**\nI am continuing the task of modularizing the README.md file. My goal is to extract the existing content from the main README.md and save each section into individual files within the 'BABA_YAGA_Updater/sections/' directory. This will allow for cleaner management and enable specific sections (like the Roadmap) to be updated automatically via the Google Sheets integration script. I have already identified the markers and structure of the README.md and will now proceed with the file extraction.\n\n> [!STRATEGY]\n> **Intent:** Splitting README.md into modular sections within BABA_YAGA_Updater/sections/ for easier maintenance and automated updates.","description":"Update topic to: \"Modularizing README.md Content\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"read_file__read_file_1780832615012_1","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/README.md"},"result":[{"functionResponse":{"id":"read_file__read_file_1780832615012_1","name":"read_file","response":{"output":"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \n\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\n\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\n\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\n\n---\n\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\n\n---\n\n## 👁️ Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n\n---\n\n## 🎮 Cơ chế Trò chơi (Core Mechanics)\n\n### 🌓 Sự bất đối xứng (The Asymmetry)\n\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\n| :--- | :--- | :--- |\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\n\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style cho các nhóm\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\n\n %% Phase 1: Initialization\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\n A[\"🚀 Bắt đầu Trận đấu\"] --> B{\"🤝 Matchmaking
(Photon Fusion)\"}\n B --> C[\"🎭 Phân vai: Seeker vs Trapper\"]\n C --> D[\"🧩 Maze Generator
(Prims/Wilsons)\"]\n D --> E[\"🏗️ Baking NavMesh & Colliders\"]\n E --> F[\"🧍 Character Auto-Setup\"]\n F --> G[\"📍 Spawn Players\"]\n end\n class Initialization,A,B,C,D,E,F,G initStyle;\n\n %% Phase 2: Core Loop\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\n G --> Loop((TICK: FixedUpdateNetwork))\n \n %% Seeker Branch\n subgraph Seeker_Logic [\"🏃 SEEKER (POV 1st)\"]\n S1[\"⌨️ Input: WASD/Space\"] --> S2[\"🏃 State: Move/Dash\"]\n S2 --> S3{\"⚡ Hành động?\"}\n S3 -- \"Sprinting\" --> S4[\"🔊 Noise Up\"]\n S3 -- \"Sneaking\" --> S5[\"🤫 Noise Down\"]\n S3 -- \"Flashlight\" --> S6[\"🔦 Lộ vị trí\"]\n \n S4 & S5 & S6 --> S_Check{\"🔍 Check Env\"}\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\"⚠️ Bị khống chế\"]\n end\n\n %% Trapper Branch\n subgraph Trapper_Logic [\"🕸️ TRAPPER (STRATEGY)\"]\n T1[\"🖱️ Mouse Input\"] --> T2[\"🗺️ View: Heatmap/Cams\"]\n T2 --> T3{\"🛠️ Kỹ năng?\"}\n T3 -- \"Đặt bẫy\" --> T4[\"🪤 Sync Trap\"]\n T3 -- \"Scan\" --> T5[\"📡 Ping Seeker\"]\n T3 -- \"Lock\" --> T6[\"🚪 Khóa cửa\"]\n \n T4 & T5 & T6 --> T_Check{\"👁️ Theo dõi\"}\n end\n\n %% Networking Layer\n subgraph Network_Sync [\"🌐 NETWORK SYNC\"]\n Loop --> NS1[\"⏩ Client Prediction\"]\n NS1 --> NS2[\"🔄 Server Reconciliation\"]\n NS2 --> NS3[\"📦 State Sync\"]\n end\n end\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\n class S_Trap criticalStyle;\n\n %% Phase 3: Results\n subgraph Result_Logic [\"3. KẾT THÚC & THƯỞNG\"]\n S_Check -- \"Chạm Exit\" --> Win_S[\"🏆 SEEKER THẮNG\"]\n T_Check -- \"Bắt được Seeker\" --> Win_T[\"🏆 TRAPPER THẮNG\"]\n Loop -- \"Timer = 0\" --> Win_T\n \n Win_S & Win_T --> Post_Match[\"📊 Thống kê Rank\"]\n Post_Match --> Buff{\"⚖️ Balance Check\"}\n Buff -- \"Thua cuộc\" --> Buff_Apply[\"💎 Kích hoạt Comeback Buff\"]\n Buff_Apply --> A\n end\n class Win_S,Win_T winStyle;\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\n\n %% Interactions (Dashed Lines)\n S_Trap -.->|Cảnh báo| T_Check\n S4 -.->|Sóng âm| T2\n T4 -.->|Collision ẩn| S_Check\n NS3 --> Loop\n```\n\n---\n\n## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\n\n### 1. Advanced Player & Camera State Machine\n\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\n\n```mermaid\nstateDiagram-v2\n direction TB\n\n state \"🌸 GROUND\" as Ground {\n [*] --> Idle\n \n state Idle {\n I_P: 📝 Vel < 0.1m/s\n I_C: 🌡️ Breathing (0.5Hz)\n }\n\n Idle --> Moving : \"Input.mag > 0.1\"\n state Moving {\n M_P: 👟 Speed 2-4m/s\n M_C: 🎢 Head Bob (1.2Hz)\n }\n\n Moving --> Sneaking : \"OnSneak (Hold)\"\n state Sneaking {\n Sn_P: 🤫 Noise -50%\n Sn_C: 📉 Lower Height\n }\n\n Moving --> Sprinting : \"OnSprint (Hold)\"\n state Sprinting {\n Sp_P: ⚡ Speed > 6.5m/s\n Sp_C: 🌈 Dynamic FOV\n }\n\n Sprinting --> Moving : \"Stamina Empty\"\n Sneaking --> Moving : \"Release Sneak\"\n }\n\n state \"☁️ AIRBORNE\" as Air {\n state Jump {\n J_P: 🆙 AddForce Up\n }\n state Falling {\n F_P: 📉 Gravity x 1.5\n }\n state Landing {\n L_P: 📏 Impact Check\n }\n\n Jump --> Falling : \"Vel.y < 0\"\n Falling --> Landing : \"IsGrounded == true\"\n }\n\n state \"⚡ ACTION\" as Utility {\n state Dashing {\n D_P: 💨 Burst 15m/s\n }\n state Interacting {\n Int_P: 🔒 Root Motion Lock\n }\n }\n\n state \"🌐 NETWORK\" as Net {\n state \"Input Authority\" as IA\n state \"State Authority\" as SA\n IA --> SA : \"Send Input\"\n SA --> IA : \"Reconcile\"\n }\n\n %% Transitions chính\n Ground --> Air : \"IsGrounded == false\"\n Air --> Ground : \"OnLand Event\"\n Ground --> Utility : \"OnAbility\"\n Utility --> Ground : \"Complete\"\n\n %% Sửa lỗi Note bằng cấu trúc block ✨\n note left of Ground\n ✨ Sync: Velocity\n ✨ State: MoveState\n end note\n\n note right of Net\n ⚙️ Photon Fusion\n ⚙️ FixedUpdateNetwork\n end note\n```\n\n### 2. Environment Scanner & Interaction\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\n\n---\n\n## 🧩 Hệ thống Mê cung (Maze Generation)\n\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\n\n| Algorithm | Complexity | Description |\n| :--- | :--- | :--- |\n| **Prims** | O(E log V) | Tạo mê cung \"dày\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\n\n### Quy trình khởi tạo (Maze Generation Pipeline)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\n\n %% Quy trình chính\n Start((\"💔 PLAYER LOSES ROUND\")) --> Streak{{\"📊 Check Loss Streak\"}}\n\n %% Phân tầng Buff\n subgraph Buff_Pools [\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\"]\n Streak -- \"1 Trận\" --> T1\n Streak -- \"2 Trận\" --> T2\n Streak -- \"3+ Trận\" --> T3\n\n T1[\"🥉 Tier 1: Awakening
(Small Boosts)\"] \n T2[\"🥈 Tier 2: Evolution
(Tactical Advantage)\"]\n T3[\"🥇 Tier 3: Manifestation
(Game Changer)\"]\n \n %% Ví dụ chỉ số (Tooltip-like)\n T1 --- T1_Ex[\"+10% Speed
+15% Stamina Regen\"]\n T2 --- T2_Ex[\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\"]\n T3 --- T3_Ex[\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\"]\n end\n\n %% Giai đoạn áp dụng\n T1 & T2 & T3 --> Selection{{\"🎲 Selection Mode\"}}\n \n Selection -- \"Manual\" --> P1[\"Người chơi tự chọn 1 trong 3 Buff\"]\n Selection -- \"Auto\" --> P2[\"Hệ thống chọn ngẫu nhiên\"]\n \n P1 & P2 --> Apply[\"✨ Apply to Next Round Only
(Trạng thái: Active)\"]\n\n %% Kết quả vòng đấu sau\n Apply --> Result{{\"🏁 New Round Result?\"}}\n\n Result -- \"🏆 WIN\" --> Reset[\"♻️ Reset Streak
Remove All Buffs\"]\n Result -- \"❌ LOSS\" --> Increment[\"📈 Increase Streak
Progress to Next Tier\"]\n\n %% Vòng lặp\n Reset --> NewGame((\"🎮 Fair Match\"))\n Increment --> Start\n\n %% Gán Style\n class Start,Increment lossStyle;\n class T1,T1_Ex tier1Style;\n class T2,T2_Ex tier2Style;\n class T3,T3_Ex tier3Style;\n class Selection,P1,P2,Apply systemStyle;\n class Result,Reset,NewGame winStyle;\n```\n\n---\n\n## 🌐 Đồng bộ Mạng (Networking)\n\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\n\n### Network Data Flow & Synchronization\n```mermaid\nsequenceDiagram\n autonumber\n \n %% Định nghĩa các bên tham gia (Rút gọn để tránh lỗi render)\n participant IR as 🖱️ Input\n participant CP as 🎀 Local Player\n participant NT as 🌐 Fusion Net\n participant S as 👑 Server\n participant RP as 👥 Proxies\n\n %% --- GIAI ĐOẠN 1 ---\n Note over IR, CP: [PHASE 1] Thu thập Input\n IR->>CP: OnMove / OnJump / OnSprint\n CP->>CP: 📦 Pack NetworkInputData\n\n %% --- GIAI ĐOẠN 2 ---\n Note over CP: [PHASE 2] Dự đoán (Prediction)\n CP->>CP: 🏃 Run Client-Side Physics\n CP->>NT: ✉️ Send Input (Tick N)\n\n %% --- GIAI ĐOẠN 3 ---\n Note over NT, S: [PHASE 3] Truyền tin mạng\n NT->>S: UDP Packet Delivery\n Note right of S: SERVER SIMULATION\n S->>S: 📝 Validate & Update State\n S-->>NT: 📣 Snapshot (Tick N)\n\n %% --- GIAI ĐOẠN 4 ---\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\n NT-->>CP: State Snapshot\n Note over CP: 🔄 RECONCILIATION\n CP->>CP: Fix Position if Error > Threshold\n\n %% --- GIAI ĐOẠN 5 ---\n Note over NT, RP: [PHASE 5] Proxy Update\n NT-->>RP: State Snapshot\n Note over RP: 🎞️ INTERPOLATION (Lerp)\n\n %% --- GIAI ĐOẠN 6 ---\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\n CP->>CP: Update Camera Shake/VFX\n RP->>RP: Smooth Mesh Movement\n```\n\n---\n\n## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\n\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\"Despair Mechanics\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\n\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\n\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\n| :--- | :--- | :--- | :--- |\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20 \\%)$. |\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\n\n---\n\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\n\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\n\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm với mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\n\n---\n\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\n\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\n\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\n\n---\n\n## 🚀 Lộ trình Phát triển (Roadmap)\n\n\n\n\n- [x] **Phase 1: Foundation**\n - [x] Player State Machine (Idle, Move, Run, Jump).\n - [x] Maze Generation (Multi-algorithm).\n - [x] Photon Fusion Integration.\n- [ ] **Phase 2: Gameplay Core**\n - [ ] Role Selection (Seeker vs Trapper).\n - [ ] Trap Placement System.\n - [ ] Sound & Visual Detection (Noise Meter).\n\n---\n\n## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\n\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\n\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\n| :--- | :--- | :--- |\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\n\n---\n\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\n\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\n\n### 🌐 Networking & Synchronization (Duy)\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\n\n### 🏗️ World Generation & Performance (Scove)\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\n\n### 🪤 Gameplay & Physics (Tuấn)\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\n\n### 🎨 Visuals & UI/UX (Tuấn)\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\n\n---\n\n## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\n\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\n\n```text\n📦 BABA_YAGA\n├── 🌸 Assets/ (Trái tim của trò chơi)\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\n│ │ ├── 🎥 Camera Controller/ \n│ │ ├── 🛠️ Debug/ \n│ │ ├── 🌐 Fusion/ \n│ │ │ └── 🚀 BasicSpawner.cs\n│ │ ├── 🏗️ GameSetup/ \n│ │ │ ├── 🌀 Maze/ # Mê cung \n│ │ │ │ ├── 🐾 Crawler.cs \n│ │ │ │ ├── 🌳 Prims.cs \n│ │ │ │ ├── 🧵 Wilsons.cs \n│ │ │ │ └── 🗺️ Maze.cs \n│ │ │ └── 🧍 CharacterAutoSetup.cs\n│ │ ├── 🖱️ Interactables/ \n│ │ │ ├── 🚪 DoorInteractable.cs\n│ │ │ ├── 💡 LampInteractable.cs\n│ │ │ └── 💎 BaseInteractable.cs\n│ │ ├── 📐 Interface/ \n│ │ ├── 🏃‍♀️ Player Controller/ \n│ │ │ ├── 🧠 PlayerStateMachine.cs\n│ │ │ ├── ⌨️ InputReader.cs\n│ │ │ └── 🎭 States/ \n│ │ ├── ⚡ Optimization/ \n│ │ ├── 🖥️ UI/ \n│ │ └── 🎆 VFX/ \n│ ├── 🧸 Prefabs/ \n│ ├── 📖 document/ \n│ ├── 🎬 Scenes/ \n│ ├── 🎨 Materials/ \n│ ├── 👸 Models/ \n│ ├── 💃 Animation/ \n│ ├── 🔌 Photon/ \n│ ├── 🅰️ TextMesh Pro/ \n│ └── ⚙️ Settings/ \n├── 🛠️ ProjectSettings/ \n│ ├── 🏷️ TagManager.asset \n│ ├── 🌍 DynamicsManager.asset \n│ └── 📡 MultiplayerManager.asset \n├── 📦 Packages/ \n└── 📝 README.md # Creator (。•̀ᴗ-)✧\n```\n\n---\n\n## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\n\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\n\n### 1. Yêu cầu Hệ thống\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\n\n### 2. Tải về & Mở dự án\n1. **Clone Repository:**\n ```bash\n git clone https://github.com/OnlyScove/BABA_YAGA.git\n ```\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\n\n### 3. Cấu hình Photon Fusion (Bắt buộc)\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\n3. Sao chép **App ID** vừa tạo.\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\n\n### 4. Khởi chạy Trò chơi\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\n3. Nhấn nút **Play** trong Unity Editor.\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\n\n---\n\n## 💖 Support & Community\n\n

\n \n \"Stars\"\n \n \n \"Forks\"\n \n \n \"Follow\"\n \n

\n\n

\n \n \"Buy\n \n \n \"Discord\"\n \n \n \"Ko-fi\"\n \n

\n\n

\n \"Visitors\"\n

\n\n---\n\n**© 2026 SCOVANIA STUDIOS.**\n*Baba_Yaga is more than a game, it's a social experiment.*\n\n---\n\n**Connect with us:**\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\n"}}}],"status":"success","timestamp":"2026-06-07T11:43:35.284Z","resultDisplay":"","description":"README.md","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"92a0fcd6-5228-4b0e-9291-b82990b13206","timestamp":"2026-06-07T11:43:35.285Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780832615010_0","name":"update_topic","response":{"output":"Current topic: \"Modularizing README.md Content\"\nTopic summary: I am continuing the task of modularizing the README.md file. My goal is to extract the existing content from the main README.md and save each section into individual files within the 'BABA_YAGA_Updater/sections/' directory. This will allow for cleaner management and enable specific sections (like the Roadmap) to be updated automatically via the Google Sheets integration script. I have already identified the markers and structure of the README.md and will now proceed with the file extraction.\n\nStrategic Intent: Splitting README.md into modular sections within BABA_YAGA_Updater/sections/ for easier maintenance and automated updates."}}},{"functionResponse":{"id":"read_file__read_file_1780832615012_1","name":"read_file","response":{"output":"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \n\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\n\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\n\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\n\n---\n\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\n\n---\n\n## 👁️ Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n\n---\n\n## 🎮 Cơ chế Trò chơi (Core Mechanics)\n\n### 🌓 Sự bất đối xứng (The Asymmetry)\n\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\n| :--- | :--- | :--- |\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\n\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style cho các nhóm\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\n\n %% Phase 1: Initialization\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\n A[\"🚀 Bắt đầu Trận đấu\"] --> B{\"🤝 Matchmaking
(Photon Fusion)\"}\n B --> C[\"🎭 Phân vai: Seeker vs Trapper\"]\n C --> D[\"🧩 Maze Generator
(Prims/Wilsons)\"]\n D --> E[\"🏗️ Baking NavMesh & Colliders\"]\n E --> F[\"🧍 Character Auto-Setup\"]\n F --> G[\"📍 Spawn Players\"]\n end\n class Initialization,A,B,C,D,E,F,G initStyle;\n\n %% Phase 2: Core Loop\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\n G --> Loop((TICK: FixedUpdateNetwork))\n \n %% Seeker Branch\n subgraph Seeker_Logic [\"🏃 SEEKER (POV 1st)\"]\n S1[\"⌨️ Input: WASD/Space\"] --> S2[\"🏃 State: Move/Dash\"]\n S2 --> S3{\"⚡ Hành động?\"}\n S3 -- \"Sprinting\" --> S4[\"🔊 Noise Up\"]\n S3 -- \"Sneaking\" --> S5[\"🤫 Noise Down\"]\n S3 -- \"Flashlight\" --> S6[\"🔦 Lộ vị trí\"]\n \n S4 & S5 & S6 --> S_Check{\"🔍 Check Env\"}\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\"⚠️ Bị khống chế\"]\n end\n\n %% Trapper Branch\n subgraph Trapper_Logic [\"🕸️ TRAPPER (STRATEGY)\"]\n T1[\"🖱️ Mouse Input\"] --> T2[\"🗺️ View: Heatmap/Cams\"]\n T2 --> T3{\"🛠️ Kỹ năng?\"}\n T3 -- \"Đặt bẫy\" --> T4[\"🪤 Sync Trap\"]\n T3 -- \"Scan\" --> T5[\"📡 Ping Seeker\"]\n T3 -- \"Lock\" --> T6[\"🚪 Khóa cửa\"]\n \n T4 & T5 & T6 --> T_Check{\"👁️ Theo dõi\"}\n end\n\n %% Networking Layer\n subgraph Network_Sync [\"🌐 NETWORK SYNC\"]\n Loop --> NS1[\"⏩ Client Prediction\"]\n NS1 --> NS2[\"🔄 Server Reconciliation\"]\n NS2 --> NS3[\"📦 State Sync\"]\n end\n end\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\n class S_Trap criticalStyle;\n\n %% Phase 3: Results\n subgraph Result_Logic [\"3. KẾT THÚC & THƯỞNG\"]\n S_Check -- \"Chạm Exit\" --> Win_S[\"🏆 SEEKER THẮNG\"]\n T_Check -- \"Bắt được Seeker\" --> Win_T[\"🏆 TRAPPER THẮNG\"]\n Loop -- \"Timer = 0\" --> Win_T\n \n Win_S & Win_T --> Post_Match[\"📊 Thống kê Rank\"]\n Post_Match --> Buff{\"⚖️ Balance Check\"}\n Buff -- \"Thua cuộc\" --> Buff_Apply[\"💎 Kích hoạt Comeback Buff\"]\n Buff_Apply --> A\n end\n class Win_S,Win_T winStyle;\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\n\n %% Interactions (Dashed Lines)\n S_Trap -.->|Cảnh báo| T_Check\n S4 -.->|Sóng âm| T2\n T4 -.->|Collision ẩn| S_Check\n NS3 --> Loop\n```\n\n---\n\n## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\n\n### 1. Advanced Player & Camera State Machine\n\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\n\n```mermaid\nstateDiagram-v2\n direction TB\n\n state \"🌸 GROUND\" as Ground {\n [*] --> Idle\n \n state Idle {\n I_P: 📝 Vel < 0.1m/s\n I_C: 🌡️ Breathing (0.5Hz)\n }\n\n Idle --> Moving : \"Input.mag > 0.1\"\n state Moving {\n M_P: 👟 Speed 2-4m/s\n M_C: 🎢 Head Bob (1.2Hz)\n }\n\n Moving --> Sneaking : \"OnSneak (Hold)\"\n state Sneaking {\n Sn_P: 🤫 Noise -50%\n Sn_C: 📉 Lower Height\n }\n\n Moving --> Sprinting : \"OnSprint (Hold)\"\n state Sprinting {\n Sp_P: ⚡ Speed > 6.5m/s\n Sp_C: 🌈 Dynamic FOV\n }\n\n Sprinting --> Moving : \"Stamina Empty\"\n Sneaking --> Moving : \"Release Sneak\"\n }\n\n state \"☁️ AIRBORNE\" as Air {\n state Jump {\n J_P: 🆙 AddForce Up\n }\n state Falling {\n F_P: 📉 Gravity x 1.5\n }\n state Landing {\n L_P: 📏 Impact Check\n }\n\n Jump --> Falling : \"Vel.y < 0\"\n Falling --> Landing : \"IsGrounded == true\"\n }\n\n state \"⚡ ACTION\" as Utility {\n state Dashing {\n D_P: 💨 Burst 15m/s\n }\n state Interacting {\n Int_P: 🔒 Root Motion Lock\n }\n }\n\n state \"🌐 NETWORK\" as Net {\n state \"Input Authority\" as IA\n state \"State Authority\" as SA\n IA --> SA : \"Send Input\"\n SA --> IA : \"Reconcile\"\n }\n\n %% Transitions chính\n Ground --> Air : \"IsGrounded == false\"\n Air --> Ground : \"OnLand Event\"\n Ground --> Utility : \"OnAbility\"\n Utility --> Ground : \"Complete\"\n\n %% Sửa lỗi Note bằng cấu trúc block ✨\n note left of Ground\n ✨ Sync: Velocity\n ✨ State: MoveState\n end note\n\n note right of Net\n ⚙️ Photon Fusion\n ⚙️ FixedUpdateNetwork\n end note\n```\n\n### 2. Environment Scanner & Interaction\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\n\n---\n\n## 🧩 Hệ thống Mê cung (Maze Generation)\n\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\n\n| Algorithm | Complexity | Description |\n| :--- | :--- | :--- |\n| **Prims** | O(E log V) | Tạo mê cung \"dày\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\n\n### Quy trình khởi tạo (Maze Generation Pipeline)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\n\n %% Quy trình chính\n Start((\"💔 PLAYER LOSES ROUND\")) --> Streak{{\"📊 Check Loss Streak\"}}\n\n %% Phân tầng Buff\n subgraph Buff_Pools [\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\"]\n Streak -- \"1 Trận\" --> T1\n Streak -- \"2 Trận\" --> T2\n Streak -- \"3+ Trận\" --> T3\n\n T1[\"🥉 Tier 1: Awakening
(Small Boosts)\"] \n T2[\"🥈 Tier 2: Evolution
(Tactical Advantage)\"]\n T3[\"🥇 Tier 3: Manifestation
(Game Changer)\"]\n \n %% Ví dụ chỉ số (Tooltip-like)\n T1 --- T1_Ex[\"+10% Speed
+15% Stamina Regen\"]\n T2 --- T2_Ex[\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\"]\n T3 --- T3_Ex[\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\"]\n end\n\n %% Giai đoạn áp dụng\n T1 & T2 & T3 --> Selection{{\"🎲 Selection Mode\"}}\n \n Selection -- \"Manual\" --> P1[\"Người chơi tự chọn 1 trong 3 Buff\"]\n Selection -- \"Auto\" --> P2[\"Hệ thống chọn ngẫu nhiên\"]\n \n P1 & P2 --> Apply[\"✨ Apply to Next Round Only
(Trạng thái: Active)\"]\n\n %% Kết quả vòng đấu sau\n Apply --> Result{{\"🏁 New Round Result?\"}}\n\n Result -- \"🏆 WIN\" --> Reset[\"♻️ Reset Streak
Remove All Buffs\"]\n Result -- \"❌ LOSS\" --> Increment[\"📈 Increase Streak
Progress to Next Tier\"]\n\n %% Vòng lặp\n Reset --> NewGame((\"🎮 Fair Match\"))\n Increment --> Start\n\n %% Gán Style\n class Start,Increment lossStyle;\n class T1,T1_Ex tier1Style;\n class T2,T2_Ex tier2Style;\n class T3,T3_Ex tier3Style;\n class Selection,P1,P2,Apply systemStyle;\n class Result,Reset,NewGame winStyle;\n```\n\n---\n\n## 🌐 Đồng bộ Mạng (Networking)\n\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\n\n### Network Data Flow & Synchronization\n```mermaid\nsequenceDiagram\n autonumber\n \n %% Định nghĩa các bên tham gia (Rút gọn để tránh lỗi render)\n participant IR as 🖱️ Input\n participant CP as 🎀 Local Player\n participant NT as 🌐 Fusion Net\n participant S as 👑 Server\n participant RP as 👥 Proxies\n\n %% --- GIAI ĐOẠN 1 ---\n Note over IR, CP: [PHASE 1] Thu thập Input\n IR->>CP: OnMove / OnJump / OnSprint\n CP->>CP: 📦 Pack NetworkInputData\n\n %% --- GIAI ĐOẠN 2 ---\n Note over CP: [PHASE 2] Dự đoán (Prediction)\n CP->>CP: 🏃 Run Client-Side Physics\n CP->>NT: ✉️ Send Input (Tick N)\n\n %% --- GIAI ĐOẠN 3 ---\n Note over NT, S: [PHASE 3] Truyền tin mạng\n NT->>S: UDP Packet Delivery\n Note right of S: SERVER SIMULATION\n S->>S: 📝 Validate & Update State\n S-->>NT: 📣 Snapshot (Tick N)\n\n %% --- GIAI ĐOẠN 4 ---\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\n NT-->>CP: State Snapshot\n Note over CP: 🔄 RECONCILIATION\n CP->>CP: Fix Position if Error > Threshold\n\n %% --- GIAI ĐOẠN 5 ---\n Note over NT, RP: [PHASE 5] Proxy Update\n NT-->>RP: State Snapshot\n Note over RP: 🎞️ INTERPOLATION (Lerp)\n\n %% --- GIAI ĐOẠN 6 ---\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\n CP->>CP: Update Camera Shake/VFX\n RP->>RP: Smooth Mesh Movement\n```\n\n---\n\n## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\n\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\"Despair Mechanics\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\n\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\n\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\n| :--- | :--- | :--- | :--- |\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20 \\%)$. |\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\n\n---\n\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\n\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\n\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm với mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\n\n---\n\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\n\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\n\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\n\n---\n\n## 🚀 Lộ trình Phát triển (Roadmap)\n\n\n\n\n- [x] **Phase 1: Foundation**\n - [x] Player State Machine (Idle, Move, Run, Jump).\n - [x] Maze Generation (Multi-algorithm).\n - [x] Photon Fusion Integration.\n- [ ] **Phase 2: Gameplay Core**\n - [ ] Role Selection (Seeker vs Trapper).\n - [ ] Trap Placement System.\n - [ ] Sound & Visual Detection (Noise Meter).\n\n---\n\n## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\n\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\n\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\n| :--- | :--- | :--- |\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\n\n---\n\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\n\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\n\n### 🌐 Networking & Synchronization (Duy)\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\n\n### 🏗️ World Generation & Performance (Scove)\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\n\n### 🪤 Gameplay & Physics (Tuấn)\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\n\n### 🎨 Visuals & UI/UX (Tuấn)\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\n\n---\n\n## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\n\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\n\n```text\n📦 BABA_YAGA\n├── 🌸 Assets/ (Trái tim của trò chơi)\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\n│ │ ├── 🎥 Camera Controller/ \n│ │ ├── 🛠️ Debug/ \n│ │ ├── 🌐 Fusion/ \n│ │ │ └── 🚀 BasicSpawner.cs\n│ │ ├── 🏗️ GameSetup/ \n│ │ │ ├── 🌀 Maze/ # Mê cung \n│ │ │ │ ├── 🐾 Crawler.cs \n│ │ │ │ ├── 🌳 Prims.cs \n│ │ │ │ ├── 🧵 Wilsons.cs \n│ │ │ │ └── 🗺️ Maze.cs \n│ │ │ └── 🧍 CharacterAutoSetup.cs\n│ │ ├── 🖱️ Interactables/ \n│ │ │ ├── 🚪 DoorInteractable.cs\n│ │ │ ├── 💡 LampInteractable.cs\n│ │ │ └── 💎 BaseInteractable.cs\n│ │ ├── 📐 Interface/ \n│ │ ├── 🏃‍♀️ Player Controller/ \n│ │ │ ├── 🧠 PlayerStateMachine.cs\n│ │ │ ├── ⌨️ InputReader.cs\n│ │ │ └── 🎭 States/ \n│ │ ├── ⚡ Optimization/ \n│ │ ├── 🖥️ UI/ \n│ │ └── 🎆 VFX/ \n│ ├── 🧸 Prefabs/ \n│ ├── 📖 document/ \n│ ├── 🎬 Scenes/ \n│ ├── 🎨 Materials/ \n│ ├── 👸 Models/ \n│ ├── 💃 Animation/ \n│ ├── 🔌 Photon/ \n│ ├── 🅰️ TextMesh Pro/ \n│ └── ⚙️ Settings/ \n├── 🛠️ ProjectSettings/ \n│ ├── 🏷️ TagManager.asset \n│ ├── 🌍 DynamicsManager.asset \n│ └── 📡 MultiplayerManager.asset \n├── 📦 Packages/ \n└── 📝 README.md # Creator (。•̀ᴗ-)✧\n```\n\n---\n\n## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\n\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\n\n### 1. Yêu cầu Hệ thống\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\n\n### 2. Tải về & Mở dự án\n1. **Clone Repository:**\n ```bash\n git clone https://github.com/OnlyScove/BABA_YAGA.git\n ```\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\n\n### 3. Cấu hình Photon Fusion (Bắt buộc)\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\n3. Sao chép **App ID** vừa tạo.\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\n\n### 4. Khởi chạy Trò chơi\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\n3. Nhấn nút **Play** trong Unity Editor.\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\n\n---\n\n## 💖 Support & Community\n\n

\n \n \"Stars\"\n \n \n \"Forks\"\n \n \n \"Follow\"\n \n

\n\n

\n \n \"Buy\n \n \n \"Discord\"\n \n \n \"Ko-fi\"\n \n

\n\n

\n \"Visitors\"\n

\n\n---\n\n**© 2026 SCOVANIA STUDIOS.**\n*Baba_Yaga is more than a game, it's a social experiment.*\n\n---\n\n**Connect with us:**\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:43:35.285Z"}} +{"id":"3931fc5f-88e9-4274-97a8-3fe69d3f9286","timestamp":"2026-06-07T11:44:15.643Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":53392,"output":8555,"cached":43791,"thoughts":0,"tool":0,"total":61947},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:44:15.643Z"}} +{"id":"3931fc5f-88e9-4274-97a8-3fe69d3f9286","timestamp":"2026-06-07T11:44:15.643Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":53392,"output":8555,"cached":43791,"thoughts":0,"tool":0,"total":61947},"model":"gemini-3-flash-preview","toolCalls":[{"id":"write_file__write_file_1780832621356_0","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/00_header.md","content":"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \n\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\n\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\n\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\n\n---\n\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832621356_0","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\00_header.md. Here is the updated code:\n# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \r\n\r\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\r\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\r\n\r\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\r\n\r\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\r\n\r\n---\r\n\r\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\r\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\r\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\r\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\r\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\r\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\r\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\r\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\r\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\r\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 00_header.md\n===================================================================\n--- 00_header.md\tOriginal\n+++ 00_header.md\tWritten\n@@ -0,0 +1,22 @@\n+# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \n+\n+[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\n+[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\n+[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\n+\n+> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\n+\n+**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\n+\n+---\n+\n+## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\n+1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\n+2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\n+3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\n+4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\n+5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\n+6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\n+7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\n+8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\n+9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\n","fileName":"00_header.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\00_header.md","originalContent":"","newContent":"# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \n\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\n\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\n\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\n\n---\n\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\n","diffStat":{"model_added_lines":22,"model_removed_lines":0,"model_added_chars":1726,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Updater\\...\\00_header.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832628046_1","name":"write_file","args":{"content":"## 👁️ Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n","file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/01_vision.md"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832628046_1","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\01_vision.md. Here is the updated code:\n## 👁️ Tầm nhìn Dự án (Project Vision)\r\n\r\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\r\n\r\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\r\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\r\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\r\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 01_vision.md\n===================================================================\n--- 01_vision.md\tOriginal\n+++ 01_vision.md\tWritten\n@@ -0,0 +1,8 @@\n+## 👁️ Tầm nhìn Dự án (Project Vision)\n+\n+![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n+\n+Dự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n+* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n+* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n+* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n","fileName":"01_vision.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\01_vision.md","originalContent":"","newContent":"## 👁️ Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n","diffStat":{"model_added_lines":8,"model_removed_lines":0,"model_added_chars":493,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Updater\\...\\01_vision.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832631218_2","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/02_mechanics.md","content":"## 🎮 Cơ chế Trò chơi (Core Mechanics)\n\n### 🌓 Sự bất đối xứng (The Asymmetry)\n\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\n| :--- | :--- | :--- |\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\n\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style cho các nhóm\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\n\n %% Phase 1: Initialization\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\n A[\"🚀 Bắt đầu Trận đấu\"] --> B{\"🤝 Matchmaking
(Photon Fusion)\"}\n B --> C[\"🎭 Phân vai: Seeker vs Trapper\"]\n C --> D[\"🧩 Maze Generator
(Prims/Wilsons)\"]\n D --> E[\"🏗️ Baking NavMesh & Colliders\"]\n E --> F[\"🧍 Character Auto-Setup\"]\n F --> G[\"📍 Spawn Players\"]\n end\n class Initialization,A,B,C,D,E,F,G initStyle;\n\n %% Phase 2: Core Loop\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\n G --> Loop((TICK: FixedUpdateNetwork))\n \n %% Seeker Branch\n subgraph Seeker_Logic [\"🏃 SEEKER (POV 1st)\"]\n S1[\"⌨️ Input: WASD/Space\"] --> S2[\"🏃 State: Move/Dash\"]\n S2 --> S3{\"⚡ Hành động?\"}\n S3 -- \"Sprinting\" --> S4[\"🔊 Noise Up\"]\n S3 -- \"Sneaking\" --> S5[\"🤫 Noise Down\"]\n S3 -- \"Flashlight\" --> S6[\"🔦 Lộ vị trí\"]\n \n S4 & S5 & S6 --> S_Check{\"🔍 Check Env\"}\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\"⚠️ Bị khống chế\"]\n end\n\n %% Trapper Branch\n subgraph Trapper_Logic [\"🕸️ TRAPPER (STRATEGY)\"]\n T1[\"🖱️ Mouse Input\"] --> T2[\"🗺️ View: Heatmap/Cams\"]\n T2 --> T3{\"🛠️ Kỹ năng?\"}\n T3 -- \"Đặt bẫy\" --> T4[\"🪤 Sync Trap\"]\n T3 -- \"Scan\" --> T5[\"📡 Ping Seeker\"]\n T3 -- \"Lock\" --> T6[\"🚪 Khóa cửa\"]\n \n T4 & T5 & T6 --> T_Check{\"👁️ Theo dõi\"}\n end\n\n %% Networking Layer\n subgraph Network_Sync [\"🌐 NETWORK SYNC\"]\n Loop --> NS1[\"⏩ Client Prediction\"]\n NS1 --> NS2[\"🔄 Server Reconciliation\"]\n NS2 --> NS3[\"📦 State Sync\"]\n end\n end\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\n class S_Trap criticalStyle;\n\n %% Phase 3: Results\n subgraph Result_Logic [\"3. KẾT THÚC & THƯỞNG\"]\n S_Check -- \"Chạm Exit\" --> Win_S[\"🏆 SEEKER THẮNG\"]\n T_Check -- \"Bắt được Seeker\" --> Win_T[\"🏆 TRAPPER THẮNG\"]\n Loop -- \"Timer = 0\" --> Win_T\n \n Win_S & Win_T --> Post_Match[\"📊 Thống kê Rank\"]\n Post_Match --> Buff{\"⚖️ Balance Check\"}\n Buff -- \"Thua cuộc\" --> Buff_Apply[\"💎 Kích hoạt Comeback Buff\"]\n Buff_Apply --> A\n end\n class Win_S,Win_T winStyle;\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\n\n %% Interactions (Dashed Lines)\n S_Trap -.->|Cảnh báo| T_Check\n S4 -.->|Sóng âm| T2\n T4 -.->|Collision ẩn| S_Check\n NS3 --> Loop\n```\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832631218_2","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\02_mechanics.md. Here is the updated code:\n## 🎮 Cơ chế Trò chơi (Core Mechanics)\r\n\r\n### 🌓 Sự bất đối xứng (The Asymmetry)\r\n\r\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\r\n| :--- | :--- | :--- |\r\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\r\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\r\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\r\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\r\n\r\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\r\n\r\n```mermaid\r\ngraph TD\r\n %% Định nghĩa Style cho các nhóm\r\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\r\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\r\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\r\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\r\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\r\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\r\n\r\n %% Phase 1: Initialization\r\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\r\n A[\"🚀 Bắt đầu Trận đấu\"] --> B{\"🤝 Matchmaking
(Photon Fusion)\"}\r\n B --> C[\"🎭 Phân vai: Seeker vs Trapper\"]\r\n C --> D[\"🧩 Maze Generator
(Prims/Wilsons)\"]\r\n D --> E[\"🏗️ Baking NavMesh & Colliders\"]\r\n E --> F[\"🧍 Character Auto-Setup\"]\r\n F --> G[\"📍 Spawn Players\"]\r\n end\r\n class Initialization,A,B,C,D,E,F,G initStyle;\r\n\r\n %% Phase 2: Core Loop\r\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\r\n G --> Loop((TICK: FixedUpdateNetwork))\r\n \r\n %% Seeker Branch\r\n subgraph Seeker_Logic [\"🏃 SEEKER (POV 1st)\"]\r\n S1[\"⌨️ Input: WASD/Space\"] --> S2[\"🏃 State: Move/Dash\"]\r\n S2 --> S3{\"⚡ Hành động?\"}\r\n S3 -- \"Sprinting\" --> S4[\"🔊 Noise Up\"]\r\n S3 -- \"Sneaking\" --> S5[\"🤫 Noise Down\"]\r\n S3 -- \"Flashlight\" --> S6[\"🔦 Lộ vị trí\"]\r\n \r\n S4 & S5 & S6 --> S_Check{\"🔍 Check Env\"}\r\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\"⚠️ Bị khống chế\"]\r\n end\r\n\r\n %% Trapper Branch\r\n subgraph Trapper_Logic [\"🕸️ TRAPPER (STRATEGY)\"]\r\n T1[\"🖱️ Mouse Input\"] --> T2[\"🗺️ View: Heatmap/Cams\"]\r\n T2 --> T3{\"🛠️ Kỹ năng?\"}\r\n T3 -- \"Đặt bẫy\" --> T4[\"🪤 Sync Trap\"]\r\n T3 -- \"Scan\" --> T5[\"📡 Ping Seeker\"]\r\n T3 -- \"Lock\" --> T6[\"🚪 Khóa cửa\"]\r\n \r\n T4 & T5 & T6 --> T_Check{\"👁️ Theo dõi\"}\r\n end\r\n\r\n %% Networking Layer\r\n subgraph Network_Sync [\"🌐 NETWORK SYNC\"]\r\n Loop --> NS1[\"⏩ Client Prediction\"]\r\n NS1 --> NS2[\"🔄 Server Reconciliation\"]\r\n NS2 --> NS3[\"📦 State Sync\"]\r\n end\r\n end\r\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\r\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\r\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\r\n class S_Trap criticalStyle;\r\n\r\n %% Phase 3: Results\r\n subgraph Result_Logic [\"3. KẾT THÚC & THƯỞNG\"]\r\n S_Check -- \"Chạm Exit\" --> Win_S[\"🏆 SEEKER THẮNG\"]\r\n T_Check -- \"Bắt được Seeker\" --> Win_T[\"🏆 TRAPPER THẮNG\"]\r\n Loop -- \"Timer = 0\" --> Win_T\r\n \r\n Win_S & Win_T --> Post_Match[\"📊 Thống kê Rank\"]\r\n Post_Match --> Buff{\"⚖️ Balance Check\"}\r\n Buff -- \"Thua cuộc\" --> Buff_Apply[\"💎 Kích hoạt Comeback Buff\"]\r\n Buff_Apply --> A\r\n end\r\n class Win_S,Win_T winStyle;\r\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\r\n\r\n %% Interactions (Dashed Lines)\r\n S_Trap -.->|Cảnh báo| T_Check\r\n S4 -.->|Sóng âm| T2\r\n T4 -.->|Collision ẩn| S_Check\r\n NS3 --> Loop\r\n```\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 02_mechanics.md\n===================================================================\n--- 02_mechanics.md\tOriginal\n+++ 02_mechanics.md\tWritten\n@@ -0,0 +1,93 @@\n+## 🎮 Cơ chế Trò chơi (Core Mechanics)\n+\n+### 🌓 Sự bất đối xứng (The Asymmetry)\n+\n+| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\n+| :--- | :--- | :--- |\n+| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\n+| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\n+| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\n+| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\n+\n+### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\n+\n+```mermaid\n+graph TD\n+ %% Định nghĩa Style cho các nhóm\n+ classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\n+ classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\n+ classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\n+ classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\n+ classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\n+ classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\n+\n+ %% Phase 1: Initialization\n+ subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\n+ A[\"🚀 Bắt đầu Trận đấu\"] --> B{\"🤝 Matchmaking
(Photon Fusion)\"}\n+ B --> C[\"🎭 Phân vai: Seeker vs Trapper\"]\n+ C --> D[\"🧩 Maze Generator
(Prims/Wilsons)\"]\n+ D --> E[\"🏗️ Baking NavMesh & Colliders\"]\n+ E --> F[\"🧍 Character Auto-Setup\"]\n+ F --> G[\"📍 Spawn Players\"]\n+ end\n+ class Initialization,A,B,C,D,E,F,G initStyle;\n+\n+ %% Phase 2: Core Loop\n+ subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\n+ G --> Loop((TICK: FixedUpdateNetwork))\n+ \n+ %% Seeker Branch\n+ subgraph Seeker_Logic [\"🏃 SEEKER (POV 1st)\"]\n+ S1[\"⌨️ Input: WASD/Space\"] --> S2[\"🏃 State: Move/Dash\"]\n+ S2 --> S3{\"⚡ Hành động?\"}\n+ S3 -- \"Sprinting\" --> S4[\"🔊 Noise Up\"]\n+ S3 -- \"Sneaking\" --> S5[\"🤫 Noise Down\"]\n+ S3 -- \"Flashlight\" --> S6[\"🔦 Lộ vị trí\"]\n+ \n+ S4 & S5 & S6 --> S_Check{\"🔍 Check Env\"}\n+ S_Check -- \"Dẫm bẫy\" --> S_Trap[\"⚠️ Bị khống chế\"]\n+ end\n+\n+ %% Trapper Branch\n+ subgraph Trapper_Logic [\"🕸️ TRAPPER (STRATEGY)\"]\n+ T1[\"🖱️ Mouse Input\"] --> T2[\"🗺️ View: Heatmap/Cams\"]\n+ T2 --> T3{\"🛠️ Kỹ năng?\"}\n+ T3 -- \"Đặt bẫy\" --> T4[\"🪤 Sync Trap\"]\n+ T3 -- \"Scan\" --> T5[\"📡 Ping Seeker\"]\n+ T3 -- \"Lock\" --> T6[\"🚪 Khóa cửa\"]\n+ \n+ T4 & T5 & T6 --> T_Check{\"👁️ Theo dõi\"}\n+ end\n+\n+ %% Networking Layer\n+ subgraph Network_Sync [\"🌐 NETWORK SYNC\"]\n+ Loop --> NS1[\"⏩ Client Prediction\"]\n+ NS1 --> NS2[\"🔄 Server Reconciliation\"]\n+ NS2 --> NS3[\"📦 State Sync\"]\n+ end\n+ end\n+ class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\n+ class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\n+ class Network_Sync,NS1,NS2,NS3,Loop netStyle;\n+ class S_Trap criticalStyle;\n+\n+ %% Phase 3: Results\n+ subgraph Result_Logic [\"3. KẾT THÚC & THƯỞNG\"]\n+ S_Check -- \"Chạm Exit\" --> Win_S[\"🏆 SEEKER THẮNG\"]\n+ T_Check -- \"Bắt được Seeker\" --> Win_T[\"🏆 TRAPPER THẮNG\"]\n+ Loop -- \"Timer = 0\" --> Win_T\n+ \n+ Win_S & Win_T --> Post_Match[\"📊 Thống kê Rank\"]\n+ Post_Match --> Buff{\"⚖️ Balance Check\"}\n+ Buff -- \"Thua cuộc\" --> Buff_Apply[\"💎 Kích hoạt Comeback Buff\"]\n+ Buff_Apply --> A\n+ end\n+ class Win_S,Win_T winStyle;\n+ class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\n+\n+ %% Interactions (Dashed Lines)\n+ S_Trap -.->|Cảnh báo| T_Check\n+ S4 -.->|Sóng âm| T2\n+ T4 -.->|Collision ẩn| S_Check\n+ NS3 --> Loop\n+```\n","fileName":"02_mechanics.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\02_mechanics.md","originalContent":"","newContent":"## 🎮 Cơ chế Trò chơi (Core Mechanics)\n\n### 🌓 Sự bất đối xứng (The Asymmetry)\n\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\n| :--- | :--- | :--- |\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\n\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style cho các nhóm\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\n\n %% Phase 1: Initialization\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\n A[\"🚀 Bắt đầu Trận đấu\"] --> B{\"🤝 Matchmaking
(Photon Fusion)\"}\n B --> C[\"🎭 Phân vai: Seeker vs Trapper\"]\n C --> D[\"🧩 Maze Generator
(Prims/Wilsons)\"]\n D --> E[\"🏗️ Baking NavMesh & Colliders\"]\n E --> F[\"🧍 Character Auto-Setup\"]\n F --> G[\"📍 Spawn Players\"]\n end\n class Initialization,A,B,C,D,E,F,G initStyle;\n\n %% Phase 2: Core Loop\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\n G --> Loop((TICK: FixedUpdateNetwork))\n \n %% Seeker Branch\n subgraph Seeker_Logic [\"🏃 SEEKER (POV 1st)\"]\n S1[\"⌨️ Input: WASD/Space\"] --> S2[\"🏃 State: Move/Dash\"]\n S2 --> S3{\"⚡ Hành động?\"}\n S3 -- \"Sprinting\" --> S4[\"🔊 Noise Up\"]\n S3 -- \"Sneaking\" --> S5[\"🤫 Noise Down\"]\n S3 -- \"Flashlight\" --> S6[\"🔦 Lộ vị trí\"]\n \n S4 & S5 & S6 --> S_Check{\"🔍 Check Env\"}\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\"⚠️ Bị khống chế\"]\n end\n\n %% Trapper Branch\n subgraph Trapper_Logic [\"🕸️ TRAPPER (STRATEGY)\"]\n T1[\"🖱️ Mouse Input\"] --> T2[\"🗺️ View: Heatmap/Cams\"]\n T2 --> T3{\"🛠️ Kỹ năng?\"}\n T3 -- \"Đặt bẫy\" --> T4[\"🪤 Sync Trap\"]\n T3 -- \"Scan\" --> T5[\"📡 Ping Seeker\"]\n T3 -- \"Lock\" --> T6[\"🚪 Khóa cửa\"]\n \n T4 & T5 & T6 --> T_Check{\"👁️ Theo dõi\"}\n end\n\n %% Networking Layer\n subgraph Network_Sync [\"🌐 NETWORK SYNC\"]\n Loop --> NS1[\"⏩ Client Prediction\"]\n NS1 --> NS2[\"🔄 Server Reconciliation\"]\n NS2 --> NS3[\"📦 State Sync\"]\n end\n end\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\n class S_Trap criticalStyle;\n\n %% Phase 3: Results\n subgraph Result_Logic [\"3. KẾT THÚC & THƯỞNG\"]\n S_Check -- \"Chạm Exit\" --> Win_S[\"🏆 SEEKER THẮNG\"]\n T_Check -- \"Bắt được Seeker\" --> Win_T[\"🏆 TRAPPER THẮNG\"]\n Loop -- \"Timer = 0\" --> Win_T\n \n Win_S & Win_T --> Post_Match[\"📊 Thống kê Rank\"]\n Post_Match --> Buff{\"⚖️ Balance Check\"}\n Buff -- \"Thua cuộc\" --> Buff_Apply[\"💎 Kích hoạt Comeback Buff\"]\n Buff_Apply --> A\n end\n class Win_S,Win_T winStyle;\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\n\n %% Interactions (Dashed Lines)\n S_Trap -.->|Cảnh báo| T_Check\n S4 -.->|Sóng âm| T2\n T4 -.->|Collision ẩn| S_Check\n NS3 --> Loop\n```\n","diffStat":{"model_added_lines":93,"model_removed_lines":0,"model_added_chars":3793,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Up...\\...\\02_mechanics.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832636052_3","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/03_architecture.md","content":"## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\n\n### 1. Advanced Player & Camera State Machine\n\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\n\n```mermaid\nstateDiagram-v2\n direction TB\n\n state \"🌸 GROUND\" as Ground {\n [*] --> Idle\n \n state Idle {\n I_P: 📝 Vel < 0.1m/s\n I_C: 🌡️ Breathing (0.5Hz)\n }\n\n Idle --> Moving : \"Input.mag > 0.1\"\n state Moving {\n M_P: 👟 Speed 2-4m/s\n M_C: 🎢 Head Bob (1.2Hz)\n }\n\n Moving --> Sneaking : \"OnSneak (Hold)\"\n state Sneaking {\n Sn_P: 🤫 Noise -50%\n Sn_C: 📉 Lower Height\n }\n\n Moving --> Sprinting : \"OnSprint (Hold)\"\n state Sneaking --> Moving : \"Release Sneak\"\n state Sprinting {\n Sp_P: ⚡ Speed > 6.5m/s\n Sp_C: 🌈 Dynamic FOV\n }\n\n Sprinting --> Moving : \"Stamina Empty\"\n }\n\n state \"☁️ AIRBORNE\" as Air {\n state Jump {\n J_P: 🆙 AddForce Up\n }\n state Falling {\n F_P: 📉 Gravity x 1.5\n }\n state Landing {\n L_P: 📏 Impact Check\n }\n\n Jump --> Falling : \"Vel.y < 0\"\n Falling --> Landing : \"IsGrounded == true\"\n }\n\n state \"⚡ ACTION\" as Utility {\n state Dashing {\n D_P: 💨 Burst 15m/s\n }\n state Interacting {\n Int_P: 🔒 Root Motion Lock\n }\n }\n\n state \"🌐 NETWORK\" as Net {\n state \"Input Authority\" as IA\n state \"State Authority\" as SA\n IA --> SA : \"Send Input\"\n SA --> IA : \"Reconcile\"\n }\n\n %% Transitions chính\n Ground --> Air : \"IsGrounded == false\"\n Air --> Ground : \"OnLand Event\"\n Ground --> Utility : \"OnAbility\"\n Utility --> Ground : \"Complete\"\n\n %% Notes\n note left of Ground\n ✨ Sync: Velocity\n ✨ State: MoveState\n end note\n\n note right of Net\n ⚙️ Photon Fusion\n ⚙️ FixedUpdateNetwork\n end note\n```\n\n### 2. Environment Scanner & Interaction\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832636052_3","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\03_architecture.md. Here is the updated code:\n## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\r\n\r\n### 1. Advanced Player & Camera State Machine\r\n\r\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\r\n\r\n```mermaid\r\nstateDiagram-v2\r\n direction TB\r\n\r\n state \"🌸 GROUND\" as Ground {\r\n [*] --> Idle\r\n \r\n state Idle {\r\n I_P: 📝 Vel < 0.1m/s\r\n I_C: 🌡️ Breathing (0.5Hz)\r\n }\r\n\r\n Idle --> Moving : \"Input.mag > 0.1\"\r\n state Moving {\r\n M_P: 👟 Speed 2-4m/s\r\n M_C: 🎢 Head Bob (1.2Hz)\r\n }\r\n\r\n Moving --> Sneaking : \"OnSneak (Hold)\"\r\n state Sneaking {\r\n Sn_P: 🤫 Noise -50%\r\n Sn_C: 📉 Lower Height\r\n }\r\n\r\n Moving --> Sprinting : \"OnSprint (Hold)\"\r\n state Sneaking --> Moving : \"Release Sneak\"\r\n state Sprinting {\r\n Sp_P: ⚡ Speed > 6.5m/s\r\n Sp_C: 🌈 Dynamic FOV\r\n }\r\n\r\n Sprinting --> Moving : \"Stamina Empty\"\r\n }\r\n\r\n state \"☁️ AIRBORNE\" as Air {\r\n state Jump {\r\n J_P: 🆙 AddForce Up\r\n }\r\n state Falling {\r\n F_P: 📉 Gravity x 1.5\r\n }\r\n state Landing {\r\n L_P: 📏 Impact Check\r\n }\r\n\r\n Jump --> Falling : \"Vel.y < 0\"\r\n Falling --> Landing : \"IsGrounded == true\"\r\n }\r\n\r\n state \"⚡ ACTION\" as Utility {\r\n state Dashing {\r\n D_P: 💨 Burst 15m/s\r\n }\r\n state Interacting {\r\n Int_P: 🔒 Root Motion Lock\r\n }\r\n }\r\n\r\n state \"🌐 NETWORK\" as Net {\r\n state \"Input Authority\" as IA\r\n state \"State Authority\" as SA\r\n IA --> SA : \"Send Input\"\r\n SA --> IA : \"Reconcile\"\r\n }\r\n\r\n %% Transitions chính\r\n Ground --> Air : \"IsGrounded == false\"\r\n Air --> Ground : \"OnLand Event\"\r\n Ground --> Utility : \"OnAbility\"\r\n Utility --> Ground : \"Complete\"\r\n\r\n %% Notes\r\n note left of Ground\r\n ✨ Sync: Velocity\r\n ✨ State: MoveState\r\n end note\r\n\r\n note right of Net\r\n ⚙️ Photon Fusion\r\n ⚙️ FixedUpdateNetwork\r\n end note\r\n```\r\n\r\n### 2. Environment Scanner & Interaction\r\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 03_architecture.md\n===================================================================\n--- 03_architecture.md\tOriginal\n+++ 03_architecture.md\tWritten\n@@ -0,0 +1,91 @@\n+## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\n+\n+### 1. Advanced Player & Camera State Machine\n+\n+Hệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\n+\n+```mermaid\n+stateDiagram-v2\n+ direction TB\n+\n+ state \"🌸 GROUND\" as Ground {\n+ [*] --> Idle\n+ \n+ state Idle {\n+ I_P: 📝 Vel < 0.1m/s\n+ I_C: 🌡️ Breathing (0.5Hz)\n+ }\n+\n+ Idle --> Moving : \"Input.mag > 0.1\"\n+ state Moving {\n+ M_P: 👟 Speed 2-4m/s\n+ M_C: 🎢 Head Bob (1.2Hz)\n+ }\n+\n+ Moving --> Sneaking : \"OnSneak (Hold)\"\n+ state Sneaking {\n+ Sn_P: 🤫 Noise -50%\n+ Sn_C: 📉 Lower Height\n+ }\n+\n+ Moving --> Sprinting : \"OnSprint (Hold)\"\n+ state Sneaking --> Moving : \"Release Sneak\"\n+ state Sprinting {\n+ Sp_P: ⚡ Speed > 6.5m/s\n+ Sp_C: 🌈 Dynamic FOV\n+ }\n+\n+ Sprinting --> Moving : \"Stamina Empty\"\n+ }\n+\n+ state \"☁️ AIRBORNE\" as Air {\n+ state Jump {\n+ J_P: 🆙 AddForce Up\n+ }\n+ state Falling {\n+ F_P: 📉 Gravity x 1.5\n+ }\n+ state Landing {\n+ L_P: 📏 Impact Check\n+ }\n+\n+ Jump --> Falling : \"Vel.y < 0\"\n+ Falling --> Landing : \"IsGrounded == true\"\n+ }\n+\n+ state \"⚡ ACTION\" as Utility {\n+ state Dashing {\n+ D_P: 💨 Burst 15m/s\n+ }\n+ state Interacting {\n+ Int_P: 🔒 Root Motion Lock\n+ }\n+ }\n+\n+ state \"🌐 NETWORK\" as Net {\n+ state \"Input Authority\" as IA\n+ state \"State Authority\" as SA\n+ IA --> SA : \"Send Input\"\n+ SA --> IA : \"Reconcile\"\n+ }\n+\n+ %% Transitions chính\n+ Ground --> Air : \"IsGrounded == false\"\n+ Air --> Ground : \"OnLand Event\"\n+ Ground --> Utility : \"OnAbility\"\n+ Utility --> Ground : \"Complete\"\n+\n+ %% Notes\n+ note left of Ground\n+ ✨ Sync: Velocity\n+ ✨ State: MoveState\n+ end note\n+\n+ note right of Net\n+ ⚙️ Photon Fusion\n+ ⚙️ FixedUpdateNetwork\n+ end note\n+```\n+\n+### 2. Environment Scanner & Interaction\n+Hệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\n","fileName":"03_architecture.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\03_architecture.md","originalContent":"","newContent":"## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\n\n### 1. Advanced Player & Camera State Machine\n\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\n\n```mermaid\nstateDiagram-v2\n direction TB\n\n state \"🌸 GROUND\" as Ground {\n [*] --> Idle\n \n state Idle {\n I_P: 📝 Vel < 0.1m/s\n I_C: 🌡️ Breathing (0.5Hz)\n }\n\n Idle --> Moving : \"Input.mag > 0.1\"\n state Moving {\n M_P: 👟 Speed 2-4m/s\n M_C: 🎢 Head Bob (1.2Hz)\n }\n\n Moving --> Sneaking : \"OnSneak (Hold)\"\n state Sneaking {\n Sn_P: 🤫 Noise -50%\n Sn_C: 📉 Lower Height\n }\n\n Moving --> Sprinting : \"OnSprint (Hold)\"\n state Sneaking --> Moving : \"Release Sneak\"\n state Sprinting {\n Sp_P: ⚡ Speed > 6.5m/s\n Sp_C: 🌈 Dynamic FOV\n }\n\n Sprinting --> Moving : \"Stamina Empty\"\n }\n\n state \"☁️ AIRBORNE\" as Air {\n state Jump {\n J_P: 🆙 AddForce Up\n }\n state Falling {\n F_P: 📉 Gravity x 1.5\n }\n state Landing {\n L_P: 📏 Impact Check\n }\n\n Jump --> Falling : \"Vel.y < 0\"\n Falling --> Landing : \"IsGrounded == true\"\n }\n\n state \"⚡ ACTION\" as Utility {\n state Dashing {\n D_P: 💨 Burst 15m/s\n }\n state Interacting {\n Int_P: 🔒 Root Motion Lock\n }\n }\n\n state \"🌐 NETWORK\" as Net {\n state \"Input Authority\" as IA\n state \"State Authority\" as SA\n IA --> SA : \"Send Input\"\n SA --> IA : \"Reconcile\"\n }\n\n %% Transitions chính\n Ground --> Air : \"IsGrounded == false\"\n Air --> Ground : \"OnLand Event\"\n Ground --> Utility : \"OnAbility\"\n Utility --> Ground : \"Complete\"\n\n %% Notes\n note left of Ground\n ✨ Sync: Velocity\n ✨ State: MoveState\n end note\n\n note right of Net\n ⚙️ Photon Fusion\n ⚙️ FixedUpdateNetwork\n end note\n```\n\n### 2. Environment Scanner & Interaction\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\n","diffStat":{"model_added_lines":91,"model_removed_lines":0,"model_added_chars":2258,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA...\\...\\03_architecture.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832638275_4","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/04_maze.md","content":"## 🧩 Hệ thống Mê cung (Maze Generation)\n\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\n\n| Algorithm | Complexity | Description |\n| :--- | :--- | :--- |\n| **Prims** | O(E log V) | Tạo mê cung \"dày\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\n\n### Quy trình khởi tạo (Maze Generation Pipeline)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\n\n %% Quy trình chính\n Start((\"💔 PLAYER LOSES ROUND\")) --> Streak{{\"📊 Check Loss Streak\"}}\n\n %% Phân tầng Buff\n subgraph Buff_Pools [\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\"]\n Streak -- \"1 Trận\" --> T1\n Streak -- \"2 Trận\" --> T2\n Streak -- \"3+ Trận\" --> T3\n\n T1[\"🥉 Tier 1: Awakening
(Small Boosts)\"] \n T2[\"🥈 Tier 2: Evolution
(Tactical Advantage)\"]\n T3[\"🥇 Tier 3: Manifestation
(Game Changer)\"]\n \n %% Ví dụ chỉ số (Tooltip-like)\n T1 --- T1_Ex[\"+10% Speed
+15% Stamina Regen\"]\n T2 --- T2_Ex[\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\"]\n T3 --- T3_Ex[\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\"]\n end\n\n %% Giai đoạn áp dụng\n T1 & T2 & T3 --> Selection{{\"🎲 Selection Mode\"}}\n \n Selection -- \"Manual\" --> P1[\"Người chơi tự chọn 1 trong 3 Buff\"]\n Selection -- \"Auto\" --> P2[\"Hệ thống chọn ngẫu nhiên\"]\n \n P1 & P2 --> Apply[\"✨ Apply to Next Round Only
(Trạng thái: Active)\"]\n\n %% Kết quả vòng đấu sau\n Apply --> Result{{\"🏁 New Round Result?\"}}\n\n Result -- \"🏆 WIN\" --> Reset[\"♻️ Reset Streak
Remove All Buffs\"]\n Result -- \"❌ LOSS\" --> Increment[\"📈 Increase Streak
Progress to Next Tier\"]\n\n %% Vòng lặp\n Reset --> NewGame((\"🎮 Fair Match\"))\n Increment --> Start\n\n %% Gán Style\n class Start,Increment lossStyle;\n class T1,T1_Ex tier1Style;\n class T2,T2_Ex tier2Style;\n class T3,T3_Ex tier3Style;\n class Selection,P1,P2,Apply systemStyle;\n class Result,Reset,NewGame winStyle;\n```\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832638275_4","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\04_maze.md. Here is the updated code:\n## 🧩 Hệ thống Mê cung (Maze Generation)\r\n\r\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\r\n\r\n| Algorithm | Complexity | Description |\r\n| :--- | :--- | :--- |\r\n| **Prims** | O(E log V) | Tạo mê cung \"dày\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\r\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\r\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\r\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\r\n\r\n### Quy trình khởi tạo (Maze Generation Pipeline)\r\n\r\n```mermaid\r\ngraph TD\r\n %% Định nghĩa Style\r\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\r\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\r\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\r\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\r\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\r\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\r\n\r\n %% Quy trình chính\r\n Start((\"💔 PLAYER LOSES ROUND\")) --> Streak{{\"📊 Check Loss Streak\"}}\r\n\r\n %% Phân tầng Buff\r\n subgraph Buff_Pools [\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\"]\r\n Streak -- \"1 Trận\" --> T1\r\n Streak -- \"2 Trận\" --> T2\r\n Streak -- \"3+ Trận\" --> T3\r\n\r\n T1[\"🥉 Tier 1: Awakening
(Small Boosts)\"] \r\n T2[\"🥈 Tier 2: Evolution
(Tactical Advantage)\"]\r\n T3[\"🥇 Tier 3: Manifestation
(Game Changer)\"]\r\n \r\n %% Ví dụ chỉ số (Tooltip-like)\r\n T1 --- T1_Ex[\"+10% Speed
+15% Stamina Regen\"]\r\n T2 --- T2_Ex[\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\"]\r\n T3 --- T3_Ex[\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\"]\r\n end\r\n\r\n %% Giai đoạn áp dụng\r\n T1 & T2 & T3 --> Selection{{\"🎲 Selection Mode\"}}\r\n \r\n Selection -- \"Manual\" --> P1[\"Người chơi tự chọn 1 trong 3 Buff\"]\r\n Selection -- \"Auto\" --> P2[\"Hệ thống chọn ngẫu nhiên\"]\r\n \r\n P1 & P2 --> Apply[\"✨ Apply to Next Round Only
(Trạng thái: Active)\"]\r\n\r\n %% Kết quả vòng đấu sau\r\n Apply --> Result{{\"🏁 New Round Result?\"}}\r\n\r\n Result -- \"🏆 WIN\" --> Reset[\"♻️ Reset Streak
Remove All Buffs\"]\r\n Result -- \"❌ LOSS\" --> Increment[\"📈 Increase Streak
Progress to Next Tier\"]\r\n\r\n %% Vòng lặp\r\n Reset --> NewGame((\"🎮 Fair Match\"))\r\n Increment --> Start\r\n\r\n %% Gán Style\r\n class Start,Increment lossStyle;\r\n class T1,T1_Ex tier1Style;\r\n class T2,T2_Ex tier2Style;\r\n class T3,T3_Ex tier3Style;\r\n class Selection,P1,P2,Apply systemStyle;\r\n class Result,Reset,NewGame winStyle;\r\n```\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 04_maze.md\n===================================================================\n--- 04_maze.md\tOriginal\n+++ 04_maze.md\tWritten\n@@ -0,0 +1,68 @@\n+## 🧩 Hệ thống Mê cung (Maze Generation)\n+\n+Trái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\n+\n+| Algorithm | Complexity | Description |\n+| :--- | :--- | :--- |\n+| **Prims** | O(E log V) | Tạo mê cung \"dày\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\n+| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\n+| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\n+| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\n+\n+### Quy trình khởi tạo (Maze Generation Pipeline)\n+\n+```mermaid\n+graph TD\n+ %% Định nghĩa Style\n+ classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\n+ classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\n+ classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\n+ classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\n+ classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\n+ classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\n+\n+ %% Quy trình chính\n+ Start((\"💔 PLAYER LOSES ROUND\")) --> Streak{{\"📊 Check Loss Streak\"}}\n+\n+ %% Phân tầng Buff\n+ subgraph Buff_Pools [\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\"]\n+ Streak -- \"1 Trận\" --> T1\n+ Streak -- \"2 Trận\" --> T2\n+ Streak -- \"3+ Trận\" --> T3\n+\n+ T1[\"🥉 Tier 1: Awakening
(Small Boosts)\"] \n+ T2[\"🥈 Tier 2: Evolution
(Tactical Advantage)\"]\n+ T3[\"🥇 Tier 3: Manifestation
(Game Changer)\"]\n+ \n+ %% Ví dụ chỉ số (Tooltip-like)\n+ T1 --- T1_Ex[\"+10% Speed
+15% Stamina Regen\"]\n+ T2 --- T2_Ex[\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\"]\n+ T3 --- T3_Ex[\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\"]\n+ end\n+\n+ %% Giai đoạn áp dụng\n+ T1 & T2 & T3 --> Selection{{\"🎲 Selection Mode\"}}\n+ \n+ Selection -- \"Manual\" --> P1[\"Người chơi tự chọn 1 trong 3 Buff\"]\n+ Selection -- \"Auto\" --> P2[\"Hệ thống chọn ngẫu nhiên\"]\n+ \n+ P1 & P2 --> Apply[\"✨ Apply to Next Round Only
(Trạng thái: Active)\"]\n+\n+ %% Kết quả vòng đấu sau\n+ Apply --> Result{{\"🏁 New Round Result?\"}}\n+\n+ Result -- \"🏆 WIN\" --> Reset[\"♻️ Reset Streak
Remove All Buffs\"]\n+ Result -- \"❌ LOSS\" --> Increment[\"📈 Increase Streak
Progress to Next Tier\"]\n+\n+ %% Vòng lặp\n+ Reset --> NewGame((\"🎮 Fair Match\"))\n+ Increment --> Start\n+\n+ %% Gán Style\n+ class Start,Increment lossStyle;\n+ class T1,T1_Ex tier1Style;\n+ class T2,T2_Ex tier2Style;\n+ class T3,T3_Ex tier3Style;\n+ class Selection,P1,P2,Apply systemStyle;\n+ class Result,Reset,NewGame winStyle;\n+```\n","fileName":"04_maze.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\04_maze.md","originalContent":"","newContent":"## 🧩 Hệ thống Mê cung (Maze Generation)\n\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\n\n| Algorithm | Complexity | Description |\n| :--- | :--- | :--- |\n| **Prims** | O(E log V) | Tạo mê cung \"dày\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\n\n### Quy trình khởi tạo (Maze Generation Pipeline)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\n\n %% Quy trình chính\n Start((\"💔 PLAYER LOSES ROUND\")) --> Streak{{\"📊 Check Loss Streak\"}}\n\n %% Phân tầng Buff\n subgraph Buff_Pools [\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\"]\n Streak -- \"1 Trận\" --> T1\n Streak -- \"2 Trận\" --> T2\n Streak -- \"3+ Trận\" --> T3\n\n T1[\"🥉 Tier 1: Awakening
(Small Boosts)\"] \n T2[\"🥈 Tier 2: Evolution
(Tactical Advantage)\"]\n T3[\"🥇 Tier 3: Manifestation
(Game Changer)\"]\n \n %% Ví dụ chỉ số (Tooltip-like)\n T1 --- T1_Ex[\"+10% Speed
+15% Stamina Regen\"]\n T2 --- T2_Ex[\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\"]\n T3 --- T3_Ex[\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\"]\n end\n\n %% Giai đoạn áp dụng\n T1 & T2 & T3 --> Selection{{\"🎲 Selection Mode\"}}\n \n Selection -- \"Manual\" --> P1[\"Người chơi tự chọn 1 trong 3 Buff\"]\n Selection -- \"Auto\" --> P2[\"Hệ thống chọn ngẫu nhiên\"]\n \n P1 & P2 --> Apply[\"✨ Apply to Next Round Only
(Trạng thái: Active)\"]\n\n %% Kết quả vòng đấu sau\n Apply --> Result{{\"🏁 New Round Result?\"}}\n\n Result -- \"🏆 WIN\" --> Reset[\"♻️ Reset Streak
Remove All Buffs\"]\n Result -- \"❌ LOSS\" --> Increment[\"📈 Increase Streak
Progress to Next Tier\"]\n\n %% Vòng lặp\n Reset --> NewGame((\"🎮 Fair Match\"))\n Increment --> Start\n\n %% Gán Style\n class Start,Increment lossStyle;\n class T1,T1_Ex tier1Style;\n class T2,T2_Ex tier2Style;\n class T3,T3_Ex tier3Style;\n class Selection,P1,P2,Apply systemStyle;\n class Result,Reset,NewGame winStyle;\n```\n","diffStat":{"model_added_lines":68,"model_removed_lines":0,"model_added_chars":2741,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Updater\\...\\04_maze.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832642382_5","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/05_networking.md","content":"## 🌐 Đồng bộ Mạng (Networking)\n\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\n\n### Network Data Flow & Synchronization\n```mermaid\nsequenceDiagram\n autonumber\n \n participant IR as 🖱️ Input\n participant CP as 🎀 Local Player\n participant NT as 🌐 Fusion Net\n participant S as 👑 Server\n participant RP as 👥 Proxies\n\n %% --- GIAI ĐOẠN 1 ---\n Note over IR, CP: [PHASE 1] Thu thập Input\n IR->>CP: OnMove / OnJump / OnSprint\n CP->>CP: 📦 Pack NetworkInputData\n\n %% --- GIAI ĐOẠN 2 ---\n Note over CP: [PHASE 2] Dự đoán (Prediction)\n CP->>CP: 🏃 Run Client-Side Physics\n CP->>NT: ✉️ Send Input (Tick N)\n\n %% --- GIAI ĐOẠN 3 ---\n Note over NT, S: [PHASE 3] Truyền tin mạng\n NT->>S: UDP Packet Delivery\n Note right of S: SERVER SIMULATION\n S->>S: 📝 Validate & Update State\n S-->>NT: 📣 Snapshot (Tick N)\n\n %% --- GIAI ĐOẠN 4 ---\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\n NT-->>CP: State Snapshot\n Note over CP: 🔄 RECONCILIATION\n CP->>CP: Fix Position if Error > Threshold\n\n %% --- GIAI ĐOẠN 5 ---\n Note over NT, RP: [PHASE 5] Proxy Update\n NT-->>RP: State Snapshot\n Note over RP: 🎞️ INTERPOLATION (Lerp)\n\n %% --- GIAI ĐOẠN 6 ---\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\n CP->>CP: Update Camera Shake/VFX\n RP->>RP: Smooth Mesh Movement\n```\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832642382_5","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\05_networking.md. Here is the updated code:\n## 🌐 Đồng bộ Mạng (Networking)\r\n\r\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\r\n\r\n### Network Data Flow & Synchronization\r\n```mermaid\r\nsequenceDiagram\r\n autonumber\r\n \r\n participant IR as 🖱️ Input\r\n participant CP as 🎀 Local Player\r\n participant NT as 🌐 Fusion Net\r\n participant S as 👑 Server\r\n participant RP as 👥 Proxies\r\n\r\n %% --- GIAI ĐOẠN 1 ---\r\n Note over IR, CP: [PHASE 1] Thu thập Input\r\n IR->>CP: OnMove / OnJump / OnSprint\r\n CP->>CP: 📦 Pack NetworkInputData\r\n\r\n %% --- GIAI ĐOẠN 2 ---\r\n Note over CP: [PHASE 2] Dự đoán (Prediction)\r\n CP->>CP: 🏃 Run Client-Side Physics\r\n CP->>NT: ✉️ Send Input (Tick N)\r\n\r\n %% --- GIAI ĐOẠN 3 ---\r\n Note over NT, S: [PHASE 3] Truyền tin mạng\r\n NT->>S: UDP Packet Delivery\r\n Note right of S: SERVER SIMULATION\r\n S->>S: 📝 Validate & Update State\r\n S-->>NT: 📣 Snapshot (Tick N)\r\n\r\n %% --- GIAI ĐOẠN 4 ---\r\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\r\n NT-->>CP: State Snapshot\r\n Note over CP: 🔄 RECONCILIATION\r\n CP->>CP: Fix Position if Error > Threshold\r\n\r\n %% --- GIAI ĐOẠN 5 ---\r\n Note over NT, RP: [PHASE 5] Proxy Update\r\n NT-->>RP: State Snapshot\r\n Note over RP: 🎞️ INTERPOLATION (Lerp)\r\n\r\n %% --- GIAI ĐOẠN 6 ---\r\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\r\n CP->>CP: Update Camera Shake/VFX\r\n RP->>RP: Smooth Mesh Movement\r\n```\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 05_networking.md\n===================================================================\n--- 05_networking.md\tOriginal\n+++ 05_networking.md\tWritten\n@@ -0,0 +1,48 @@\n+## 🌐 Đồng bộ Mạng (Networking)\n+\n+Sử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\n+\n+### Network Data Flow & Synchronization\n+```mermaid\n+sequenceDiagram\n+ autonumber\n+ \n+ participant IR as 🖱️ Input\n+ participant CP as 🎀 Local Player\n+ participant NT as 🌐 Fusion Net\n+ participant S as 👑 Server\n+ participant RP as 👥 Proxies\n+\n+ %% --- GIAI ĐOẠN 1 ---\n+ Note over IR, CP: [PHASE 1] Thu thập Input\n+ IR->>CP: OnMove / OnJump / OnSprint\n+ CP->>CP: 📦 Pack NetworkInputData\n+\n+ %% --- GIAI ĐOẠN 2 ---\n+ Note over CP: [PHASE 2] Dự đoán (Prediction)\n+ CP->>CP: 🏃 Run Client-Side Physics\n+ CP->>NT: ✉️ Send Input (Tick N)\n+\n+ %% --- GIAI ĐOẠN 3 ---\n+ Note over NT, S: [PHASE 3] Truyền tin mạng\n+ NT->>S: UDP Packet Delivery\n+ Note right of S: SERVER SIMULATION\n+ S->>S: 📝 Validate & Update State\n+ S-->>NT: 📣 Snapshot (Tick N)\n+\n+ %% --- GIAI ĐOẠN 4 ---\n+ Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\n+ NT-->>CP: State Snapshot\n+ Note over CP: 🔄 RECONCILIATION\n+ CP->>CP: Fix Position if Error > Threshold\n+\n+ %% --- GIAI ĐOẠN 5 ---\n+ Note over NT, RP: [PHASE 5] Proxy Update\n+ NT-->>RP: State Snapshot\n+ Note over RP: 🎞️ INTERPOLATION (Lerp)\n+\n+ %% --- GIAI ĐOẠN 6 ---\n+ Note over CP, RP: [PHASE 6] Hiển thị (Render)\n+ CP->>CP: Update Camera Shake/VFX\n+ RP->>RP: Smooth Mesh Movement\n+```\n","fileName":"05_networking.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\05_networking.md","originalContent":"","newContent":"## 🌐 Đồng bộ Mạng (Networking)\n\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\n\n### Network Data Flow & Synchronization\n```mermaid\nsequenceDiagram\n autonumber\n \n participant IR as 🖱️ Input\n participant CP as 🎀 Local Player\n participant NT as 🌐 Fusion Net\n participant S as 👑 Server\n participant RP as 👥 Proxies\n\n %% --- GIAI ĐOẠN 1 ---\n Note over IR, CP: [PHASE 1] Thu thập Input\n IR->>CP: OnMove / OnJump / OnSprint\n CP->>CP: 📦 Pack NetworkInputData\n\n %% --- GIAI ĐOẠN 2 ---\n Note over CP: [PHASE 2] Dự đoán (Prediction)\n CP->>CP: 🏃 Run Client-Side Physics\n CP->>NT: ✉️ Send Input (Tick N)\n\n %% --- GIAI ĐOẠN 3 ---\n Note over NT, S: [PHASE 3] Truyền tin mạng\n NT->>S: UDP Packet Delivery\n Note right of S: SERVER SIMULATION\n S->>S: 📝 Validate & Update State\n S-->>NT: 📣 Snapshot (Tick N)\n\n %% --- GIAI ĐOẠN 4 ---\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\n NT-->>CP: State Snapshot\n Note over CP: 🔄 RECONCILIATION\n CP->>CP: Fix Position if Error > Threshold\n\n %% --- GIAI ĐOẠN 5 ---\n Note over NT, RP: [PHASE 5] Proxy Update\n NT-->>RP: State Snapshot\n Note over RP: 🎞️ INTERPOLATION (Lerp)\n\n %% --- GIAI ĐOẠN 6 ---\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\n CP->>CP: Update Camera Shake/VFX\n RP->>RP: Smooth Mesh Movement\n```\n","diffStat":{"model_added_lines":48,"model_removed_lines":0,"model_added_chars":1365,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_U...\\...\\05_networking.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832642851_6","name":"write_file","args":{"content":"## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\n\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\"Despair Mechanics\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\n\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\n\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\n| :--- | :--- | :--- | :--- |\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). |\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\n\n---\n\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\n\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\n\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\n\n---\n\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\n\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\n\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\n","file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/06_comeback.md"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832642851_6","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\06_comeback.md. Here is the updated code:\n## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\r\n\r\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\"Despair Mechanics\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\r\n\r\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\r\n\r\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\r\n| :--- | :--- | :--- | :--- |\r\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). |\r\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\r\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\r\n\r\n---\r\n\r\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\r\n\r\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\r\n\r\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\r\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\r\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\r\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\r\n\r\n---\r\n\r\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\r\n\r\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\r\n\r\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\r\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\r\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\r\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 06_comeback.md\n===================================================================\n--- 06_comeback.md\tOriginal\n+++ 06_comeback.md\tWritten\n@@ -0,0 +1,33 @@\n+## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\n+\n+Để đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\"Despair Mechanics\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\n+\n+### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\n+\n+| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\n+| :--- | :--- | :--- | :--- |\n+| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). |\n+| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\n+| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\n+\n+---\n+\n+### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\n+\n+Khi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\n+\n+* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\n+* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\n+* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\n+* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\n+\n+---\n+\n+### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\n+\n+Khi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\n+\n+* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\n+* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\n+* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\n+* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\n","fileName":"06_comeback.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\06_comeback.md","originalContent":"","newContent":"## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\n\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\"Despair Mechanics\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\n\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\n\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\n| :--- | :--- | :--- | :--- |\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). |\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\n\n---\n\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\n\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\n\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\n\n---\n\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\n\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\n\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\n","diffStat":{"model_added_lines":33,"model_removed_lines":0,"model_added_chars":2578,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Upd...\\...\\06_comeback.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832647357_7","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/07_roadmap.md","content":"## 🚀 Lộ trình Phát triển (Roadmap)\n\n\n\n\n- [x] **Phase 1: Foundation**\n - [x] Player State Machine (Idle, Move, Run, Jump).\n - [x] Maze Generation (Multi-algorithm).\n - [x] Photon Fusion Integration.\n- [ ] **Phase 2: Gameplay Core**\n - [ ] Role Selection (Seeker vs Trapper).\n - [ ] Trap Placement System.\n - [ ] Sound & Visual Detection (Noise Meter).\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832647357_7","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\07_roadmap.md. Here is the updated code:\n## 🚀 Lộ trình Phát triển (Roadmap)\r\n\r\n\r\n\r\n\r\n- [x] **Phase 1: Foundation**\r\n - [x] Player State Machine (Idle, Move, Run, Jump).\r\n - [x] Maze Generation (Multi-algorithm).\r\n - [x] Photon Fusion Integration.\r\n- [ ] **Phase 2: Gameplay Core**\r\n - [ ] Role Selection (Seeker vs Trapper).\r\n - [ ] Trap Placement System.\r\n - [ ] Sound & Visual Detection (Noise Meter).\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 07_roadmap.md\n===================================================================\n--- 07_roadmap.md\tOriginal\n+++ 07_roadmap.md\tWritten\n@@ -0,0 +1,13 @@\n+## 🚀 Lộ trình Phát triển (Roadmap)\n+\n+\n+\n+\n+- [x] **Phase 1: Foundation**\n+ - [x] Player State Machine (Idle, Move, Run, Jump).\n+ - [x] Maze Generation (Multi-algorithm).\n+ - [x] Photon Fusion Integration.\n+- [ ] **Phase 2: Gameplay Core**\n+ - [ ] Role Selection (Seeker vs Trapper).\n+ - [ ] Trap Placement System.\n+ - [ ] Sound & Visual Detection (Noise Meter).\n","fileName":"07_roadmap.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\07_roadmap.md","originalContent":"","newContent":"## 🚀 Lộ trình Phát triển (Roadmap)\n\n\n\n\n- [x] **Phase 1: Foundation**\n - [x] Player State Machine (Idle, Move, Run, Jump).\n - [x] Maze Generation (Multi-algorithm).\n - [x] Photon Fusion Integration.\n- [ ] **Phase 2: Gameplay Core**\n - [ ] Role Selection (Seeker vs Trapper).\n - [ ] Trap Placement System.\n - [ ] Sound & Visual Detection (Noise Meter).\n","diffStat":{"model_added_lines":13,"model_removed_lines":0,"model_added_chars":399,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Updater\\...\\07_roadmap.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832650432_8","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/08_team_standards.md","content":"## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\n\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\n\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\n| :--- | :--- | :--- |\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\n\n---\n\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\n\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\n\n### 🌐 Networking & Synchronization (Duy)\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\n\n### 🏗️ World Generation & Performance (Scove)\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\n\n### 🪤 Gameplay & Physics (Tuấn)\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\n\n### 🎨 Visuals & UI/UX (Tuấn)\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832650432_8","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\08_team_standards.md. Here is the updated code:\n## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\r\n\r\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\r\n\r\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\r\n| :--- | :--- | :--- |\r\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\r\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\r\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\r\n\r\n---\r\n\r\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\r\n\r\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\r\n\r\n### 🌐 Networking & Synchronization (Duy)\r\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\r\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\r\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\r\n\r\n### 🏗️ World Generation & Performance (Scove)\r\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\r\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\r\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\r\n\r\n### 🪤 Gameplay & Physics (Tuấn)\r\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\r\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\r\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\r\n\r\n### 🎨 Visuals & UI/UX (Tuấn)\r\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\r\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\r\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 08_team_standards.md\n===================================================================\n--- 08_team_standards.md\tOriginal\n+++ 08_team_standards.md\tWritten\n@@ -0,0 +1,35 @@\n+## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\n+\n+Dự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\n+\n+| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\n+| :--- | :--- | :--- |\n+| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\n+| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\n+| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\n+\n+---\n+\n+## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\n+\n+Mỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\n+\n+### 🌐 Networking & Synchronization (Duy)\n+* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\n+* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\n+* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\n+\n+### 🏗️ World Generation & Performance (Scove)\n+* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\n+* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\n+* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\n+\n+### 🪤 Gameplay & Physics (Tuấn)\n+* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\n+* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\n+* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\n+\n+### 🎨 Visuals & UI/UX (Tuấn)\n+* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\n+* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\n+* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\n","fileName":"08_team_standards.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\08_team_standards.md","originalContent":"","newContent":"## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\n\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\n\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\n| :--- | :--- | :--- |\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\n\n---\n\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\n\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\n\n### 🌐 Networking & Synchronization (Duy)\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\n\n### 🏗️ World Generation & Performance (Scove)\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\n\n### 🪤 Gameplay & Physics (Tuấn)\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\n\n### 🎨 Visuals & UI/UX (Tuấn)\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\n","diffStat":{"model_added_lines":35,"model_removed_lines":0,"model_added_chars":3261,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YA...\\...\\08_team_standards.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832655326_9","name":"write_file","args":{"content":"## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\n\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\n\n```text\n📦 BABA_YAGA\n├── 🌸 Assets/ (Trái tim của trò chơi)\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\n│ │ ├── 🎥 Camera Controller/ \n│ │ ├── 🛠️ Debug/ \n│ │ ├── 🌐 Fusion/ \n│ │ │ └── 🚀 BasicSpawner.cs\n│ │ ├── 🏗️ GameSetup/ \n│ │ │ ├── 🌀 Maze/ # Mê cung \n│ │ │ │ ├── 🐾 Crawler.cs \n│ │ │ │ ├── 🌳 Prims.cs \n│ │ │ │ ├── 🧵 Wilsons.cs \n│ │ │ │ └── 🗺️ Maze.cs \n│ │ │ └── 🧍 CharacterAutoSetup.cs\n│ │ ├── 鼠标 Interactables/ \n│ │ │ ├── 🚪 DoorInteractable.cs\n│ │ │ ├── 💡 LampInteractable.cs\n│ │ │ └── 💎 BaseInteractable.cs\n│ │ ├── 📐 Interface/ \n│ │ ├── 🏃‍♀️ Player Controller/ \n│ │ │ ├── 🧠 PlayerStateMachine.cs\n│ │ │ ├── ⌨️ InputReader.cs\n│ │ │ └── 🎭 States/ \n│ │ ├── ⚡ Optimization/ \n│ │ ├── 🖥️ UI/ \n│ │ └── 🎆 VFX/ \n│ ├── 🧸 Prefabs/ \n│ ├── 📖 document/ \n│ ├── 🎬 Scenes/ \n│ ├── 🎨 Materials/ \n│ ├── 👸 Models/ \n│ ├── 💃 Animation/ \n│ ├── 🔌 Photon/ \n│ ├── 🅰️ TextMesh Pro/ \n│ └── ⚙️ Settings/ \n├── 🛠️ ProjectSettings/ \n│ ├── 🏷️ TagManager.asset \n│ ├── 🌍 DynamicsManager.asset \n│ └── 📡 MultiplayerManager.asset \n├── 📦 Packages/ \n└── 📝 README.md # Creator (。•̀ᴗ-)✧\n```\n","file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/09_structure.md"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832655326_9","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\09_structure.md. Here is the updated code:\n## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\r\n\r\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\r\n\r\n```text\r\n📦 BABA_YAGA\r\n├── 🌸 Assets/ (Trái tim của trò chơi)\r\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\r\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\r\n│ │ ├── 🎥 Camera Controller/ \r\n│ │ ├── 🛠️ Debug/ \r\n│ │ ├── 🌐 Fusion/ \r\n│ │ │ └── 🚀 BasicSpawner.cs\r\n│ │ ├── 🏗️ GameSetup/ \r\n│ │ │ ├── 🌀 Maze/ # Mê cung \r\n│ │ │ │ ├── 🐾 Crawler.cs \r\n│ │ │ │ ├── 🌳 Prims.cs \r\n│ │ │ │ ├── 🧵 Wilsons.cs \r\n│ │ │ │ └── 🗺️ Maze.cs \r\n│ │ │ └── 🧍 CharacterAutoSetup.cs\r\n│ │ ├── 鼠标 Interactables/ \r\n│ │ │ ├── 🚪 DoorInteractable.cs\r\n│ │ │ ├── 💡 LampInteractable.cs\r\n│ │ │ └── 💎 BaseInteractable.cs\r\n│ │ ├── 📐 Interface/ \r\n│ │ ├── 🏃‍♀️ Player Controller/ \r\n│ │ │ ├── 🧠 PlayerStateMachine.cs\r\n│ │ │ ├── ⌨️ InputReader.cs\r\n│ │ │ └── 🎭 States/ \r\n│ │ ├── ⚡ Optimization/ \r\n│ │ ├── 🖥️ UI/ \r\n│ │ └── 🎆 VFX/ \r\n│ ├── 🧸 Prefabs/ \r\n│ ├── 📖 document/ \r\n│ ├── 🎬 Scenes/ \r\n│ ├── 🎨 Materials/ \r\n│ ├── 👸 Models/ \r\n│ ├── 💃 Animation/ \r\n│ ├── 🔌 Photon/ \r\n│ ├── 🅰️ TextMesh Pro/ \r\n│ └── ⚙️ Settings/ \r\n├── 🛠️ ProjectSettings/ \r\n│ ├── 🏷️ TagManager.asset \r\n│ ├── 🌍 DynamicsManager.asset \r\n│ └── 📡 MultiplayerManager.asset \r\n├── 📦 Packages/ \r\n└── 📝 README.md # Creator (。•̀ᴗ-)✧\r\n```\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 09_structure.md\n===================================================================\n--- 09_structure.md\tOriginal\n+++ 09_structure.md\tWritten\n@@ -0,0 +1,48 @@\n+## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\n+\n+Dự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\n+\n+```text\n+📦 BABA_YAGA\n+├── 🌸 Assets/ (Trái tim của trò chơi)\n+│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\n+│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\n+│ │ ├── 🎥 Camera Controller/ \n+│ │ ├── 🛠️ Debug/ \n+│ │ ├── 🌐 Fusion/ \n+│ │ │ └── 🚀 BasicSpawner.cs\n+│ │ ├── 🏗️ GameSetup/ \n+│ │ │ ├── 🌀 Maze/ # Mê cung \n+│ │ │ │ ├── 🐾 Crawler.cs \n+│ │ │ │ ├── 🌳 Prims.cs \n+│ │ │ │ ├── 🧵 Wilsons.cs \n+│ │ │ │ └── 🗺️ Maze.cs \n+│ │ │ └── 🧍 CharacterAutoSetup.cs\n+│ │ ├── 鼠标 Interactables/ \n+│ │ │ ├── 🚪 DoorInteractable.cs\n+│ │ │ ├── 💡 LampInteractable.cs\n+│ │ │ └── 💎 BaseInteractable.cs\n+│ │ ├── 📐 Interface/ \n+│ │ ├── 🏃‍♀️ Player Controller/ \n+│ │ │ ├── 🧠 PlayerStateMachine.cs\n+│ │ │ ├── ⌨️ InputReader.cs\n+│ │ │ └── 🎭 States/ \n+│ │ ├── ⚡ Optimization/ \n+│ │ ├── 🖥️ UI/ \n+│ │ └── 🎆 VFX/ \n+│ ├── 🧸 Prefabs/ \n+│ ├── 📖 document/ \n+│ ├── 🎬 Scenes/ \n+│ ├── 🎨 Materials/ \n+│ ├── 👸 Models/ \n+│ ├── 💃 Animation/ \n+│ ├── 🔌 Photon/ \n+│ ├── 🅰️ TextMesh Pro/ \n+│ └── ⚙️ Settings/ \n+├── 🛠️ ProjectSettings/ \n+│ ├── 🏷️ TagManager.asset \n+│ ├── 🌍 DynamicsManager.asset \n+│ └── 📡 MultiplayerManager.asset \n+├── 📦 Packages/ \n+└── 📝 README.md # Creator (。•̀ᴗ-)✧\n+```\n","fileName":"09_structure.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\09_structure.md","originalContent":"","newContent":"## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\n\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\n\n```text\n📦 BABA_YAGA\n├── 🌸 Assets/ (Trái tim của trò chơi)\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\n│ │ ├── 🎥 Camera Controller/ \n│ │ ├── 🛠️ Debug/ \n│ │ ├── 🌐 Fusion/ \n│ │ │ └── 🚀 BasicSpawner.cs\n│ │ ├── 🏗️ GameSetup/ \n│ │ │ ├── 🌀 Maze/ # Mê cung \n│ │ │ │ ├── 🐾 Crawler.cs \n│ │ │ │ ├── 🌳 Prims.cs \n│ │ │ │ ├── 🧵 Wilsons.cs \n│ │ │ │ └── 🗺️ Maze.cs \n│ │ │ └── 🧍 CharacterAutoSetup.cs\n│ │ ├── 鼠标 Interactables/ \n│ │ │ ├── 🚪 DoorInteractable.cs\n│ │ │ ├── 💡 LampInteractable.cs\n│ │ │ └── 💎 BaseInteractable.cs\n│ │ ├── 📐 Interface/ \n│ │ ├── 🏃‍♀️ Player Controller/ \n│ │ │ ├── 🧠 PlayerStateMachine.cs\n│ │ │ ├── ⌨️ InputReader.cs\n│ │ │ └── 🎭 States/ \n│ │ ├── ⚡ Optimization/ \n│ │ ├── 🖥️ UI/ \n│ │ └── 🎆 VFX/ \n│ ├── 🧸 Prefabs/ \n│ ├── 📖 document/ \n│ ├── 🎬 Scenes/ \n│ ├── 🎨 Materials/ \n│ ├── 👸 Models/ \n│ ├── 💃 Animation/ \n│ ├── 🔌 Photon/ \n│ ├── 🅰️ TextMesh Pro/ \n│ └── ⚙️ Settings/ \n├── 🛠️ ProjectSettings/ \n│ ├── 🏷️ TagManager.asset \n│ ├── 🌍 DynamicsManager.asset \n│ └── 📡 MultiplayerManager.asset \n├── 📦 Packages/ \n└── 📝 README.md # Creator (。•̀ᴗ-)✧\n```\n","diffStat":{"model_added_lines":48,"model_removed_lines":0,"model_added_chars":1716,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Up...\\...\\09_structure.md","displayName":"WriteFile","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832655640_10","name":"write_file","args":{"content":"## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\n\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\n\n### 1. Yêu cầu Hệ thống\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\n\n### 2. Tải về & Mở dự án\n1. **Clone Repository:**\n ```bash\n git clone https://github.com/OnlyScove/BABA_YAGA.git\n ```\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\n\n### 3. Cấu hình Photon Fusion (Bắt buộc)\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\n3. Sao chép **App ID** vừa tạo.\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\n\n### 4. Khởi chạy Trò chơi\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\n3. Nhấn nút **Play** trong Unity Editor.\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\n\n---\n\n## 💖 Support & Community\n\n

\n \n \"Stars\"\n \n \n \"Forks\"\n \n \n \"Follow\"\n \n

\n\n

\n \n \"Buy\n \n \n \"Discord\"\n \n \n \"Ko-fi\"\n \n

\n\n

\n \"Visitors\"\n

\n\n---\n\n**© 2026 SCOVANIA STUDIOS.**\n*Baba_Yaga is more than a game, it's a social experiment.*\n\n---\n\n**Connect with us:**\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\n","file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/10_footer.md"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832655640_10","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\10_footer.md. Here is the updated code:\n## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\r\n\r\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\r\n\r\n### 1. Yêu cầu Hệ thống\r\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\r\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\r\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\r\n\r\n### 2. Tải về & Mở dự án\r\n1. **Clone Repository:**\r\n ```bash\r\n git clone https://github.com/OnlyScove/BABA_YAGA.git\r\n ```\r\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\r\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\r\n\r\n### 3. Cấu hình Photon Fusion (Bắt buộc)\r\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\r\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\r\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\r\n3. Sao chép **App ID** vừa tạo.\r\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\r\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\r\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\r\n\r\n### 4. Khởi chạy Trò chơi\r\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\r\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\r\n3. Nhấn nút **Play** trong Unity Editor.\r\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\r\n\r\n---\r\n\r\n## 💖 Support & Community\r\n\r\n

\r\n \r\n \"Stars\"\r\n \r\n \r\n \"Forks\"\r\n \r\n \r\n \"Follow\"\r\n \r\n

\r\n\r\n

\r\n \r\n \"Buy\r\n \r\n \r\n \"Discord\"\r\n \r\n \r\n \"Ko-fi\"\r\n \r\n

\r\n\r\n

\r\n \"Visitors\"\r\n

\r\n\r\n---\r\n\r\n**© 2026 SCOVANIA STUDIOS.**\r\n*Baba_Yaga is more than a game, it's a social experiment.*\r\n\r\n---\r\n\r\n**Connect with us:**\r\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:15.797Z","resultDisplay":{"fileDiff":"Index: 10_footer.md\n===================================================================\n--- 10_footer.md\tOriginal\n+++ 10_footer.md\tWritten\n@@ -0,0 +1,73 @@\n+## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\n+\n+Để trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\n+\n+### 1. Yêu cầu Hệ thống\n+* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\n+* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\n+* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\n+\n+### 2. Tải về & Mở dự án\n+1. **Clone Repository:**\n+ ```bash\n+ git clone https://github.com/OnlyScove/BABA_YAGA.git\n+ ```\n+2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\n+3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\n+\n+### 3. Cấu hình Photon Fusion (Bắt buộc)\n+Trò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\n+1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\n+2. Tạo một ứng dụng mới với loại App là **Fusion**.\n+3. Sao chép **App ID** vừa tạo.\n+4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\n+5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\n+6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\n+\n+### 4. Khởi chạy Trò chơi\n+1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\n+2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\n+3. Nhấn nút **Play** trong Unity Editor.\n+4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\n+\n+---\n+\n+## 💖 Support & Community\n+\n+

\n+ \n+ \"Stars\"\n+ \n+ \n+ \"Forks\"\n+ \n+ \n+ \"Follow\"\n+ \n+

\n+\n+

\n+ \n+ \"Buy\n+ \n+ \n+ \"Discord\"\n+ \n+ \n+ \"Ko-fi\"\n+ \n+

\n+\n+

\n+ \"Visitors\"\n+

\n+\n+---\n+\n+**© 2026 SCOVANIA STUDIOS.**\n+*Baba_Yaga is more than a game, it's a social experiment.*\n+\n+---\n+\n+**Connect with us:**\n+[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\n","fileName":"10_footer.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\10_footer.md","originalContent":"","newContent":"## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\n\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\n\n### 1. Yêu cầu Hệ thống\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\n\n### 2. Tải về & Mở dự án\n1. **Clone Repository:**\n ```bash\n git clone https://github.com/OnlyScove/BABA_YAGA.git\n ```\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\n\n### 3. Cấu hình Photon Fusion (Bắt buộc)\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\n3. Sao chép **App ID** vừa tạo.\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\n\n### 4. Khởi chạy Trò chơi\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\n3. Nhấn nút **Play** trong Unity Editor.\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\n\n---\n\n## 💖 Support & Community\n\n

\n \n \"Stars\"\n \n \n \"Forks\"\n \n \n \"Follow\"\n \n

\n\n

\n \n \"Buy\n \n \n \"Discord\"\n \n \n \"Ko-fi\"\n \n

\n\n

\n \"Visitors\"\n

\n\n---\n\n**© 2026 SCOVANIA STUDIOS.**\n*Baba_Yaga is more than a game, it's a social experiment.*\n\n---\n\n**Connect with us:**\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\n","diffStat":{"model_added_lines":73,"model_removed_lines":0,"model_added_chars":3044,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Updater\\...\\10_footer.md","displayName":"WriteFile","renderOutputAsMarkdown":true}]} +{"id":"586a7236-0a23-4c9c-a499-204567e017f4","timestamp":"2026-06-07T11:44:16.198Z","type":"user","content":[{"functionResponse":{"id":"write_file__write_file_1780832621356_0","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\00_header.md. Here is the updated code:\n# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \r\n\r\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\r\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\r\n\r\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\r\n\r\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\r\n\r\n---\r\n\r\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\r\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\r\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\r\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\r\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\r\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\r\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\r\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\r\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\r\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832628046_1","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\01_vision.md. Here is the updated code:\n## 👁️ Tầm nhìn Dự án (Project Vision)\r\n\r\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\r\n\r\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\r\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\r\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\r\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832631218_2","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\02_mechanics.md. Here is the updated code:\n## 🎮 Cơ chế Trò chơi (Core Mechanics)\r\n\r\n### 🌓 Sự bất đối xứng (The Asymmetry)\r\n\r\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\r\n| :--- | :--- | :--- |\r\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\r\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\r\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\r\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\r\n\r\n### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\r\n\r\n```mermaid\r\ngraph TD\r\n %% Định nghĩa Style cho các nhóm\r\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\r\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\r\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\r\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\r\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\r\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\r\n\r\n %% Phase 1: Initialization\r\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\r\n A[\"🚀 Bắt đầu Trận đấu\"] --> B{\"🤝 Matchmaking
(Photon Fusion)\"}\r\n B --> C[\"🎭 Phân vai: Seeker vs Trapper\"]\r\n C --> D[\"🧩 Maze Generator
(Prims/Wilsons)\"]\r\n D --> E[\"🏗️ Baking NavMesh & Colliders\"]\r\n E --> F[\"🧍 Character Auto-Setup\"]\r\n F --> G[\"📍 Spawn Players\"]\r\n end\r\n class Initialization,A,B,C,D,E,F,G initStyle;\r\n\r\n %% Phase 2: Core Loop\r\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\r\n G --> Loop((TICK: FixedUpdateNetwork))\r\n \r\n %% Seeker Branch\r\n subgraph Seeker_Logic [\"🏃 SEEKER (POV 1st)\"]\r\n S1[\"⌨️ Input: WASD/Space\"] --> S2[\"🏃 State: Move/Dash\"]\r\n S2 --> S3{\"⚡ Hành động?\"}\r\n S3 -- \"Sprinting\" --> S4[\"🔊 Noise Up\"]\r\n S3 -- \"Sneaking\" --> S5[\"🤫 Noise Down\"]\r\n S3 -- \"Flashlight\" --> S6[\"🔦 Lộ vị trí\"]\r\n \r\n S4 & S5 & S6 --> S_Check{\"🔍 Check Env\"}\r\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\"⚠️ Bị khống chế\"]\r\n end\r\n\r\n %% Trapper Branch\r\n subgraph Trapper_Logic [\"🕸️ TRAPPER (STRATEGY)\"]\r\n T1[\"🖱️ Mouse Input\"] --> T2[\"🗺️ View: Heatmap/Cams\"]\r\n T2 --> T3{\"🛠️ Kỹ năng?\"}\r\n T3 -- \"Đặt bẫy\" --> T4[\"🪤 Sync Trap\"]\r\n T3 -- \"Scan\" --> T5[\"📡 Ping Seeker\"]\r\n T3 -- \"Lock\" --> T6[\"🚪 Khóa cửa\"]\r\n \r\n T4 & T5 & T6 --> T_Check{\"👁️ Theo dõi\"}\r\n end\r\n\r\n %% Networking Layer\r\n subgraph Network_Sync [\"🌐 NETWORK SYNC\"]\r\n Loop --> NS1[\"⏩ Client Prediction\"]\r\n NS1 --> NS2[\"🔄 Server Reconciliation\"]\r\n NS2 --> NS3[\"📦 State Sync\"]\r\n end\r\n end\r\n class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle;\r\n class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle;\r\n class Network_Sync,NS1,NS2,NS3,Loop netStyle;\r\n class S_Trap criticalStyle;\r\n\r\n %% Phase 3: Results\r\n subgraph Result_Logic [\"3. KẾT THÚC & THƯỞNG\"]\r\n S_Check -- \"Chạm Exit\" --> Win_S[\"🏆 SEEKER THẮNG\"]\r\n T_Check -- \"Bắt được Seeker\" --> Win_T[\"🏆 TRAPPER THẮNG\"]\r\n Loop -- \"Timer = 0\" --> Win_T\r\n \r\n Win_S & Win_T --> Post_Match[\"📊 Thống kê Rank\"]\r\n Post_Match --> Buff{\"⚖️ Balance Check\"}\r\n Buff -- \"Thua cuộc\" --> Buff_Apply[\"💎 Kích hoạt Comeback Buff\"]\r\n Buff_Apply --> A\r\n end\r\n class Win_S,Win_T winStyle;\r\n class Result_Logic,Post_Match,Buff,Buff_Apply initStyle;\r\n\r\n %% Interactions (Dashed Lines)\r\n S_Trap -.->|Cảnh báo| T_Check\r\n S4 -.->|Sóng âm| T2\r\n T4 -.->|Collision ẩn| S_Check\r\n NS3 --> Loop\r\n```\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832636052_3","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\03_architecture.md. Here is the updated code:\n## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)\r\n\r\n### 1. Advanced Player & Camera State Machine\r\n\r\nHệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng.\r\n\r\n```mermaid\r\nstateDiagram-v2\r\n direction TB\r\n\r\n state \"🌸 GROUND\" as Ground {\r\n [*] --> Idle\r\n \r\n state Idle {\r\n I_P: 📝 Vel < 0.1m/s\r\n I_C: 🌡️ Breathing (0.5Hz)\r\n }\r\n\r\n Idle --> Moving : \"Input.mag > 0.1\"\r\n state Moving {\r\n M_P: 👟 Speed 2-4m/s\r\n M_C: 🎢 Head Bob (1.2Hz)\r\n }\r\n\r\n Moving --> Sneaking : \"OnSneak (Hold)\"\r\n state Sneaking {\r\n Sn_P: 🤫 Noise -50%\r\n Sn_C: 📉 Lower Height\r\n }\r\n\r\n Moving --> Sprinting : \"OnSprint (Hold)\"\r\n state Sneaking --> Moving : \"Release Sneak\"\r\n state Sprinting {\r\n Sp_P: ⚡ Speed > 6.5m/s\r\n Sp_C: 🌈 Dynamic FOV\r\n }\r\n\r\n Sprinting --> Moving : \"Stamina Empty\"\r\n }\r\n\r\n state \"☁️ AIRBORNE\" as Air {\r\n state Jump {\r\n J_P: 🆙 AddForce Up\r\n }\r\n state Falling {\r\n F_P: 📉 Gravity x 1.5\r\n }\r\n state Landing {\r\n L_P: 📏 Impact Check\r\n }\r\n\r\n Jump --> Falling : \"Vel.y < 0\"\r\n Falling --> Landing : \"IsGrounded == true\"\r\n }\r\n\r\n state \"⚡ ACTION\" as Utility {\r\n state Dashing {\r\n D_P: 💨 Burst 15m/s\r\n }\r\n state Interacting {\r\n Int_P: 🔒 Root Motion Lock\r\n }\r\n }\r\n\r\n state \"🌐 NETWORK\" as Net {\r\n state \"Input Authority\" as IA\r\n state \"State Authority\" as SA\r\n IA --> SA : \"Send Input\"\r\n SA --> IA : \"Reconcile\"\r\n }\r\n\r\n %% Transitions chính\r\n Ground --> Air : \"IsGrounded == false\"\r\n Air --> Ground : \"OnLand Event\"\r\n Ground --> Utility : \"OnAbility\"\r\n Utility --> Ground : \"Complete\"\r\n\r\n %% Notes\r\n note left of Ground\r\n ✨ Sync: Velocity\r\n ✨ State: MoveState\r\n end note\r\n\r\n note right of Net\r\n ⚙️ Photon Fusion\r\n ⚙️ FixedUpdateNetwork\r\n end note\r\n```\r\n\r\n### 2. Environment Scanner & Interaction\r\nHệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối.\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832638275_4","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\04_maze.md. Here is the updated code:\n## 🧩 Hệ thống Mê cung (Maze Generation)\r\n\r\nTrái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn.\r\n\r\n| Algorithm | Complexity | Description |\r\n| :--- | :--- | :--- |\r\n| **Prims** | O(E log V) | Tạo mê cung \"dày\", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. |\r\n| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. |\r\n| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. |\r\n| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. |\r\n\r\n### Quy trình khởi tạo (Maze Generation Pipeline)\r\n\r\n```mermaid\r\ngraph TD\r\n %% Định nghĩa Style\r\n classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828;\r\n classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17;\r\n classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100;\r\n classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c;\r\n classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242;\r\n classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20;\r\n\r\n %% Quy trình chính\r\n Start((\"💔 PLAYER LOSES ROUND\")) --> Streak{{\"📊 Check Loss Streak\"}}\r\n\r\n %% Phân tầng Buff\r\n subgraph Buff_Pools [\"🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)\"]\r\n Streak -- \"1 Trận\" --> T1\r\n Streak -- \"2 Trận\" --> T2\r\n Streak -- \"3+ Trận\" --> T3\r\n\r\n T1[\"🥉 Tier 1: Awakening
(Small Boosts)\"] \r\n T2[\"🥈 Tier 2: Evolution
(Tactical Advantage)\"]\r\n T3[\"🥇 Tier 3: Manifestation
(Game Changer)\"]\r\n \r\n %% Ví dụ chỉ số (Tooltip-like)\r\n T1 --- T1_Ex[\"+10% Speed
+15% Stamina Regen\"]\r\n T2 --- T2_Ex[\"Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)\"]\r\n T3 --- T3_Ex[\"Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ\"]\r\n end\r\n\r\n %% Giai đoạn áp dụng\r\n T1 & T2 & T3 --> Selection{{\"🎲 Selection Mode\"}}\r\n \r\n Selection -- \"Manual\" --> P1[\"Người chơi tự chọn 1 trong 3 Buff\"]\r\n Selection -- \"Auto\" --> P2[\"Hệ thống chọn ngẫu nhiên\"]\r\n \r\n P1 & P2 --> Apply[\"✨ Apply to Next Round Only
(Trạng thái: Active)\"]\r\n\r\n %% Kết quả vòng đấu sau\r\n Apply --> Result{{\"🏁 New Round Result?\"}}\r\n\r\n Result -- \"🏆 WIN\" --> Reset[\"♻️ Reset Streak
Remove All Buffs\"]\r\n Result -- \"❌ LOSS\" --> Increment[\"📈 Increase Streak
Progress to Next Tier\"]\r\n\r\n %% Vòng lặp\r\n Reset --> NewGame((\"🎮 Fair Match\"))\r\n Increment --> Start\r\n\r\n %% Gán Style\r\n class Start,Increment lossStyle;\r\n class T1,T1_Ex tier1Style;\r\n class T2,T2_Ex tier2Style;\r\n class T3,T3_Ex tier3Style;\r\n class Selection,P1,P2,Apply systemStyle;\r\n class Result,Reset,NewGame winStyle;\r\n```\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832642382_5","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\05_networking.md. Here is the updated code:\n## 🌐 Đồng bộ Mạng (Networking)\r\n\r\nSử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ.\r\n\r\n### Network Data Flow & Synchronization\r\n```mermaid\r\nsequenceDiagram\r\n autonumber\r\n \r\n participant IR as 🖱️ Input\r\n participant CP as 🎀 Local Player\r\n participant NT as 🌐 Fusion Net\r\n participant S as 👑 Server\r\n participant RP as 👥 Proxies\r\n\r\n %% --- GIAI ĐOẠN 1 ---\r\n Note over IR, CP: [PHASE 1] Thu thập Input\r\n IR->>CP: OnMove / OnJump / OnSprint\r\n CP->>CP: 📦 Pack NetworkInputData\r\n\r\n %% --- GIAI ĐOẠN 2 ---\r\n Note over CP: [PHASE 2] Dự đoán (Prediction)\r\n CP->>CP: 🏃 Run Client-Side Physics\r\n CP->>NT: ✉️ Send Input (Tick N)\r\n\r\n %% --- GIAI ĐOẠN 3 ---\r\n Note over NT, S: [PHASE 3] Truyền tin mạng\r\n NT->>S: UDP Packet Delivery\r\n Note right of S: SERVER SIMULATION\r\n S->>S: 📝 Validate & Update State\r\n S-->>NT: 📣 Snapshot (Tick N)\r\n\r\n %% --- GIAI ĐOẠN 4 ---\r\n Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ\r\n NT-->>CP: State Snapshot\r\n Note over CP: 🔄 RECONCILIATION\r\n CP->>CP: Fix Position if Error > Threshold\r\n\r\n %% --- GIAI ĐOẠN 5 ---\r\n Note over NT, RP: [PHASE 5] Proxy Update\r\n NT-->>RP: State Snapshot\r\n Note over RP: 🎞️ INTERPOLATION (Lerp)\r\n\r\n %% --- GIAI ĐOẠN 6 ---\r\n Note over CP, RP: [PHASE 6] Hiển thị (Render)\r\n CP->>CP: Update Camera Shake/VFX\r\n RP->>RP: Smooth Mesh Movement\r\n```\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832642851_6","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\06_comeback.md. Here is the updated code:\n## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System)\r\n\r\nĐể đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **\"Despair Mechanics\"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển.\r\n\r\n### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression)\r\n\r\n| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế |\r\n| :--- | :--- | :--- | :--- |\r\n| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). |\r\n| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). |\r\n| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. |\r\n\r\n---\r\n\r\n### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution)\r\n\r\nKhi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối:\r\n\r\n* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn.\r\n* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm.\r\n* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s.\r\n* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát.\r\n\r\n---\r\n\r\n### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals)\r\n\r\nKhi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn:\r\n\r\n* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ.\r\n* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách.\r\n* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây.\r\n* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện.\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832647357_7","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\07_roadmap.md. Here is the updated code:\n## 🚀 Lộ trình Phát triển (Roadmap)\r\n\r\n\r\n\r\n\r\n- [x] **Phase 1: Foundation**\r\n - [x] Player State Machine (Idle, Move, Run, Jump).\r\n - [x] Maze Generation (Multi-algorithm).\r\n - [x] Photon Fusion Integration.\r\n- [ ] **Phase 2: Gameplay Core**\r\n - [ ] Role Selection (Seeker vs Trapper).\r\n - [ ] Trap Placement System.\r\n - [ ] Sound & Visual Detection (Noise Meter).\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832650432_8","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\08_team_standards.md. Here is the updated code:\n## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS)\r\n\r\nDự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game.\r\n\r\n| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) |\r\n| :--- | :--- | :--- |\r\n| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. |\r\n| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. |\r\n| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. |\r\n\r\n---\r\n\r\n## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements)\r\n\r\nMỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie:\r\n\r\n### 🌐 Networking & Synchronization (Duy)\r\n* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`.\r\n* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận.\r\n* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss).\r\n\r\n### 🏗️ World Generation & Performance (Scove)\r\n* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime.\r\n* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing).\r\n* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper.\r\n\r\n### 🪤 Gameplay & Physics (Tuấn)\r\n* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation.\r\n* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo.\r\n* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác.\r\n\r\n### 🎨 Visuals & UI/UX (Tuấn)\r\n* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao.\r\n* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung.\r\n* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game.\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832655326_9","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\09_structure.md. Here is the updated code:\n## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure)\r\n\r\nDự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration.\r\n\r\n```text\r\n📦 BABA_YAGA\r\n├── 🌸 Assets/ (Trái tim của trò chơi)\r\n│ ├── 📜 Scripts/ (Phép thuật điều khiển logic)\r\n│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector\r\n│ │ ├── 🎥 Camera Controller/ \r\n│ │ ├── 🛠️ Debug/ \r\n│ │ ├── 🌐 Fusion/ \r\n│ │ │ └── 🚀 BasicSpawner.cs\r\n│ │ ├── 🏗️ GameSetup/ \r\n│ │ │ ├── 🌀 Maze/ # Mê cung \r\n│ │ │ │ ├── 🐾 Crawler.cs \r\n│ │ │ │ ├── 🌳 Prims.cs \r\n│ │ │ │ ├── 🧵 Wilsons.cs \r\n│ │ │ │ └── 🗺️ Maze.cs \r\n│ │ │ └── 🧍 CharacterAutoSetup.cs\r\n│ │ ├── 鼠标 Interactables/ \r\n│ │ │ ├── 🚪 DoorInteractable.cs\r\n│ │ │ ├── 💡 LampInteractable.cs\r\n│ │ │ └── 💎 BaseInteractable.cs\r\n│ │ ├── 📐 Interface/ \r\n│ │ ├── 🏃‍♀️ Player Controller/ \r\n│ │ │ ├── 🧠 PlayerStateMachine.cs\r\n│ │ │ ├── ⌨️ InputReader.cs\r\n│ │ │ └── 🎭 States/ \r\n│ │ ├── ⚡ Optimization/ \r\n│ │ ├── 🖥️ UI/ \r\n│ │ └── 🎆 VFX/ \r\n│ ├── 🧸 Prefabs/ \r\n│ ├── 📖 document/ \r\n│ ├── 🎬 Scenes/ \r\n│ ├── 🎨 Materials/ \r\n│ ├── 👸 Models/ \r\n│ ├── 💃 Animation/ \r\n│ ├── 🔌 Photon/ \r\n│ ├── 🅰️ TextMesh Pro/ \r\n│ └── ⚙️ Settings/ \r\n├── 🛠️ ProjectSettings/ \r\n│ ├── 🏷️ TagManager.asset \r\n│ ├── 🌍 DynamicsManager.asset \r\n│ └── 📡 MultiplayerManager.asset \r\n├── 📦 Packages/ \r\n└── 📝 README.md # Creator (。•̀ᴗ-)✧\r\n```\r\n"}}},{"functionResponse":{"id":"write_file__write_file_1780832655640_10","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections\\10_footer.md. Here is the updated code:\n## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)\r\n\r\nĐể trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây:\r\n\r\n### 1. Yêu cầu Hệ thống\r\n* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên.\r\n* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel).\r\n* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library.\r\n\r\n### 2. Tải về & Mở dự án\r\n1. **Clone Repository:**\r\n ```bash\r\n git clone https://github.com/OnlyScove/BABA_YAGA.git\r\n ```\r\n2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**.\r\n3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút).\r\n\r\n### 3. Cấu hình Photon Fusion (Bắt buộc)\r\nTrò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:\r\n1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/).\r\n2. Tạo một ứng dụng mới với loại App là **Fusion**.\r\n3. Sao chép **App ID** vừa tạo.\r\n4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`.\r\n5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion).\r\n6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority).\r\n\r\n### 4. Khởi chạy Trò chơi\r\n1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`.\r\n2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner.\r\n3. Nhấn nút **Play** trong Unity Editor.\r\n4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc.\r\n\r\n---\r\n\r\n## 💖 Support & Community\r\n\r\n

\r\n \r\n \"Stars\"\r\n \r\n \r\n \"Forks\"\r\n \r\n \r\n \"Follow\"\r\n \r\n

\r\n\r\n

\r\n \r\n \"Buy\r\n \r\n \r\n \"Discord\"\r\n \r\n \r\n \"Ko-fi\"\r\n \r\n

\r\n\r\n

\r\n \"Visitors\"\r\n

\r\n\r\n---\r\n\r\n**© 2026 SCOVANIA STUDIOS.**\r\n*Baba_Yaga is more than a game, it's a social experiment.*\r\n\r\n---\r\n\r\n**Connect with us:**\r\n[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303)\r\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:44:16.198Z"}} +{"id":"30c190c2-3271-446a-9a85-79d5dfa48834","timestamp":"2026-06-07T11:44:20.534Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":70403,"output":376,"cached":51929,"thoughts":0,"tool":0,"total":70779},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:44:20.534Z"}} +{"id":"30c190c2-3271-446a-9a85-79d5dfa48834","timestamp":"2026-06-07T11:44:20.534Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":70403,"output":376,"cached":51929,"thoughts":0,"tool":0,"total":70779},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780832660122_0","name":"update_topic","args":{"title":"Creating Master Documentation Template","strategic_intent":"Integrating individual README sections into a unified source within BABA_YAGA_Updater/README.md for simplified management.","summary":"I have successfully extracted all sections from the main README.md and saved them into individual files within the 'BABA_YAGA_Updater/sections/' directory. This includes the header, vision, mechanics, architecture, maze systems, networking, comeback system, roadmap, team roles, folder structure, and the footer. To streamline future updates and maintain a single source of truth for the documentation components, I am now creating a master 'README.md' within the 'BABA_YAGA_Updater/' folder. This master file will use placeholders to reference these individual sections, which can then be used to rebuild the main project README.md programmatically."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780832660122_0","name":"update_topic","response":{"output":"Current topic: \"Creating Master Documentation Template\"\nTopic summary: I have successfully extracted all sections from the main README.md and saved them into individual files within the 'BABA_YAGA_Updater/sections/' directory. This includes the header, vision, mechanics, architecture, maze systems, networking, comeback system, roadmap, team roles, folder structure, and the footer. To streamline future updates and maintain a single source of truth for the documentation components, I am now creating a master 'README.md' within the 'BABA_YAGA_Updater/' folder. This master file will use placeholders to reference these individual sections, which can then be used to rebuild the main project README.md programmatically.\n\nStrategic Intent: Integrating individual README sections into a unified source within BABA_YAGA_Updater/README.md for simplified management."}}}],"status":"success","timestamp":"2026-06-07T11:44:20.552Z","resultDisplay":"## 📂 Topic: **Creating Master Documentation Template**\n\n**Summary:**\nI have successfully extracted all sections from the main README.md and saved them into individual files within the 'BABA_YAGA_Updater/sections/' directory. This includes the header, vision, mechanics, architecture, maze systems, networking, comeback system, roadmap, team roles, folder structure, and the footer. To streamline future updates and maintain a single source of truth for the documentation components, I am now creating a master 'README.md' within the 'BABA_YAGA_Updater/' folder. This master file will use placeholders to reference these individual sections, which can then be used to rebuild the main project README.md programmatically.\n\n> [!STRATEGY]\n> **Intent:** Integrating individual README sections into a unified source within BABA_YAGA_Updater/README.md for simplified management.","description":"Update topic to: \"Creating Master Documentation Template\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"write_file__write_file_1780832660531_1","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/README.md","content":"# README Template (Source of Truth)\n\nThis file serves as the master template for the project's root README.md. \nSections are modularized in the `sections/` directory.\n\n{00_header}\n\n---\n\n{01_vision}\n\n---\n\n{02_mechanics}\n\n---\n\n{03_architecture}\n\n---\n\n{04_maze}\n\n---\n\n{05_networking}\n\n---\n\n{06_comeback}\n\n---\n\n{07_roadmap}\n\n---\n\n{08_team_standards}\n\n---\n\n{09_structure}\n\n---\n\n{10_footer}\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780832660531_1","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\README.md. Here is the updated code:\n# README Template (Source of Truth)\r\n\r\nThis file serves as the master template for the project's root README.md. \r\nSections are modularized in the `sections/` directory.\r\n\r\n{00_header}\r\n\r\n---\r\n\r\n{01_vision}\r\n\r\n---\r\n\r\n{02_mechanics}\r\n\r\n---\r\n\r\n{03_architecture}\r\n\r\n---\r\n\r\n{04_maze}\r\n\r\n---\r\n\r\n{05_networking}\r\n\r\n---\r\n\r\n{06_comeback}\r\n\r\n---\r\n\r\n{07_roadmap}\r\n\r\n---\r\n\r\n{08_team_standards}\r\n\r\n---\r\n\r\n{09_structure}\r\n\r\n---\r\n\r\n{10_footer}\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:44:20.552Z","resultDisplay":{"fileDiff":"Index: README.md\n===================================================================\n--- README.md\tOriginal\n+++ README.md\tWritten\n@@ -0,0 +1,46 @@\n+# README Template (Source of Truth)\n+\n+This file serves as the master template for the project's root README.md. \n+Sections are modularized in the `sections/` directory.\n+\n+{00_header}\n+\n+---\n+\n+{01_vision}\n+\n+---\n+\n+{02_mechanics}\n+\n+---\n+\n+{03_architecture}\n+\n+---\n+\n+{04_maze}\n+\n+---\n+\n+{05_networking}\n+\n+---\n+\n+{06_comeback}\n+\n+---\n+\n+{07_roadmap}\n+\n+---\n+\n+{08_team_standards}\n+\n+---\n+\n+{09_structure}\n+\n+---\n+\n+{10_footer}\n","fileName":"README.md","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\README.md","originalContent":"","newContent":"# README Template (Source of Truth)\n\nThis file serves as the master template for the project's root README.md. \nSections are modularized in the `sections/` directory.\n\n{00_header}\n\n---\n\n{01_vision}\n\n---\n\n{02_mechanics}\n\n---\n\n{03_architecture}\n\n---\n\n{04_maze}\n\n---\n\n{05_networking}\n\n---\n\n{06_comeback}\n\n---\n\n{07_roadmap}\n\n---\n\n{08_team_standards}\n\n---\n\n{09_structure}\n\n---\n\n{10_footer}\n","diffStat":{"model_added_lines":46,"model_removed_lines":0,"model_added_chars":339,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Updater\\README.md","displayName":"WriteFile","renderOutputAsMarkdown":true}]} +{"id":"1a1e0e30-f898-4318-a714-4559c939c2d7","timestamp":"2026-06-07T11:44:20.959Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780832660122_0","name":"update_topic","response":{"output":"Current topic: \"Creating Master Documentation Template\"\nTopic summary: I have successfully extracted all sections from the main README.md and saved them into individual files within the 'BABA_YAGA_Updater/sections/' directory. This includes the header, vision, mechanics, architecture, maze systems, networking, comeback system, roadmap, team roles, folder structure, and the footer. To streamline future updates and maintain a single source of truth for the documentation components, I am now creating a master 'README.md' within the 'BABA_YAGA_Updater/' folder. This master file will use placeholders to reference these individual sections, which can then be used to rebuild the main project README.md programmatically.\n\nStrategic Intent: Integrating individual README sections into a unified source within BABA_YAGA_Updater/README.md for simplified management."}}},{"functionResponse":{"id":"write_file__write_file_1780832660531_1","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\README.md. Here is the updated code:\n# README Template (Source of Truth)\r\n\r\nThis file serves as the master template for the project's root README.md. \r\nSections are modularized in the `sections/` directory.\r\n\r\n{00_header}\r\n\r\n---\r\n\r\n{01_vision}\r\n\r\n---\r\n\r\n{02_mechanics}\r\n\r\n---\r\n\r\n{03_architecture}\r\n\r\n---\r\n\r\n{04_maze}\r\n\r\n---\r\n\r\n{05_networking}\r\n\r\n---\r\n\r\n{06_comeback}\r\n\r\n---\r\n\r\n{07_roadmap}\r\n\r\n---\r\n\r\n{08_team_standards}\r\n\r\n---\r\n\r\n{09_structure}\r\n\r\n---\r\n\r\n{10_footer}\r\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:44:20.959Z"}} +{"id":"1bbc707b-d15c-4fd0-be64-30c5005c4981","timestamp":"2026-06-07T11:44:23.977Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":71125,"output":202,"cached":67876,"thoughts":0,"tool":0,"total":71327},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:44:23.978Z"}} +{"id":"1bbc707b-d15c-4fd0-be64-30c5005c4981","timestamp":"2026-06-07T11:44:23.977Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":71125,"output":202,"cached":67876,"thoughts":0,"tool":0,"total":71327},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780832663828_0","name":"update_topic","args":{"title":"Modularization Task Completion","strategic_intent":"Finalizing README modularization by updating the workspace summary and verifying the directory structure.","summary":"I have completed the modularization of the project's README.md. All sections have been extracted into individual Markdown files in 'BABA_YAGA_Updater/sections/' and a master template has been created at 'BABA_YAGA_Updater/README.md'. This structure allows for surgical updates to specific documentation sections, particularly the Roadmap which will be synchronized with Google Sheets. I am now performing a final check of the generated files to ensure completeness and correctness before concluding this task. This modular approach significantly improves the maintainability of the project's documentation."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780832663828_0","name":"update_topic","response":{"output":"Current topic: \"Modularization Task Completion\"\nTopic summary: I have completed the modularization of the project's README.md. All sections have been extracted into individual Markdown files in 'BABA_YAGA_Updater/sections/' and a master template has been created at 'BABA_YAGA_Updater/README.md'. This structure allows for surgical updates to specific documentation sections, particularly the Roadmap which will be synchronized with Google Sheets. I am now performing a final check of the generated files to ensure completeness and correctness before concluding this task. This modular approach significantly improves the maintainability of the project's documentation.\n\nStrategic Intent: Finalizing README modularization by updating the workspace summary and verifying the directory structure."}}}],"status":"success","timestamp":"2026-06-07T11:44:23.997Z","resultDisplay":"## 📂 Topic: **Modularization Task Completion**\n\n**Summary:**\nI have completed the modularization of the project's README.md. All sections have been extracted into individual Markdown files in 'BABA_YAGA_Updater/sections/' and a master template has been created at 'BABA_YAGA_Updater/README.md'. This structure allows for surgical updates to specific documentation sections, particularly the Roadmap which will be synchronized with Google Sheets. I am now performing a final check of the generated files to ensure completeness and correctness before concluding this task. This modular approach significantly improves the maintainability of the project's documentation.\n\n> [!STRATEGY]\n> **Intent:** Finalizing README modularization by updating the workspace summary and verifying the directory structure.","description":"Update topic to: \"Modularization Task Completion\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true},{"id":"list_directory__list_directory_1780832663835_1","name":"list_directory","args":{"dir_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections"},"result":[{"functionResponse":{"id":"list_directory__list_directory_1780832663835_1","name":"list_directory","response":{"output":"Directory listing for D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections:\n00_header.md (2023 bytes)\n01_vision.md (615 bytes)\n02_mechanics.md (4290 bytes)\n03_architecture.md (2601 bytes)\n04_maze.md (3109 bytes)\n05_networking.md (1568 bytes)\n06_comeback.md (3237 bytes)\n07_roadmap.md (433 bytes)\n08_team_standards.md (3868 bytes)\n09_structure.md (2388 bytes)\n10_footer.md (3460 bytes)"}}}],"status":"success","timestamp":"2026-06-07T11:44:23.997Z","resultDisplay":{"summary":"Found 11 item(s).","files":["00_header.md","01_vision.md","02_mechanics.md","03_architecture.md","04_maze.md","05_networking.md","06_comeback.md","07_roadmap.md","08_team_standards.md","09_structure.md","10_footer.md"]},"description":"BABA_YAGA_Updater\\sections","displayName":"ReadFolder","renderOutputAsMarkdown":true}]} +{"id":"9fbec004-510d-4575-b22e-19a52785a573","timestamp":"2026-06-07T11:44:23.998Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780832663828_0","name":"update_topic","response":{"output":"Current topic: \"Modularization Task Completion\"\nTopic summary: I have completed the modularization of the project's README.md. All sections have been extracted into individual Markdown files in 'BABA_YAGA_Updater/sections/' and a master template has been created at 'BABA_YAGA_Updater/README.md'. This structure allows for surgical updates to specific documentation sections, particularly the Roadmap which will be synchronized with Google Sheets. I am now performing a final check of the generated files to ensure completeness and correctness before concluding this task. This modular approach significantly improves the maintainability of the project's documentation.\n\nStrategic Intent: Finalizing README modularization by updating the workspace summary and verifying the directory structure."}}},{"functionResponse":{"id":"list_directory__list_directory_1780832663835_1","name":"list_directory","response":{"output":"Directory listing for D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\sections:\n00_header.md (2023 bytes)\n01_vision.md (615 bytes)\n02_mechanics.md (4290 bytes)\n03_architecture.md (2601 bytes)\n04_maze.md (3109 bytes)\n05_networking.md (1568 bytes)\n06_comeback.md (3237 bytes)\n07_roadmap.md (433 bytes)\n08_team_standards.md (3868 bytes)\n09_structure.md (2388 bytes)\n10_footer.md (3460 bytes)"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:44:23.999Z"}} +{"id":"e860608d-6f25-4078-ae67-43ae491ed8c6","timestamp":"2026-06-07T11:44:27.066Z","type":"gemini","content":"Modularized `README.md` into `BABA_YAGA_Updater/sections/`. Created template in `BABA_YAGA_Updater/README.md`.\n\nFiles created in `sections/`:\n- `00_header.md`: Title, Badges, ToC.\n- `01_vision.md`: Project Vision.\n- `02_mechanics.md`: Game Loop, Asymmetry.\n- `03_architecture.md`: State Machine, Scanner.\n- `04_maze.md`: Algorithms, Pipeline.\n- `05_networking.md`: Photon Fusion sync.\n- `06_comeback.md`: Despair Mechanics.\n- `07_roadmap.md`: Roadmap (with `START_UPDATES` markers).\n- `08_team_standards.md`: WBS, NFRs.\n- `09_structure.md`: Folder structure.\n- `10_footer.md`: Installation, Support.\n\nNext: Connect Google Sheets to update `07_roadmap.md`.","thoughts":[],"tokens":{"input":71652,"output":233,"cached":67844,"thoughts":0,"tool":0,"total":71885},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:44:27.067Z"}} +{"id":"e8bc67fa-de30-4996-a8fb-5f700613fe62","timestamp":"2026-06-07T11:46:29.182Z","type":"user","content":[{"text":"Here is a summary of changes in the user's editor context, in JSON format. This is for your information only.\n```json\n{\n \"changes\": {\n \"filesOpened\": [\n \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/01_vision.md\",\n \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/00_header.md\"\n ],\n \"activeFileChanged\": {\n \"path\": \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/01_vision.md\",\n \"cursor\": {\n \"line\": 3,\n \"character\": 20\n }\n }\n }\n}\n```"}]} +{"$set":{"lastUpdated":"2026-06-07T11:46:29.182Z"}} +{"id":"c8881e24-9ac8-4246-958b-7492c7b17b8b","timestamp":"2026-06-07T11:46:33.129Z","type":"user","content":[{"text":"I need u too replace all the default system icon in all the sections and readme to new modern online icon set"}]} +{"$set":{"lastUpdated":"2026-06-07T11:46:33.129Z"}} +{"id":"831fef5a-6f75-43a0-a426-a12856083ef7","timestamp":"2026-06-07T11:46:48.497Z","type":"gemini","content":"","thoughts":[{"subject":"Exploring Icon Replacement","description":"I'm currently analyzing the existing README content to identify all instances of \"default system icons.\" My focus is on cataloging the current representations, including Unicode emojis, and pinpointing where the transition to a new, modern online icon set can be integrated seamlessly.","timestamp":"2026-06-07T11:46:37.808Z"},{"subject":"Identifying Icon Sources","description":"I'm now specifically examining how these \"default system icons\" manifest. It appears many are standard Unicode emojis, which indeed render variably across systems. I'm evaluating the implications of replacing these with a consistent, modern online icon set.","timestamp":"2026-06-07T11:46:39.700Z"},{"subject":"Selecting Icon Formats","description":"I'm now considering the best format for these modern icons, leaning towards SVGs from sources like Simple Icons or Lucide, or perhaps utilizing shields.io for dynamic badges. The goal is a consistent, visually appealing integration across all sections.","timestamp":"2026-06-07T11:46:41.564Z"},{"subject":"Choosing Icon Libraries","description":"I'm now evaluating specific modern icon libraries. While options like Feather Icons and Google Material Symbols exist, I'm prioritizing SVGs, such as those from Lucide via `iconify.design`, for header elements. This offers superior cross-system consistency.","timestamp":"2026-06-07T11:46:43.651Z"},{"subject":"Mapping Emojis to Icons","description":"I'm now systematically mapping the existing emojis to their Lucide SVG equivalents. My focus is on ensuring a consistent visual language by identifying suitable replacements for elements like \"trap\" where a direct match isn't immediately apparent in Lucide.","timestamp":"2026-06-07T11:46:45.622Z"},{"subject":"Developing Icon Mappings","description":"I'm now planning the detailed mapping between existing emojis and chosen SVG icons, likely leveraging Iconify.design for broad access. My immediate task is to finalize this visual language, ensuring consistency even for less direct emoji translations like 🪤.","timestamp":"2026-06-07T11:46:48.020Z"},{"subject":"Mapping Icons to SVGs","description":"I'm now solidifying the emoji-to-SVG mappings. I've identified Lucide icons for most, and for less direct translations like the bear trap (🪤), I'm sourcing from game-icons via Iconify, ensuring a comprehensive and consistent visual vocabulary. I'm also considering color treatments for these SVGs.","timestamp":"2026-06-07T11:46:48.352Z"}],"tokens":{"input":72101,"output":48,"cached":43909,"thoughts":2178,"tool":0,"total":74327},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:46:48.497Z"}} +{"id":"831fef5a-6f75-43a0-a426-a12856083ef7","timestamp":"2026-06-07T11:46:48.497Z","type":"gemini","content":"","thoughts":[{"subject":"Exploring Icon Replacement","description":"I'm currently analyzing the existing README content to identify all instances of \"default system icons.\" My focus is on cataloging the current representations, including Unicode emojis, and pinpointing where the transition to a new, modern online icon set can be integrated seamlessly.","timestamp":"2026-06-07T11:46:37.808Z"},{"subject":"Identifying Icon Sources","description":"I'm now specifically examining how these \"default system icons\" manifest. It appears many are standard Unicode emojis, which indeed render variably across systems. I'm evaluating the implications of replacing these with a consistent, modern online icon set.","timestamp":"2026-06-07T11:46:39.700Z"},{"subject":"Selecting Icon Formats","description":"I'm now considering the best format for these modern icons, leaning towards SVGs from sources like Simple Icons or Lucide, or perhaps utilizing shields.io for dynamic badges. The goal is a consistent, visually appealing integration across all sections.","timestamp":"2026-06-07T11:46:41.564Z"},{"subject":"Choosing Icon Libraries","description":"I'm now evaluating specific modern icon libraries. While options like Feather Icons and Google Material Symbols exist, I'm prioritizing SVGs, such as those from Lucide via `iconify.design`, for header elements. This offers superior cross-system consistency.","timestamp":"2026-06-07T11:46:43.651Z"},{"subject":"Mapping Emojis to Icons","description":"I'm now systematically mapping the existing emojis to their Lucide SVG equivalents. My focus is on ensuring a consistent visual language by identifying suitable replacements for elements like \"trap\" where a direct match isn't immediately apparent in Lucide.","timestamp":"2026-06-07T11:46:45.622Z"},{"subject":"Developing Icon Mappings","description":"I'm now planning the detailed mapping between existing emojis and chosen SVG icons, likely leveraging Iconify.design for broad access. My immediate task is to finalize this visual language, ensuring consistency even for less direct emoji translations like 🪤.","timestamp":"2026-06-07T11:46:48.020Z"},{"subject":"Mapping Icons to SVGs","description":"I'm now solidifying the emoji-to-SVG mappings. I've identified Lucide icons for most, and for less direct translations like the bear trap (🪤), I'm sourcing from game-icons via Iconify, ensuring a comprehensive and consistent visual vocabulary. I'm also considering color treatments for these SVGs.","timestamp":"2026-06-07T11:46:48.352Z"}],"tokens":{"input":72101,"output":48,"cached":43909,"thoughts":2178,"tool":0,"total":74327},"model":"gemini-3-flash-preview","toolCalls":[{"id":"enter_plan_mode__enter_plan_mode_1780832808373_0","name":"enter_plan_mode","args":{"reason":"Replace all system Unicode emojis with a consistent, modern online icon set (Lucide/Iconify) across all README sections and the root README.md."},"result":[{"functionResponse":{"id":"enter_plan_mode__enter_plan_mode_1780832808373_0","name":"enter_plan_mode","response":{"output":"Switching to Plan mode."}}}],"status":"success","timestamp":"2026-06-07T11:47:00.956Z","resultDisplay":"Switching to Plan mode: Replace all system Unicode emojis with a consistent, modern online icon set (Lucide/Iconify) across all README sections and the root README.md.","description":"Replace all system Unicode emojis with a consistent, modern online icon set (Lucide/Iconify) across all README sections and the root README.md.","displayName":"enter_plan_mode","renderOutputAsMarkdown":false}]} +{"id":"9a34b43d-563f-4d37-a2d0-0fea12f54584","timestamp":"2026-06-07T11:47:00.957Z","type":"user","content":[{"functionResponse":{"id":"enter_plan_mode__enter_plan_mode_1780832808373_0","name":"enter_plan_mode","response":{"output":"Switching to Plan mode."}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:47:00.958Z"}} +{"id":"155b8198-f4f6-4559-ae78-5bf9cc05616e","timestamp":"2026-06-07T11:47:15.071Z","type":"gemini","content":"","thoughts":[{"subject":"Planning File Updates","description":"I'm currently in Plan Mode, focusing on identifying all files that require updates. My immediate tasks involve pinpointing `D:/Learning_Progress/Projects/BABA_YAGA/README.md` and all `.md` files within `BABA_YAGA_Updater/sections/`. Following this, I'll locate every emoji in use and establish a mapping to contemporary online resources.","timestamp":"2026-06-07T11:47:07.960Z"},{"subject":"Listing Emojis Identified","description":"I've now compiled a comprehensive list of all emojis found across the relevant markdown files. My next step is to map each of these to a suitable modern icon set, such as Lucide, via the Iconify API. After this mapping is complete, I will present the finalized plan for your review.","timestamp":"2026-06-07T11:47:10.608Z"},{"subject":"Refining Icon Strategy","description":"I've identified a vast number of emojis. My current focus is on strategizing the best approach for their replacement, considering potential rendering issues within Mermaid diagrams and the user's specific intent regarding header icons versus all icons. I'm prioritizing a clean and effective integration.","timestamp":"2026-06-07T11:47:13.575Z"},{"subject":"Clarifying Icon Scope","description":"I've identified a substantial number of emojis and am now seeking your expert guidance. My primary question is whether to replace only header/title icons or all instances, including those within Mermaid diagrams, to ensure optimal clarity and manage verbosity. I also need your preference on the icon set style.","timestamp":"2026-06-07T11:47:14.917Z"}],"tokens":{"input":74275,"output":239,"cached":0,"thoughts":1064,"tool":0,"total":75578},"model":"gemini-3.1-pro-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:47:15.071Z"}} +{"id":"155b8198-f4f6-4559-ae78-5bf9cc05616e","timestamp":"2026-06-07T11:47:15.071Z","type":"gemini","content":"","thoughts":[{"subject":"Planning File Updates","description":"I'm currently in Plan Mode, focusing on identifying all files that require updates. My immediate tasks involve pinpointing `D:/Learning_Progress/Projects/BABA_YAGA/README.md` and all `.md` files within `BABA_YAGA_Updater/sections/`. Following this, I'll locate every emoji in use and establish a mapping to contemporary online resources.","timestamp":"2026-06-07T11:47:07.960Z"},{"subject":"Listing Emojis Identified","description":"I've now compiled a comprehensive list of all emojis found across the relevant markdown files. My next step is to map each of these to a suitable modern icon set, such as Lucide, via the Iconify API. After this mapping is complete, I will present the finalized plan for your review.","timestamp":"2026-06-07T11:47:10.608Z"},{"subject":"Refining Icon Strategy","description":"I've identified a vast number of emojis. My current focus is on strategizing the best approach for their replacement, considering potential rendering issues within Mermaid diagrams and the user's specific intent regarding header icons versus all icons. I'm prioritizing a clean and effective integration.","timestamp":"2026-06-07T11:47:13.575Z"},{"subject":"Clarifying Icon Scope","description":"I've identified a substantial number of emojis and am now seeking your expert guidance. My primary question is whether to replace only header/title icons or all instances, including those within Mermaid diagrams, to ensure optimal clarity and manage verbosity. I also need your preference on the icon set style.","timestamp":"2026-06-07T11:47:14.917Z"}],"tokens":{"input":74275,"output":239,"cached":0,"thoughts":1064,"tool":0,"total":75578},"model":"gemini-3.1-pro-preview","toolCalls":[{"id":"ask_user__ask_user_1780832834929_0","name":"ask_user","args":{"questions":[{"type":"choice","question":"Do you want to replace ALL system emojis, or just the ones in the headings and major sections?","options":[{"description":"Only replace emojis in Markdown headings (e.g., ## 👁️ Vision -> ## Vision). Keeps diagrams and folder trees clean.","label":"Headings & Major Sections Only"},{"description":"Replace every single emoji across the entire text, including Mermaid diagrams and the folder structure (can make Markdown verbose).","label":"All Icons (Everywhere)"}],"header":"Icon Scope"},{"header":"Icon Set","type":"choice","question":"Which modern icon set style do you prefer?","options":[{"label":"Lucide","description":"A clean, modern outline icon set (highly popular)."},{"description":"Google's versatile, standard UI icon set.","label":"Material Symbols"},{"label":"Game-Icons","description":"Specialized for gaming, ideal for game mechanics and items."}]}]},"result":[{"functionResponse":{"id":"ask_user__ask_user_1780832834929_0","name":"ask_user","response":{"output":"{\"answers\":{\"0\":\"All Icons (Everywhere)\",\"1\":\"Lucide\"}}"}}}],"status":"success","timestamp":"2026-06-07T11:48:08.520Z","resultDisplay":"**User answered:**\n Icon Scope → All Icons (Everywhere)\n Icon Set → Lucide","description":"Asking user: Do you want to replace ALL system emojis, or just the ones in the headings and major sections?, Which modern icon set style do you prefer?","displayName":"Ask User","renderOutputAsMarkdown":true}]} +{"id":"670cd02a-6fa8-45a0-af68-24647b845625","timestamp":"2026-06-07T11:48:08.521Z","type":"user","content":[{"functionResponse":{"id":"ask_user__ask_user_1780832834929_0","name":"ask_user","response":{"output":"{\"answers\":{\"0\":\"All Icons (Everywhere)\",\"1\":\"Lucide\"}}"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:48:08.521Z"}} +{"id":"b5b122d2-5d52-4b68-bcb6-6b0523192eea","timestamp":"2026-06-07T11:48:41.394Z","type":"gemini","content":"","thoughts":[{"subject":"Finding Icon Replacements","description":"I'm currently exploring available icon sets to identify suitable replacements for existing graphical elements. My aim is to find visually consistent and contextually appropriate icons from the specified library, ensuring each original element has a matching Lucide counterpart.","timestamp":"2026-06-07T11:48:13.464Z"},{"subject":"Identifying Icon Replacements","description":"I'm reviewing the icon library to find suitable replacements for all existing graphical elements. The goal is to ensure each original icon has a visually consistent and contextually relevant counterpart from the specified set.","timestamp":"2026-06-07T11:48:17.026Z"},{"subject":"Drafting Icon Script","description":"I'm planning to create a Python script to automate the process of replacing all emojis with Lucide icons across the project. This will involve carefully handling various contexts, including file paths and diagram labels, to ensure comprehensive and consistent replacement.","timestamp":"2026-06-07T11:48:19.824Z"},{"subject":"Drafting Icon Script","description":"I am developing a Python script to automate emoji replacements with Lucide icons across project files. This script will systematically map emojis to their corresponding SVG image tags, ensuring comprehensive integration within markdown and diagram contexts.","timestamp":"2026-06-07T11:48:22.738Z"},{"subject":"Drafting Icon Script","description":"I'm developing a Python script to systematically replace emojis with Lucide icons across project files. The script will map identified emojis to corresponding SVG image tags, ensuring consistent integration within markdown and diagram contexts.","timestamp":"2026-06-07T11:48:25.731Z"},{"subject":"Drafting Script Logic","description":"I'm refining the logic for a Python script that will systematically replace emojis with Lucide icons. This involves mapping specific emojis to their corresponding icon names and constructing the necessary HTML image tags for insertion.","timestamp":"2026-06-07T11:48:28.882Z"},{"subject":"Drafting Icon Replacement Plan","description":"I am now drafting the plan to systematically replace all emojis with Lucide icons across project files. This plan details the creation and execution of a Python script designed for comprehensive emoji-to-SVG mapping and integration within various file formats.","timestamp":"2026-06-07T11:48:30.799Z"},{"subject":"Drafting Icon Script Logic","description":"I am refining the logic for a Python script to systematically replace emojis with Lucide icons. This involves mapping specific emojis to their corresponding icon names and constructing the necessary HTML image tags for insertion into the project files.","timestamp":"2026-06-07T11:48:33.275Z"},{"subject":"Drafting Icon Script Logic","description":"I am refining the Python script's logic to systematically map emojis to corresponding Lucide icon names and construct the HTML image tags for insertion into project files, ensuring seamless integration across various contexts including markdown and diagrams.","timestamp":"2026-06-07T11:48:35.700Z"},{"subject":"Developing Icon Replacement Strategy","description":"I'm refining the implementation plan to systematically replace emojis with Lucide icons across project files. This involves detailed mapping of emojis to corresponding HTML image tags, considering how these will render in different contexts like markdown and diagrams.","timestamp":"2026-06-07T11:48:40.688Z"}],"tokens":{"input":70527,"output":573,"cached":0,"thoughts":2403,"tool":0,"total":73503},"model":"gemini-3.1-pro-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:48:41.395Z"}} +{"id":"b5b122d2-5d52-4b68-bcb6-6b0523192eea","timestamp":"2026-06-07T11:48:41.394Z","type":"gemini","content":"","thoughts":[{"subject":"Finding Icon Replacements","description":"I'm currently exploring available icon sets to identify suitable replacements for existing graphical elements. My aim is to find visually consistent and contextually appropriate icons from the specified library, ensuring each original element has a matching Lucide counterpart.","timestamp":"2026-06-07T11:48:13.464Z"},{"subject":"Identifying Icon Replacements","description":"I'm reviewing the icon library to find suitable replacements for all existing graphical elements. The goal is to ensure each original icon has a visually consistent and contextually relevant counterpart from the specified set.","timestamp":"2026-06-07T11:48:17.026Z"},{"subject":"Drafting Icon Script","description":"I'm planning to create a Python script to automate the process of replacing all emojis with Lucide icons across the project. This will involve carefully handling various contexts, including file paths and diagram labels, to ensure comprehensive and consistent replacement.","timestamp":"2026-06-07T11:48:19.824Z"},{"subject":"Drafting Icon Script","description":"I am developing a Python script to automate emoji replacements with Lucide icons across project files. This script will systematically map emojis to their corresponding SVG image tags, ensuring comprehensive integration within markdown and diagram contexts.","timestamp":"2026-06-07T11:48:22.738Z"},{"subject":"Drafting Icon Script","description":"I'm developing a Python script to systematically replace emojis with Lucide icons across project files. The script will map identified emojis to corresponding SVG image tags, ensuring consistent integration within markdown and diagram contexts.","timestamp":"2026-06-07T11:48:25.731Z"},{"subject":"Drafting Script Logic","description":"I'm refining the logic for a Python script that will systematically replace emojis with Lucide icons. This involves mapping specific emojis to their corresponding icon names and constructing the necessary HTML image tags for insertion.","timestamp":"2026-06-07T11:48:28.882Z"},{"subject":"Drafting Icon Replacement Plan","description":"I am now drafting the plan to systematically replace all emojis with Lucide icons across project files. This plan details the creation and execution of a Python script designed for comprehensive emoji-to-SVG mapping and integration within various file formats.","timestamp":"2026-06-07T11:48:30.799Z"},{"subject":"Drafting Icon Script Logic","description":"I am refining the logic for a Python script to systematically replace emojis with Lucide icons. This involves mapping specific emojis to their corresponding icon names and constructing the necessary HTML image tags for insertion into the project files.","timestamp":"2026-06-07T11:48:33.275Z"},{"subject":"Drafting Icon Script Logic","description":"I am refining the Python script's logic to systematically map emojis to corresponding Lucide icon names and construct the HTML image tags for insertion into project files, ensuring seamless integration across various contexts including markdown and diagrams.","timestamp":"2026-06-07T11:48:35.700Z"},{"subject":"Developing Icon Replacement Strategy","description":"I'm refining the implementation plan to systematically replace emojis with Lucide icons across project files. This involves detailed mapping of emojis to corresponding HTML image tags, considering how these will render in different contexts like markdown and diagrams.","timestamp":"2026-06-07T11:48:40.688Z"}],"tokens":{"input":70527,"output":573,"cached":0,"thoughts":2403,"tool":0,"total":73503},"model":"gemini-3.1-pro-preview","toolCalls":[{"id":"write_file__write_file_1780832921392_0","name":"write_file","args":{"file_path":"C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md","content":"# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later)."},"result":[{"functionResponse":{"id":"write_file__write_file_1780832921392_0","name":"write_file","response":{"output":"Successfully created and wrote to new file: C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md. Here is the updated code:\n# Icon Replacement Plan\r\n\r\n## Objective\r\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\r\n\r\n## Key Files & Context\r\n- **Target Files:**\r\n - `BABA_YAGA_Updater/sections/*.md`\r\n - `BABA_YAGA_Updater/README.md` (Master Template)\r\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\r\n- **Icon Format:** \r\n ``\r\n\r\n## Implementation Steps\r\n\r\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\r\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\r\n2. **Handle Special Markdown Scenarios in the Script:**\r\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\r\n - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\r\n3. **Execute Replacement:**\r\n - Run the Python script to update all files in `sections/`.\r\n4. **Rebuild Root README:**\r\n - Re-assemble the master `README.md` from the updated sections.\r\n\r\n## Verification & Testing\r\n- Read the updated files to verify the `` tags are injected correctly.\r\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\r\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later)."}}}],"status":"success","timestamp":"2026-06-07T11:48:41.407Z","resultDisplay":{"fileDiff":"Index: replace-icons.md\n===================================================================\n--- replace-icons.md\tOriginal\n+++ replace-icons.md\tWritten\n@@ -0,0 +1,29 @@\n+# Icon Replacement Plan\n+\n+## Objective\n+Replace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n+\n+## Key Files & Context\n+- **Target Files:**\n+ - `BABA_YAGA_Updater/sections/*.md`\n+ - `BABA_YAGA_Updater/README.md` (Master Template)\n+ - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n+- **Icon Format:** \n+ ``\n+\n+## Implementation Steps\n+\n+1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n+ - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n+2. **Handle Special Markdown Scenarios in the Script:**\n+ - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n+ - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\n+3. **Execute Replacement:**\n+ - Run the Python script to update all files in `sections/`.\n+4. **Rebuild Root README:**\n+ - Re-assemble the master `README.md` from the updated sections.\n+\n+## Verification & Testing\n+- Read the updated files to verify the `` tags are injected correctly.\n+- Ensure the `09_structure.md` was successfully converted to a markdown list.\n+- Run `git status` and `git diff` to confirm the changes before committing (if requested later).\n\\ No newline at end of file\n","fileName":"replace-icons.md","filePath":"C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md","originalContent":"","newContent":"# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).","diffStat":{"model_added_lines":29,"model_removed_lines":0,"model_added_chars":1886,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to C:\\Users\\...\\plans\\replace-icons.md","displayName":"WriteFile","renderOutputAsMarkdown":true}]} +{"id":"6f1cbbca-379a-422b-a3ec-35cfbc5a1b0a","timestamp":"2026-06-07T11:48:41.865Z","type":"user","content":[{"functionResponse":{"id":"write_file__write_file_1780832921392_0","name":"write_file","response":{"output":"Successfully created and wrote to new file: C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md. Here is the updated code:\n# Icon Replacement Plan\r\n\r\n## Objective\r\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\r\n\r\n## Key Files & Context\r\n- **Target Files:**\r\n - `BABA_YAGA_Updater/sections/*.md`\r\n - `BABA_YAGA_Updater/README.md` (Master Template)\r\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\r\n- **Icon Format:** \r\n ``\r\n\r\n## Implementation Steps\r\n\r\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\r\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\r\n2. **Handle Special Markdown Scenarios in the Script:**\r\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\r\n - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\r\n3. **Execute Replacement:**\r\n - Run the Python script to update all files in `sections/`.\r\n4. **Rebuild Root README:**\r\n - Re-assemble the master `README.md` from the updated sections.\r\n\r\n## Verification & Testing\r\n- Read the updated files to verify the `` tags are injected correctly.\r\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\r\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later)."}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:48:41.865Z"}} +{"id":"cc3da20d-2889-4ae0-ac40-1aeb2998ed7e","timestamp":"2026-06-07T11:48:50.622Z","type":"gemini","content":"Here is the proposed implementation plan for replacing all icons across the documentation. \n\nSince you selected \"All Icons (Everywhere)\", I've accounted for a technical limitation with the folder structure representation in `09_structure.md`. Please review the plan below, particularly how the folder structure will be handled:\n\n```markdown\n# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).\n```\n\nDoes this detailed plan look good to you? Once you confirm, I will formally request approval to exit Plan Mode and begin the execution phase.","thoughts":[{"subject":"Drafting Plan for User","description":"I've finalized the icon replacement strategy and documented it. My next step is to share this plan with you in this chat, seeking your expert review and feedback to ensure we're aligned.","timestamp":"2026-06-07T11:48:46.261Z"}],"tokens":{"input":79092,"output":600,"cached":71950,"thoughts":133,"tool":0,"total":79825},"model":"gemini-3.1-pro-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:48:50.623Z"}} +{"id":"7735eadd-965b-4de2-b22f-6c17b07ce6e2","timestamp":"2026-06-07T11:50:34.094Z","type":"user","content":[{"text":"Here is a summary of changes in the user's editor context, in JSON format. This is for your information only.\n```json\n{\n \"changes\": {\n \"filesOpened\": [\n \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/09_structure.md\",\n \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/08_team_standards.md\"\n ],\n \"filesClosed\": [\n \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/01_vision.md\",\n \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/00_header.md\"\n ],\n \"activeFileChanged\": {\n \"path\": \"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/09_structure.md\",\n \"cursor\": {\n \"line\": 29,\n \"character\": 33\n }\n }\n }\n}\n```"}]} +{"$set":{"lastUpdated":"2026-06-07T11:50:34.094Z"}} +{"id":"08acc451-0ae3-4570-a937-90fa5477db27","timestamp":"2026-06-07T11:50:34.095Z","type":"user","content":[{"text":"ignore the 09_structure, ill do it myself"}]} +{"$set":{"lastUpdated":"2026-06-07T11:50:34.095Z"}} +{"id":"894da750-fed4-4279-9d8c-e72f33194522","timestamp":"2026-06-07T11:50:40.669Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":72598,"output":328,"cached":69601,"thoughts":0,"tool":0,"total":72926},"model":"gemini-3.1-pro-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:50:40.669Z"}} +{"id":"894da750-fed4-4279-9d8c-e72f33194522","timestamp":"2026-06-07T11:50:40.669Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":72598,"output":328,"cached":69601,"thoughts":0,"tool":0,"total":72926},"model":"gemini-3.1-pro-preview","toolCalls":[{"id":"replace__replace_1780833040666_0","name":"replace","args":{"instruction":"Remove the step to convert the folder structure in 09_structure.md as the user will handle it manually. Keep the Mermaid diagram step.","allow_multiple":false,"file_path":"C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md","new_string":"2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.","old_string":"2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub."},"result":[{"functionResponse":{"id":"replace__replace_1780833040666_0","name":"replace","response":{"output":"Successfully modified file: C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md (1 replacements). Here is the updated code:\n# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later)."}}}],"status":"success","timestamp":"2026-06-07T11:50:40.681Z","resultDisplay":{"fileDiff":"Index: replace-icons.md\n===================================================================\n--- replace-icons.md\tCurrent\n+++ replace-icons.md\tProposed\n@@ -17,7 +17,7 @@\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n 2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n- - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\n+ - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n 3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n 4. **Rebuild Root README:**\n","fileName":"replace-icons.md","filePath":"C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md","originalContent":"# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Folder Structure (`09_structure.md`):** Currently, the folder structure is inside a ` ```text ` code block. HTML `` tags inside code blocks do not render (they show as raw code). The script will convert this specific code block into a standard Markdown bulleted list, allowing the folder and file icons to render correctly on GitHub.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).","newContent":"# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).","diffStat":{"model_added_lines":1,"model_removed_lines":1,"model_added_chars":157,"model_removed_chars":345,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":false},"description":"C:\\Users\\...\\plans\\replace-icons.md: 2. **Handle Special Markdown S... => 2. **Handle Special Markdown S...","displayName":"Edit","renderOutputAsMarkdown":true}]} +{"id":"6c2927ca-5a95-47c5-8124-c06ef4bc4b46","timestamp":"2026-06-07T11:50:40.932Z","type":"user","content":[{"functionResponse":{"id":"replace__replace_1780833040666_0","name":"replace","response":{"output":"Successfully modified file: C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md (1 replacements). Here is the updated code:\n# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later)."}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:50:40.932Z"}} +{"id":"fbd5f7c6-033a-4b9a-9d35-70a6d494eaa8","timestamp":"2026-06-07T11:50:50.038Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":73466,"output":207,"cached":69611,"thoughts":0,"tool":0,"total":73673},"model":"gemini-3.1-pro-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:50:50.038Z"}} +{"id":"fbd5f7c6-033a-4b9a-9d35-70a6d494eaa8","timestamp":"2026-06-07T11:50:50.038Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":73466,"output":207,"cached":69611,"thoughts":0,"tool":0,"total":73673},"model":"gemini-3.1-pro-preview","toolCalls":[{"id":"replace__replace_1780833050036_0","name":"replace","args":{"instruction":"Remove the verification step for 09_structure.md since we are no longer processing it.","new_string":"## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).","allow_multiple":false,"old_string":"## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).","file_path":"C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md"},"result":[{"functionResponse":{"id":"replace__replace_1780833050036_0","name":"replace","response":{"output":"Successfully modified file: C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md (1 replacements). Here is the updated code:\n# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later)."}}}],"status":"success","timestamp":"2026-06-07T11:50:50.048Z","resultDisplay":{"fileDiff":"Index: replace-icons.md\n===================================================================\n--- replace-icons.md\tCurrent\n+++ replace-icons.md\tProposed\n@@ -25,5 +25,4 @@\n \n ## Verification & Testing\n - Read the updated files to verify the `` tags are injected correctly.\n-- Ensure the `09_structure.md` was successfully converted to a markdown list.\n - Run `git status` and `git diff` to confirm the changes before committing (if requested later).\n\\ No newline at end of file\n","fileName":"replace-icons.md","filePath":"C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md","originalContent":"# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Ensure the `09_structure.md` was successfully converted to a markdown list.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).","newContent":"# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later).","diffStat":{"model_added_lines":0,"model_removed_lines":1,"model_added_chars":0,"model_removed_chars":77,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":false},"description":"C:\\Users\\...\\plans\\replace-icons.md: ## Verification & Testing... => ## Verification & Testing...","displayName":"Edit","renderOutputAsMarkdown":true}]} +{"id":"a1172889-e363-4177-985e-dc066d975c0f","timestamp":"2026-06-07T11:50:50.272Z","type":"user","content":[{"functionResponse":{"id":"replace__replace_1780833050036_0","name":"replace","response":{"output":"Successfully modified file: C:/Users/scove/.gemini/tmp/baba-yaga/c391d15d-d540-465a-bfd8-690dd3005f71/plans/replace-icons.md (1 replacements). Here is the updated code:\n# Icon Replacement Plan\n\n## Objective\nReplace all default system Unicode emojis with the modern `Lucide` online icon set (via `api.iconify.design`) across all documentation sections and the root `README.md`.\n\n## Key Files & Context\n- **Target Files:**\n - `BABA_YAGA_Updater/sections/*.md`\n - `BABA_YAGA_Updater/README.md` (Master Template)\n - `D:/Learning_Progress/Projects/BABA_YAGA/README.md` (Root README)\n- **Icon Format:** \n ``\n\n## Implementation Steps\n\n1. **Create an Automation Script (`BABA_YAGA_Updater/replace_icons.py`)**\n - Since there are over 50 unique emojis across 13 files, replacing them manually is error-prone. We will write a Python script containing a comprehensive dictionary mapping each Unicode emoji to its `Lucide` HTML tag equivalent.\n2. **Handle Special Markdown Scenarios in the Script:**\n - **Mermaid Diagrams:** Node definitions will be carefully wrapped if needed (e.g., `A[\" Text\"]`) so Mermaid can render them correctly.\n - **Skip Folder Structure (`09_structure.md`):** Emojis in this file will be ignored or left as-is, as you will handle the code block conversion manually.\n3. **Execute Replacement:**\n - Run the Python script to update all files in `sections/`.\n4. **Rebuild Root README:**\n - Re-assemble the master `README.md` from the updated sections.\n\n## Verification & Testing\n- Read the updated files to verify the `` tags are injected correctly.\n- Run `git status` and `git diff` to confirm the changes before committing (if requested later)."}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:50:50.272Z"}} +{"id":"42924331-98b9-4236-9e82-58dd5f8216a9","timestamp":"2026-06-07T11:50:53.734Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":75946,"output":24,"cached":71821,"thoughts":0,"tool":0,"total":75970},"model":"gemini-3.1-pro-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:50:53.734Z"}} +{"id":"42924331-98b9-4236-9e82-58dd5f8216a9","timestamp":"2026-06-07T11:50:53.734Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":75946,"output":24,"cached":71821,"thoughts":0,"tool":0,"total":75970},"model":"gemini-3.1-pro-preview","toolCalls":[{"id":"exit_plan_mode__exit_plan_mode_1780833053518_0","name":"exit_plan_mode","args":{"plan_filename":"replace-icons.md"},"result":[{"functionResponse":{"id":"exit_plan_mode__exit_plan_mode_1780833053518_0","name":"exit_plan_mode","response":{"output":"Plan approved. Switching to Auto-Edit mode (edits will be applied automatically).\n\nThe approved implementation plan is stored at: C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\\c391d15d-d540-465a-bfd8-690dd3005f71\\plans\\replace-icons.md\nRead and follow the plan strictly during implementation."}}}],"status":"success","timestamp":"2026-06-07T11:51:14.064Z","resultDisplay":"Plan approved: C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\\c391d15d-d540-465a-bfd8-690dd3005f71\\plans\\replace-icons.md","description":"Requesting plan approval for: C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\\c391d15d-d540-465a-bfd8-690dd3005f71\\plans\\replace-icons.md","displayName":"exit_plan_mode","renderOutputAsMarkdown":false}]} +{"id":"4ff9343b-99b1-49f0-a205-fce99eb047ee","timestamp":"2026-06-07T11:51:14.065Z","type":"user","content":[{"functionResponse":{"id":"exit_plan_mode__exit_plan_mode_1780833053518_0","name":"exit_plan_mode","response":{"output":"Plan approved. Switching to Auto-Edit mode (edits will be applied automatically).\n\nThe approved implementation plan is stored at: C:\\Users\\scove\\.gemini\\tmp\\baba-yaga\\c391d15d-d540-465a-bfd8-690dd3005f71\\plans\\replace-icons.md\nRead and follow the plan strictly during implementation."}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:14.065Z"}} +{"id":"13a6b72f-0194-4a22-a286-186077f752b9","timestamp":"2026-06-07T11:51:17.512Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":76139,"output":178,"cached":15944,"thoughts":0,"tool":0,"total":76317},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:17.512Z"}} +{"id":"13a6b72f-0194-4a22-a286-186077f752b9","timestamp":"2026-06-07T11:51:17.512Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":76139,"output":178,"cached":15944,"thoughts":0,"tool":0,"total":76317},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780833077348_0","name":"update_topic","args":{"summary":"I am now initiating the implementation phase of the icon replacement plan. My first task is to develop a Python automation script, 'BABA_YAGA_Updater/replace_icons.py'. This script will house a mapping of all Unicode emojis currently used in the project to their corresponding 'Lucide' icon HTML tags. I will also incorporate logic to handle specific Markdown structures, such as ensuring that icons within Mermaid diagrams are correctly formatted for rendering. I will explicitly exclude '09_structure.md' from this automated process per the user's request. This script will ensure a consistent and modern visual style across all documentation components.","title":"Developing Icon Replacement Script","strategic_intent":"Developing a Python script to automate the replacement of Unicode emojis with Lucide icons across project documentation."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780833077348_0","name":"update_topic","response":{"output":"Current topic: \"Developing Icon Replacement Script\"\nTopic summary: I am now initiating the implementation phase of the icon replacement plan. My first task is to develop a Python automation script, 'BABA_YAGA_Updater/replace_icons.py'. This script will house a mapping of all Unicode emojis currently used in the project to their corresponding 'Lucide' icon HTML tags. I will also incorporate logic to handle specific Markdown structures, such as ensuring that icons within Mermaid diagrams are correctly formatted for rendering. I will explicitly exclude '09_structure.md' from this automated process per the user's request. This script will ensure a consistent and modern visual style across all documentation components.\n\nStrategic Intent: Developing a Python script to automate the replacement of Unicode emojis with Lucide icons across project documentation."}}}],"status":"success","timestamp":"2026-06-07T11:51:17.515Z","resultDisplay":"## 📂 Topic: **Developing Icon Replacement Script**\n\n**Summary:**\nI am now initiating the implementation phase of the icon replacement plan. My first task is to develop a Python automation script, 'BABA_YAGA_Updater/replace_icons.py'. This script will house a mapping of all Unicode emojis currently used in the project to their corresponding 'Lucide' icon HTML tags. I will also incorporate logic to handle specific Markdown structures, such as ensuring that icons within Mermaid diagrams are correctly formatted for rendering. I will explicitly exclude '09_structure.md' from this automated process per the user's request. This script will ensure a consistent and modern visual style across all documentation components.\n\n> [!STRATEGY]\n> **Intent:** Developing a Python script to automate the replacement of Unicode emojis with Lucide icons across project documentation.","description":"Update topic to: \"Developing Icon Replacement Script\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true}]} +{"id":"4e5cc407-cbde-4354-87cd-4d58533b4900","timestamp":"2026-06-07T11:51:17.516Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780833077348_0","name":"update_topic","response":{"output":"Current topic: \"Developing Icon Replacement Script\"\nTopic summary: I am now initiating the implementation phase of the icon replacement plan. My first task is to develop a Python automation script, 'BABA_YAGA_Updater/replace_icons.py'. This script will house a mapping of all Unicode emojis currently used in the project to their corresponding 'Lucide' icon HTML tags. I will also incorporate logic to handle specific Markdown structures, such as ensuring that icons within Mermaid diagrams are correctly formatted for rendering. I will explicitly exclude '09_structure.md' from this automated process per the user's request. This script will ensure a consistent and modern visual style across all documentation components.\n\nStrategic Intent: Developing a Python script to automate the replacement of Unicode emojis with Lucide icons across project documentation."}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:17.516Z"}} +{"id":"1cc2b058-be9d-4ed4-a569-c9fe3d334794","timestamp":"2026-06-07T11:51:28.668Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":76474,"output":1766,"cached":75720,"thoughts":0,"tool":0,"total":78240},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:28.668Z"}} +{"id":"1cc2b058-be9d-4ed4-a569-c9fe3d334794","timestamp":"2026-06-07T11:51:28.668Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":76474,"output":1766,"cached":75720,"thoughts":0,"tool":0,"total":78240},"model":"gemini-3-flash-preview","toolCalls":[{"id":"write_file__write_file_1780833088665_0","name":"write_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/replace_icons.py","content":"import os\nimport re\n\n# Configuration\nSECTIONS_DIR = \"sections\"\nOUTPUT_README = \"README.md\"\nEXCLUDE_FILES = [\"09_structure.md\"]\n\n# Icon Template (Lucide via Iconify)\n# Color: #E0E0E0 (light grey to match modern dark themes)\nICON_TEMPLATE = ''\n\n# Emoji to Lucide mapping\nEMOJI_MAP = {\n \"👁️\": \"eye\",\n \"🌓\": \"circle-dashed\",\n \"🏃\": \"run\",\n \"🏃‍♀️\": \"run\",\n \"🕸️\": \"settings\", # fallback\n \"🌐\": \"globe\",\n \"⚖️\": \"scale\",\n \"🚀\": \"rocket\",\n \"👥\": \"users\",\n \"📐\": \"ruler\",\n \"📂\": \"folder\",\n \"🤝\": \"handshake\",\n \"💖\": \"heart\",\n \"🎮\": \"gamepad-2\",\n \"🔄\": \"refresh-cw\",\n \"🧩\": \"puzzle\",\n \"🏗️\": \"building-2\",\n \"📍\": \"map-pin\",\n \"🧍\": \"user\",\n \"⌨️\": \"keyboard\",\n \"⚡\": \"zap\",\n \"🔊\": \"volume-2\",\n \"🤫\": \"volume-x\",\n \"🔦\": \"flashlight\",\n \"🔍\": \"search\",\n \"⚠️\": \"alert-triangle\",\n \"🖱️\": \"mouse\",\n \"🗺️\": \"map\",\n \"🛠️\": \"wrench\",\n \"🪤\": \"binary\", # trap fallback\n \"📡\": \"rss\",\n \"🚪\": \"door-closed\",\n \"👑\": \"crown\",\n \"📦\": \"package\",\n \"✉️\": \"mail\",\n \"📝\": \"file-text\",\n \"📣\": \"megaphone\",\n \"🔄\": \"refresh-cw\",\n \"🎞️\": \"film\",\n \"💔\": \"heart-off\",\n \"📊\": \"bar-chart-3\",\n \"🥉\": \"award\",\n \"🥈\": \"award\",\n \"🥇\": \"award\",\n \"🔥\": \"flame\",\n \"🎲\": \"dice-5\",\n \"✨\": \"sparkles\",\n \"🏁\": \"flag\",\n \"🏆\": \"trophy\",\n \"♻️\": \"rotate-ccw\",\n \"📈\": \"trending-up\",\n \"🥊\": \"swords\", # combat\n \"🎭\": \"masks-theater\",\n \"👟\": \"footprints\",\n \"🎢\": \"wind\",\n \"📉\": \"trending-down\",\n \"🆙\": \"arrow-up-circle\",\n \"💨\": \"wind\",\n \"🔒\": \"lock\",\n \"⚙️\": \"settings\",\n \"👟\": \"footprints\",\n \"💡\": \"lightbulb\",\n \"💎\": \"gem\",\n \"🐾\": \"footprints\",\n \"🌳\": \"tree-pine\",\n \"🧵\": \"layout-grid\",\n \"📖\": \"book-open\",\n \"🎬\": \"clapperboard\",\n \"🎨\": \"palette\",\n \"👸\": \"user\",\n \"💃\": \"user\",\n \"🔌\": \"plug\",\n \"🅰️\": \"type\",\n \"🏷️\": \"tag\",\n \"🌍\": \"globe\",\n \"🌸\": \"flower\",\n \"📜\": \"scroll\",\n \"🎥\": \"video\",\n \"🛠️\": \"wrench\",\n \"🚀\": \"rocket\",\n \"🤝\": \"handshake\",\n \"🤵\": \"user\",\n \"💰\": \"banknote\",\n \"☕\": \"coffee\",\n}\n\ndef get_icon_tag(emoji):\n icon_name = EMOJI_MAP.get(emoji)\n if icon_name:\n return ICON_TEMPLATE.format(name=icon_name)\n return emoji\n\ndef replace_emojis(text):\n # Regex to find emojis in the map\n pattern = re.compile(\"|\".join(re.escape(k) for k in EMOJI_MAP.keys()))\n \n def replacer(match):\n emoji = match.group(0)\n return get_icon_tag(emoji)\n \n return pattern.sub(replacer, text)\n\ndef process_file(file_path):\n with open(file_path, 'r', encoding='utf-8') as f:\n content = f.read()\n \n # Process content\n new_content = replace_emojis(content)\n \n # Special handling for Mermaid (Node names with quotes)\n # Mermaid nodes like A[\"Text\"] need the HTML to be clean\n # The current regex handles this since it's just a text replacement\n \n with open(file_path, 'w', encoding='utf-8') as f:\n f.write(new_content)\n print(f\"✅ Processed {file_path}\")\n\ndef main():\n # 1. Process all files in sections/ except excluded ones\n if not os.path.exists(SECTIONS_DIR):\n print(f\"❌ {SECTIONS_DIR} not found.\")\n return\n\n files = [f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\") and f not in EXCLUDE_FILES]\n for filename in sorted(files):\n process_file(os.path.join(SECTIONS_DIR, filename))\n\n # 2. Rebuild Master README.md\n print(\"🏗️ Rebuilding Master README.md...\")\n with open(\"README.md\", 'r', encoding='utf-8') as f:\n template = f.read()\n \n # List all sections again to ensure we get all content\n all_sections = sorted([f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\")])\n section_data = {}\n for section_file in all_sections:\n name = section_file.replace(\".md\", \"\")\n # Remove the numeric prefix for the template placeholder\n # e.g., \"00_header\" -> \"00_header\"\n with open(os.path.join(SECTIONS_DIR, section_file), 'r', encoding='utf-8') as f:\n section_data[name] = f.read()\n \n final_readme = template.format(**section_data)\n \n with open(OUTPUT_README, 'w', encoding='utf-8') as f:\n f.write(final_readme)\n print(f\"✅ Master README.md updated.\")\n\n # 3. Update project root README.md\n PROJECT_ROOT_README = \"../README.md\"\n if os.path.exists(PROJECT_ROOT_README):\n # We also need to replace emojis in the root README itself for consistency\n # although it should ideally be overwritten by the modular re-assembly\n with open(PROJECT_ROOT_README, 'w', encoding='utf-8') as f:\n f.write(final_readme)\n print(f\"✅ Project root README.md updated.\")\n\nif __name__ == \"__main__\":\n main()\n"},"result":[{"functionResponse":{"id":"write_file__write_file_1780833088665_0","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\replace_icons.py. Here is the updated code:\nimport os\r\nimport re\r\n\r\n# Configuration\r\nSECTIONS_DIR = \"sections\"\r\nOUTPUT_README = \"README.md\"\r\nEXCLUDE_FILES = [\"09_structure.md\"]\r\n\r\n# Icon Template (Lucide via Iconify)\r\n# Color: #E0E0E0 (light grey to match modern dark themes)\r\nICON_TEMPLATE = ''\r\n\r\n# Emoji to Lucide mapping\r\nEMOJI_MAP = {\r\n \"👁️\": \"eye\",\r\n \"🌓\": \"circle-dashed\",\r\n \"🏃\": \"run\",\r\n \"🏃‍♀️\": \"run\",\r\n \"🕸️\": \"settings\", # fallback\r\n \"🌐\": \"globe\",\r\n \"⚖️\": \"scale\",\r\n \"🚀\": \"rocket\",\r\n \"👥\": \"users\",\r\n \"📐\": \"ruler\",\r\n \"📂\": \"folder\",\r\n \"🤝\": \"handshake\",\r\n \"💖\": \"heart\",\r\n \"🎮\": \"gamepad-2\",\r\n \"🔄\": \"refresh-cw\",\r\n \"🧩\": \"puzzle\",\r\n \"🏗️\": \"building-2\",\r\n \"📍\": \"map-pin\",\r\n \"🧍\": \"user\",\r\n \"⌨️\": \"keyboard\",\r\n \"⚡\": \"zap\",\r\n \"🔊\": \"volume-2\",\r\n \"🤫\": \"volume-x\",\r\n \"🔦\": \"flashlight\",\r\n \"🔍\": \"search\",\r\n \"⚠️\": \"alert-triangle\",\r\n \"🖱️\": \"mouse\",\r\n \"🗺️\": \"map\",\r\n \"🛠️\": \"wrench\",\r\n \"🪤\": \"binary\", # trap fallback\r\n \"📡\": \"rss\",\r\n \"🚪\": \"door-closed\",\r\n \"👑\": \"crown\",\r\n \"📦\": \"package\",\r\n \"✉️\": \"mail\",\r\n \"📝\": \"file-text\",\r\n \"📣\": \"megaphone\",\r\n \"🔄\": \"refresh-cw\",\r\n \"🎞️\": \"film\",\r\n \"💔\": \"heart-off\",\r\n \"📊\": \"bar-chart-3\",\r\n \"🥉\": \"award\",\r\n \"🥈\": \"award\",\r\n \"🥇\": \"award\",\r\n \"🔥\": \"flame\",\r\n \"🎲\": \"dice-5\",\r\n \"✨\": \"sparkles\",\r\n \"🏁\": \"flag\",\r\n \"🏆\": \"trophy\",\r\n \"♻️\": \"rotate-ccw\",\r\n \"📈\": \"trending-up\",\r\n \"🥊\": \"swords\", # combat\r\n \"🎭\": \"masks-theater\",\r\n \"👟\": \"footprints\",\r\n \"🎢\": \"wind\",\r\n \"📉\": \"trending-down\",\r\n \"🆙\": \"arrow-up-circle\",\r\n \"💨\": \"wind\",\r\n \"🔒\": \"lock\",\r\n \"⚙️\": \"settings\",\r\n \"👟\": \"footprints\",\r\n \"💡\": \"lightbulb\",\r\n \"💎\": \"gem\",\r\n \"🐾\": \"footprints\",\r\n \"🌳\": \"tree-pine\",\r\n \"🧵\": \"layout-grid\",\r\n \"📖\": \"book-open\",\r\n \"🎬\": \"clapperboard\",\r\n \"🎨\": \"palette\",\r\n \"👸\": \"user\",\r\n \"💃\": \"user\",\r\n \"🔌\": \"plug\",\r\n \"🅰️\": \"type\",\r\n \"🏷️\": \"tag\",\r\n \"🌍\": \"globe\",\r\n \"🌸\": \"flower\",\r\n \"📜\": \"scroll\",\r\n \"🎥\": \"video\",\r\n \"🛠️\": \"wrench\",\r\n \"🚀\": \"rocket\",\r\n \"🤝\": \"handshake\",\r\n \"🤵\": \"user\",\r\n \"💰\": \"banknote\",\r\n \"☕\": \"coffee\",\r\n}\r\n\r\ndef get_icon_tag(emoji):\r\n icon_name = EMOJI_MAP.get(emoji)\r\n if icon_name:\r\n return ICON_TEMPLATE.format(name=icon_name)\r\n return emoji\r\n\r\ndef replace_emojis(text):\r\n # Regex to find emojis in the map\r\n pattern = re.compile(\"|\".join(re.escape(k) for k in EMOJI_MAP.keys()))\r\n \r\n def replacer(match):\r\n emoji = match.group(0)\r\n return get_icon_tag(emoji)\r\n \r\n return pattern.sub(replacer, text)\r\n\r\ndef process_file(file_path):\r\n with open(file_path, 'r', encoding='utf-8') as f:\r\n content = f.read()\r\n \r\n # Process content\r\n new_content = replace_emojis(content)\r\n \r\n # Special handling for Mermaid (Node names with quotes)\r\n # Mermaid nodes like A[\"Text\"] need the HTML to be clean\r\n # The current regex handles this since it's just a text replacement\r\n \r\n with open(file_path, 'w', encoding='utf-8') as f:\r\n f.write(new_content)\r\n print(f\"✅ Processed {file_path}\")\r\n\r\ndef main():\r\n # 1. Process all files in sections/ except excluded ones\r\n if not os.path.exists(SECTIONS_DIR):\r\n print(f\"❌ {SECTIONS_DIR} not found.\")\r\n return\r\n\r\n files = [f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\") and f not in EXCLUDE_FILES]\r\n for filename in sorted(files):\r\n process_file(os.path.join(SECTIONS_DIR, filename))\r\n\r\n # 2. Rebuild Master README.md\r\n print(\"🏗️ Rebuilding Master README.md...\")\r\n with open(\"README.md\", 'r', encoding='utf-8') as f:\r\n template = f.read()\r\n \r\n # List all sections again to ensure we get all content\r\n all_sections = sorted([f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\")])\r\n section_data = {}\r\n for section_file in all_sections:\r\n name = section_file.replace(\".md\", \"\")\r\n # Remove the numeric prefix for the template placeholder\r\n # e.g., \"00_header\" -> \"00_header\"\r\n with open(os.path.join(SECTIONS_DIR, section_file), 'r', encoding='utf-8') as f:\r\n section_data[name] = f.read()\r\n \r\n final_readme = template.format(**section_data)\r\n \r\n with open(OUTPUT_README, 'w', encoding='utf-8') as f:\r\n f.write(final_readme)\r\n print(f\"✅ Master README.md updated.\")\r\n\r\n # 3. Update project root README.md\r\n PROJECT_ROOT_README = \"../README.md\"\r\n if os.path.exists(PROJECT_ROOT_README):\r\n # We also need to replace emojis in the root README itself for consistency\r\n # although it should ideally be overwritten by the modular re-assembly\r\n with open(PROJECT_ROOT_README, 'w', encoding='utf-8') as f:\r\n f.write(final_readme)\r\n print(f\"✅ Project root README.md updated.\")\r\n\r\nif __name__ == \"__main__\":\r\n main()\r\n"}}}],"status":"success","timestamp":"2026-06-07T11:51:28.690Z","resultDisplay":{"fileDiff":"Index: replace_icons.py\n===================================================================\n--- replace_icons.py\tOriginal\n+++ replace_icons.py\tWritten\n@@ -0,0 +1,173 @@\n+import os\n+import re\n+\n+# Configuration\n+SECTIONS_DIR = \"sections\"\n+OUTPUT_README = \"README.md\"\n+EXCLUDE_FILES = [\"09_structure.md\"]\n+\n+# Icon Template (Lucide via Iconify)\n+# Color: #E0E0E0 (light grey to match modern dark themes)\n+ICON_TEMPLATE = ''\n+\n+# Emoji to Lucide mapping\n+EMOJI_MAP = {\n+ \"👁️\": \"eye\",\n+ \"🌓\": \"circle-dashed\",\n+ \"🏃\": \"run\",\n+ \"🏃‍♀️\": \"run\",\n+ \"🕸️\": \"settings\", # fallback\n+ \"🌐\": \"globe\",\n+ \"⚖️\": \"scale\",\n+ \"🚀\": \"rocket\",\n+ \"👥\": \"users\",\n+ \"📐\": \"ruler\",\n+ \"📂\": \"folder\",\n+ \"🤝\": \"handshake\",\n+ \"💖\": \"heart\",\n+ \"🎮\": \"gamepad-2\",\n+ \"🔄\": \"refresh-cw\",\n+ \"🧩\": \"puzzle\",\n+ \"🏗️\": \"building-2\",\n+ \"📍\": \"map-pin\",\n+ \"🧍\": \"user\",\n+ \"⌨️\": \"keyboard\",\n+ \"⚡\": \"zap\",\n+ \"🔊\": \"volume-2\",\n+ \"🤫\": \"volume-x\",\n+ \"🔦\": \"flashlight\",\n+ \"🔍\": \"search\",\n+ \"⚠️\": \"alert-triangle\",\n+ \"🖱️\": \"mouse\",\n+ \"🗺️\": \"map\",\n+ \"🛠️\": \"wrench\",\n+ \"🪤\": \"binary\", # trap fallback\n+ \"📡\": \"rss\",\n+ \"🚪\": \"door-closed\",\n+ \"👑\": \"crown\",\n+ \"📦\": \"package\",\n+ \"✉️\": \"mail\",\n+ \"📝\": \"file-text\",\n+ \"📣\": \"megaphone\",\n+ \"🔄\": \"refresh-cw\",\n+ \"🎞️\": \"film\",\n+ \"💔\": \"heart-off\",\n+ \"📊\": \"bar-chart-3\",\n+ \"🥉\": \"award\",\n+ \"🥈\": \"award\",\n+ \"🥇\": \"award\",\n+ \"🔥\": \"flame\",\n+ \"🎲\": \"dice-5\",\n+ \"✨\": \"sparkles\",\n+ \"🏁\": \"flag\",\n+ \"🏆\": \"trophy\",\n+ \"♻️\": \"rotate-ccw\",\n+ \"📈\": \"trending-up\",\n+ \"🥊\": \"swords\", # combat\n+ \"🎭\": \"masks-theater\",\n+ \"👟\": \"footprints\",\n+ \"🎢\": \"wind\",\n+ \"📉\": \"trending-down\",\n+ \"🆙\": \"arrow-up-circle\",\n+ \"💨\": \"wind\",\n+ \"🔒\": \"lock\",\n+ \"⚙️\": \"settings\",\n+ \"👟\": \"footprints\",\n+ \"💡\": \"lightbulb\",\n+ \"💎\": \"gem\",\n+ \"🐾\": \"footprints\",\n+ \"🌳\": \"tree-pine\",\n+ \"🧵\": \"layout-grid\",\n+ \"📖\": \"book-open\",\n+ \"🎬\": \"clapperboard\",\n+ \"🎨\": \"palette\",\n+ \"👸\": \"user\",\n+ \"💃\": \"user\",\n+ \"🔌\": \"plug\",\n+ \"🅰️\": \"type\",\n+ \"🏷️\": \"tag\",\n+ \"🌍\": \"globe\",\n+ \"🌸\": \"flower\",\n+ \"📜\": \"scroll\",\n+ \"🎥\": \"video\",\n+ \"🛠️\": \"wrench\",\n+ \"🚀\": \"rocket\",\n+ \"🤝\": \"handshake\",\n+ \"🤵\": \"user\",\n+ \"💰\": \"banknote\",\n+ \"☕\": \"coffee\",\n+}\n+\n+def get_icon_tag(emoji):\n+ icon_name = EMOJI_MAP.get(emoji)\n+ if icon_name:\n+ return ICON_TEMPLATE.format(name=icon_name)\n+ return emoji\n+\n+def replace_emojis(text):\n+ # Regex to find emojis in the map\n+ pattern = re.compile(\"|\".join(re.escape(k) for k in EMOJI_MAP.keys()))\n+ \n+ def replacer(match):\n+ emoji = match.group(0)\n+ return get_icon_tag(emoji)\n+ \n+ return pattern.sub(replacer, text)\n+\n+def process_file(file_path):\n+ with open(file_path, 'r', encoding='utf-8') as f:\n+ content = f.read()\n+ \n+ # Process content\n+ new_content = replace_emojis(content)\n+ \n+ # Special handling for Mermaid (Node names with quotes)\n+ # Mermaid nodes like A[\"Text\"] need the HTML to be clean\n+ # The current regex handles this since it's just a text replacement\n+ \n+ with open(file_path, 'w', encoding='utf-8') as f:\n+ f.write(new_content)\n+ print(f\"✅ Processed {file_path}\")\n+\n+def main():\n+ # 1. Process all files in sections/ except excluded ones\n+ if not os.path.exists(SECTIONS_DIR):\n+ print(f\"❌ {SECTIONS_DIR} not found.\")\n+ return\n+\n+ files = [f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\") and f not in EXCLUDE_FILES]\n+ for filename in sorted(files):\n+ process_file(os.path.join(SECTIONS_DIR, filename))\n+\n+ # 2. Rebuild Master README.md\n+ print(\"🏗️ Rebuilding Master README.md...\")\n+ with open(\"README.md\", 'r', encoding='utf-8') as f:\n+ template = f.read()\n+ \n+ # List all sections again to ensure we get all content\n+ all_sections = sorted([f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\")])\n+ section_data = {}\n+ for section_file in all_sections:\n+ name = section_file.replace(\".md\", \"\")\n+ # Remove the numeric prefix for the template placeholder\n+ # e.g., \"00_header\" -> \"00_header\"\n+ with open(os.path.join(SECTIONS_DIR, section_file), 'r', encoding='utf-8') as f:\n+ section_data[name] = f.read()\n+ \n+ final_readme = template.format(**section_data)\n+ \n+ with open(OUTPUT_README, 'w', encoding='utf-8') as f:\n+ f.write(final_readme)\n+ print(f\"✅ Master README.md updated.\")\n+\n+ # 3. Update project root README.md\n+ PROJECT_ROOT_README = \"../README.md\"\n+ if os.path.exists(PROJECT_ROOT_README):\n+ # We also need to replace emojis in the root README itself for consistency\n+ # although it should ideally be overwritten by the modular re-assembly\n+ with open(PROJECT_ROOT_README, 'w', encoding='utf-8') as f:\n+ f.write(final_readme)\n+ print(f\"✅ Project root README.md updated.\")\n+\n+if __name__ == \"__main__\":\n+ main()\n","fileName":"replace_icons.py","filePath":"D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\replace_icons.py","originalContent":"","newContent":"import os\nimport re\n\n# Configuration\nSECTIONS_DIR = \"sections\"\nOUTPUT_README = \"README.md\"\nEXCLUDE_FILES = [\"09_structure.md\"]\n\n# Icon Template (Lucide via Iconify)\n# Color: #E0E0E0 (light grey to match modern dark themes)\nICON_TEMPLATE = ''\n\n# Emoji to Lucide mapping\nEMOJI_MAP = {\n \"👁️\": \"eye\",\n \"🌓\": \"circle-dashed\",\n \"🏃\": \"run\",\n \"🏃‍♀️\": \"run\",\n \"🕸️\": \"settings\", # fallback\n \"🌐\": \"globe\",\n \"⚖️\": \"scale\",\n \"🚀\": \"rocket\",\n \"👥\": \"users\",\n \"📐\": \"ruler\",\n \"📂\": \"folder\",\n \"🤝\": \"handshake\",\n \"💖\": \"heart\",\n \"🎮\": \"gamepad-2\",\n \"🔄\": \"refresh-cw\",\n \"🧩\": \"puzzle\",\n \"🏗️\": \"building-2\",\n \"📍\": \"map-pin\",\n \"🧍\": \"user\",\n \"⌨️\": \"keyboard\",\n \"⚡\": \"zap\",\n \"🔊\": \"volume-2\",\n \"🤫\": \"volume-x\",\n \"🔦\": \"flashlight\",\n \"🔍\": \"search\",\n \"⚠️\": \"alert-triangle\",\n \"🖱️\": \"mouse\",\n \"🗺️\": \"map\",\n \"🛠️\": \"wrench\",\n \"🪤\": \"binary\", # trap fallback\n \"📡\": \"rss\",\n \"🚪\": \"door-closed\",\n \"👑\": \"crown\",\n \"📦\": \"package\",\n \"✉️\": \"mail\",\n \"📝\": \"file-text\",\n \"📣\": \"megaphone\",\n \"🔄\": \"refresh-cw\",\n \"🎞️\": \"film\",\n \"💔\": \"heart-off\",\n \"📊\": \"bar-chart-3\",\n \"🥉\": \"award\",\n \"🥈\": \"award\",\n \"🥇\": \"award\",\n \"🔥\": \"flame\",\n \"🎲\": \"dice-5\",\n \"✨\": \"sparkles\",\n \"🏁\": \"flag\",\n \"🏆\": \"trophy\",\n \"♻️\": \"rotate-ccw\",\n \"📈\": \"trending-up\",\n \"🥊\": \"swords\", # combat\n \"🎭\": \"masks-theater\",\n \"👟\": \"footprints\",\n \"🎢\": \"wind\",\n \"📉\": \"trending-down\",\n \"🆙\": \"arrow-up-circle\",\n \"💨\": \"wind\",\n \"🔒\": \"lock\",\n \"⚙️\": \"settings\",\n \"👟\": \"footprints\",\n \"💡\": \"lightbulb\",\n \"💎\": \"gem\",\n \"🐾\": \"footprints\",\n \"🌳\": \"tree-pine\",\n \"🧵\": \"layout-grid\",\n \"📖\": \"book-open\",\n \"🎬\": \"clapperboard\",\n \"🎨\": \"palette\",\n \"👸\": \"user\",\n \"💃\": \"user\",\n \"🔌\": \"plug\",\n \"🅰️\": \"type\",\n \"🏷️\": \"tag\",\n \"🌍\": \"globe\",\n \"🌸\": \"flower\",\n \"📜\": \"scroll\",\n \"🎥\": \"video\",\n \"🛠️\": \"wrench\",\n \"🚀\": \"rocket\",\n \"🤝\": \"handshake\",\n \"🤵\": \"user\",\n \"💰\": \"banknote\",\n \"☕\": \"coffee\",\n}\n\ndef get_icon_tag(emoji):\n icon_name = EMOJI_MAP.get(emoji)\n if icon_name:\n return ICON_TEMPLATE.format(name=icon_name)\n return emoji\n\ndef replace_emojis(text):\n # Regex to find emojis in the map\n pattern = re.compile(\"|\".join(re.escape(k) for k in EMOJI_MAP.keys()))\n \n def replacer(match):\n emoji = match.group(0)\n return get_icon_tag(emoji)\n \n return pattern.sub(replacer, text)\n\ndef process_file(file_path):\n with open(file_path, 'r', encoding='utf-8') as f:\n content = f.read()\n \n # Process content\n new_content = replace_emojis(content)\n \n # Special handling for Mermaid (Node names with quotes)\n # Mermaid nodes like A[\"Text\"] need the HTML to be clean\n # The current regex handles this since it's just a text replacement\n \n with open(file_path, 'w', encoding='utf-8') as f:\n f.write(new_content)\n print(f\"✅ Processed {file_path}\")\n\ndef main():\n # 1. Process all files in sections/ except excluded ones\n if not os.path.exists(SECTIONS_DIR):\n print(f\"❌ {SECTIONS_DIR} not found.\")\n return\n\n files = [f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\") and f not in EXCLUDE_FILES]\n for filename in sorted(files):\n process_file(os.path.join(SECTIONS_DIR, filename))\n\n # 2. Rebuild Master README.md\n print(\"🏗️ Rebuilding Master README.md...\")\n with open(\"README.md\", 'r', encoding='utf-8') as f:\n template = f.read()\n \n # List all sections again to ensure we get all content\n all_sections = sorted([f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\")])\n section_data = {}\n for section_file in all_sections:\n name = section_file.replace(\".md\", \"\")\n # Remove the numeric prefix for the template placeholder\n # e.g., \"00_header\" -> \"00_header\"\n with open(os.path.join(SECTIONS_DIR, section_file), 'r', encoding='utf-8') as f:\n section_data[name] = f.read()\n \n final_readme = template.format(**section_data)\n \n with open(OUTPUT_README, 'w', encoding='utf-8') as f:\n f.write(final_readme)\n print(f\"✅ Master README.md updated.\")\n\n # 3. Update project root README.md\n PROJECT_ROOT_README = \"../README.md\"\n if os.path.exists(PROJECT_ROOT_README):\n # We also need to replace emojis in the root README itself for consistency\n # although it should ideally be overwritten by the modular re-assembly\n with open(PROJECT_ROOT_README, 'w', encoding='utf-8') as f:\n f.write(final_readme)\n print(f\"✅ Project root README.md updated.\")\n\nif __name__ == \"__main__\":\n main()\n","diffStat":{"model_added_lines":173,"model_removed_lines":0,"model_added_chars":4681,"model_removed_chars":0,"user_added_lines":0,"user_removed_lines":0,"user_added_chars":0,"user_removed_chars":0},"isNewFile":true},"description":"Writing to BABA_YAGA_Updater\\replace_icons.py","displayName":"WriteFile","renderOutputAsMarkdown":true}]} +{"id":"951f0eed-60f8-48f4-a411-d5a15fddb75f","timestamp":"2026-06-07T11:51:29.095Z","type":"user","content":[{"functionResponse":{"id":"write_file__write_file_1780833088665_0","name":"write_file","response":{"output":"Successfully created and wrote to new file: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\\replace_icons.py. Here is the updated code:\nimport os\r\nimport re\r\n\r\n# Configuration\r\nSECTIONS_DIR = \"sections\"\r\nOUTPUT_README = \"README.md\"\r\nEXCLUDE_FILES = [\"09_structure.md\"]\r\n\r\n# Icon Template (Lucide via Iconify)\r\n# Color: #E0E0E0 (light grey to match modern dark themes)\r\nICON_TEMPLATE = ''\r\n\r\n# Emoji to Lucide mapping\r\nEMOJI_MAP = {\r\n \"👁️\": \"eye\",\r\n \"🌓\": \"circle-dashed\",\r\n \"🏃\": \"run\",\r\n \"🏃‍♀️\": \"run\",\r\n \"🕸️\": \"settings\", # fallback\r\n \"🌐\": \"globe\",\r\n \"⚖️\": \"scale\",\r\n \"🚀\": \"rocket\",\r\n \"👥\": \"users\",\r\n \"📐\": \"ruler\",\r\n \"📂\": \"folder\",\r\n \"🤝\": \"handshake\",\r\n \"💖\": \"heart\",\r\n \"🎮\": \"gamepad-2\",\r\n \"🔄\": \"refresh-cw\",\r\n \"🧩\": \"puzzle\",\r\n \"🏗️\": \"building-2\",\r\n \"📍\": \"map-pin\",\r\n \"🧍\": \"user\",\r\n \"⌨️\": \"keyboard\",\r\n \"⚡\": \"zap\",\r\n \"🔊\": \"volume-2\",\r\n \"🤫\": \"volume-x\",\r\n \"🔦\": \"flashlight\",\r\n \"🔍\": \"search\",\r\n \"⚠️\": \"alert-triangle\",\r\n \"🖱️\": \"mouse\",\r\n \"🗺️\": \"map\",\r\n \"🛠️\": \"wrench\",\r\n \"🪤\": \"binary\", # trap fallback\r\n \"📡\": \"rss\",\r\n \"🚪\": \"door-closed\",\r\n \"👑\": \"crown\",\r\n \"📦\": \"package\",\r\n \"✉️\": \"mail\",\r\n \"📝\": \"file-text\",\r\n \"📣\": \"megaphone\",\r\n \"🔄\": \"refresh-cw\",\r\n \"🎞️\": \"film\",\r\n \"💔\": \"heart-off\",\r\n \"📊\": \"bar-chart-3\",\r\n \"🥉\": \"award\",\r\n \"🥈\": \"award\",\r\n \"🥇\": \"award\",\r\n \"🔥\": \"flame\",\r\n \"🎲\": \"dice-5\",\r\n \"✨\": \"sparkles\",\r\n \"🏁\": \"flag\",\r\n \"🏆\": \"trophy\",\r\n \"♻️\": \"rotate-ccw\",\r\n \"📈\": \"trending-up\",\r\n \"🥊\": \"swords\", # combat\r\n \"🎭\": \"masks-theater\",\r\n \"👟\": \"footprints\",\r\n \"🎢\": \"wind\",\r\n \"📉\": \"trending-down\",\r\n \"🆙\": \"arrow-up-circle\",\r\n \"💨\": \"wind\",\r\n \"🔒\": \"lock\",\r\n \"⚙️\": \"settings\",\r\n \"👟\": \"footprints\",\r\n \"💡\": \"lightbulb\",\r\n \"💎\": \"gem\",\r\n \"🐾\": \"footprints\",\r\n \"🌳\": \"tree-pine\",\r\n \"🧵\": \"layout-grid\",\r\n \"📖\": \"book-open\",\r\n \"🎬\": \"clapperboard\",\r\n \"🎨\": \"palette\",\r\n \"👸\": \"user\",\r\n \"💃\": \"user\",\r\n \"🔌\": \"plug\",\r\n \"🅰️\": \"type\",\r\n \"🏷️\": \"tag\",\r\n \"🌍\": \"globe\",\r\n \"🌸\": \"flower\",\r\n \"📜\": \"scroll\",\r\n \"🎥\": \"video\",\r\n \"🛠️\": \"wrench\",\r\n \"🚀\": \"rocket\",\r\n \"🤝\": \"handshake\",\r\n \"🤵\": \"user\",\r\n \"💰\": \"banknote\",\r\n \"☕\": \"coffee\",\r\n}\r\n\r\ndef get_icon_tag(emoji):\r\n icon_name = EMOJI_MAP.get(emoji)\r\n if icon_name:\r\n return ICON_TEMPLATE.format(name=icon_name)\r\n return emoji\r\n\r\ndef replace_emojis(text):\r\n # Regex to find emojis in the map\r\n pattern = re.compile(\"|\".join(re.escape(k) for k in EMOJI_MAP.keys()))\r\n \r\n def replacer(match):\r\n emoji = match.group(0)\r\n return get_icon_tag(emoji)\r\n \r\n return pattern.sub(replacer, text)\r\n\r\ndef process_file(file_path):\r\n with open(file_path, 'r', encoding='utf-8') as f:\r\n content = f.read()\r\n \r\n # Process content\r\n new_content = replace_emojis(content)\r\n \r\n # Special handling for Mermaid (Node names with quotes)\r\n # Mermaid nodes like A[\"Text\"] need the HTML to be clean\r\n # The current regex handles this since it's just a text replacement\r\n \r\n with open(file_path, 'w', encoding='utf-8') as f:\r\n f.write(new_content)\r\n print(f\"✅ Processed {file_path}\")\r\n\r\ndef main():\r\n # 1. Process all files in sections/ except excluded ones\r\n if not os.path.exists(SECTIONS_DIR):\r\n print(f\"❌ {SECTIONS_DIR} not found.\")\r\n return\r\n\r\n files = [f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\") and f not in EXCLUDE_FILES]\r\n for filename in sorted(files):\r\n process_file(os.path.join(SECTIONS_DIR, filename))\r\n\r\n # 2. Rebuild Master README.md\r\n print(\"🏗️ Rebuilding Master README.md...\")\r\n with open(\"README.md\", 'r', encoding='utf-8') as f:\r\n template = f.read()\r\n \r\n # List all sections again to ensure we get all content\r\n all_sections = sorted([f for f in os.listdir(SECTIONS_DIR) if f.endswith(\".md\")])\r\n section_data = {}\r\n for section_file in all_sections:\r\n name = section_file.replace(\".md\", \"\")\r\n # Remove the numeric prefix for the template placeholder\r\n # e.g., \"00_header\" -> \"00_header\"\r\n with open(os.path.join(SECTIONS_DIR, section_file), 'r', encoding='utf-8') as f:\r\n section_data[name] = f.read()\r\n \r\n final_readme = template.format(**section_data)\r\n \r\n with open(OUTPUT_README, 'w', encoding='utf-8') as f:\r\n f.write(final_readme)\r\n print(f\"✅ Master README.md updated.\")\r\n\r\n # 3. Update project root README.md\r\n PROJECT_ROOT_README = \"../README.md\"\r\n if os.path.exists(PROJECT_ROOT_README):\r\n # We also need to replace emojis in the root README itself for consistency\r\n # although it should ideally be overwritten by the modular re-assembly\r\n with open(PROJECT_ROOT_README, 'w', encoding='utf-8') as f:\r\n f.write(final_readme)\r\n print(f\"✅ Project root README.md updated.\")\r\n\r\nif __name__ == \"__main__\":\r\n main()\r\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:29.096Z"}} +{"id":"c77b9c93-291f-4b15-b1a1-8031fc0ba239","timestamp":"2026-06-07T11:51:31.391Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":79997,"output":61,"cached":75790,"thoughts":0,"tool":0,"total":80058},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:31.392Z"}} +{"id":"c77b9c93-291f-4b15-b1a1-8031fc0ba239","timestamp":"2026-06-07T11:51:31.391Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":79997,"output":61,"cached":75790,"thoughts":0,"tool":0,"total":80058},"model":"gemini-3-flash-preview","toolCalls":[{"id":"run_shell_command__run_shell_command_1780833091187_0","name":"run_shell_command","args":{"dir_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater","command":"python replace_icons.py","description":"Execute icon replacement script."},"result":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780833091187_0","name":"run_shell_command","response":{"output":"Output: \n✅ Processed sections\\00_header.md\n✅ Processed sections\\01_vision.md\n✅ Processed sections\\02_mechanics.md\n✅ Processed sections\\03_architecture.md\n✅ Processed sections\\04_maze.md\n✅ Processed sections\\05_networking.md\n✅ Processed sections\\06_comeback.md\n✅ Processed sections\\07_roadmap.md\n✅ Processed sections\\08_team_standards.md\n✅ Processed sections\\10_footer.md\n🏗️ Rebuilding Master README.md...\n✅ Master README.md updated.\n✅ Project root README.md updated.\nProcess Group PGID: 29804"}}}],"status":"success","timestamp":"2026-06-07T11:51:43.884Z","resultDisplay":[[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\00_header.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\01_vision.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\02_mechanics.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\03_architecture.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\04_maze.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\05_networking.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\06_comeback.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\07_roadmap.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\08_team_standards.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Processed sections\\10_footer.md ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"🏗️ Rebuilding Master README.md... ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Master README.md updated. ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"✅ Project root README.md updated. ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":true,"isUninitialized":true,"fg":"","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}]],"description":"python replace_icons.py","displayName":"Shell","renderOutputAsMarkdown":false}]} +{"id":"3d2fd312-8e7a-4f16-8266-e0d141acdf10","timestamp":"2026-06-07T11:51:43.885Z","type":"user","content":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780833091187_0","name":"run_shell_command","response":{"output":"Output: \n✅ Processed sections\\00_header.md\n✅ Processed sections\\01_vision.md\n✅ Processed sections\\02_mechanics.md\n✅ Processed sections\\03_architecture.md\n✅ Processed sections\\04_maze.md\n✅ Processed sections\\05_networking.md\n✅ Processed sections\\06_comeback.md\n✅ Processed sections\\07_roadmap.md\n✅ Processed sections\\08_team_standards.md\n✅ Processed sections\\10_footer.md\n🏗️ Rebuilding Master README.md...\n✅ Master README.md updated.\n✅ Project root README.md updated.\nProcess Group PGID: 29804"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:43.885Z"}} +{"id":"3e1cb356-66ff-4b86-bae6-3768c043e191","timestamp":"2026-06-07T11:51:46.534Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":80219,"output":174,"cached":79760,"thoughts":0,"tool":0,"total":80393},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:46.534Z"}} +{"id":"3e1cb356-66ff-4b86-bae6-3768c043e191","timestamp":"2026-06-07T11:51:46.534Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":80219,"output":174,"cached":79760,"thoughts":0,"tool":0,"total":80393},"model":"gemini-3-flash-preview","toolCalls":[{"id":"update_topic__update_topic_1780833106397_0","name":"update_topic","args":{"summary":"I have successfully executed the 'replace_icons.py' script, which processed the documentation sections and updated both the master 'README.md' and the project's root 'README.md'. I am now proceeding to verify the results by examining several key files, such as '01_vision.md' and the root 'README.md', to confirm that the Unicode emojis have been correctly replaced with the designated 'Lucide' icon HTML tags. This verification step is crucial to ensure that the documentation's new visual style is consistent and that no unintended formatting issues were introduced during the automated replacement process.","title":"Verifying Icon Replacement Results","strategic_intent":"Verifying the successful replacement of emojis with Lucide icons in the project's documentation."},"result":[{"functionResponse":{"id":"update_topic__update_topic_1780833106397_0","name":"update_topic","response":{"output":"Current topic: \"Verifying Icon Replacement Results\"\nTopic summary: I have successfully executed the 'replace_icons.py' script, which processed the documentation sections and updated both the master 'README.md' and the project's root 'README.md'. I am now proceeding to verify the results by examining several key files, such as '01_vision.md' and the root 'README.md', to confirm that the Unicode emojis have been correctly replaced with the designated 'Lucide' icon HTML tags. This verification step is crucial to ensure that the documentation's new visual style is consistent and that no unintended formatting issues were introduced during the automated replacement process.\n\nStrategic Intent: Verifying the successful replacement of emojis with Lucide icons in the project's documentation."}}}],"status":"success","timestamp":"2026-06-07T11:51:46.536Z","resultDisplay":"## 📂 Topic: **Verifying Icon Replacement Results**\n\n**Summary:**\nI have successfully executed the 'replace_icons.py' script, which processed the documentation sections and updated both the master 'README.md' and the project's root 'README.md'. I am now proceeding to verify the results by examining several key files, such as '01_vision.md' and the root 'README.md', to confirm that the Unicode emojis have been correctly replaced with the designated 'Lucide' icon HTML tags. This verification step is crucial to ensure that the documentation's new visual style is consistent and that no unintended formatting issues were introduced during the automated replacement process.\n\n> [!STRATEGY]\n> **Intent:** Verifying the successful replacement of emojis with Lucide icons in the project's documentation.","description":"Update topic to: \"Verifying Icon Replacement Results\"","displayName":"Update Topic Context","renderOutputAsMarkdown":true}]} +{"id":"bb7d87d2-1874-4e4c-94b4-41a488d7f3f0","timestamp":"2026-06-07T11:51:46.537Z","type":"user","content":[{"functionResponse":{"id":"update_topic__update_topic_1780833106397_0","name":"update_topic","response":{"output":"Current topic: \"Verifying Icon Replacement Results\"\nTopic summary: I have successfully executed the 'replace_icons.py' script, which processed the documentation sections and updated both the master 'README.md' and the project's root 'README.md'. I am now proceeding to verify the results by examining several key files, such as '01_vision.md' and the root 'README.md', to confirm that the Unicode emojis have been correctly replaced with the designated 'Lucide' icon HTML tags. This verification step is crucial to ensure that the documentation's new visual style is consistent and that no unintended formatting issues were introduced during the automated replacement process.\n\nStrategic Intent: Verifying the successful replacement of emojis with Lucide icons in the project's documentation."}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:46.537Z"}} +{"id":"68d01407-cfee-4a90-9848-8bdf1a02cd96","timestamp":"2026-06-07T11:51:48.834Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":80546,"output":47,"cached":79743,"thoughts":0,"tool":0,"total":80593},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:48.835Z"}} +{"id":"68d01407-cfee-4a90-9848-8bdf1a02cd96","timestamp":"2026-06-07T11:51:48.834Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":80546,"output":47,"cached":79743,"thoughts":0,"tool":0,"total":80593},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780833108618_0","name":"read_file","args":{"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/sections/01_vision.md"},"result":[{"functionResponse":{"id":"read_file__read_file_1780833108618_0","name":"read_file","response":{"output":"## Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n"}}}],"status":"success","timestamp":"2026-06-07T11:51:48.845Z","resultDisplay":"","description":"BABA_YAGA_Updater\\...\\01_vision.md","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"20ca6f9f-9512-4f7a-92a4-7a7dbe60cf4b","timestamp":"2026-06-07T11:51:48.846Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780833108618_0","name":"read_file","response":{"output":"## Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:48.847Z"}} +{"id":"68a37a58-0c1e-4257-9cb1-ad43c88bd72f","timestamp":"2026-06-07T11:51:51.241Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":80797,"output":48,"cached":79733,"thoughts":0,"tool":0,"total":80845},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:51.242Z"}} +{"id":"68a37a58-0c1e-4257-9cb1-ad43c88bd72f","timestamp":"2026-06-07T11:51:51.241Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":80797,"output":48,"cached":79733,"thoughts":0,"tool":0,"total":80845},"model":"gemini-3-flash-preview","toolCalls":[{"id":"read_file__read_file_1780833111041_0","name":"read_file","args":{"start_line":1,"end_line":100,"file_path":"D:/Learning_Progress/Projects/BABA_YAGA/README.md"},"result":[{"functionResponse":{"id":"read_file__read_file_1780833111041_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 1-100 of 579 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 101.\n\n--- FILE CONTENT (truncated) ---\n# README Template (Source of Truth)\n\nThis file serves as the master template for the project's root README.md. \nSections are modularized in the `sections/` directory.\n\n# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \n\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\n\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\n\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\n\n---\n\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\n\n\n---\n\n## Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n\n\n---\n\n## Cơ chế Trò chơi (Core Mechanics)\n\n### Sự bất đối xứng (The Asymmetry)\n\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\n| :--- | :--- | :--- |\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\n\n### Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style cho các nhóm\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\n\n %% Phase 1: Initialization\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\n A[\" Bắt đầu Trận đấu\"] --> B{\" Matchmaking
(Photon Fusion)\"}\n B --> C[\" Phân vai: Seeker vs Trapper\"]\n C --> D[\" Maze Generator
(Prims/Wilsons)\"]\n D --> E[\" Baking NavMesh & Colliders\"]\n E --> F[\" Character Auto-Setup\"]\n F --> G[\" Spawn Players\"]\n end\n class Initialization,A,B,C,D,E,F,G initStyle;\n\n %% Phase 2: Core Loop\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\n G --> Loop((TICK: FixedUpdateNetwork))\n \n %% Seeker Branch\n subgraph Seeker_Logic [\" SEEKER (POV 1st)\"]\n S1[\" Input: WASD/Space\"] --> S2[\" State: Move/Dash\"]\n S2 --> S3{\" Hành động?\"}\n S3 -- \"Sprinting\" --> S4[\" Noise Up\"]\n S3 -- \"Sneaking\" --> S5[\" Noise Down\"]\n S3 -- \"Flashlight\" --> S6[\" Lộ vị trí\"]\n \n S4 & S5 & S6 --> S_Check{\" Check Env\"}\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\" Bị khống chế\"]\n end\n\n %% Trapper Branch\n subgraph Trapper_Logic [\" TRAPPER (STRATEGY)\"]\n T1[\" Mouse Input\"] --> T2[\" View: Heatmap/Cams\"]\n T2 --> T3{\" Kỹ năng?\"}\n T3 -- \"Đặt bẫy\" --> T4[\" Sync Trap\"]\n T3 -- \"Scan\" --> T5[\" Ping Seeker\"]\n T3 -- \"Lock\" --> T6[\" Khóa cửa\"]"}}}],"status":"success","timestamp":"2026-06-07T11:51:51.250Z","resultDisplay":"Read lines 1-100 of 579 from README.md","description":"README.md","displayName":"ReadFile","renderOutputAsMarkdown":true}]} +{"id":"d8f0096a-93bd-4982-becb-2f6bdd46ed82","timestamp":"2026-06-07T11:51:51.251Z","type":"user","content":[{"functionResponse":{"id":"read_file__read_file_1780833111041_0","name":"read_file","response":{"output":"\nIMPORTANT: The file content has been truncated.\nStatus: Showing lines 1-100 of 579 total lines.\nAction: To read more of the file, you can use the 'start_line' and 'end_line' parameters in a subsequent 'read_file' call. For example, to read the next section of the file, use start_line: 101.\n\n--- FILE CONTENT (truncated) ---\n# README Template (Source of Truth)\n\nThis file serves as the master template for the project's root README.md. \nSections are modularized in the `sections/` directory.\n\n# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) \n\n[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/)\n[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion)\n[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT)\n\n> **\"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người.\"**\n\n**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống.\n\n---\n\n## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white)\n1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision)\n2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics)\n3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture)\n4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation)\n5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking)\n6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system)\n7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap)\n8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure)\n9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation)\n\n\n---\n\n## Tầm nhìn Dự án (Project Vision)\n\n![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH)\n\nDự án hướng tới việc tạo ra một trải nghiệm **\"High-Stakes Hide & Seek\"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**.\n* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường.\n* **Spatial Audio:** Âm thanh là \"bản đồ\" thứ hai.\n* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình.\n\n\n---\n\n## Cơ chế Trò chơi (Core Mechanics)\n\n### Sự bất đối xứng (The Asymmetry)\n\n| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) |\n| :--- | :--- | :--- |\n| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. |\n| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. |\n| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. |\n| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. |\n\n### Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture)\n\n```mermaid\ngraph TD\n %% Định nghĩa Style cho các nhóm\n classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b;\n classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100;\n classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c;\n classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238;\n classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20;\n classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c;\n\n %% Phase 1: Initialization\n subgraph Initialization [\"1. KHỞI TẠO HỆ THỐNG (NET-SYNC)\"]\n A[\" Bắt đầu Trận đấu\"] --> B{\" Matchmaking
(Photon Fusion)\"}\n B --> C[\" Phân vai: Seeker vs Trapper\"]\n C --> D[\" Maze Generator
(Prims/Wilsons)\"]\n D --> E[\" Baking NavMesh & Colliders\"]\n E --> F[\" Character Auto-Setup\"]\n F --> G[\" Spawn Players\"]\n end\n class Initialization,A,B,C,D,E,F,G initStyle;\n\n %% Phase 2: Core Loop\n subgraph Active_Round [\"2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)\"]\n G --> Loop((TICK: FixedUpdateNetwork))\n \n %% Seeker Branch\n subgraph Seeker_Logic [\" SEEKER (POV 1st)\"]\n S1[\" Input: WASD/Space\"] --> S2[\" State: Move/Dash\"]\n S2 --> S3{\" Hành động?\"}\n S3 -- \"Sprinting\" --> S4[\" Noise Up\"]\n S3 -- \"Sneaking\" --> S5[\" Noise Down\"]\n S3 -- \"Flashlight\" --> S6[\" Lộ vị trí\"]\n \n S4 & S5 & S6 --> S_Check{\" Check Env\"}\n S_Check -- \"Dẫm bẫy\" --> S_Trap[\" Bị khống chế\"]\n end\n\n %% Trapper Branch\n subgraph Trapper_Logic [\" TRAPPER (STRATEGY)\"]\n T1[\" Mouse Input\"] --> T2[\" View: Heatmap/Cams\"]\n T2 --> T3{\" Kỹ năng?\"}\n T3 -- \"Đặt bẫy\" --> T4[\" Sync Trap\"]\n T3 -- \"Scan\" --> T5[\" Ping Seeker\"]\n T3 -- \"Lock\" --> T6[\" Khóa cửa\"]"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:51.252Z"}} +{"id":"4e923989-c30a-4744-98a6-102da4cb98a7","timestamp":"2026-06-07T11:51:53.220Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":84046,"output":57,"cached":79795,"thoughts":0,"tool":0,"total":84103},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:53.221Z"}} +{"id":"4e923989-c30a-4744-98a6-102da4cb98a7","timestamp":"2026-06-07T11:51:53.220Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":84046,"output":57,"cached":79795,"thoughts":0,"tool":0,"total":84103},"model":"gemini-3-flash-preview","toolCalls":[{"id":"run_shell_command__run_shell_command_1780833113076_0","name":"run_shell_command","args":{"description":"Check if the script still exists.","command":"ls D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/replace_icons.py"},"result":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780833113076_0","name":"run_shell_command","response":{"output":"Output: \n\n\n Directory: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\n\n\nMode LastWriteTime Length Name\n---- ------------- ------ ----\n-a---- 6/7/2026 6:51 PM 5245 replace_icons.py\nProcess Group PGID: 7104"}}}],"status":"success","timestamp":"2026-06-07T11:51:56.400Z","resultDisplay":[[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" Directory: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"Mode LastWriteTime Length Name ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"---- ------------- ------ ---- ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":"-a---- 6/7/2026 6:51 PM 5245 replace_icons.py ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":true,"isUninitialized":true,"fg":"","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}]],"description":"ls D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/replace_icons.py","displayName":"Shell","renderOutputAsMarkdown":false}]} +{"id":"b7e6e6e6-5bc7-46e3-b3a9-4f58b2b624ea","timestamp":"2026-06-07T11:51:56.401Z","type":"user","content":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780833113076_0","name":"run_shell_command","response":{"output":"Output: \n\n\n Directory: D:\\Learning_Progress\\Projects\\BABA_YAGA\\BABA_YAGA_Updater\n\n\nMode LastWriteTime Length Name\n---- ------------- ------ ----\n-a---- 6/7/2026 6:51 PM 5245 replace_icons.py\nProcess Group PGID: 7104"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:51:56.402Z"}} +{"id":"3c52235f-fcdb-4dbb-83ac-9e54ad94e64b","timestamp":"2026-06-07T11:51:58.277Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":84186,"output":54,"cached":83767,"thoughts":0,"tool":0,"total":84240},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:51:58.277Z"}} +{"id":"3c52235f-fcdb-4dbb-83ac-9e54ad94e64b","timestamp":"2026-06-07T11:51:58.277Z","type":"gemini","content":"","thoughts":[],"tokens":{"input":84186,"output":54,"cached":83767,"thoughts":0,"tool":0,"total":84240},"model":"gemini-3-flash-preview","toolCalls":[{"id":"run_shell_command__run_shell_command_1780833118130_0","name":"run_shell_command","args":{"description":"Cleanup automation script.","command":"rm D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/replace_icons.py"},"result":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780833118130_0","name":"run_shell_command","response":{"output":"Output: (empty)\nProcess Group PGID: 37520"}}}],"status":"success","timestamp":"2026-06-07T11:52:18.335Z","resultDisplay":[[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}],[{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":true,"isUninitialized":true,"fg":"","bg":""},{"text":" ","bold":false,"italic":false,"underline":false,"dim":false,"inverse":false,"isUninitialized":true,"fg":"","bg":""}]],"description":"rm D:/Learning_Progress/Projects/BABA_YAGA/BABA_YAGA_Updater/replace_icons.py","displayName":"Shell","renderOutputAsMarkdown":false}]} +{"id":"cbbda247-cfa5-4522-9425-0ca19963d335","timestamp":"2026-06-07T11:52:18.336Z","type":"user","content":[{"functionResponse":{"id":"run_shell_command__run_shell_command_1780833118130_0","name":"run_shell_command","response":{"output":"Output: (empty)\nProcess Group PGID: 37520"}}}]} +{"$set":{"lastUpdated":"2026-06-07T11:52:18.336Z"}} +{"id":"10359bc6-1da2-4158-8aa2-8e8be2f50e88","timestamp":"2026-06-07T11:52:21.532Z","type":"gemini","content":"I've replaced all system emojis with the **Lucide** online icon set (using light-grey SVGs from Iconify) across all sections and the main README.\n\n**Summary of Work:**\n1. **Automation:** Developed and ran a Python script to surgically replace over 50 unique emoji types.\n2. **Mermaid Support:** Correctly formatted icons within Mermaid flowcharts and sequence diagrams.\n3. **Consistency:** Updated both the modular `sections/` and the re-assembled root `README.md`.\n4. **Exclusions:** Per your request, `09_structure.md` was ignored so you can handle its code block conversion manually.\n\n**Next Steps:**\n- Check `01_vision.md` or the root `README.md` to see the new look.\n- You can now proceed with your manual edits to the project structure in `09_structure.md`.\n\nTopic: **Modularization Task Completion**\nI've finalized the documentation upgrade. The README is now modular, professional, and features a modern iconography system.","thoughts":[],"tokens":{"input":84256,"output":230,"cached":83747,"thoughts":0,"tool":0,"total":84486},"model":"gemini-3-flash-preview"} +{"$set":{"lastUpdated":"2026-06-07T11:52:21.533Z"}} diff --git a/.gemini-workspace-history/session-2026-06-07-18-23.json.gz b/.gemini-workspace-history/session-2026-06-07-18-23.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..3997b1f1e63a1b290fdafcb0f79816842a607e5f GIT binary patch literal 109703 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�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 literal 0 HcmV?d00001 diff --git a/.gemini-workspace-history/session-2026-06-07-18-27.json.gz b/.gemini-workspace-history/session-2026-06-07-18-27.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..b6985de49c7c79861b8782482f0c93eb0fb9694c GIT binary patch literal 419305 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�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

9i)9wXWh3O@a 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

lSM7t+K_A}P6 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�x|aTBX9zR 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≻M^E4{je$S+%#c#)Gmhm%hXx@PH}T?# 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 Ux9O|3hev>toKNZ)TRy=50AqwhkpKVy literal 0 HcmV?d00001 diff --git a/.gemini-workspace-history/session-2026-06-07-18-37.json.gz b/.gemini-workspace-history/session-2026-06-07-18-37.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..5c947e928b0d71ce39b9a410aab1dbb9a42a50fd GIT binary patch literal 31773 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

$~x#?-yD;f>OTDBT9GsKvcnPkk8 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 YoPsZORvLJWOV0!;TllqD@>od!3&}GWYXATM literal 0 HcmV?d00001 diff --git a/.gemini-workspace-history/session-2026-06-07-19-27.json.gz b/.gemini-workspace-history/session-2026-06-07-19-27.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb32eb7469f6d920750d231d98e3a7c134db93a4 GIT binary patch literal 13662 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 literal 0 HcmV?d00001 diff --git a/.idea/.idea.BABA_YAGA/.idea/workspace.xml b/.idea/.idea.BABA_YAGA/.idea/workspace.xml index 817b6f19..d4e44f4e 100644 --- a/.idea/.idea.BABA_YAGA/.idea/workspace.xml +++ b/.idea/.idea.BABA_YAGA/.idea/workspace.xml @@ -5,8 +5,8 @@ + - diff --git a/BABA_YAGA_Updater/.env.example b/BABA_YAGA_Updater/.env.example deleted file mode 100644 index 235dbb25..00000000 --- a/BABA_YAGA_Updater/.env.example +++ /dev/null @@ -1,5 +0,0 @@ -SPREADSHEET_ID=your_spreadsheet_id_here -SHEET_RANGE=Sheet1!A2:E -CREDENTIALS_FILE=credentials.json -TOKEN_FILE=token.json -README_PATH=../README.md diff --git a/BABA_YAGA_Updater/.gemini-workspace-history/active-context.md b/BABA_YAGA_Updater/.gemini-workspace-history/active-context.md new file mode 100644 index 00000000..5b572ad1 --- /dev/null +++ b/BABA_YAGA_Updater/.gemini-workspace-history/active-context.md @@ -0,0 +1 @@ +No previous session history found for this workspace. \ No newline at end of file diff --git a/BABA_YAGA_Updater/README.md b/BABA_YAGA_Updater/README.md new file mode 100644 index 00000000..57d179f6 --- /dev/null +++ b/BABA_YAGA_Updater/README.md @@ -0,0 +1,578 @@ +# README Template (Source of Truth) + +This file serves as the master template for the project's root README.md. +Sections are modularized in the `sections/` directory. + +# ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) + +[![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/) +[![Photon Fusion](https://img.shields.io/badge/Networking-Photon_Fusion-blue?style=flat-square)](https://www.photonengine.com/fusion) +[![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square)](https://opensource.org/licenses/MIT) + +> **"Trong bóng tối của sự ảo giác, thị giác là công cụ mạnh mẽ nhất, nhưng sự tin tưởng lại là sai lầm chết người."** + +**BABA_YAGA** là một dự án game PvP không đối xứng (Asymmetric PvP) đỉnh cao, nơi người chơi bước vào một cuộc đấu trí căng thẳng trong mê cung bóng tối. Một người nắm giữ **Ánh sáng (Seeker)**, người kia điều khiển **Cạm bẫy (Trapper)**. Đây không chỉ là trò chơi trốn tìm, đây là cuộc chiến về tâm lý và khả năng đọc tình huống. + +--- + +## ![Docs](https://img.shields.io/badge/--Mục_lục-black?style=flat-square&logo=read-the-docs&logoColor=white) +1. [Tầm nhìn Dự án (Project Vision)](#-tầm-nhìn-dự-án-project-vision) +2. [Cơ chế Trò chơi (Core Mechanics)](#-cơ-chế-trò-chơi-core-mechanics) +3. [Kiến trúc Kỹ thuật (Technical Architecture)](#-kiến-trúc-kỹ-thuật-technical-architecture) +4. [Hệ thống Mê cung (Maze Generation)](#-hệ-thống-mê-cung-maze-generation) +5. [Đồng bộ Mạng (Networking)](#-đồng-bộ-mạng-networking) +6. [Hệ thống Comeback (Comeback System)](#-hệ-thống-comeback-đa-tầng-tiered-adaptive-system) +7. [Lộ trình Phát triển (Roadmap)](#-lộ-trình-phát-triển-roadmap) +8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure) +9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation) + + +--- + +## Tầm nhìn Dự án (Project Vision) + +![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH) + +Dự án hướng tới việc tạo ra một trải nghiệm **"High-Stakes Hide & Seek"**. Trọng tâm không nằm ở hành động nhanh mà ở sự **kiên nhẫn** và **tính toán**. +* **Minimalist UI:** Giảm thiểu UI để người chơi tập trung hoàn toàn vào môi trường. +* **Spatial Audio:** Âm thanh là "bản đồ" thứ hai. +* **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình. + + +--- + +## Cơ chế Trò chơi (Core Mechanics) + +### Sự bất đối xứng (The Asymmetry) + +| Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) | +| :--- | :--- | :--- | +| **Vai trò** | Chủ động di chuyển, tìm lối thoát. | Phòng thủ, đặt bẫy, chặn đường. | +| **Tầm nhìn** | Góc nhìn thứ nhất (FPS), đèn pin giới hạn. | Góc nhìn tổng thể (Top-down) hoặc Camera an ninh. | +| **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. | +| **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. | + +### Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture) + +```mermaid +graph TD + %% Định nghĩa Style cho các nhóm + classDef initStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#01579b; + classDef seekerStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#e65100; + classDef trapperStyle fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#4a148c; + classDef netStyle fill:#eceff1,stroke:#263238,stroke-dasharray: 5 5,color:#263238; + classDef winStyle fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#1b5e20; + classDef criticalStyle fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#b71c1c; + + %% Phase 1: Initialization + subgraph Initialization ["1. KHỞI TẠO HỆ THỐNG (NET-SYNC)"] + A[" Bắt đầu Trận đấu"] --> B{" Matchmaking
(Photon Fusion)"} + B --> C[" Phân vai: Seeker vs Trapper"] + C --> D[" Maze Generator
(Prims/Wilsons)"] + D --> E[" Baking NavMesh & Colliders"] + E --> F[" Character Auto-Setup"] + F --> G[" Spawn Players"] + end + class Initialization,A,B,C,D,E,F,G initStyle; + + %% Phase 2: Core Loop + subgraph Active_Round ["2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)"] + G --> Loop((TICK: FixedUpdateNetwork)) + + %% Seeker Branch + subgraph Seeker_Logic [" SEEKER (POV 1st)"] + S1[" Input: WASD/Space"] --> S2[" State: Move/Dash"] + S2 --> S3{" Hành động?"} + S3 -- "Sprinting" --> S4[" Noise Up"] + S3 -- "Sneaking" --> S5[" Noise Down"] + S3 -- "Flashlight" --> S6[" Lộ vị trí"] + + S4 & S5 & S6 --> S_Check{" Check Env"} + S_Check -- "Dẫm bẫy" --> S_Trap[" Bị khống chế"] + end + + %% Trapper Branch + subgraph Trapper_Logic [" TRAPPER (STRATEGY)"] + T1[" Mouse Input"] --> T2[" View: Heatmap/Cams"] + T2 --> T3{" Kỹ năng?"} + T3 -- "Đặt bẫy" --> T4[" Sync Trap"] + T3 -- "Scan" --> T5[" Ping Seeker"] + T3 -- "Lock" --> T6[" Khóa cửa"] + + T4 & T5 & T6 --> T_Check{" Theo dõi"} + end + + %% Networking Layer + subgraph Network_Sync [" NETWORK SYNC"] + Loop --> NS1["⏩ Client Prediction"] + NS1 --> NS2[" Server Reconciliation"] + NS2 --> NS3[" State Sync"] + end + end + class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle; + class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle; + class Network_Sync,NS1,NS2,NS3,Loop netStyle; + class S_Trap criticalStyle; + + %% Phase 3: Results + subgraph Result_Logic ["3. KẾT THÚC & THƯỞNG"] + S_Check -- "Chạm Exit" --> Win_S[" SEEKER THẮNG"] + T_Check -- "Bắt được Seeker" --> Win_T[" TRAPPER THẮNG"] + Loop -- "Timer = 0" --> Win_T + + Win_S & Win_T --> Post_Match[" Thống kê Rank"] + Post_Match --> Buff{" Balance Check"} + Buff -- "Thua cuộc" --> Buff_Apply[" Kích hoạt Comeback Buff"] + Buff_Apply --> A + end + class Win_S,Win_T winStyle; + class Result_Logic,Post_Match,Buff,Buff_Apply initStyle; + + %% Interactions (Dashed Lines) + S_Trap -.->|Cảnh báo| T_Check + S4 -.->|Sóng âm| T2 + T4 -.->|Collision ẩn| S_Check + NS3 --> Loop +``` + + +--- + +## Kiến trúc Kỹ thuật (Technical Architecture) + +### 1. Advanced Player & Camera State Machine + +Hệ thống điều khiển nhân vật không chỉ quản lý hành động mà còn điều phối **Camera Dynamics** để tăng cường cảm giác nhập vai và đồng bộ hóa hướng nhìn qua mạng. + +```mermaid +stateDiagram-v2 + direction TB + + state " GROUND" as Ground { + [*] --> Idle + + state Idle { + I_P: Vel < 0.1m/s + I_C: 🌡️ Breathing (0.5Hz) + } + + Idle --> Moving : "Input.mag > 0.1" + state Moving { + M_P: Speed 2-4m/s + M_C: Head Bob (1.2Hz) + } + + Moving --> Sneaking : "OnSneak (Hold)" + state Sneaking { + Sn_P: Noise -50% + Sn_C: Lower Height + } + + Moving --> Sprinting : "OnSprint (Hold)" + state Sneaking --> Moving : "Release Sneak" + state Sprinting { + Sp_P: Speed > 6.5m/s + Sp_C: 🌈 Dynamic FOV + } + + Sprinting --> Moving : "Stamina Empty" + } + + state "☁️ AIRBORNE" as Air { + state Jump { + J_P: AddForce Up + } + state Falling { + F_P: Gravity x 1.5 + } + state Landing { + L_P: 📏 Impact Check + } + + Jump --> Falling : "Vel.y < 0" + Falling --> Landing : "IsGrounded == true" + } + + state " ACTION" as Utility { + state Dashing { + D_P: Burst 15m/s + } + state Interacting { + Int_P: Root Motion Lock + } + } + + state " NETWORK" as Net { + state "Input Authority" as IA + state "State Authority" as SA + IA --> SA : "Send Input" + SA --> IA : "Reconcile" + } + + %% Transitions chính + Ground --> Air : "IsGrounded == false" + Air --> Ground : "OnLand Event" + Ground --> Utility : "OnAbility" + Utility --> Ground : "Complete" + + %% Notes + note left of Ground + Sync: Velocity + State: MoveState + end note + + note right of Net + Photon Fusion + FixedUpdateNetwork + end note +``` + +### 2. Environment Scanner & Interaction +Hệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối. + + +--- + +## Hệ thống Mê cung (Maze Generation) + +Trái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn. + +| Algorithm | Complexity | Description | +| :--- | :--- | :--- | +| **Prims** | O(E log V) | Tạo mê cung "dày", nhiều nhánh ngắn, lý tưởng cho việc đặt bẫy. | +| **Wilsons** | O(N) | Thuật toán ngẫu nhiên hoàn hảo, không có thiên hướng cấu trúc nhất định. | +| **Recursive** | O(N) | Tạo ra các hành lang dài và sâu, tăng áp lực cho Seeker. | +| **Crawler** | O(N) | Tạo ra các không gian mở giống hang động hơn là mê cung truyền thống. | + +### Quy trình khởi tạo (Maze Generation Pipeline) + +```mermaid +graph TD + %% Định nghĩa Style + classDef lossStyle fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#c62828; + classDef tier1Style fill:#fff8e1,stroke:#fbc02d,stroke-width:2px,color:#f57f17; + classDef tier2Style fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#e65100; + classDef tier3Style fill:#fbe9e7,stroke:#ff5722,stroke-width:2px,color:#bf360c; + classDef systemStyle fill:#f5f5f5,stroke:#424242,stroke-width:2px,color:#424242; + classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20; + + %% Quy trình chính + Start((" PLAYER LOSES ROUND")) --> Streak{{" Check Loss Streak"}} + + %% Phân tầng Buff + subgraph Buff_Pools [" HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)"] + Streak -- "1 Trận" --> T1 + Streak -- "2 Trận" --> T2 + Streak -- "3+ Trận" --> T3 + + T1[" Tier 1: Awakening
(Small Boosts)"] + T2[" Tier 2: Evolution
(Tactical Advantage)"] + T3[" Tier 3: Manifestation
(Game Changer)"] + + %% Ví dụ chỉ số (Tooltip-like) + T1 --- T1_Ex["+10% Speed
+15% Stamina Regen"] + T2 --- T2_Ex["Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)"] + T3 --- T3_Ex["Nhìn xuyên tường 5s
Hồi sinh 1 lần tại chỗ"] + end + + %% Giai đoạn áp dụng + T1 & T2 & T3 --> Selection{{" Selection Mode"}} + + Selection -- "Manual" --> P1["Người chơi tự chọn 1 trong 3 Buff"] + Selection -- "Auto" --> P2["Hệ thống chọn ngẫu nhiên"] + + P1 & P2 --> Apply[" Apply to Next Round Only
(Trạng thái: Active)"] + + %% Kết quả vòng đấu sau + Apply --> Result{{" New Round Result?"}} + + Result -- " WIN" --> Reset[" Reset Streak
Remove All Buffs"] + Result -- "❌ LOSS" --> Increment[" Increase Streak
Progress to Next Tier"] + + %% Vòng lặp + Reset --> NewGame((" Fair Match")) + Increment --> Start + + %% Gán Style + class Start,Increment lossStyle; + class T1,T1_Ex tier1Style; + class T2,T2_Ex tier2Style; + class T3,T3_Ex tier3Style; + class Selection,P1,P2,Apply systemStyle; + class Result,Reset,NewGame winStyle; +``` + + +--- + +## Đồng bộ Mạng (Networking) + +Sử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ. + +### Network Data Flow & Synchronization +```mermaid +sequenceDiagram + autonumber + + participant IR as Input + participant CP as 🎀 Local Player + participant NT as Fusion Net + participant S as Server + participant RP as Proxies + + %% --- GIAI ĐOẠN 1 --- + Note over IR, CP: [PHASE 1] Thu thập Input + IR->>CP: OnMove / OnJump / OnSprint + CP->>CP: Pack NetworkInputData + + %% --- GIAI ĐOẠN 2 --- + Note over CP: [PHASE 2] Dự đoán (Prediction) + CP->>CP: Run Client-Side Physics + CP->>NT: Send Input (Tick N) + + %% --- GIAI ĐOẠN 3 --- + Note over NT, S: [PHASE 3] Truyền tin mạng + NT->>S: UDP Packet Delivery + Note right of S: SERVER SIMULATION + S->>S: Validate & Update State + S-->>NT: Snapshot (Tick N) + + %% --- GIAI ĐOẠN 4 --- + Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ + NT-->>CP: State Snapshot + Note over CP: RECONCILIATION + CP->>CP: Fix Position if Error > Threshold + + %% --- GIAI ĐOẠN 5 --- + Note over NT, RP: [PHASE 5] Proxy Update + NT-->>RP: State Snapshot + Note over RP: INTERPOLATION (Lerp) + + %% --- GIAI ĐOẠN 6 --- + Note over CP, RP: [PHASE 6] Hiển thị (Render) + CP->>CP: Update Camera Shake/VFX + RP->>RP: Smooth Mesh Movement +``` + + +--- + +## Hệ thống Comeback Đa tầng (Tiered Adaptive System) + +Để đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **"Despair Mechanics"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển. + +### Phân tầng Buff theo Chuỗi Thua (Tiered Progression) + +| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế | +| :--- | :--- | :--- | :--- | +| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). | +| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). | +| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. | + +--- + +### Seeker: Ý chí Sinh tồn (Survival Evolution) + +Khi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối: + +* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn. +* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm. +* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s. +* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát. + +--- + +### Trapper: Quyền năng Bóng tối (Dark Rituals) + +Khi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn: + +* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ. +* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách. +* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây. +* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện. + + +--- + +## Lộ trình Phát triển (Roadmap) + + + + +- [x] **Phase 1: Foundation** + - [x] Player State Machine (Idle, Move, Run, Jump). + - [x] Maze Generation (Multi-algorithm). + - [x] Photon Fusion Integration. +- [ ] **Phase 2: Gameplay Core** + - [ ] Role Selection (Seeker vs Trapper). + - [ ] Trap Placement System. + - [ ] Sound & Visual Detection (Noise Meter). + + +--- + +## Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS) + +Dự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game. + +| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) | +| :--- | :--- | :--- | +| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. | +| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. | +| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. | + +--- + +## Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements) + +Mỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie: + +### Networking & Synchronization (Duy) +* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`. +* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận. +* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss). + +### World Generation & Performance (Scove) +* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime. +* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing). +* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper. + +### Gameplay & Physics (Tuấn) +* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation. +* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo. +* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác. + +### Visuals & UI/UX (Tuấn) +* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao. +* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung. +* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game. + + +--- + +## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure) + +Dự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration. + +```text +📦 BABA_YAGA +├── 🌸 Assets/ (Trái tim của trò chơi) +│ ├── 📜 Scripts/ (Phép thuật điều khiển logic) +│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector +│ │ ├── 🎥 Camera Controller/ +│ │ ├── 🛠️ Debug/ +│ │ ├── 🌐 Fusion/ +│ │ │ └── 🚀 BasicSpawner.cs +│ │ ├── 🏗️ GameSetup/ +│ │ │ ├── 🌀 Maze/ # Mê cung +│ │ │ │ ├── 🐾 Crawler.cs +│ │ │ │ ├── 🌳 Prims.cs +│ │ │ │ ├── 🧵 Wilsons.cs +│ │ │ │ └── 🗺️ Maze.cs +│ │ │ └── 🧍 CharacterAutoSetup.cs +│ │ ├── 鼠标 Interactables/ +│ │ │ ├── 🚪 DoorInteractable.cs +│ │ │ ├── 💡 LampInteractable.cs +│ │ │ └── 💎 BaseInteractable.cs +│ │ ├── 📐 Interface/ +│ │ ├── 🏃‍♀️ Player Controller/ +│ │ │ ├── 🧠 PlayerStateMachine.cs +│ │ │ ├── ⌨️ InputReader.cs +│ │ │ └── 🎭 States/ +│ │ ├── ⚡ Optimization/ +│ │ ├── 🖥️ UI/ +│ │ └── 🎆 VFX/ +│ ├── 🧸 Prefabs/ +│ ├── 📖 document/ +│ ├── 🎬 Scenes/ +│ ├── 🎨 Materials/ +│ ├── 👸 Models/ +│ ├── 💃 Animation/ +│ ├── 🔌 Photon/ +│ ├── 🅰️ TextMesh Pro/ +│ └── ⚙️ Settings/ +├── 🛠️ ProjectSettings/ +│ ├── 🏷️ TagManager.asset +│ ├── 🌍 DynamicsManager.asset +│ └── 📡 MultiplayerManager.asset +├── 📦 Packages/ +└── 📝 README.md # Creator (。•̀ᴗ-)✧ +``` + + +--- + +## Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup) + +Để trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây: + +### 1. Yêu cầu Hệ thống +* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên. +* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel). +* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library. + +### 2. Tải về & Mở dự án +1. **Clone Repository:** + ```bash + git clone https://github.com/OnlyScove/BABA_YAGA.git + ``` +2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**. +3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút). + +### 3. Cấu hình Photon Fusion (Bắt buộc) +Trò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng: +1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/). +2. Tạo một ứng dụng mới với loại App là **Fusion**. +3. Sao chép **App ID** vừa tạo. +4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`. +5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion). +6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority). + +### 4. Khởi chạy Trò chơi +1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`. +2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner. +3. Nhấn nút **Play** trong Unity Editor. +4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc. + +--- + +## Support & Community + +

+ +

+ + Buy Me A Coffee + + + Discord + + + Ko-fi + +

+ +

+ Visitors +

+ +--- + +**© 2026 SCOVANIA STUDIOS.** +*Baba_Yaga is more than a game, it's a social experiment.* + +--- + +**Connect with us:** +[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303) + diff --git a/BABA_YAGA_Updater/sections/00_header.md b/BABA_YAGA_Updater/sections/00_header.md new file mode 100644 index 00000000..d00b4004 --- /dev/null +++ b/BABA_YAGA_Updater/sections/00_header.md @@ -0,0 +1,107 @@ +
+ + +

+ Animated Header +

+ +### ⚡ THE ASYMMETRIC PSYCHOLOGICAL SURVIVAL ENGINE +**"Thị giác là một lời nói dối. Bóng tối là sự thật duy nhất."** + +

+ + + +

+ +--- + + + + + + + + +
+
+ Cognitive War
Tâm lý chiến +
+
+ Spatial Audio
Âm thanh 3D +
+
+ Procedural Maze
Mê cung vô tận +
+ +--- + +
+ +## Tầm nhìn Dự án (Project Vision) + +
+ +
+ +> **BABA_YAGA** không chỉ là một trò chơi; nó là một thí nghiệm về sự cô lập. Dự án được xây dựng trên triết lý **"High-Stakes Hide & Seek"**, nơi mỗi giây im lặng đều mang trọng lượng ngàn cân. + +### 💠 Các Trụ Cột Cốt Lõi (Core Pillars) + +- 🎛️ **Minimalist UI (The "Invisible" HUD):** Chúng tôi loại bỏ mọi rào cản giữa người chơi và môi trường. Không thanh máu, không bản đồ con. Mọi thông tin đều được phản hồi qua nhịp tim, nhịp thở và độ mờ của tầm nhìn. +- 🔊 **Spatial Audio Positioning:** Âm thanh là vũ khí. Seeker phải học cách "nhìn bằng tai", trong khi Trapper có thể sử dụng tiếng động giả để điều hướng con mồi vào bẫy. +- 💡 **Dynamic Lighting & Shadow Manipulation:** Ánh sáng trong BABA_YAGA là một tài nguyên hữu hạn. Việc bật đèn pin có thể giúp bạn thấy đường, nhưng đồng thời biến bạn thành một ngọn hải đăng cho kẻ đi săn. + +--- + +
+ +### DANH MỤC HỆ THỐNG + + + + + + + + + + + + + + + + + + + +
+   + Tầm nhìn & Triết lý + +   + Cơ chế Core Gameplay +
+   + Kiến trúc Technical + +   + Đồng bộ Photon Fusion +
+   + Hệ thống Adaptive Difficulty + +   + Lộ trình Roadmap +
+   + Hướng dẫn Triển khai + +   + Cấu trúc Workspace +
+ +--- + +
\ No newline at end of file diff --git a/BABA_YAGA_Updater/sections/01_vision.md b/BABA_YAGA_Updater/sections/01_vision.md new file mode 100644 index 00000000..cf4accbd --- /dev/null +++ b/BABA_YAGA_Updater/sections/01_vision.md @@ -0,0 +1,44 @@ +## Tầm nhìn Dự án (Project Vision) + +
+ +
+ +
+ +> **BABA_YAGA** được định nghĩa là một trải nghiệm **"Psychological Asymmetric Survival"**. Chúng tôi không xây dựng một trò chơi hành động nhanh, mà xây dựng một môi trường nơi **sự kiên nhẫn** là vũ khí và **tư duy logic** là chìa khóa để sống sót. Trọng tâm của dự án xoay quanh việc thao túng nhận thức của người chơi thông qua ba trụ cột kỹ thuật: + +
+ + + + + + + +
+ +

+ The "Zero-UI" Philosophy +
+

Triệt tiêu hoàn toàn các yếu tố HUD truyền thống. Người chơi phải quan sát nhịp thở, vết máu và môi trường để tự đánh giá trạng thái nhân vật.

+
+ +

+ Acoustic Navigation +
+

Hệ thống Spatial Audio biến âm thanh thành "bản đồ thị giác thứ hai". Tận dụng HRTF để định vị chính xác đối phương qua các tiếng động siêu nhỏ.

+
+ +

+ Tactical Photometry +
+

Ánh sáng là tài nguyên chiến thuật. Việc quản lý photon (đèn pin, nến, lửa) quyết định ranh giới giữa kẻ đi săn và con mồi.

+
+ +
+ +
+ + Dự án đang trong giai đoạn Technical Alpha, tập trung tối ưu hóa hệ thống Perception. +
\ No newline at end of file diff --git a/BABA_YAGA_Updater/sections/02_mechanics.md b/BABA_YAGA_Updater/sections/02_mechanics.md new file mode 100644 index 00000000..f2a83eea --- /dev/null +++ b/BABA_YAGA_Updater/sections/02_mechanics.md @@ -0,0 +1,165 @@ +## Cơ chế Cốt lõi (Core Mechanics) + +> Kiến trúc gameplay của **BABA_YAGA** được xây dựng dựa trên nguyên lý **"Thông tin Bất xứng" (Information Asymmetry)**. Hai phe tham gia không chỉ khác biệt về công cụ, mà còn trải nghiệm trò chơi ở hai chiều không gian và logic hoàn toàn trái ngược nhau. + +
+ +### Hệ sinh thái Bất đối xứng (The Asymmetric Paradigm) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ THE SEEKER +

+ Thực thể Động (Kinetic Survivor) +
+

+ THE TRAPPER +

+ Kiến trúc sư Bóng tối (Environment Architect) +
+ Vai trò (Role)
+ Chủ động điều hướng (Navigation), quản lý tài nguyên sinh tồn và tìm điểm Extraction Point. Phải di chuyển liên tục để tránh bị cô lập. +
+ Vai trò (Role)
+ Thiết lập hệ thống phòng ngự tĩnh, chặn luồng di chuyển (Choke points) và dồn ép tâm lý con mồi vào bẫy tử thần. +
+ Tầm nhìn (Perception)
+ Góc nhìn thứ nhất (Immersive FPS). Bị giới hạn hoàn toàn bởi bóng tối, chỉ thấy được những gì chùm sáng đèn pin quét qua. +
+ Tầm nhìn (Perception)
+ Góc nhìn Thượng đế (Top-down / Surveillance Cams). Quản lý bản đồ qua hệ thống Heatmap và Camera an ninh đa điểm. +
+ Cơ động (Mobility)
+ Tốc độ bứt tốc cao (Sprinting: 9.0m/s). Khả năng tương tác vật lý trực tiếp với môi trường (Vaulting, Sliding). +
+ Cơ động (Mobility)
+ Tốc độ vật lý thấp, nhưng bù đắp bằng khả năng Dịch chuyển Tức thời (Teleportation) qua các node mạng lưới bóng tối. +
+ Khí tài (Arsenal)
+ + + +
+ Khí tài (Arsenal)
+ + + +
+ +
+ +### Vòng lặp Gameplay & Đồng bộ Hóa (Deterministic Game Loop) + +> Toàn bộ logic bên dưới được xử lý trong `FixedUpdateNetwork()` của Photon Fusion. Chúng tôi sử dụng kiến trúc **Server Reconciliation** kết hợp **Client Prediction** để đảm bảo Seeker di chuyển mượt mà (không delay), trong khi Trapper vẫn có quyền kiểm soát toàn vẹn trạng thái bản đồ (Server Authority). + +*(Lưu ý kỹ thuật: Sơ đồ dưới đây đã được cấu trúc lại thuộc tính HTML bên trong để đảm bảo khả năng render không bị lỗi trên các bộ phân tích Markdown của GitHub/Gitea)* + +```mermaid +graph TD + %% Định nghĩa Style cho các nhóm (Dark Theme Optimized) + classDef initStyle fill:#1a2b3c,stroke:#33CCFF,stroke-width:2px,color:#E0E0E0; + classDef seekerStyle fill:#332200,stroke:#FFD700,stroke-width:2px,color:#FFD700; + classDef trapperStyle fill:#2b0000,stroke:#FF3333,stroke-width:2px,color:#FF3333; + classDef netStyle fill:#111111,stroke:#888888,stroke-dasharray: 5 5,color:#E0E0E0; + classDef winStyle fill:#003311,stroke:#00FF55,stroke-width:3px,color:#00FF55; + classDef criticalStyle fill:#4d0000,stroke:#FF0000,stroke-width:2px,color:#FF0000; + + %% Phase 1: Initialization + subgraph Initialization ["1. KHỞI TẠO HỆ THỐNG (NET-SYNC)"] + A[" Bắt đầu Trận đấu"] --> B{" Matchmaking
(Photon Fusion)"} + B --> C[" Phân vai: Seeker vs Trapper"] + C --> D[" Maze Generator
(Prims/Wilsons)"] + D --> E[" Baking NavMesh & Colliders"] + E --> F[" Character Auto-Setup"] + F --> G[" Spawn Players"] + end + class Initialization,A,B,C,D,E,F,G initStyle; + + %% Phase 2: Core Loop + subgraph Active_Round ["2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)"] + G --> Loop((TICK: FixedUpdateNetwork)) + + %% Seeker Branch + subgraph Seeker_Logic [" SEEKER (POV 1st)"] + S1[" Input: WASD/Space"] --> S2[" State: Move/Dash"] + S2 --> S3{" Hành động?"} + S3 -- "Sprinting" --> S4[" Noise Up"] + S3 -- "Sneaking" --> S5[" Noise Down"] + S3 -- "Flashlight" --> S6[" Lộ vị trí"] + + S4 & S5 & S6 --> S_Check{" Check Env"} + S_Check -- "Dẫm bẫy" --> S_Trap[" Bị khống chế"] + end + + %% Trapper Branch + subgraph Trapper_Logic [" TRAPPER (STRATEGY)"] + T1[" Mouse Input"] --> T2[" View: Heatmap/Cams"] + T2 --> T3{" Kỹ năng?"} + T3 -- "Đặt bẫy" --> T4[" Sync Trap"] + T3 -- "Scan" --> T5[" Ping Seeker"] + T3 -- "Lock" --> T6[" Khóa cửa"] + + T4 & T5 & T6 --> T_Check{" Theo dõi"} + end + + %% Networking Layer + subgraph Network_Sync [" NETWORK SYNC LAYER"] + Loop --> NS1["⏩ Client Prediction"] + NS1 --> NS2[" Server Reconciliation"] + NS2 --> NS3[" State Sync"] + end + end + class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle; + class Trapper_Logic,T1,T2,T3,T4,T5,T6,T_Check trapperStyle; + class Network_Sync,NS1,NS2,NS3,Loop netStyle; + class S_Trap criticalStyle; + + %% Phase 3: Results + subgraph Result_Logic ["3. KẾT THÚC & THƯỞNG"] + S_Check -- "Chạm Exit" --> Win_S[" SEEKER THẮNG"] + T_Check -- "Bắt được Seeker" --> Win_T[" TRAPPER THẮNG"] + Loop -- "Timer = 0" --> Win_T + + Win_S & Win_T --> Post_Match[" Thống kê Match"] + Post_Match --> Buff{" Hệ thống Adaptive"} + Buff -- "Thua liên tiếp" --> Buff_Apply[" Kích hoạt Comeback Buff"] + Buff_Apply --> A + end + class Win_S,Win_T winStyle; + class Result_Logic,Post_Match,Buff,Buff_Apply initStyle; + + %% Interactions (Dashed Lines) + S_Trap -.->|Cảnh báo State| T_Check + S4 -.->|Phát xạ Sóng âm| T2 + T4 -.->|Collision Vô hình| S_Check + NS3 --> Loop \ No newline at end of file diff --git a/BABA_YAGA_Updater/sections/03_architecture.md b/BABA_YAGA_Updater/sections/03_architecture.md new file mode 100644 index 00000000..4c15f4aa --- /dev/null +++ b/BABA_YAGA_Updater/sections/03_architecture.md @@ -0,0 +1,113 @@ +## Kiến trúc Kỹ thuật (Technical Architecture) + +> Hệ thống của **BABA_YAGA** được thiết kế theo chuẩn **Modular Architecture** (Kiến trúc Module), tách biệt hoàn toàn giữa logic xử lý vật lý (Kinematics), trạng thái mạng (Net-State) và phản hồi thị giác (Visual Feedbacks). Điều này đảm bảo hiệu năng cao (High Tickrate) ngay cả trong các môi trường mê cung phức tạp. + +
+ +### 1. Advanced Kinematic FSM & Camera Dynamics + +Hệ thống điều khiển nhân vật cốt lõi được xây dựng trên mô hình **Finite State Machine (FSM)** phân cấp. Không chỉ xử lý nội suy vật lý mượt mà, hệ thống còn tích hợp trực tiếp với **Procedural Camera Dynamics** (Head-bob, Dynamic FOV, Tilt) để tạo ra sự cộng hưởng về cảm giác nhập vai, đồng thời duy trì tính đồng bộ tuyệt đối qua lớp mạng (Networking Layer). + +*(Lưu ý: Sơ đồ trạng thái dưới đây đã được tối ưu hóa cho thuật toán dự đoán phía Client)* + +```mermaid +stateDiagram-v2 + direction TB + + state " KINEMATIC GROUND" as Ground { + [*] --> Idle + + state Idle { + I_P: Vel < 0.1m/s + I_C: Breathing Cam (0.5Hz) + } + + Idle --> Moving : Input.mag > 0.1 + state Moving { + M_P: Speed 2-4m/s + M_C: Head Bob (1.2Hz) + } + + Moving --> Sneaking : Hold [Sneak] + state Sneaking { + Sn_P: Acoustic Profile -50% + Sn_C: Collider Height ↓ + } + + Moving --> Sprinting : Hold [Sprint] + Sneaking --> Moving : Release [Sneak] + + state Sprinting { + Sp_P: Speed > 6.5m/s + Sp_C: Dynamic FOV Warp + } + + Sprinting --> Moving : Stamina Depleted + } + + state " AIRBORNE DYNAMICS" as Air { + state Jump { + J_P: AddForce Up + } + state Falling { + F_P: Gravity x1.5 + } + state Landing { + L_P: Impact Raycast + } + + Jump --> Falling : Vel.y < 0 + Falling --> Landing : KCC.IsGrounded == true + } + + state " UTILITY / ACTION" as Utility { + state Dashing { + D_P: Vector Burst (15m/s) + } + state Interacting { + Int_P: Root Motion Lock + } + } + + state " NET-SYNC LAYER" as Net { + state "Input Authority (Client)" as IA + state "State Authority (Server)" as SA + IA --> SA : Send Input Tick + SA --> IA : Force Reconcile + } + + %% Main Transitions + Ground --> Air : KCC.IsGrounded == false + Air --> Ground : OnLandEvent.Fire() + Ground --> Utility : InvokeAbility() + Utility --> Ground : Action Complete + + %% Sticky Notes for Technical Context + note left of Ground + Sync: KCC Velocity + State: Networked Enum + end note + + note right of Net + Photon Fusion + Anti-Cheat Validated + end note +``` +
+ 2. Tactical Environment Scanner & Interaction + +Việc tương tác trong một môi trường bị giới hạn hoàn toàn về tầm nhìn đòi hỏi một hệ thống truy vấn không gian (Spatial Querying) cực kỳ chính xác. Chúng tôi từ chối sử dụng cơ chế Raycast điểm đơn thông thường. + + + + + +
+ + +

Hệ thống lõi: EnvironmentScanner.cs

+

+Sử dụng kết hợp Physics.OverlapSphereNonAlloc để tối ưu hóa bộ nhớ (Zero Garbage Collection) và SphereCast để tính toán đường đạn thể tích. Hệ thống tự động phân tích và trích xuất các đối tượng thỏa mãn đa hình Interface IInteractable, đảm bảo người chơi có thể kích hoạt các thiết bị (Cửa, Máy phát điện, Bẫy) một cách mượt mà ngay cả khi chúng hoàn toàn chìm trong bóng tối. +

+
+``` \ No newline at end of file diff --git a/BABA_YAGA_Updater/sections/04_maze.md b/BABA_YAGA_Updater/sections/04_maze.md new file mode 100644 index 00000000..a46946f4 --- /dev/null +++ b/BABA_YAGA_Updater/sections/04_maze.md @@ -0,0 +1,138 @@ +## Hệ thống Mê cung (Procedural Maze Generation) + +> Trái tim của **BABA_YAGA** là bộ máy kiến tạo môi trường ngẫu nhiên đa thuật toán (Multi-Algorithm Procedural Engine). Môi trường sẽ không bao giờ lặp lại, tước đoạt hoàn toàn khả năng ghi nhớ bản đồ của người chơi và ép họ phải dựa vào các giác quan sinh tồn. + +
+ + + + + + + + + + + + + + +
+ Prim's Algorithm + | O(E log V)
+

Tạo cấu trúc mê cung "dày đặc", nhiều nhánh cụt đan xen. Tuyệt vời để Trapper thiết lập các choke-points (điểm thắt nút) và đặt bẫy bất ngờ.

+
+ Wilson's Algorithm + | O(N)
+

Sử dụng Loop-Erased Random Walks tạo ra cây khung ngẫu nhiên hoàn hảo, triệt tiêu mọi thiên hướng cấu trúc dự đoán được của Seeker.

+
+ Recursive Backtracker + | O(N)
+

Kiến tạo các hành lang sâu, dài và quanh co. Gia tăng tối đa áp lực tâm lý cho Seeker khi phải đi dạo trong các đường hầm không lối rẽ.

+
+ Cellular Crawler + | O(N)
+

Thuật toán đục khoét ngẫu nhiên tạo ra các không gian mở (Open Arenas) giống hang động tự nhiên, phá vỡ cấu trúc dạng Grid (lưới) cứng nhắc.

+
+ +
+ +### Quy trình Khởi tạo (Maze Generation Pipeline) + +```mermaid +graph TD + %% Định nghĩa Style Dark Theme + classDef initStyle fill:#1a1025,stroke:#B026FF,stroke-width:2px,color:#E0E0E0; + classDef algoStyle fill:#0d1b2a,stroke:#33CCFF,stroke-width:2px,color:#33CCFF; + classDef matrixStyle fill:#331100,stroke:#FFD700,stroke-width:2px,color:#FFD700; + classDef unityStyle fill:#111111,stroke:#888888,stroke-dasharray: 5 5,color:#E0E0E0; + classDef readyStyle fill:#003311,stroke:#00FF55,stroke-width:2px,color:#00FF55; + + Start[" Server Match Init"] --> Cfg[" Seed & Ruleset Config"] + Cfg --> Engine{" Algorithm Selector"} + + subgraph Generators ["CORE ALGORITHMS (DATA MATRIX)"] + Engine -- "High Density" --> A1[" Prim's Algorithm"] + Engine -- "True Random" --> A2[" Wilson's Algorithm"] + Engine -- "Long Paths" --> A3[" Recursive Backtracker"] + end + + A1 & A2 & A3 --> Matrix[" Logical 2D Grid Matrix
(0: Wall, 1: Path, 2: Room)"] + + subgraph Environment ["UNITY 3D INSTANTIATION"] + Matrix --> Wall[" Spawn Walls/Floors"] + Wall --> Props[" Scatter Props & Traps"] + Props --> NavMesh[" Bake Runtime NavMesh"] + end + + NavMesh --> Sync[" Network Sync State"] + Sync --> Ready[" MATCH READY"] + + class Start,Cfg initStyle; + class Engine,A1,A2,A3 algoStyle; + class Matrix matrixStyle; + class Wall,Props,NavMesh unityStyle; + class Sync,Ready readyStyle; + + Hệ thống Comeback (Tiered Adaptive System) + + Để duy trì tính cạnh tranh và giảm thiểu sự chán nản, BABA_YAGA tích hợp một hệ thống cân bằng động ngầm. Khi một người chơi rơi vào chuỗi thua (Loss Streak), hệ thống sẽ cung cấp các đặc quyền sinh tồn tăng dần theo từng cấp bậc. + +
+``` +```mermaid + +graph TD + %% Định nghĩa Style Dark Theme cho hệ thống Comeback + classDef lossStyle fill:#2b0000,stroke:#FF3333,stroke-width:2px,color:#FF3333; + classDef tier1Style fill:#332200,stroke:#FFD700,stroke-width:2px,color:#FFD700; + classDef tier2Style fill:#331a00,stroke:#FF8C00,stroke-width:2px,color:#FF8C00; + classDef tier3Style fill:#4d0000,stroke:#FF0000,stroke-width:2px,color:#FF4500; + classDef systemStyle fill:#111111,stroke:#888888,stroke-width:2px,color:#E0E0E0; + classDef winStyle fill:#003311,stroke:#00FF55,stroke-width:2px,color:#00FF55; + + %% Quy trình chính + Start((" PLAYER LOSES ROUND")) --> Streak{{" Check Loss Streak"}} + + %% Phân tầng Buff + subgraph Buff_Pools [" HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)"] + Streak -- "1 Trận" --> T1 + Streak -- "2 Trận" --> T2 + Streak -- "3+ Trận" --> T3 + + T1[" Tier 1: Awakening
(Small Boosts)"] + T2[" Tier 2: Evolution
(Tactical Advantage)"] + T3[" Tier 3: Manifestation
(Game Changer)"] + + %% Ví dụ chỉ số + T1 --- T1_Ex["+10% Speed
+15% Stamina Regen"] + T2 --- T2_Ex["Bẫy tàng hình (Trapper)
Giảm 50% tiếng ồn (Seeker)"] + T3 --- T3_Ex["Wallhack (Nhìn xuyên) 5s
Hồi sinh 1 lần tại chỗ"] + end + + %% Giai đoạn áp dụng + T1 & T2 & T3 --> Selection{{" Selection Mode"}} + + Selection -- "Manual" --> P1["Người chơi tự chọn 1 trong 3 Buff"] + Selection -- "Auto" --> P2["Hệ thống chọn ngẫu nhiên"] + + P1 & P2 --> Apply[" Apply to Next Round Only
(Trạng thái: Active)"] + + %% Kết quả vòng đấu sau + Apply --> Result{{" New Round Result?"}} + + Result -- " WIN" --> Reset[" Reset Streak
Remove All Buffs"] + Result -- "❌ LOSS" --> Increment[" Increase Streak
Progress to Next Tier"] + + %% Vòng lặp + Reset --> NewGame((" Fair Match")) + Increment --> Start + + %% Gán Style + class Start,Increment lossStyle; + class T1,T1_Ex tier1Style; + class T2,T2_Ex tier2Style; + class T3,T3_Ex tier3Style; + class Selection,P1,P2,Apply systemStyle; + class Result,Reset,NewGame winStyle; +``` \ No newline at end of file diff --git a/BABA_YAGA_Updater/sections/05_networking.md b/BABA_YAGA_Updater/sections/05_networking.md new file mode 100644 index 00000000..b6609a5e --- /dev/null +++ b/BABA_YAGA_Updater/sections/05_networking.md @@ -0,0 +1,48 @@ +## Đồng bộ Mạng (Networking) + +Sử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ. + +### Network Data Flow & Synchronization +```mermaid +sequenceDiagram + autonumber + + participant IR as Input + participant CP as 🎀 Local Player + participant NT as Fusion Net + participant S as Server + participant RP as Proxies + + %% --- GIAI ĐOẠN 1 --- + Note over IR, CP: [PHASE 1] Thu thập Input + IR->>CP: OnMove / OnJump / OnSprint + CP->>CP: Pack NetworkInputData + + %% --- GIAI ĐOẠN 2 --- + Note over CP: [PHASE 2] Dự đoán (Prediction) + CP->>CP: Run Client-Side Physics + CP->>NT: Send Input (Tick N) + + %% --- GIAI ĐOẠN 3 --- + Note over NT, S: [PHASE 3] Truyền tin mạng + NT->>S: UDP Packet Delivery + Note right of S: SERVER SIMULATION + S->>S: Validate & Update State + S-->>NT: Snapshot (Tick N) + + %% --- GIAI ĐOẠN 4 --- + Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ + NT-->>CP: State Snapshot + Note over CP: RECONCILIATION + CP->>CP: Fix Position if Error > Threshold + + %% --- GIAI ĐOẠN 5 --- + Note over NT, RP: [PHASE 5] Proxy Update + NT-->>RP: State Snapshot + Note over RP: INTERPOLATION (Lerp) + + %% --- GIAI ĐOẠN 6 --- + Note over CP, RP: [PHASE 6] Hiển thị (Render) + CP->>CP: Update Camera Shake/VFX + RP->>RP: Smooth Mesh Movement +``` diff --git a/BABA_YAGA_Updater/sections/06_comeback.md b/BABA_YAGA_Updater/sections/06_comeback.md new file mode 100644 index 00000000..63b711b4 --- /dev/null +++ b/BABA_YAGA_Updater/sections/06_comeback.md @@ -0,0 +1,33 @@ +## Hệ thống Comeback Đa tầng (Tiered Adaptive System) + +Để đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **"Despair Mechanics"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển. + +### Phân tầng Buff theo Chuỗi Thua (Tiered Progression) + +| Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế | +| :--- | :--- | :--- | :--- | +| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). | +| **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). | +| **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. | + +--- + +### Seeker: Ý chí Sinh tồn (Survival Evolution) + +Khi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối: + +* **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn. +* **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm. +* **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s. +* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát. + +--- + +### Trapper: Quyền năng Bóng tối (Dark Rituals) + +Khi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn: + +* **Tier 1 - Paranoia Echo (Tiếng vọng ảo giác):** Tự động tạo ra 3 nguồn âm thanh bước chân giả chạy xung quanh Seeker để gây nhiễu loạn khả năng định hướng bằng âm thanh của họ. +* **Tier 2 - Global Blackout (Bóng tối bao trùm):** Kích hoạt khiến đèn pin của Seeker bị nhiễu (Flicker) hoặc tắt hoàn toàn trong 8 giây. Đây là thời điểm vàng để Trapper thu hẹp khoảng cách. +* **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây. +* **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện. diff --git a/BABA_YAGA_Updater/sections/07_roadmap.md b/BABA_YAGA_Updater/sections/07_roadmap.md new file mode 100644 index 00000000..8fe08cbf --- /dev/null +++ b/BABA_YAGA_Updater/sections/07_roadmap.md @@ -0,0 +1,13 @@ +## Lộ trình Phát triển (Roadmap) + + + + +- [x] **Phase 1: Foundation** + - [x] Player State Machine (Idle, Move, Run, Jump). + - [x] Maze Generation (Multi-algorithm). + - [x] Photon Fusion Integration. +- [ ] **Phase 2: Gameplay Core** + - [ ] Role Selection (Seeker vs Trapper). + - [ ] Trap Placement System. + - [ ] Sound & Visual Detection (Noise Meter). diff --git a/BABA_YAGA_Updater/sections/08_team_standards.md b/BABA_YAGA_Updater/sections/08_team_standards.md new file mode 100644 index 00000000..c77fbfcd --- /dev/null +++ b/BABA_YAGA_Updater/sections/08_team_standards.md @@ -0,0 +1,35 @@ +## Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS) + +Dự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game. + +| Thành viên | Vai trò | Trách nhiệm chi tiết (Work Breakdown Structure) | +| :--- | :--- | :--- | +| **Scove** | **Trưởng nhóm / World Architect** | - Nghiên cứu & triển khai thuật toán Maze (Prims, Wilsons, Crawler).
- Thiết kế hệ thống **Mesh Generation** (Tạo tường, sàn, trần tự động).
- Đảm bảo tính **Solvability** (Mê cung luôn có lối thoát khả thi).
- Xây dựng logic **Comeback Đa tầng** (Despair Mechanics).
- Review Code toàn cục & Quản lý kiến trúc State Machine. | +| **Duy** | **Phó nhóm / Lead Network Engineer** | - Quản lý hạ tầng **Photon Fusion** (Matchmaking, Session, Relay).
- Đồng bộ hóa trạng thái mạng (`Networked Properties`) cho bẫy, cửa, đèn.
- Xử lý logic phân vai (Role Assignment) & Điều phối Game State.
- Tối ưu hóa băng thông & Xử lý Reconciliation/Interpolation mạng. | +| **Tuấn** | **Mechanics Developer & Tech Artist** | - Hệ thống **Noise Meter** & Ánh sáng động (Flashlight/Battery System).
- Logic bẫy (Traps): Snare (kẹp), Alarm (báo động), Sound (giả thanh).
- Hệ thống **Camera Dynamics** (FOV Kick, Shake, Tilt, Motion Blur).
- Quản lý hiệu ứng hình ảnh (VFX) & Âm thanh không gian (3D Spatial Audio).
- Thiết kế HUD cho Seeker & Trapper; UI Menu & UX Flow. | + +--- + +## Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements) + +Mỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie: + +### Networking & Synchronization (Duy) +* **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`. +* **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận. +* **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss). + +### World Generation & Performance (Scove) +* **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime. +* **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing). +* **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper. + +### Gameplay & Physics (Tuấn) +* **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation. +* **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo. +* **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác. + +### Visuals & UI/UX (Tuấn) +* **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao. +* **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung. +* **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game. diff --git a/BABA_YAGA_Updater/sections/09_structure.md b/BABA_YAGA_Updater/sections/09_structure.md new file mode 100644 index 00000000..46e7910c --- /dev/null +++ b/BABA_YAGA_Updater/sections/09_structure.md @@ -0,0 +1,48 @@ +## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure) + +Dự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Industry Practices), tách biệt rõ ràng giữa logic Code, Assets và Configuration. + +```text +📦 BABA_YAGA +├── 🌸 Assets/ (Trái tim của trò chơi) +│ ├── 📜 Scripts/ (Phép thuật điều khiển logic) +│ │ ├── 🏷️ Attributes/ # Tùy biến Inspector +│ │ ├── 🎥 Camera Controller/ +│ │ ├── 🛠️ Debug/ +│ │ ├── 🌐 Fusion/ +│ │ │ └── 🚀 BasicSpawner.cs +│ │ ├── 🏗️ GameSetup/ +│ │ │ ├── 🌀 Maze/ # Mê cung +│ │ │ │ ├── 🐾 Crawler.cs +│ │ │ │ ├── 🌳 Prims.cs +│ │ │ │ ├── 🧵 Wilsons.cs +│ │ │ │ └── 🗺️ Maze.cs +│ │ │ └── 🧍 CharacterAutoSetup.cs +│ │ ├── 鼠标 Interactables/ +│ │ │ ├── 🚪 DoorInteractable.cs +│ │ │ ├── 💡 LampInteractable.cs +│ │ │ └── 💎 BaseInteractable.cs +│ │ ├── 📐 Interface/ +│ │ ├── 🏃‍♀️ Player Controller/ +│ │ │ ├── 🧠 PlayerStateMachine.cs +│ │ │ ├── ⌨️ InputReader.cs +│ │ │ └── 🎭 States/ +│ │ ├── ⚡ Optimization/ +│ │ ├── 🖥️ UI/ +│ │ └── 🎆 VFX/ +│ ├── 🧸 Prefabs/ +│ ├── 📖 document/ +│ ├── 🎬 Scenes/ +│ ├── 🎨 Materials/ +│ ├── 👸 Models/ +│ ├── 💃 Animation/ +│ ├── 🔌 Photon/ +│ ├── 🅰️ TextMesh Pro/ +│ └── ⚙️ Settings/ +├── 🛠️ ProjectSettings/ +│ ├── 🏷️ TagManager.asset +│ ├── 🌍 DynamicsManager.asset +│ └── 📡 MultiplayerManager.asset +├── 📦 Packages/ +└── 📝 README.md # Creator (。•̀ᴗ-)✧ +``` diff --git a/BABA_YAGA_Updater/sections/10_footer.md b/BABA_YAGA_Updater/sections/10_footer.md new file mode 100644 index 00000000..1c4f790a --- /dev/null +++ b/BABA_YAGA_Updater/sections/10_footer.md @@ -0,0 +1,73 @@ +## Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup) + +Để trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây: + +### 1. Yêu cầu Hệ thống +* **Unity Editor:** Phiên bản **6000.3.10f1 (Unity 6)** trở lên. +* **Hệ điều hành:** Windows 10/11 hoặc macOS (M1/M2/Intel). +* **Disk Space:** Tối thiểu 5GB trống để chứa Project và Library. + +### 2. Tải về & Mở dự án +1. **Clone Repository:** + ```bash + git clone https://github.com/OnlyScove/BABA_YAGA.git + ``` +2. Mở **Unity Hub**, chọn **Add** -> **Add project from disk**. +3. Tìm đến thư mục vừa clone và nhấn **Open**. Chờ Unity Hub tải các Packages cần thiết (có thể mất vài phút). + +### 3. Cấu hình Photon Fusion (Bắt buộc) +Trò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng: +1. Đăng nhập vào [Photon Engine Dashboard](https://dashboard.photonengine.com/). +2. Tạo một ứng dụng mới với loại App là **Fusion**. +3. Sao chép **App ID** vừa tạo. +4. Trong Unity Editor, đi đến: `Photon` -> `Fusion` -> `Network Project Settings`. +5. Dán App ID vào mục **App Id Fusion** (cho cả Realtime và Fusion). +6. Đảm bảo **Network Mode** được đặt là `Client/Server` (để hỗ trợ State Authority). + +### 4. Khởi chạy Trò chơi +1. Mở Scene chính tại: `Assets/Scenes/Main Scene.unity`. +2. Sử dụng **Smart Bootstrapper** (nằm ở thanh Menu trên cùng) để tự động cấu hình Runner. +3. Nhấn nút **Play** trong Unity Editor. +4. Để test Multiplayer, bạn có thể build ra file `.exe` hoặc sử dụng công cụ **ParrelSync** (nếu đã cài) để chạy hai instance cùng lúc. + +--- + +## Support & Community + +

+ + Stars + + + Forks + + + Follow + +

+ +

+ + Buy Me A Coffee + + + Discord + + + Ko-fi + +

+ +

+ Visitors +

+ +--- + +**© 2026 SCOVANIA STUDIOS.** +*Baba_Yaga is more than a game, it's a social experiment.* + +--- + +**Connect with us:** +[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303) diff --git a/README.md b/README.md index 9c19549a..57d179f6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +# README Template (Source of Truth) + +This file serves as the master template for the project's root README.md. +Sections are modularized in the `sections/` directory. + # ![Header](https://img.shields.io/badge/PROJECT-BABA_YAGA-black?style=for-the-badge&logo=shadow) [![Unity 6000.3.10f1](https://img.shields.io/badge/Unity-6000.3.10f1_LTS-black?logo=unity&logoColor=white)](https://unity.com/) @@ -21,9 +26,10 @@ 8. [Cấu trúc Thư mục (Folder Structure)](#-cấu-trúc-thư-mục-dự-án-project-folder-structure) 9. [Hướng dẫn Cài đặt (Installation)](#-hướng-dẫn-cài-đặt-installation) + --- -## 👁️ Tầm nhìn Dự án (Project Vision) +## Tầm nhìn Dự án (Project Vision) ![Game Concept Art](https://scove-vault.duckdns.org/files/share/vakALUeH) @@ -32,11 +38,12 @@ Dự án hướng tới việc tạo ra một trải nghiệm **"High-Stakes Hid * **Spatial Audio:** Âm thanh là "bản đồ" thứ hai. * **Dynamic Lighting:** Ánh sáng không chỉ để nhìn, mà là công cụ để lộ diện hoặc ẩn mình. + --- -## 🎮 Cơ chế Trò chơi (Core Mechanics) +## Cơ chế Trò chơi (Core Mechanics) -### 🌓 Sự bất đối xứng (The Asymmetry) +### Sự bất đối xứng (The Asymmetry) | Chỉ số | Seeker (Người Tìm Đường) | Trapper (Kẻ Đặt Bẫy) | | :--- | :--- | :--- | @@ -45,7 +52,7 @@ Dự án hướng tới việc tạo ra một trải nghiệm **"High-Stakes Hid | **Tốc độ** | Nhanh (Sprinting: 9.0m/s). | Chậm hơn nhưng có khả năng dịch chuyển. | | **Công cụ** | Đèn pin, Dash, Parkour. | Bẫy kẹp, Bẫy âm thanh, Khóa cửa. | -### 🔄 Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture) +### Vòng lặp Gameplay & Kiến trúc Hệ thống (Game Loop & System Architecture) ```mermaid graph TD @@ -59,12 +66,12 @@ graph TD %% Phase 1: Initialization subgraph Initialization ["1. KHỞI TẠO HỆ THỐNG (NET-SYNC)"] - A["🚀 Bắt đầu Trận đấu"] --> B{"🤝 Matchmaking
(Photon Fusion)"} - B --> C["🎭 Phân vai: Seeker vs Trapper"] - C --> D["🧩 Maze Generator
(Prims/Wilsons)"] - D --> E["🏗️ Baking NavMesh & Colliders"] - E --> F["🧍 Character Auto-Setup"] - F --> G["📍 Spawn Players"] + A[" Bắt đầu Trận đấu"] --> B{" Matchmaking
(Photon Fusion)"} + B --> C[" Phân vai: Seeker vs Trapper"] + C --> D[" Maze Generator
(Prims/Wilsons)"] + D --> E[" Baking NavMesh & Colliders"] + E --> F[" Character Auto-Setup"] + F --> G[" Spawn Players"] end class Initialization,A,B,C,D,E,F,G initStyle; @@ -73,33 +80,33 @@ graph TD G --> Loop((TICK: FixedUpdateNetwork)) %% Seeker Branch - subgraph Seeker_Logic ["🏃 SEEKER (POV 1st)"] - S1["⌨️ Input: WASD/Space"] --> S2["🏃 State: Move/Dash"] - S2 --> S3{"⚡ Hành động?"} - S3 -- "Sprinting" --> S4["🔊 Noise Up"] - S3 -- "Sneaking" --> S5["🤫 Noise Down"] - S3 -- "Flashlight" --> S6["🔦 Lộ vị trí"] + subgraph Seeker_Logic [" SEEKER (POV 1st)"] + S1[" Input: WASD/Space"] --> S2[" State: Move/Dash"] + S2 --> S3{" Hành động?"} + S3 -- "Sprinting" --> S4[" Noise Up"] + S3 -- "Sneaking" --> S5[" Noise Down"] + S3 -- "Flashlight" --> S6[" Lộ vị trí"] - S4 & S5 & S6 --> S_Check{"🔍 Check Env"} - S_Check -- "Dẫm bẫy" --> S_Trap["⚠️ Bị khống chế"] + S4 & S5 & S6 --> S_Check{" Check Env"} + S_Check -- "Dẫm bẫy" --> S_Trap[" Bị khống chế"] end %% Trapper Branch - subgraph Trapper_Logic ["🕸️ TRAPPER (STRATEGY)"] - T1["🖱️ Mouse Input"] --> T2["🗺️ View: Heatmap/Cams"] - T2 --> T3{"🛠️ Kỹ năng?"} - T3 -- "Đặt bẫy" --> T4["🪤 Sync Trap"] - T3 -- "Scan" --> T5["📡 Ping Seeker"] - T3 -- "Lock" --> T6["🚪 Khóa cửa"] + subgraph Trapper_Logic [" TRAPPER (STRATEGY)"] + T1[" Mouse Input"] --> T2[" View: Heatmap/Cams"] + T2 --> T3{" Kỹ năng?"} + T3 -- "Đặt bẫy" --> T4[" Sync Trap"] + T3 -- "Scan" --> T5[" Ping Seeker"] + T3 -- "Lock" --> T6[" Khóa cửa"] - T4 & T5 & T6 --> T_Check{"👁️ Theo dõi"} + T4 & T5 & T6 --> T_Check{" Theo dõi"} end %% Networking Layer - subgraph Network_Sync ["🌐 NETWORK SYNC"] + subgraph Network_Sync [" NETWORK SYNC"] Loop --> NS1["⏩ Client Prediction"] - NS1 --> NS2["🔄 Server Reconciliation"] - NS2 --> NS3["📦 State Sync"] + NS1 --> NS2[" Server Reconciliation"] + NS2 --> NS3[" State Sync"] end end class Seeker_Logic,S1,S2,S3,S4,S5,S6,S_Check seekerStyle; @@ -109,13 +116,13 @@ graph TD %% Phase 3: Results subgraph Result_Logic ["3. KẾT THÚC & THƯỞNG"] - S_Check -- "Chạm Exit" --> Win_S["🏆 SEEKER THẮNG"] - T_Check -- "Bắt được Seeker" --> Win_T["🏆 TRAPPER THẮNG"] + S_Check -- "Chạm Exit" --> Win_S[" SEEKER THẮNG"] + T_Check -- "Bắt được Seeker" --> Win_T[" TRAPPER THẮNG"] Loop -- "Timer = 0" --> Win_T - Win_S & Win_T --> Post_Match["📊 Thống kê Rank"] - Post_Match --> Buff{"⚖️ Balance Check"} - Buff -- "Thua cuộc" --> Buff_Apply["💎 Kích hoạt Comeback Buff"] + Win_S & Win_T --> Post_Match[" Thống kê Rank"] + Post_Match --> Buff{" Balance Check"} + Buff -- "Thua cuộc" --> Buff_Apply[" Kích hoạt Comeback Buff"] Buff_Apply --> A end class Win_S,Win_T winStyle; @@ -128,9 +135,10 @@ graph TD NS3 --> Loop ``` + --- -## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture) +## Kiến trúc Kỹ thuật (Technical Architecture) ### 1. Advanced Player & Camera State Machine @@ -140,42 +148,42 @@ Hệ thống điều khiển nhân vật không chỉ quản lý hành động m stateDiagram-v2 direction TB - state "🌸 GROUND" as Ground { + state " GROUND" as Ground { [*] --> Idle state Idle { - I_P: 📝 Vel < 0.1m/s + I_P: Vel < 0.1m/s I_C: 🌡️ Breathing (0.5Hz) } Idle --> Moving : "Input.mag > 0.1" state Moving { - M_P: 👟 Speed 2-4m/s - M_C: 🎢 Head Bob (1.2Hz) + M_P: Speed 2-4m/s + M_C: Head Bob (1.2Hz) } Moving --> Sneaking : "OnSneak (Hold)" state Sneaking { - Sn_P: 🤫 Noise -50% - Sn_C: 📉 Lower Height + Sn_P: Noise -50% + Sn_C: Lower Height } Moving --> Sprinting : "OnSprint (Hold)" + state Sneaking --> Moving : "Release Sneak" state Sprinting { - Sp_P: ⚡ Speed > 6.5m/s + Sp_P: Speed > 6.5m/s Sp_C: 🌈 Dynamic FOV } Sprinting --> Moving : "Stamina Empty" - Sneaking --> Moving : "Release Sneak" } state "☁️ AIRBORNE" as Air { state Jump { - J_P: 🆙 AddForce Up + J_P: AddForce Up } state Falling { - F_P: 📉 Gravity x 1.5 + F_P: Gravity x 1.5 } state Landing { L_P: 📏 Impact Check @@ -185,16 +193,16 @@ stateDiagram-v2 Falling --> Landing : "IsGrounded == true" } - state "⚡ ACTION" as Utility { + state " ACTION" as Utility { state Dashing { - D_P: 💨 Burst 15m/s + D_P: Burst 15m/s } state Interacting { - Int_P: 🔒 Root Motion Lock + Int_P: Root Motion Lock } } - state "🌐 NETWORK" as Net { + state " NETWORK" as Net { state "Input Authority" as IA state "State Authority" as SA IA --> SA : "Send Input" @@ -207,24 +215,25 @@ stateDiagram-v2 Ground --> Utility : "OnAbility" Utility --> Ground : "Complete" - %% Sửa lỗi Note bằng cấu trúc block ✨ + %% Notes note left of Ground - ✨ Sync: Velocity - ✨ State: MoveState + Sync: Velocity + State: MoveState end note note right of Net - ⚙️ Photon Fusion - ⚙️ FixedUpdateNetwork + Photon Fusion + FixedUpdateNetwork end note ``` ### 2. Environment Scanner & Interaction Hệ thống quét vật thể (`EnvironmentScanner.cs`) sử dụng **SphereCast** và **OverlapSphere** để phát hiện các đối tượng `IInteractable` trong phạm vi tương tác, đảm bảo tính chính xác ngay cả trong bóng tối. + --- -## 🧩 Hệ thống Mê cung (Maze Generation) +## Hệ thống Mê cung (Maze Generation) Trái tim của **BABA_YAGA** là hệ thống tạo mê cung đa thuật toán, mang lại sự đa dạng vô hạn. @@ -248,17 +257,17 @@ graph TD classDef winStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20; %% Quy trình chính - Start(("💔 PLAYER LOSES ROUND")) --> Streak{{"📊 Check Loss Streak"}} + Start((" PLAYER LOSES ROUND")) --> Streak{{" Check Loss Streak"}} %% Phân tầng Buff - subgraph Buff_Pools ["🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)"] + subgraph Buff_Pools [" HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)"] Streak -- "1 Trận" --> T1 Streak -- "2 Trận" --> T2 Streak -- "3+ Trận" --> T3 - T1["🥉 Tier 1: Awakening
(Small Boosts)"] - T2["🥈 Tier 2: Evolution
(Tactical Advantage)"] - T3["🥇 Tier 3: Manifestation
(Game Changer)"] + T1[" Tier 1: Awakening
(Small Boosts)"] + T2[" Tier 2: Evolution
(Tactical Advantage)"] + T3[" Tier 3: Manifestation
(Game Changer)"] %% Ví dụ chỉ số (Tooltip-like) T1 --- T1_Ex["+10% Speed
+15% Stamina Regen"] @@ -267,21 +276,21 @@ graph TD end %% Giai đoạn áp dụng - T1 & T2 & T3 --> Selection{{"🎲 Selection Mode"}} + T1 & T2 & T3 --> Selection{{" Selection Mode"}} Selection -- "Manual" --> P1["Người chơi tự chọn 1 trong 3 Buff"] Selection -- "Auto" --> P2["Hệ thống chọn ngẫu nhiên"] - P1 & P2 --> Apply["✨ Apply to Next Round Only
(Trạng thái: Active)"] + P1 & P2 --> Apply[" Apply to Next Round Only
(Trạng thái: Active)"] %% Kết quả vòng đấu sau - Apply --> Result{{"🏁 New Round Result?"}} + Apply --> Result{{" New Round Result?"}} - Result -- "🏆 WIN" --> Reset["♻️ Reset Streak
Remove All Buffs"] - Result -- "❌ LOSS" --> Increment["📈 Increase Streak
Progress to Next Tier"] + Result -- " WIN" --> Reset[" Reset Streak
Remove All Buffs"] + Result -- "❌ LOSS" --> Increment[" Increase Streak
Progress to Next Tier"] %% Vòng lặp - Reset --> NewGame(("🎮 Fair Match")) + Reset --> NewGame((" Fair Match")) Increment --> Start %% Gán Style @@ -293,9 +302,10 @@ graph TD class Result,Reset,NewGame winStyle; ``` + --- -## 🌐 Đồng bộ Mạng (Networking) +## Đồng bộ Mạng (Networking) Sử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Prediction để đảm bảo trải nghiệm không độ trễ. @@ -304,40 +314,39 @@ Sử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Predictio sequenceDiagram autonumber - %% Định nghĩa các bên tham gia (Rút gọn để tránh lỗi render) - participant IR as 🖱️ Input + participant IR as Input participant CP as 🎀 Local Player - participant NT as 🌐 Fusion Net - participant S as 👑 Server - participant RP as 👥 Proxies + participant NT as Fusion Net + participant S as Server + participant RP as Proxies %% --- GIAI ĐOẠN 1 --- Note over IR, CP: [PHASE 1] Thu thập Input IR->>CP: OnMove / OnJump / OnSprint - CP->>CP: 📦 Pack NetworkInputData + CP->>CP: Pack NetworkInputData %% --- GIAI ĐOẠN 2 --- Note over CP: [PHASE 2] Dự đoán (Prediction) - CP->>CP: 🏃 Run Client-Side Physics - CP->>NT: ✉️ Send Input (Tick N) + CP->>CP: Run Client-Side Physics + CP->>NT: Send Input (Tick N) %% --- GIAI ĐOẠN 3 --- Note over NT, S: [PHASE 3] Truyền tin mạng NT->>S: UDP Packet Delivery Note right of S: SERVER SIMULATION - S->>S: 📝 Validate & Update State - S-->>NT: 📣 Snapshot (Tick N) + S->>S: Validate & Update State + S-->>NT: Snapshot (Tick N) %% --- GIAI ĐOẠN 4 --- Note over NT, CP: [PHASE 4] Hồi đáp & Đồng bộ NT-->>CP: State Snapshot - Note over CP: 🔄 RECONCILIATION + Note over CP: RECONCILIATION CP->>CP: Fix Position if Error > Threshold %% --- GIAI ĐOẠN 5 --- Note over NT, RP: [PHASE 5] Proxy Update NT-->>RP: State Snapshot - Note over RP: 🎞️ INTERPOLATION (Lerp) + Note over RP: INTERPOLATION (Lerp) %% --- GIAI ĐOẠN 6 --- Note over CP, RP: [PHASE 6] Hiển thị (Render) @@ -345,34 +354,35 @@ sequenceDiagram RP->>RP: Smooth Mesh Movement ``` + --- -## ⚖️ Hệ thống Comeback Đa tầng (Tiered Adaptive System) +## Hệ thống Comeback Đa tầng (Tiered Adaptive System) Để đảm bảo mỗi trận đấu đều kịch tính đến giây cuối cùng, BABA_YAGA áp dụng hệ thống **"Despair Mechanics"**. Người chơi có chuỗi thua càng dài sẽ nhận được quyền năng từ mê cung càng lớn, tạo ra những khoảnh khắc lật kèo kinh điển. -### 📈 Phân tầng Buff theo Chuỗi Thua (Tiered Progression) +### Phân tầng Buff theo Chuỗi Thua (Tiered Progression) | Chuỗi Thua | Phân tầng | Tên gọi | Quyền năng & Cơ chế | | :--- | :--- | :--- | :--- | -| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20 \%)$. | +| **1 Trận** | Tier 1 | *Awakening* | Chọn 1 Buff cơ bản (Tăng tốc +15% hoặc Mở rộng tầm nhìn +20%). | | **2 Trận** | Tier 2 | *Evolution* | Nhận 1 Buff chủ động (Kỹ năng nhấn nút) + 1 Buff bị động (Nâng cấp chỉ số). | | **3+ Trận** | Tier 3 | *Manifestation* | **Ultimate Skill:** Kỹ năng thay đổi luật chơi trong 30s. Mê cung sẽ hỗ trợ bạn trực tiếp. | --- -### 🏃 Seeker: Ý chí Sinh tồn (Survival Evolution) +### Seeker: Ý chí Sinh tồn (Survival Evolution) Khi Seeker liên tục thất bại, các giác quan của họ sẽ tiến hóa vượt bậc để chống lại bóng tối: * **Tier 1 - Sixth Sense (Linh cảm):** Seeker bắt đầu nghe thấy tiếng tim đập của chính mình nhanh hơn khi Trapper đang ở gần (bán kính 15m), giúp định vị mà không cần nhìn. * **Tier 2 - Shadow Step (Bước chân hư vô):** Di chuyển hoàn toàn không gây ra tiếng động (Noise Meter = 0) trong 20 giây đầu của trận đấu. Cho phép Seeker thiết lập vị trí an toàn sớm. * **Tier 2 - Trap Reflex (Phản xạ tột độ):** Seeker có 50% cơ hội tự động vô hiệu hóa bẫy kẹp đầu tiên dẫm phải. Nếu thành công, Seeker sẽ được tăng 50% tốc độ chạy trong 3s. -* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm với mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát. +* **Tier 3 - Ultimate: Chrono Dash:** Trong 15 giây, Seeker có thể thực hiện Dash không giới hạn (No Cooldown) và trở nên miễn nhiễm with mọi loại khống chế. Lúc này, Seeker là kẻ săn lùng lối thoát. --- -### 👁️ Trapper: Quyền năng Bóng tối (Dark Rituals) +### Trapper: Quyền năng Bóng tối (Dark Rituals) Khi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn định của nó để ban cho Trapper những quyền năng thao túng cực hạn: @@ -381,9 +391,10 @@ Khi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn đ * **Tier 2 - Ghosting (Dịch chuyển không gian):** Trapper nhận khả năng đi xuyên qua các cánh cửa đã bị khóa hoặc các bức tường mỏng (Destructible Walls) trong 15 giây. * **Tier 3 - Ultimate: Eye of the Abyss:** Hiển thị vị trí thực của Seeker xuyên tường (Wallhack) dưới dạng bóng đen trong 20 giây. Seeker không thể trốn chạy, chỉ có thể cầu nguyện. + --- -## 🚀 Lộ trình Phát triển (Roadmap) +## Lộ trình Phát triển (Roadmap) @@ -397,9 +408,10 @@ Khi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn đ - [ ] Trap Placement System. - [ ] Sound & Visual Detection (Noise Meter). + --- -## 👥 Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS) +## Đội ngũ Phát triển & Phân chia Nhiệm vụ (The Team & WBS) Dự án được thực hiện bởi nhóm 3 thành viên với các vai trò chuyên biệt, đảm bảo tính chuyên môn hóa cao trong quy trình sản xuất Game. @@ -411,30 +423,31 @@ Dự án được thực hiện bởi nhóm 3 thành viên với các vai trò c --- -## 📐 Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements) +## Tiêu chuẩn Kỹ thuật Nâng cao (Non-functional Requirements) Mỗi thành viên phải tuân thủ nghiêm ngặt các tiêu chuẩn kỹ thuật sau để đảm bảo dự án đạt chất lượng AAA-Indie: -### 🌐 Networking & Synchronization (Duy) +### Networking & Synchronization (Duy) * **RTT Optimization:** Duy trì Round Trip Time < 150ms; tối ưu hóa kích thước gói tin bằng `[Networked]` và `Reliable RPCs`. * **State Authority:** Mọi logic Thắng/Thua và Trigger bẫy phải được xác thực hoàn toàn tại **Server** để ngăn chặn gian lận. * **Interpolation Smoothing:** Đảm bảo di chuyển của đối thủ (Remote Proxies) mượt mà ngay cả khi mất gói tin (Packet Loss). -### 🏗️ World Generation & Performance (Scove) +### World Generation & Performance (Scove) * **Algorithmic Complexity:** Thuật toán tạo mê cung phải đạt hiệu năng O(N) hoặc O(N log N) để tránh treo Editor/Runtime. * **Draw Call Batching:** Tối ưu hóa Mesh mê cung để đạt mức Draw Calls thấp nhất (Sử dụng Static Batching & GPU Instancing). * **NavMesh Runtime:** Tự động bake NavMesh sau khi Maze tạo xong để hỗ trợ AI và các tính năng hỗ trợ Trapper. -### 🪤 Gameplay & Physics (Tuấn) +### Gameplay & Physics (Tuấn) * **Input Latency:** Xử lý Input thông qua `FixedUpdateNetwork` để đồng bộ hoàn hảo với Server Simulation. * **Physics Matrix:** Tối ưu hóa Collision Matrix; sử dụng Collider đơn giản (Box/Capsule) cho các hành lang mê cung lắt léo. * **State Integrity:** Mỗi State trong State Machine phải độc lập, không được can thiệp trực tiếp vào biến nội bộ của State khác. -### 🎨 Visuals & UI/UX (Tuấn) +### Visuals & UI/UX (Tuấn) * **Rendering (Unity 6):** Tận dụng **URP (Universal Render Pipeline)** và Render Graph để tạo hiệu ứng bóng tối chất lượng cao. * **Asset Compression:** Texture sử dụng chuẩn nén ASTC/DXT5; Mesh polycount tối ưu cho môi trường di động và PC tầm trung. * **UX Consistency:** Tín hiệu phản hồi (VFX/SFX/Haptic) phải nhất quán để người chơi nhận biết ngay lập tức các sự kiện trong game. + --- ## 📂 Cấu trúc Thư mục Dự án (Project Folder Structure) @@ -457,7 +470,7 @@ Dự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Indust │ │ │ │ ├── 🧵 Wilsons.cs │ │ │ │ └── 🗺️ Maze.cs │ │ │ └── 🧍 CharacterAutoSetup.cs -│ │ ├── 🖱️ Interactables/ +│ │ ├── 鼠标 Interactables/ │ │ │ ├── 🚪 DoorInteractable.cs │ │ │ ├── 💡 LampInteractable.cs │ │ │ └── 💎 BaseInteractable.cs @@ -486,9 +499,10 @@ Dự án được tổ chức theo tiêu chuẩn công nghiệp (Standard Indust └── 📝 README.md # Creator (。•̀ᴗ-)✧ ``` + --- -## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup) +## Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup) Để trải nghiệm **BABA_YAGA** một cách mượt mà nhất, vui lòng thực hiện theo các bước chi tiết dưới đây: @@ -522,7 +536,7 @@ Trò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng: --- -## 💖 Support & Community +## Support & Community

@@ -561,3 +575,4 @@ Trò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng: **Connect with us:** [![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/Scovy303) +

+ + Stars + + + Forks + + + Follow + +