Update
This commit is contained in:
203
README.md
203
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.
|
||||
|
||||
# 
|
||||
|
||||
[](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)
|
||||
## <img src="https://api.iconify.design/lucide/eye.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Tầm nhìn Dự án (Project Vision)
|
||||
|
||||

|
||||
|
||||
@@ -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)
|
||||
## <img src="https://api.iconify.design/lucide/gamepad-2.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Cơ chế Trò chơi (Core Mechanics)
|
||||
|
||||
### 🌓 Sự bất đối xứng (The Asymmetry)
|
||||
### <img src="https://api.iconify.design/lucide/circle-dashed.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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 ["<b>1. KHỞI TẠO HỆ THỐNG (NET-SYNC)</b>"]
|
||||
A["🚀 Bắt đầu Trận đấu"] --> B{"🤝 Matchmaking<br/>(Photon Fusion)"}
|
||||
B --> C["🎭 Phân vai: Seeker vs Trapper"]
|
||||
C --> D["🧩 Maze Generator<br/>(Prims/Wilsons)"]
|
||||
D --> E["🏗️ Baking NavMesh & Colliders"]
|
||||
E --> F["🧍 Character Auto-Setup"]
|
||||
F --> G["📍 Spawn Players"]
|
||||
A["<img src="https://api.iconify.design/lucide/rocket.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Bắt đầu Trận đấu"] --> B{"<img src="https://api.iconify.design/lucide/handshake.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Matchmaking<br/>(Photon Fusion)"}
|
||||
B --> C["<img src="https://api.iconify.design/lucide/masks-theater.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Phân vai: Seeker vs Trapper"]
|
||||
C --> D["<img src="https://api.iconify.design/lucide/puzzle.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Maze Generator<br/>(Prims/Wilsons)"]
|
||||
D --> E["<img src="https://api.iconify.design/lucide/building-2.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Baking NavMesh & Colliders"]
|
||||
E --> F["<img src="https://api.iconify.design/lucide/user.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Character Auto-Setup"]
|
||||
F --> G["<img src="https://api.iconify.design/lucide/map-pin.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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 ["<b>🏃 SEEKER (POV 1st)</b>"]
|
||||
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 ["<b><img src="https://api.iconify.design/lucide/run.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> SEEKER (POV 1st)</b>"]
|
||||
S1["<img src="https://api.iconify.design/lucide/keyboard.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Input: WASD/Space"] --> S2["<img src="https://api.iconify.design/lucide/run.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> State: Move/Dash"]
|
||||
S2 --> S3{"<img src="https://api.iconify.design/lucide/zap.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Hành động?"}
|
||||
S3 -- "Sprinting" --> S4["<img src="https://api.iconify.design/lucide/volume-2.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Noise Up"]
|
||||
S3 -- "Sneaking" --> S5["<img src="https://api.iconify.design/lucide/volume-x.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Noise Down"]
|
||||
S3 -- "Flashlight" --> S6["<img src="https://api.iconify.design/lucide/flashlight.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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{"<img src="https://api.iconify.design/lucide/search.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Check Env"}
|
||||
S_Check -- "Dẫm bẫy" --> S_Trap["<img src="https://api.iconify.design/lucide/alert-triangle.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Bị khống chế"]
|
||||
end
|
||||
|
||||
%% Trapper Branch
|
||||
subgraph Trapper_Logic ["<b>🕸️ TRAPPER (STRATEGY)</b>"]
|
||||
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 ["<b><img src="https://api.iconify.design/lucide/settings.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> TRAPPER (STRATEGY)</b>"]
|
||||
T1["<img src="https://api.iconify.design/lucide/mouse.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Mouse Input"] --> T2["<img src="https://api.iconify.design/lucide/map.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> View: Heatmap/Cams"]
|
||||
T2 --> T3{"<img src="https://api.iconify.design/lucide/wrench.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Kỹ năng?"}
|
||||
T3 -- "Đặt bẫy" --> T4["<img src="https://api.iconify.design/lucide/binary.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Sync Trap"]
|
||||
T3 -- "Scan" --> T5["<img src="https://api.iconify.design/lucide/rss.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Ping Seeker"]
|
||||
T3 -- "Lock" --> T6["<img src="https://api.iconify.design/lucide/door-closed.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Khóa cửa"]
|
||||
|
||||
T4 & T5 & T6 --> T_Check{"👁️ Theo dõi"}
|
||||
T4 & T5 & T6 --> T_Check{"<img src="https://api.iconify.design/lucide/eye.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Theo dõi"}
|
||||
end
|
||||
|
||||
%% Networking Layer
|
||||
subgraph Network_Sync ["<b>🌐 NETWORK SYNC</b>"]
|
||||
subgraph Network_Sync ["<b><img src="https://api.iconify.design/lucide/globe.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> NETWORK SYNC</b>"]
|
||||
Loop --> NS1["⏩ Client Prediction"]
|
||||
NS1 --> NS2["🔄 Server Reconciliation"]
|
||||
NS2 --> NS3["📦 State Sync"]
|
||||
NS1 --> NS2["<img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Server Reconciliation"]
|
||||
NS2 --> NS3["<img src="https://api.iconify.design/lucide/package.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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 ["<b>3. KẾT THÚC & THƯỞNG</b>"]
|
||||
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["<img src="https://api.iconify.design/lucide/trophy.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> SEEKER THẮNG"]
|
||||
T_Check -- "Bắt được Seeker" --> Win_T["<img src="https://api.iconify.design/lucide/trophy.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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["<img src="https://api.iconify.design/lucide/bar-chart-3.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Thống kê Rank"]
|
||||
Post_Match --> Buff{"<img src="https://api.iconify.design/lucide/scale.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Balance Check"}
|
||||
Buff -- "Thua cuộc" --> Buff_Apply["<img src="https://api.iconify.design/lucide/gem.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
## <img src="https://api.iconify.design/lucide/building-2.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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 "<img src="https://api.iconify.design/lucide/flower.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> GROUND" as Ground {
|
||||
[*] --> Idle
|
||||
|
||||
state Idle {
|
||||
I_P: 📝 Vel < 0.1m/s
|
||||
I_P: <img src="https://api.iconify.design/lucide/file-text.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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: <img src="https://api.iconify.design/lucide/footprints.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Speed 2-4m/s
|
||||
M_C: <img src="https://api.iconify.design/lucide/wind.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Head Bob (1.2Hz)
|
||||
}
|
||||
|
||||
Moving --> Sneaking : "OnSneak (Hold)"
|
||||
state Sneaking {
|
||||
Sn_P: 🤫 Noise -50%
|
||||
Sn_C: 📉 Lower Height
|
||||
Sn_P: <img src="https://api.iconify.design/lucide/volume-x.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Noise -50%
|
||||
Sn_C: <img src="https://api.iconify.design/lucide/trending-down.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Lower Height
|
||||
}
|
||||
|
||||
Moving --> Sprinting : "OnSprint (Hold)"
|
||||
state Sneaking --> Moving : "Release Sneak"
|
||||
state Sprinting {
|
||||
Sp_P: ⚡ Speed > 6.5m/s
|
||||
Sp_P: <img src="https://api.iconify.design/lucide/zap.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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: <img src="https://api.iconify.design/lucide/arrow-up-circle.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> AddForce Up
|
||||
}
|
||||
state Falling {
|
||||
F_P: 📉 Gravity x 1.5
|
||||
F_P: <img src="https://api.iconify.design/lucide/trending-down.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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 "<img src="https://api.iconify.design/lucide/zap.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> ACTION" as Utility {
|
||||
state Dashing {
|
||||
D_P: 💨 Burst 15m/s
|
||||
D_P: <img src="https://api.iconify.design/lucide/wind.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Burst 15m/s
|
||||
}
|
||||
state Interacting {
|
||||
Int_P: 🔒 Root Motion Lock
|
||||
Int_P: <img src="https://api.iconify.design/lucide/lock.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Root Motion Lock
|
||||
}
|
||||
}
|
||||
|
||||
state "🌐 NETWORK" as Net {
|
||||
state "<img src="https://api.iconify.design/lucide/globe.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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
|
||||
<img src="https://api.iconify.design/lucide/sparkles.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Sync: Velocity
|
||||
<img src="https://api.iconify.design/lucide/sparkles.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> State: MoveState
|
||||
end note
|
||||
|
||||
note right of Net
|
||||
⚙️ Photon Fusion
|
||||
⚙️ FixedUpdateNetwork
|
||||
<img src="https://api.iconify.design/lucide/settings.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Photon Fusion
|
||||
<img src="https://api.iconify.design/lucide/settings.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
## <img src="https://api.iconify.design/lucide/puzzle.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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(("💔 <b>PLAYER LOSES ROUND</b>")) --> Streak{{"📊 Check Loss Streak"}}
|
||||
Start(("<img src="https://api.iconify.design/lucide/heart-off.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> <b>PLAYER LOSES ROUND</b>")) --> Streak{{"<img src="https://api.iconify.design/lucide/bar-chart-3.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Check Loss Streak"}}
|
||||
|
||||
%% Phân tầng Buff
|
||||
subgraph Buff_Pools ["<b>🔥 HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)</b>"]
|
||||
subgraph Buff_Pools ["<b><img src="https://api.iconify.design/lucide/flame.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> HỆ THỐNG CÂN BẰNG ĐỘNG (COMEBACK POOLS)</b>"]
|
||||
Streak -- "1 Trận" --> T1
|
||||
Streak -- "2 Trận" --> T2
|
||||
Streak -- "3+ Trận" --> T3
|
||||
|
||||
T1["🥉 <b>Tier 1: Awakening</b><br/>(Small Boosts)"]
|
||||
T2["🥈 <b>Tier 2: Evolution</b><br/>(Tactical Advantage)"]
|
||||
T3["🥇 <b>Tier 3: Manifestation</b><br/>(Game Changer)"]
|
||||
T1["<img src="https://api.iconify.design/lucide/award.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> <b>Tier 1: Awakening</b><br/>(Small Boosts)"]
|
||||
T2["<img src="https://api.iconify.design/lucide/award.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> <b>Tier 2: Evolution</b><br/>(Tactical Advantage)"]
|
||||
T3["<img src="https://api.iconify.design/lucide/award.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> <b>Tier 3: Manifestation</b><br/>(Game Changer)"]
|
||||
|
||||
%% Ví dụ chỉ số (Tooltip-like)
|
||||
T1 --- T1_Ex["+10% Speed<br/>+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{{"<img src="https://api.iconify.design/lucide/dice-5.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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["✨ <b>Apply to Next Round Only</b><br/>(Trạng thái: Active)"]
|
||||
P1 & P2 --> Apply["<img src="https://api.iconify.design/lucide/sparkles.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> <b>Apply to Next Round Only</b><br/>(Trạng thái: Active)"]
|
||||
|
||||
%% Kết quả vòng đấu sau
|
||||
Apply --> Result{{"🏁 New Round Result?"}}
|
||||
Apply --> Result{{"<img src="https://api.iconify.design/lucide/flag.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> New Round Result?"}}
|
||||
|
||||
Result -- "🏆 WIN" --> Reset["♻️ <b>Reset Streak</b><br/>Remove All Buffs"]
|
||||
Result -- "❌ LOSS" --> Increment["📈 <b>Increase Streak</b><br/>Progress to Next Tier"]
|
||||
Result -- "<img src="https://api.iconify.design/lucide/trophy.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> WIN" --> Reset["<img src="https://api.iconify.design/lucide/rotate-ccw.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> <b>Reset Streak</b><br/>Remove All Buffs"]
|
||||
Result -- "❌ LOSS" --> Increment["<img src="https://api.iconify.design/lucide/trending-up.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> <b>Increase Streak</b><br/>Progress to Next Tier"]
|
||||
|
||||
%% Vòng lặp
|
||||
Reset --> NewGame(("🎮 Fair Match"))
|
||||
Reset --> NewGame(("<img src="https://api.iconify.design/lucide/gamepad-2.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Fair Match"))
|
||||
Increment --> Start
|
||||
|
||||
%% Gán Style
|
||||
@@ -293,9 +302,10 @@ graph TD
|
||||
class Result,Reset,NewGame winStyle;
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 🌐 Đồng bộ Mạng (Networking)
|
||||
## <img src="https://api.iconify.design/lucide/globe.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Đồ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 <img src="https://api.iconify.design/lucide/mouse.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Input
|
||||
participant CP as 🎀 Local Player
|
||||
participant NT as 🌐 Fusion Net
|
||||
participant S as 👑 Server
|
||||
participant RP as 👥 Proxies
|
||||
participant NT as <img src="https://api.iconify.design/lucide/globe.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Fusion Net
|
||||
participant S as <img src="https://api.iconify.design/lucide/crown.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Server
|
||||
participant RP as <img src="https://api.iconify.design/lucide/users.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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: <img src="https://api.iconify.design/lucide/package.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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: <img src="https://api.iconify.design/lucide/run.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Run Client-Side Physics
|
||||
CP->>NT: <img src="https://api.iconify.design/lucide/mail.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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: <img src="https://api.iconify.design/lucide/file-text.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Validate & Update State
|
||||
S-->>NT: <img src="https://api.iconify.design/lucide/megaphone.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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: <img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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: <img src="https://api.iconify.design/lucide/film.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
## <img src="https://api.iconify.design/lucide/scale.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/trending-up.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/run.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/eye.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
## <img src="https://api.iconify.design/lucide/rocket.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Lộ trình Phát triển (Roadmap)
|
||||
|
||||
<!-- START_UPDATES -->
|
||||
<!-- END_UPDATES -->
|
||||
@@ -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)
|
||||
## <img src="https://api.iconify.design/lucide/users.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Độ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)
|
||||
## <img src="https://api.iconify.design/lucide/ruler.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/globe.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/building-2.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/binary.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
### <img src="https://api.iconify.design/lucide/palette.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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)
|
||||
## <img src="https://api.iconify.design/lucide/handshake.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> 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
|
||||
## <img src="https://api.iconify.design/lucide/heart.svg?color=%23E0E0E0" width="20" height="20" style="vertical-align: middle;"> Support & Community
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/scove303">
|
||||
@@ -561,3 +575,4 @@ Trò chơi yêu cầu **AppID** hợp lệ để hoạt động qua mạng:
|
||||
|
||||
**Connect with us:**
|
||||
[](https://x.com/Scovy303)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user