2026-04-08 12:02:18 +07:00
...
2026-04-03 22:46:17 +07:00
...
2026-04-03 22:46:17 +07:00
...
2026-04-03 22:46:17 +07:00
...
2026-04-03 22:46:17 +07:00
2026-03-26 13:16:39 +00:00
2026-04-08 12:02:18 +07:00

🌑 HALLUCINATE: The Asymmetric Mind-Game

Unity 6000.3.10f1 Photon Fusion License: 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)
  2. Cơ chế Trò chơi (Core Mechanics)
  3. Kiến trúc Kỹ thuật (Technical Architecture)
  4. Hệ thống Mê cung (Maze Generation)
  5. Đồng bộ Mạng (Networking)
  6. Công cụ Phát triển (Developer Tools)
  7. Lộ trình Phát triển (Roadmap)
  8. Cấu trúc Thư mục (Folder Structure)
  9. Hướng dẫn Cài đặt (Installation)

👁️ Tầm nhìn Dự án (Project Vision)

Game Concept Art

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ẫntí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)

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

    %% Phase 2: Core Loop (The Heart of the Game)
    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í]
            
            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]
        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]
            
            T4 & T5 & T6 --> T_Check{Theo dõi Seeker}
        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]
        end
    end

    %% 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]
        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]
        Buff_Apply --> A
    end

    %% 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
    NS3 --> Loop

🏗️ 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à.

stateDiagram-v2
    [*] --> Idle
    Idle --> Moving: Movement Input
    Moving --> Running: Sprint Input
    Running --> Idle: Stop
    Moving --> Sneaking: Sneak Input
    
    state "Airborne Logic" as Airborne {
        Jump --> Falling
        Falling --> Grounded
    }
    
    Moving --> Jump: Jump Input
    Airborne --> Idle: Land
    
    Moving --> Dashing: Dash Input
    Dashing --> Moving: Complete
    
    Interact --> Idle: Action Key

2. Environment Scanner & Interaction

Hệ thống quét vật thể (EnvironmentScanner.cs) sử dụng SphereCastOverlapSphere để 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)

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]
    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

    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

    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

🌐 Đồ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

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)

    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}
    
    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)

📂 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.

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.

📈 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.

🧠 Logic Cân bằng & Reset (Balance Logic)

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)

  • Phase 1: Foundation
    • Player State Machine (Idle, Move, Run, Jump).
    • Maze Generation (Multi-algorithm).
    • Photon Fusion Integration.
  • Phase 2: Gameplay Core
    • Role Selection (Seeker vs Trapper).
    • Trap Placement System.
    • Sound & Visual Detection (Noise Meter).

🤝 Hướng dẫn Cài đặt (Installation)

  1. Clone Repository:
    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.

© 2026 ONLYSCOVE STUDIOS. Hallucinate is more than a game, it's a social experiment.

Description
An asymmetric PvP mind-game built with Unity & Photon Fusion. One Seeker, one Trapper, and a procedurally generated dark maze. A high-stakes battle of intuition, stealth, and psychological warfare.
https://scove-vault.duckdns.org/
Readme 1.6 GiB
Languages
C# 89.5%
GLSL 7.5%
ShaderLab 2.5%
HLSL 0.4%