diff --git a/README.md b/README.md
index ed3bda1d..54b9e76a 100644
--- a/README.md
+++ b/README.md
@@ -16,9 +16,9 @@
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. [Công cụ Phát triển (Developer Tools)](#-công-cụ-phát-triển-developer-tools)
+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-folder-structure)
+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)
---
@@ -49,68 +49,82 @@ Dự án hướng tới việc tạo ra một trải nghiệm **"High-Stakes Hid
```mermaid
graph TD
- %% Phase 1: Initialization & Synchronization
- subgraph Initialization ["1. GIAI ĐOẠN KHỞI TẠO (NET-SYNC)"]
- A[Bắt đầu Trận đấu] --> B{Photon Fusion Matchmaking}
- B --> C[Phân vai ngẫu nhiên: Seeker vs Trapper]
- C --> D[Maze Generator: Chạy đa thuật toán Prims/Wilsons]
- D --> E[Baking NavMesh & Static Colliders]
- E --> F[Character Auto-Setup: Sync Physical Bounds]
- F --> G[Spawn Players tại vị trí đối nghịch]
- end
+ %% Đị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 2: Core Loop (The Heart of the Game)
- subgraph Active_Round ["2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)"]
+ %% 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 / Shift] --> S2[State Machine: Move/Run/Jump/Dash]
- S2 --> S3{Hành động?}
- S3 -- "Sprinting" --> S4[Phát ra tiếng động lớn - Noise Meter Up]
- S3 -- "Sneaking" --> S5[Ẩn nấp - Noise Meter Down]
- S3 -- "Flashlight" --> S6[Nhìn rõ đường - Tốn Pin - 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 Environment}
- S_Check -- "Dẫm bẫy" --> S_Trap[Khống chế/Lộ diện]
- S_Check -- "Gặp cửa/đèn" --> S_Interact[Interact Logic]
+ 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 VIEW)"]
- T1[Input: Mouse / Hotkeys] --> T2[View: Map Sơ đồ nhiệt / Camera]
- T2 --> T3{Hành động?}
- T3 -- "Đặt bẫy" --> T4[Trừ tài nguyên Bẫy - Sync mạng]
- T3 -- "Pulse Scan" --> T5[Ping vị trí Seeker tạm thời]
- T3 -- "Lock Door" --> T6[Khóa đường đi Seeker]
+ 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 Seeker}
+ T4 & T5 & T6 --> T_Check{"👁️ Theo dõi"}
end
%% Networking Layer
- subgraph Network_Sync ["NETWORK SYNC (PHOTON FUSION)"]
- Loop --> NS1[Client-Side Prediction]
- NS1 --> NS2[Server Reconciliation]
- NS2 --> NS3[State Sync: Networked Properties]
+ 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: Condition & Results
- subgraph Result_Logic ["3. ĐIỀU KIỆN THẮNG & COMEBACK"]
- S_Check -- "Chạm Exit" --> Win_S[SEEKER THẮNG]
- T_Check -- "Bắt được Seeker" --> Win_T[TRAPPER THẮNG]
+ %% 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[Cập nhật Rank / Thống kê]
- Post_Match --> Buff{Check Chuỗi Thắng/Thua}
- Buff -- "Người thua" --> Buff_Apply[Kích hoạt Comeback Buffs cho Round sau]
+ 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;
- %% Connections
- S_Trap -.->|Phát tín hiệu cảnh báo| T_Check
- S4 -.->|Hiển thị sóng âm trên Map| T2
- T4 -.->|Tạo Collision ẩn| S_Check
+ %% Interactions (Dashed Lines)
+ S_Trap -.->|Cảnh báo| T_Check
+ S4 -.->|Sóng âm| T2
+ T4 -.->|Collision ẩn| S_Check
NS3 --> Loop
```
@@ -118,29 +132,116 @@ graph TD
## 🏗️ Kiến trúc Kỹ thuật (Technical Architecture)
-### 1. Advanced Player State Machine
-Hệ thống điều khiển nhân vật sử dụng mô hình **Hierarchical State Machine** kết hợp với **Photon Fusion**, cho phép xử lý các trạng thái phức tạp một cách mượt mà.
+### 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
- [*] --> Idle
- Idle --> Moving: Movement Input
- Moving --> Running: Sprint Input
- Running --> Idle: Stop
- Moving --> Sneaking: Sneak Input
+ direction TB
+
+ %% Định nghĩa các Style giả lập qua ghi chú (vì stateDiagram-v2 hạn chế classDef trực tiếp)
- state "Airborne Logic" as Airborne {
- Jump --> Falling
- Falling --> Grounded
+ state "🕹️ GROUND LOCOMOTION (STEALTH & SPEED)" as Ground {
+ [*] --> Idle
+
+ state Idle {
+ direction LR
+ I_Phys: Vel < 0.1m/s
+ I_Cam: Breathing Cycle (0.5Hz)
+ }
+
+ Idle --> Moving: Input.mag > 0.1
+ state Moving {
+ direction LR
+ M_Phys: Speed 2-4m/s
+ M_Cam: Head Bob (1.2Hz, Amp 0.05)
+ }
+
+ Moving --> Sneaking: OnSneak (Hold)
+ state Sneaking {
+ direction LR
+ Sn_Phys: Speed 1.5m/s | Noise -50%
+ Sn_Cam: Height -0.5m | FOV 55 (Focus)
+ }
+
+ Moving --> Sprinting: OnSprint (Hold) && Stamina > 0
+ state Sprinting {
+ direction LR
+ Sp_Phys: Speed > 6.5m/s | Noise +100%
+ Sp_Cam: FOV 60->85 (Dynamic) | Motion Blur
+ }
+
+ Sprinting --> Moving: Stamina == 0 || !SprintInput
+ Sneaking --> Moving: !SneakInput
}
+
+ state "🌪️ AIRBORNE & KINETIC IMPACT" as Air {
+ state Jump {
+ J_Phys: AddForce(Vector3.up * Power)
+ J_Cam: Instant Y-Kick (Recoil)
+ }
+
+ state Falling {
+ F_Phys: Gravity * 1.5 (Fast Fall)
+ F_Cam: FOV Stretch | Wind SFX
+ }
+
+ state Landing {
+ L_Phys: Impact Velocity Check
+ L_Cam: Hard/Soft Shake (Z-Axis Roll)
+ }
+
+ Jump --> Falling: Vel.y < 0
+ Falling --> Landing: IsGrounded == true
+ }
+
+ state "⚡ ACTION & ABILITY LAYER" as Utility {
+ state Dashing {
+ D_Phys: Linear Velocity Burst (15m/s)
+ D_Cam: Lens Distortion (Radial) | Trail VFX
+ }
+
+ state Interacting {
+ Int_Phys: Root Motion Lock
+ Int_Cam: Contextual Smooth Look-at
+ }
+ }
+
+ state "🌐 NETWORK RECONCILIATION LAYER" as Net {
+ state InputAuthority {
+ IA: Local Prediction (Zero Latency)
+ IA: Buffer Tick N
+ }
+ state StateAuthority {
+ SA: Server Snapshot (Tick N-3)
+ SA: Verification & Correction
+ }
+
+ IA --> SA: [Networked] CamRotation
+ SA --> IA: Teleport/Snap if Error > 0.5m
+ }
+
+ %% Hệ thống góc nhìn bất đối xứng (Asymmetric Views)
+ state "🎭 ROLE SPECIFIC VIEWPORTS" as Roles {
+ state Seeker_FPS {
+ S_View: 1st Person POV
+ S_Logic: Raycast Flashlight | Noise Meter UI
+ }
+ state Trapper_STRAT {
+ T_View: Top-Down Orthographic / Isometric
+ T_Logic: Heatmap Overlay | CCTV Switcher
+ }
+ }
+
+ %% Transitions chính
+ Ground --> Air: !IsGrounded (Coyote Time: 0.2s)
+ Air --> Ground: OnLand Event
+ Ground --> Utility: OnAbilityTrigger
+ Utility --> Ground: OnAnimationEnd
- Moving --> Jump: Jump Input
- Airborne --> Idle: Land
-
- Moving --> Dashing: Dash Input
- Dashing --> Moving: Complete
-
- Interact --> Idle: Action Key
+ note left of Ground: Sync: [Networked] Velocity, MoveState
+ note right of Net: Fusion: FixedUpdateNetwork() Loop
```
### 2. Environment Scanner & Interaction
@@ -163,39 +264,58 @@ Trái tim của **HALLUCINATE** là hệ thống tạo mê cung đa thuật toá
```mermaid
graph TD
- subgraph Grid_Logic ["1. CẤU TRÚC LỚP BẢN ĐỒ (GRID LOGIC)"]
- ML[MapLocation Class: x, z] --> Map[byte[,] map: 1=Wall, 0=Corridor]
- Map --> Init[InitialiseMap: Toàn bộ là Wall - byte 1]
+ %% Đị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
- subgraph Algorithm_Engine ["2. ENGINE THUẬT TOÁN (GENERATION)"]
- Init --> Choice{Algorithm Selector}
-
- Choice -- "Prims" --> P1[Tree Growth: Start at Random Cell]
- P1 --> P2[Add Neighbors to Wall List]
- P2 --> P3[Connect to random Tree-Cell & Carve Corridor]
-
- Choice -- "Wilsons" --> W1[Loop-Erased Random Walk]
- W1 --> W2[Walk until hit existing Tree]
- W2 --> W3[Carve path into Map - byte 0]
-
- Choice -- "Crawler" --> C1[Spawn N Crawlers at Map Center]
- C1 --> C2[Random Walk & Carve 0s based on CountSquareNeighbors]
- C2 --> C3[Limit by Map Width/Depth Bounds]
- 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)"]
- subgraph Post_Processing ["3. XỬ LÝ HẬU KỲ & MESH GEN"]
- P3 & W3 & C3 --> Neighbor[Neighbor Checks: CountSquare / Diagonal Neighbors]
- Neighbor --> Scale[Scaling System: WorldPos = GridPos * scale]
- Scale --> Mesh[Mesh Generator: Instantiate Prefabs / Primitive Cubes]
- Mesh --> Nav[NavMesh Runtime Surface Baking for Trapper AI]
- end
+ %% Kết quả vòng đấu sau
+ Apply --> Result{{"🏁 New Round Result?"}}
- subgraph Interaction_Injection ["4. TIÊM VẬT THỂ (INJECTION)"]
- Nav --> Lamp[LampInteractable: Light Intensity & State Sync]
- Nav --> Door[DoorInteractable: Physics Bounds & Animation State]
- Nav --> Exit[Exit Strategy: Calc Farthest Node for Goal Spawn]
- end
+ 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;
```
---
@@ -207,85 +327,73 @@ Sử dụng **Photon Fusion (State Sync)** với cơ chế Client-Side Predictio
### Network Data Flow & Synchronization
```mermaid
sequenceDiagram
- participant IR as InputReader (Local)
- participant CP as Local Player (Input Authority)
- participant S as Server (State Authority)
- participant RP as Remote Proxy (Other Clients)
+ autonumber
+
+ %% Định nghĩa các bên tham gia với Icon
+ participant IR as 🖱️ Input Reader (Local)
+ box rgb(235, 245, 255) "CLIENT (Input Authority)"
+ participant CP as 👤 Local Player
(Predictive Simulation)
+ end
+ box rgb(255, 243, 224) "NETWORK LAYER"
+ participant NT as 🌐 Photon Fusion Buffer
+ end
+ box rgb(232, 245, 233) "SERVER (State Authority)"
+ participant S as 🖥️ Headless Server
(Validation)
+ end
+ box rgb(243, 229, 245) "OTHER CLIENTS (Proxies)"
+ participant RP as 👥 Remote Proxies
(Interpolation)
+ end
- Note over IR, CP: [TICK N] Thu thập Input từ Keyboard/Mouse
- IR->>CP: OnMove / OnSprint / OnJump Events
- CP->>CP: Đóng gói vào NetworkInputData {move, rot, sprint}
+ %% --- GIAI ĐOẠN 1: THU THẬP INPUT ---
+ rect rgb(200, 230, 250)
+ Note over IR, CP: [TICK N] Giai đoạn lấy dữ liệu đầu vào
+ IR->>CP: OnMove(Vector2), OnJump(bool)
+ CP->>CP: Encode NetworkInputData {Buttons, Angles}
+ end
+
+ %% --- GIAI ĐOẠN 2: DỰ ĐOÁN & GỬI DỮ LIỆU ---
+ rect rgb(255, 248, 225)
+ Note over CP, NT: [FixedUpdateNetwork] Khởi chạy vòng lặp mạng
+ CP->>CP: 🏃 Client-Side Prediction:
Áp dụng vận tốc & Physics ngay lập tức
+ CP->>NT: Reliable/Unreliable Input Packet
+ NT-->>S: Transport Layer (UDP/Photon Bolt)
+ end
+
+ %% --- GIAI ĐOẠN 3: XÁC THỰC TẠI SERVER ---
+ rect rgb(232, 245, 233)
+ Note right of S: SERVER SIMULATION (Tick N)
+ S->>S: Dequeue Input từ Buffer
+ S->>S: Thực thi Logic: Move -> Collision Check -> Stamina
+ S->>S: Ghi đè [Networked] Properties (State Authority)
+ end
+
+ %% --- GIAI ĐOẠN 4: ĐỒNG BỘ HÓA & HIỆU CHỈNH ---
+ S-->>NT: Broadcast State Snapshot (Tick N)
- Note over CP, S: [FIXED UPDATE NETWORK]
- CP->>S: Send Input (Unreliable / Reliable Data)
-
- Note right of S: Kiểm tra Logic & Thẩm quyền (Simulation)
- S->>S: Apply Input to State Machine (Tick currentState)
- S->>S: Tính toán Velocity & Collision (CharacterController)
- S->>S: Cập nhật [Networked] properties: CamRot, StateName
-
- S-->>CP: State Reconciliation (Nếu sai lệch vị trí > Error Threshold)
- S-->>RP: State Sync: Cập nhật Position, Rotation, Animator State
-
- Note over RP: INTERPOLATION & RENDERING
- RP->>RP: Render: Cập nhật Visuals dựa trên State Sync (Smoothing)
+ par Hồi đáp Local Player
+ NT-->>CP: State Snapshot
+ Note over CP: 🔄 RECONCILIATION
+ alt Nếu vị trí sai lệch > Threshold
+ CP->>CP: Hard Snap / Resimulate từ Tick lỗi
+ else Khớp dữ liệu
+ CP->>CP: Tiếp tục Simulation
+ end
+ and Cập nhật các Player khác
+ NT-->>RP: State Snapshot
+ Note over RP: 🎞️ INTERPOLATION
+ RP->>RP: Lerp từ Snapshot (N-1) sang Snapshot (N)
+ end
+
+ %% --- GIAI ĐOẠN 5: HIỂN THỊ (MONOBEHAVIOUR) ---
+ rect rgb(245, 245, 245)
+ Note over CP, RP: [LateUpdate / Render Loop]
+ CP->>CP: Update Visual: Camera Shake, VFX
+ RP->>RP: Render Smooth Mesh Motion
+ end
```
---
-## 📂 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
-E:/Learning_Progress/Projects/HALLUCINATE/
-├── Assets/ # Tài nguyên chính của trò chơi
-│ ├── Scripts/ # Logic Code (C#) - Được module hóa cao
-│ │ ├── Attributes/ # Các Custom Attributes phục vụ Inspector
-│ │ ├── Camera Controller/ # Hệ thống Camera (Follow, Shake, Zoom)
-│ │ ├── Debug/ # Công cụ gỡ lỗi tại Runtime
-│ │ ├── Fusion/ # Logic Networking (Spawner, Data, Rpc)
-│ │ │ └── BasicSpawner.cs # Khởi tạo Runner & Quản lý Session
-│ │ ├── GameSetup/ # Logic khởi tạo thế giới
-│ │ │ ├── Maze/ # Hệ thống tạo mê cung đa thuật toán
-│ │ │ │ ├── Crawler.cs # Thuật toán Walkers ngẫu nhiên
-│ │ │ │ ├── Prims.cs # Thuật toán MST (Minimal Spanning Tree)
-│ │ │ │ ├── Wilsons.cs # Thuật toán Loop-Erased Walk
-│ │ │ │ └── Maze.cs # Lớp cơ sở điều phối Generation
-│ │ │ └── CharacterAutoSetup.cs # Tự động cấu hình CharacterController
-│ │ ├── Interactables/ # Hệ thống tương tác (IInteractable)
-│ │ │ ├── DoorInteractable.cs # Logic đóng/mở & Chặn đường
-│ │ │ ├── LampInteractable.cs # Hệ thống ánh sáng (On/Off)
-│ │ │ └── BaseInteractable.cs # Lớp trừu tượng cho mọi vật thể
-│ │ ├── Interface/ # Chứa các bản thiết kế chung (IInteractable.cs)
-│ │ ├── Player Controller/ # Trái tim của Gameplay - State Machine
-│ │ │ ├── PlayerStateMachine.cs # Điều phối các trạng thái chính
-│ │ │ ├── InputReader.cs # Xử lý Input tập trung (New Input System)
-│ │ │ └── States/ # Các lớp trạng thái riêng biệt (Idle, Run, Jump, Dash...)
-│ │ ├── Optimization/ # Các Script tối ưu hóa (Culling, Object Pooling)
-│ │ ├── UI/ # Quản lý giao diện người dùng
-│ │ └── VFX/ # Điều khiển hiệu ứng hình ảnh (Particle, Shader)
-│ ├── Prefabs/ # Các đối tượng được dựng sẵn (Player, Shrine, Camera)
-│ ├── document/ # Tài liệu thiết kế, sơ đồ & Ảnh Preview
-│ ├── Scenes/ # Các màn chơi (Main Scene, Lobby, Test Scenes)
-│ ├── Materials/ # Các vật liệu (PBR, Cell-Shading cho Anime Model)
-│ ├── Models/ # Các mô hình 3D (Humanoid F/M, Anime Models)
-│ ├── Animation/ # Hệ thống Animator Controllers & FBX Clips
-│ ├── Photon/ # SDK Photon Fusion & Các Plugin Networking
-│ ├── TextMesh Pro/ # Tài nguyên cho hệ thống Text chất lượng cao
-│ └── Settings/ # Cấu hình URP, Input System & Physics
-├── ProjectSettings/ # Cấu hình toàn cục của Unity Editor
-│ ├── TagManager.asset # Quản lý Layer (Ground, Interactable)
-│ ├── DynamicsManager.asset # Cấu hình Physics (Gravity, Collision Matrix)
-│ └── MultiplayerManager.asset # Cấu hình Networking Roles & Stripping
-├── Packages/ # Quản lý các Unity Package (manifest.json)
-└── README.md # Tài liệu này
-```
-
----
-
----
-
## ⚖️ 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, HALLUCINATE á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.
@@ -322,28 +430,8 @@ Khi Trapper để xổng mất con mồi, mê cung sẽ hiến tế sự ổn đ
---
-### 🧠 Logic Cân bằng & Reset (Balance Logic)
-
-```mermaid
-graph TD
- Loss[Player Loses Round] --> Streak{Check Streak}
- Streak -- "1 Loss" --> T1[Tier 1 Pool: Awakening]
- Streak -- "2 Losses" --> T2[Tier 2 Pool: Evolution]
- Streak -- "3+ Losses" --> T3[Tier 3 Pool: Manifestation]
-
- T1 & T2 & T3 --> Selection{Random/Manual Selection}
- Selection --> Apply[Apply to Next Round Only]
-
- Apply --> Result{Outcome?}
- Result -- "Win" --> Reset[Reset Streak: Remove All Buffs]
- Result -- "Loss" --> Streak
-```
-
----
-
## 🚀 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).
@@ -355,16 +443,122 @@ graph TD
---
-## 🤝 Hướng dẫn Cài đặt (Installation)
+## 📂 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
+📦 HALLUCINATE
+├── 🌸 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 xinh xắn
+│ │ ├── 🎥 Camera Controller/ # Ánh nhìn của nhân vật
+│ │ ├── 🛠️ Debug/ # Đội cứu hộ lỗi (Fix-it!)
+│ │ ├── 🌐 Fusion/ # Sợi dây kết nối mọi người (Networking)
+│ │ │ └── 🚀 BasicSpawner.cs
+│ │ ├── 🏗️ GameSetup/ # Kiến tạo thế giới ảo
+│ │ │ ├── 🌀 Maze/ # Mê cung huyền bí
+│ │ │ │ ├── 🐾 Crawler.cs # Những bước chân ngẫu nhiên
+│ │ │ │ ├── 🌳 Prims.cs # Cây khung tối tiểu
+│ │ │ │ ├── 🧵 Wilsons.cs # Bước đi không vòng lặp
+│ │ │ │ └── 🗺️ Maze.cs # Nhạc trưởng mê cung
+│ │ │ └── 🧍 CharacterAutoSetup.cs
+│ │ ├── 🖱️ Interactables/ # Những vật thể biết nói
+│ │ │ ├── 🚪 DoorInteractable.cs
+│ │ │ ├── 💡 LampInteractable.cs
+│ │ │ └── 💎 BaseInteractable.cs
+│ │ ├── 📐 Interface/ # Bản thiết kế chung (IInteractable)
+│ │ ├── 🏃♀️ Player Controller/ # Linh hồn của Gameplay
+│ │ │ ├── 🧠 PlayerStateMachine.cs
+│ │ │ ├── ⌨️ InputReader.cs
+│ │ │ └── 🎭 States/ # Cảm xúc hành động (Idle, Run, Jump...)
+│ │ ├── ⚡ Optimization/ # Phép màu mượt mà (60 FPS!)
+│ │ ├── 🖥️ UI/ # Giao diện dễ thương
+│ │ └── 🎆 VFX/ # Bụi tiên và ánh sáng
+│ ├── 🧸 Prefabs/ # Những món đồ chơi dựng sẵn
+│ ├── 📖 document/ # Sách bí kíp (Design & Diagrams)
+│ ├── 🎬 Scenes/ # Những sân khấu kịch
+│ ├── 🎨 Materials/ # Lớp áo lấp lánh (Cell-Shading)
+│ ├── 👸 Models/ # Những cư dân Anime 3D
+│ ├── 💃 Animation/ # Điệu nhảy của nhân vật
+│ ├── 🔌 Photon/ # Cổng dịch chuyển không gian (SDK)
+│ ├── 🅰️ TextMesh Pro/ # Những dòng chữ nghệ thuật
+│ └── ⚙️ Settings/ # Cấu hình thế giới (URP & Physics)
+├── 🛠️ ProjectSettings/ # Quy tắc của vũ trụ Unity
+│ ├── 🏷️ TagManager.asset # Phân loại tầng mây
+│ ├── 🌍 DynamicsManager.asset # Trọng lực & Va chạm
+│ └── 📡 MultiplayerManager.asset # Quy tắc chơi chung
+├── 📦 Packages/ # Những chiếc túi thần kỳ
+└── 📝 README.md # Lời chào từ Creator (。•̀ᴗ-)✧
+```
+
+---
+
+## 🤝 Hướng dẫn Cài đặt & Khởi chạy (Installation & Setup)
+
+Để trải nghiệm **HALLUCINATE** 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/HALLUCINATE.git
```
-2. **Unity Version:** Đảm bảo bạn sử dụng Unity **6000.3.10f1** (Unity 6).
-3. **Photon Fusion:** AppID cấu hình tại `Photon/Fusion/Resources/PhotonAppSettings`.
+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.
---
-**© 2026 ONLYSCOVE STUDIOS.**
+## 💖 Support & Community
+
+
+
+