560 lines
25 KiB
Markdown
560 lines
25 KiB
Markdown
# 🌑 HALLUCINATE: The Asymmetric Mind-Game
|
|
|
|
[](https://unity.com/)
|
|
[](https://www.photonengine.com/fusion)
|
|
[](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."**
|
|
|
|
**HALLUCINATE** 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.
|
|
|
|
---
|
|
|
|
## 📑 Mục lục (Table of Contents)
|
|
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)
|
|
|
|

|
|
|
|
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 ["<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"]
|
|
end
|
|
class Initialization,A,B,C,D,E,F,G initStyle;
|
|
|
|
%% Phase 2: Core Loop
|
|
subgraph Active_Round ["<b>2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)</b>"]
|
|
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í"]
|
|
|
|
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 ["<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"]
|
|
|
|
T4 & T5 & T6 --> T_Check{"👁️ Theo dõi"}
|
|
end
|
|
|
|
%% Networking Layer
|
|
subgraph Network_Sync ["<b>🌐 NETWORK SYNC</b>"]
|
|
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 ["<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"]
|
|
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
|
|
|
|
%% Định nghĩa các vùng trạng thái
|
|
state "🌸 GROUND LOCOMOTION" 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)
|
|
}
|
|
|
|
Moving --> Sneaking: "OnSneak (Hold) ✨"
|
|
state Sneaking {
|
|
direction LR
|
|
Sn_Phys: 🤫 Speed 1.5m/s | Noise -50%
|
|
Sn_Cam: 📉 Height -0.5m | FOV 55
|
|
}
|
|
|
|
Moving --> Sprinting: "OnSprint (Hold) 🔥"
|
|
state Sprinting {
|
|
direction LR
|
|
Sp_Phys: ⚡ Speed > 6.5m/s | Noise +100%
|
|
Sp_Cam: 🌈 Dynamic FOV (60-85)
|
|
}
|
|
|
|
Sprinting --> Moving: "Stamina == 0 or Release"
|
|
Sneaking --> Moving: "Release Sneak"
|
|
}
|
|
|
|
state "☁️ AIRBORNE & IMPACT" as Air {
|
|
state Jump {
|
|
J_Phys: 🆙 AddForce Up
|
|
J_Cam: 🚀 Instant Y-Kick
|
|
}
|
|
|
|
state Falling {
|
|
F_Phys: 📉 Gravity x 1.5
|
|
F_Cam: 💨 Wind Distortion VFX
|
|
}
|
|
|
|
state Landing {
|
|
L_Phys: 📏 Impact Velocity Check
|
|
L_Cam: 💢 Screen Shake
|
|
}
|
|
|
|
Jump --> Falling: "Velocity.y < 0"
|
|
Falling --> Landing: "IsGrounded == true"
|
|
}
|
|
|
|
state "🎀 UTILITY & ACTIONS" as Utility {
|
|
state Dashing {
|
|
D_Phys: 💨 Burst 15m/s
|
|
D_Cam: 🍭 Lens Distortion
|
|
}
|
|
|
|
state Interacting {
|
|
Int_Phys: 🔒 Root Motion Lock
|
|
Int_Cam: 👁️ Contextual Look-at
|
|
}
|
|
}
|
|
|
|
state "🌐 NETWORK SYNC (Fusion)" as Net {
|
|
state InputAuthority {
|
|
IA: 🎮 Local Prediction
|
|
IA: ⏳ Buffer Tick N
|
|
}
|
|
state StateAuthority {
|
|
SA: 🖥️ Server Snapshot
|
|
SA: 🛠️ Reconciliation
|
|
}
|
|
|
|
IA --> SA: "[Networked] CamRotation"
|
|
SA --> IA: "Correction if Error > 0.5m"
|
|
}
|
|
|
|
state "🎭 ROLE VIEWPORTS" as Roles {
|
|
state Seeker_FPS {
|
|
S_View: 🔦 1st Person POV
|
|
S_Logic: 🔊 Noise Meter UI
|
|
}
|
|
state Trapper_STRAT {
|
|
T_View: 🗺️ Tactical Overlay
|
|
T_Logic: 🌡️ Heatmap & CCTV
|
|
}
|
|
}
|
|
|
|
%% Transitions chính (Đã sửa lỗi cú pháp bằng dấu "")
|
|
Ground --> Air: "!IsGrounded (Coyote Time: 0.2s)"
|
|
Air --> Ground: "OnLand Event ✨"
|
|
Ground --> Utility: "OnAbilityTrigger ⚡"
|
|
Utility --> Ground: "Action Complete ✅"
|
|
|
|
note left of Ground: 🎵 Sync: Velocity, MoveState
|
|
note right of Net: ⚙️ Fusion: FixedUpdateNetwork Loop
|
|
```
|
|
|
|
### 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 **HALLUCINATE** 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(("💔 <b>PLAYER LOSES ROUND</b>")) --> Streak{{"📊 Check Loss Streak"}}
|
|
|
|
%% Phân tầng Buff
|
|
subgraph Buff_Pools ["<b>🔥 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)"]
|
|
|
|
%% Ví dụ chỉ số (Tooltip-like)
|
|
T1 --- T1_Ex["+10% Speed<br/>+15% Stamina Regen"]
|
|
T2 --- T2_Ex["Bẫy tàng hình (Trapper)<br/>Giảm 50% tiếng ồn (Seeker)"]
|
|
T3 --- T3_Ex["Nhìn xuyên tường 5s<br/>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["✨ <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?"}}
|
|
|
|
Result -- "🏆 WIN" --> Reset["♻️ <b>Reset Streak</b><br/>Remove All Buffs"]
|
|
Result -- "❌ LOSS" --> Increment["📈 <b>Increase Streak</b><br/>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
|
|
|
|
%% Định nghĩa các bên tham gia với phong cách đáng yêu
|
|
participant IR as 🖱️ Input Reader
|
|
box "🌸 CLIENT (Authority)" #E3F2FD
|
|
participant CP as 🎀 Local Player<br/>(Predictive)
|
|
end
|
|
box "🌐 NETWORK" #FFF3E0
|
|
participant NT as ✨ Fusion Buffer
|
|
end
|
|
box "🖥️ SERVER" #E8F5E9
|
|
participant S as 👑 State Authority
|
|
end
|
|
box "👥 OTHERS" #F3E5F5
|
|
participant RP as 🍭 Remote Proxies
|
|
end
|
|
|
|
%% --- GIAI ĐOẠN 1: THU THẬP ---
|
|
Note over IR, CP: [TICK N] Thu thập năng lượng Input ✨
|
|
IR->>CP: OnMove / OnJump Events
|
|
CP->>CP: 📦 Encode NetworkInputData
|
|
|
|
%% --- GIAI ĐOẠN 2: DỰ ĐOÁN ---
|
|
rect rgb(255, 245, 230)
|
|
Note over CP, NT: [FixedUpdateNetwork] Chạy trước tương lai! 🚀
|
|
CP->>CP: 🏃 Client-Side Prediction<br/>(Di chuyển ngay lập tức)
|
|
CP->>NT: ✉️ Send Input Packet
|
|
NT-->>S: Transport via UDP
|
|
end
|
|
|
|
%% --- GIAI ĐOẠN 3: XÁC THỰC ---
|
|
rect rgb(235, 255, 235)
|
|
Note right of S: SERVER LOGIC (Tick N) ⚖️
|
|
S->>S: 📝 Verify Input & Collision
|
|
S->>S: 💾 Update [Networked] States
|
|
end
|
|
|
|
%% --- GIAI ĐOẠN 4: ĐỒNG BỘ ---
|
|
S-->>NT: 📣 Broadcast State Snapshot
|
|
|
|
par 💫 Hồi đáp Local Player
|
|
NT-->>CP: State Snapshot
|
|
Note over CP: 🔄 RECONCILIATION
|
|
alt ⚠️ Sai lệch > Threshold
|
|
CP->>CP: Hard Snap & Resimulate
|
|
else ✅ Hợp lệ
|
|
CP->>CP: Tiếp tục Simulation mượt mà
|
|
end
|
|
and 🌈 Cập nhật cho mọi người
|
|
NT-->>RP: State Snapshot
|
|
Note over RP: 🎞️ INTERPOLATION
|
|
RP->>RP: Lerp(Snap_N, Snap_N-1)
|
|
end
|
|
|
|
%% --- GIAI ĐOẠN 5: HIỂN THỊ ---
|
|
rect rgb(250, 240, 255)
|
|
Note over CP, RP: [LateUpdate] Rendering Kawaii VFX 🎨
|
|
CP->>CP: Cam Shake & Particles
|
|
RP->>RP: Smooth Mesh Movement
|
|
end
|
|
```
|
|
|
|
---
|
|
|
|
## ⚖️ 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.
|
|
|
|
### 📈 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 với 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).
|
|
|
|
---
|
|
|
|
## 📂 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. 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
|
|
|
|
<p align="center">
|
|
<a href="https://github.com/OnlyScove/HALLUCINATE/stargazers">
|
|
<img src="https://img.shields.io/github/stars/OnlyScove/HALLUCINATE?style=for-the-badge&logo=github&color=yellow" alt="Stars">
|
|
</a>
|
|
<a href="https://github.com/OnlyScove/HALLUCINATE/network/members">
|
|
<img src="https://img.shields.io/github/forks/OnlyScove/HALLUCINATE?style=for-the-badge&logo=github&color=blue" alt="Forks">
|
|
</a>
|
|
<a href="https://github.com/OnlyScove">
|
|
<img src="https://img.shields.io/github/followers/OnlyScove?style=for-the-badge&logo=github&color=green" alt="Follow">
|
|
</a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="https://www.buymeacoffee.com/yourname">
|
|
<img src="https://img.shields.io/badge/Buy%20Me%20A%20Coffee-Donate-orange?style=for-the-badge&logo=buy-me-a-coffee&logoColor=white" alt="Buy Me A Coffee">
|
|
</a>
|
|
<a href="https://discord.gg/yourlink">
|
|
<img src="https://img.shields.io/badge/Discord-Join%20Community-7289DA?style=for-the-badge&logo=discord&logoColor=white" alt="Discord">
|
|
</a>
|
|
<a href="https://ko-fi.com/yourname">
|
|
<img src="https://img.shields.io/badge/Ko--fi-Support-red?style=for-the-badge&logo=ko-fi&logoColor=white" alt="Ko-fi">
|
|
</a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FOnlyScove%2FHALLUCINATE&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=Visitors&edge_flat=false" alt="Visitors">
|
|
</p>
|
|
|
|
---
|
|
|
|
**© 2026 SCOVANIA STUDIOS.**
|
|
*Hallucinate is more than a game, it's a social experiment.*
|