⚡ THE ASYMMETRIC PSYCHOLOGICAL SURVIVAL ENGINE
"Thị giác là một lời nói dối. Bóng tối là sự thật duy nhất."
|
Cognitive War Tâm lý chiến |
Spatial Audio Âm thanh 3D |
Procedural Maze Mê cung vô tận |
Tầm nhìn Dự án (Project Vision)
BABA_YAGA không chỉ là một trò chơi; nó là một thí nghiệm về sự cô lập. Dự án được xây dựng trên triết lý "High-Stakes Hide & Seek", nơi mỗi giây im lặng đều mang trọng lượng ngàn cân.
💠 Các Trụ Cột Cốt Lõi (Core Pillars)
- 🎛️ Minimalist UI (The "Invisible" HUD): Chúng tôi loại bỏ mọi rào cản giữa người chơi và môi trường. Không thanh máu, không bản đồ con. Mọi thông tin đều được phản hồi qua nhịp tim, nhịp thở và độ mờ của tầm nhìn.
- 🔊 Spatial Audio Positioning: Âm thanh là vũ khí. Seeker phải học cách "nhìn bằng tai", trong khi Trapper có thể sử dụng tiếng động giả để điều hướng con mồi vào bẫy.
- 💡 Dynamic Lighting & Shadow Manipulation: Ánh sáng trong BABA_YAGA là một tài nguyên hữu hạn. Việc bật đèn pin có thể giúp bạn thấy đường, nhưng đồng thời biến bạn thành một ngọn hải đăng cho kẻ đi săn.
DANH MỤC HỆ THỐNG
|
|
|
|
|
|
|
|
|
|
|
|
Tầm nhìn Dự án (Project Vision)
BABA_YAGA được định nghĩa là một trải nghiệm "Psychological Asymmetric Survival". Chúng tôi không xây dựng một trò chơi hành động nhanh, mà xây dựng một môi trường nơi sự kiên nhẫn là vũ khí và tư duy logic là chìa khóa để sống sót. Trọng tâm của dự án xoay quanh việc thao túng nhận thức của người chơi thông qua ba trụ cột kỹ thuật:
Cơ chế Cốt lõi (Core Mechanics)
Kiến trúc gameplay của BABA_YAGA được xây dựng dựa trên nguyên lý "Thông tin Bất xứng" (Information Asymmetry). Hai phe tham gia không chỉ khác biệt về công cụ, mà còn trải nghiệm trò chơi ở hai chiều không gian và logic hoàn toàn trái ngược nhau.
Hệ sinh thái Bất đối xứng (The Asymmetric Paradigm)
Vòng lặp Gameplay & Đồng bộ Hóa (Deterministic Game Loop)
Toàn bộ logic bên dưới được xử lý trong
FixedUpdateNetwork()của Photon Fusion. Chúng tôi sử dụng kiến trúc Server Reconciliation kết hợp Client Prediction để đảm bảo Seeker di chuyển mượt mà (không delay), trong khi Trapper vẫn có quyền kiểm soát toàn vẹn trạng thái bản đồ (Server Authority).
(Lưu ý kỹ thuật: Sơ đồ dưới đây đã được cấu trúc lại thuộc tính HTML bên trong để đảm bảo khả năng render không bị lỗi trên các bộ phân tích Markdown của GitHub/Gitea)
graph TD
classDef initStyle fill:#1a2b3c,stroke:#33CCFF,stroke-width:2px,color:#E0E0E0;
classDef seekerStyle fill:#332200,stroke:#FFD700,stroke-width:2px,color:#FFD700;
classDef trapperStyle fill:#2b0000,stroke:#FF3333,stroke-width:2px,color:#FF3333;
classDef netStyle fill:#111111,stroke:#888888,stroke-dasharray:5 5,color:#E0E0E0;
classDef winStyle fill:#003311,stroke:#00FF55,stroke-width:3px,color:#00FF55;
classDef criticalStyle fill:#4d0000,stroke:#FF0000,stroke-width:2px,color:#FF0000;
subgraph Initialization ["1. KHỞI TẠO HỆ THỐNG (NET-SYNC)"]
A["🚀 Bắt đầu Trận đấu"] --> B{"🤝 Matchmaking\nPhoton Fusion"}
B --> C["🎭 Phân vai: Seeker vs Trapper"]
C --> D["🧩 Maze Generator\nPrims/Wilsons"]
D --> E["🏛️ Baking NavMesh & Colliders"]
E --> F["👤 Character Auto-Setup"]
F --> G["📍 Spawn Players"]
end
class A,B,C,D,E,F,G initStyle;
subgraph Active_Round ["2. VÒNG LẶP CHIẾN ĐẤU (CORE LOOP)"]
G --> Loop(["⚙️ TICK: FixedUpdateNetwork"])
subgraph Seeker_Logic ["⚡ SEEKER - POV 1st Person"]
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
subgraph Trapper_Logic ["🔧 TRAPPER - Strategy View"]
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
subgraph Network_Sync ["🌐 NETWORK SYNC LAYER"]
Loop --> NS1["⏩ Client Prediction"]
NS1 --> NS2["🔄 Server Reconciliation"]
NS2 --> NS3["📦 State Sync"]
end
end
class S1,S2,S3,S4,S5,S6,S_Check seekerStyle;
class T1,T2,T3,T4,T5,T6,T_Check trapperStyle;
class NS1,NS2,NS3,Loop netStyle;
class S_Trap criticalStyle;
subgraph Result_Logic ["3. KẾT THÚC & THƯỞNG"]
S_Check -- "Chạm Exit" --> Win_S["🏆 SEEKER THẮNG"]
T_Check -- "Bắt được Seeker" --> Win_T["🏆 TRAPPER THẮNG"]
Loop -- "Timer = 0" --> Win_T
Win_S & Win_T --> Post_Match["📊 Thống kê Match"]
Post_Match --> Buff{"⚖️ Hệ thống Adaptive"}
Buff -- "Thua liên tiếp" --> Buff_Apply["💎 Kích hoạt Comeback Buff"]
Buff_Apply --> A
end
class Win_S,Win_T winStyle;
class Post_Match,Buff,Buff_Apply initStyle;
S_Trap -.->|"Cảnh báo State"| T_Check
S4 -.->|"Phát xạ Sóng âm"| T2
T4 -.->|"Collision Vô hình"| S_Check
NS3 --> Loop
Kiến trúc Kỹ thuật (Technical Architecture)
Hệ thống của BABA_YAGA được thiết kế theo chuẩn Modular Architecture (Kiến trúc Module), tách biệt hoàn toàn giữa logic xử lý vật lý (Kinematics), trạng thái mạng (Net-State) và phản hồi thị giác (Visual Feedbacks). Điều này đảm bảo hiệu năng cao (High Tickrate) ngay cả trong các môi trường mê cung phức tạp.
1. Advanced Kinematic FSM & Camera Dynamics
Hệ thống điều khiển nhân vật cốt lõi được xây dựng trên mô hình Finite State Machine (FSM) phân cấp. Không chỉ xử lý nội suy vật lý mượt mà, hệ thống còn tích hợp trực tiếp với Procedural Camera Dynamics (Head-bob, Dynamic FOV, Tilt) để tạo ra sự cộng hưởng về cảm giác nhập vai, đồng thời duy trì tính đồng bộ tuyệt đối qua lớp mạng (Networking Layer).
(Lưu ý: Sơ đồ trạng thái dưới đây đã được tối ưu hóa cho thuật toán dự đoán phía Client)
stateDiagram-v2
direction TB
state "👣 KINEMATIC GROUND" as Ground {
[*] --> Idle
state Idle {
I_P: ⚓ Vel < 0.1m/s
I_C: 📈 Breathing Cam (0.5Hz)
}
Idle --> Moving : Input.mag > 0.1
state Moving {
M_P: 🚶 Speed 2-4m/s
M_C: 🎥 Head Bob (1.2Hz)
}
Moving --> Sneaking : Hold [Sneak]
state Sneaking {
Sn_P: 🔇 Acoustic Profile -50%
Sn_C: ⬇️ Collider Height Down
}
Moving --> Sprinting : Hold [Sprint]
Sneaking --> Moving : Release [Sneak]
state Sprinting {
Sp_P: ⚡ Speed > 6.5m/s
Sp_C: 🔵 Dynamic FOV Warp
}
Sprinting --> Moving : Stamina Depleted
}
state "🪶 AIRBORNE DYNAMICS" as Air {
state Jump {
J_P: ⬆️ AddForce Up
}
state Falling {
F_P: 📉 Gravity x1.5
}
state Landing {
L_P: 📐 Impact Raycast
}
Jump --> Falling : Vel.y < 0
Falling --> Landing : KCC.IsGrounded == true
}
state "🎯 UTILITY / ACTION" as Utility {
state Dashing {
D_P: 💨 Vector Burst (15m/s)
}
state Interacting {
Int_P: 🔒 Root Motion Lock
}
}
state "🌐 NET-SYNC LAYER" as Net {
state "Input Authority (Client)" as IA
state "State Authority (Server)" as SA
IA --> SA : Send Input Tick
SA --> IA : Force Reconcile
}
Ground --> Air : KCC.IsGrounded == false
Air --> Ground : OnLandEvent.Fire()
Ground --> Utility : InvokeAbility()
Utility --> Ground : Action Complete
note left of Ground
💾 Sync: KCC Velocity
🗂️ State: Networked Enum
end note
note right of Net
⚙️ Photon Fusion
🛡️ Anti-Cheat Validated
end note
Việc tương tác trong một môi trường bị giới hạn hoàn toàn về tầm nhìn đòi hỏi một hệ thống truy vấn không gian (Spatial Querying) cực kỳ chính xác. Chúng tôi từ chối sử dụng cơ chế Raycast điểm đơn thông thường.
Kiến trúc Mạng (Advanced Netcode Architecture)
Để đảm bảo tính công bằng trong một tựa game mang nặng yếu tố hành động lén lút và phản xạ ngàn cân treo sợi tóc, BABA_YAGA sử dụng Photon Fusion (State Sync) làm lõi đồng bộ. Hệ thống được tinh chỉnh để mô phỏng cảm giác "Độ trễ bằng 0" (Zero-Latency Feel) thông qua kiến trúc mạng tất định (Deterministic Network).
Vòng xoay Dữ liệu Mạng (Network Data Flow Pipeline)
Biểu đồ dưới đây mô tả luồng xử lý thông tin tại mỗi Tick (Khung hình mạng). Việc phân tách rõ ràng giữa Logical State (trạng thái mạng) và Visual Presentation (hiển thị hình ảnh) giúp khung hình của game (FPS) không bị khóa vào Tickrate của Server.
(Lưu ý: Các trích xuất HTML trong sơ đồ đã được chuẩn hóa để tương thích hoàn toàn với bộ phân tích Markdown)
sequenceDiagram
autonumber
box rgba(51, 204, 255, 0.05) "⚡ LOCAL ENVIRONMENT (Client Auth)"
participant IR as "🖱️ Input"
participant CP as "💻 Local Player"
end
box rgba(255, 51, 51, 0.05) "👑 SERVER ENVIRONMENT (State Auth)"
participant NT as "📡 Network Layer"
participant S as "🖥️ Server Tick"
end
box rgba(255, 215, 0, 0.05) "👁️ REMOTE OBSERVERS"
participant RP as "👥 Proxies"
end
Note over IR,CP: [PHASE 1] DATA ACQUISITION
IR->>CP: OnMove / OnAbility (Raw Input)
CP->>CP: 📦 Pack NetworkInputStruct
Note over CP: [PHASE 2] FORWARD PREDICTION
CP->>CP: ⚡ Run Local Kinematics (Tick N)
CP->>NT: 📤 Transmit Input Payload
rect rgba(255, 51, 51, 0.1)
Note over NT,S: [PHASE 3] SERVER VALIDATION (Simulation)
NT->>S: Deliver UDP Packet
S->>S: 🛡️ Validate Rules & Apply Physics
S-->>NT: 📢 Broadcast State Snapshot (Tick N)
end
Note over NT,CP: [PHASE 4] RECONCILIATION PROTOCOL
NT-->>CP: State Snapshot (Global Truth)
CP->>CP: ⚖️ Check Desync (Threshold)
CP->>CP: 🔄 Snap Pos & Resimulate if Error
Note over NT,RP: [PHASE 5] PROXY INTERPOLATION
NT-->>RP: State Snapshot
RP->>RP: 〰️ Lerp Position / Rotation Smoothly
Note over CP,RP: [PHASE 6] VISUAL RENDERING
CP->>CP: 🎥 Update Local VFX / Camera Shake
RP->>RP: 👻 Update Animator & Mesh Transforms
Kiến trúc Netcode (Deterministic Networking)
Tựa game với nhịp độ sinh tồn căng thẳng không có chỗ cho sự sai lệch (Desync). BABA_YAGA vận hành trên kiến trúc State Sync (Đồng bộ Trạng thái) kết hợp quy trình Dự đoán phía Client (Client-Side Prediction) và Bù trừ Độ trễ (Lag Compensation), mang lại cảm giác phản hồi tức thì "Zero-Latency" ngay cả ở mức Ping 100ms+.
Network Data Flow (Luồng Đồng bộ Hóa)
Sơ đồ biểu diễn vòng đời của một Network Tick từ khi người chơi nhấn phím đến khi hình ảnh được kết xuất (Render) trên màn hình của những người chơi khác.
sequenceDiagram
autonumber
box rgba(51, 204, 255, 0.05) "⚡ LOCAL ENVIRONMENT (Client Auth)"
participant IR as "🖱️ Input"
participant CP as "💻 Local Player"
end
box rgba(255, 51, 51, 0.05) "👑 SERVER ENVIRONMENT (State Auth)"
participant NT as "📡 Network Layer"
participant S as "🖥️ Server Tick"
end
box rgba(255, 215, 0, 0.05) "👁️ REMOTE OBSERVERS"
participant RP as "👥 Proxies"
end
Note over IR,CP: [PHASE 1] DATA ACQUISITION
IR->>CP: OnMove / OnAbility (Raw Input)
CP->>CP: 📦 Pack NetworkInputStruct
Note over CP: [PHASE 2] FORWARD PREDICTION
CP->>CP: ⚡ Run Local Kinematics (Tick N)
CP->>NT: 📤 Transmit Input Payload
rect rgba(255, 51, 51, 0.1)
Note over NT,S: [PHASE 3] SERVER VALIDATION (Simulation)
NT->>S: Deliver UDP Packet
S->>S: 🛡️ Validate Rules & Apply Physics
S-->>NT: 📢 Broadcast State Snapshot (Tick N)
end
Note over NT,CP: [PHASE 4] RECONCILIATION PROTOCOL
NT-->>CP: State Snapshot (Global Truth)
CP->>CP: ⚖️ Check Desync (Threshold)
CP->>CP: 🔄 Snap Pos & Resimulate if Error
Note over NT,RP: [PHASE 5] PROXY INTERPOLATION
NT-->>RP: State Snapshot
RP->>RP: 〰️ Lerp Position / Rotation Smoothly
Note over CP,RP: [PHASE 6] VISUAL RENDERING
CP->>CP: 🎥 Update Local VFX / Camera Shake
RP->>RP: 👻 Update Animator & Mesh Transforms
Hệ thống Cân bằng Thích ứng (Tiered "Despair" Mechanics)
Để duy trì trạng thái "Căng thẳng tột độ" (High-Stakes) đến những giây phút cuối cùng, kiến trúc của BABA_YAGA tích hợp một động cơ cân bằng ngầm mang tên "Despair Mechanics". Khi một thực thể bị đẩy vào chuỗi thất bại liên tiếp, Mê cung sẽ bẻ cong các quy tắc vật lý và logic thông thường để ban cho họ những đặc quyền sinh tồn phi mã, tạo ra những khoảnh khắc lật kèo (Comeback) chấn động mạng lưới.
Phân tầng Bù trừ theo Chuỗi Thua (Progression Hierarchy)
THE SEEKER: Thức Tỉnh Bản Năng (Survival Evolution)
Khi Seeker liên tục bị bóng tối nuốt chửng, hệ thần kinh của họ sẽ bị ép buộc tiến hóa vượt giới hạn để chống lại môi trường khắc nghiệt:
THE TRAPPER: Hiến Tế Không Gian (Dark Rituals)
Khi Trapper để mất quyền kiểm soát, Mê cung sẽ tự động phân rã sự ổn định của nó, cấp cho Trapper quyền truy cập vào các giao thức thao túng môi trường cực hạn:
Lộ trình Triển khai (Development Roadmap)
Tiến trình xây dựng kiến trúc BABA_YAGA. Dự án được phát triển theo mô hình Agile, ưu tiên hoàn thiện độ ổn định của lõi Netcode (Networking) trước khi mở rộng các module Meta-game và Visuals.
Bộ máy Kỹ thuật (Core Engineering Team & WBS)
Dự án được phát triển và vận hành bởi một Micro-Studio 3 thành viên. Để đạt được chất lượng tiệm cận AAA-Indie trong một thời gian giới hạn, chúng tôi áp dụng mô hình chuyên môn hóa sâu (Deep Specialization) theo từng phân hệ kỹ thuật lõi.
SYSTEM READINESS 29.0%
| Phase Breakdown
| |||||||||||||||||||
|
SCOVE |
Phân rã Công việc (Work Breakdown Structure)
|
|
DUY |
Phân rã Công việc (Work Breakdown Structure)
|
|
TUẤN |
Phân rã Công việc (Work Breakdown Structure)
|
Giao thức Chất lượng (Strict Engineering Protocols)
Bộ tiêu chuẩn NFR (Non-functional Requirements) bắt buộc. Mọi dòng code được Commit (Merge Request) đều phải vượt qua bài kiểm tra chéo dựa trên 4 trụ cột kỹ thuật dưới đây.
|
|
|
|
Cấu trúc Thư mục (Workspace Architecture)
Cấu trúc không gian làm việc của BABA_YAGA tuân thủ nghiêm ngặt mô hình Quy chuẩn Công nghiệp (Standard Industry Practices). Sự phân tách rạch ròi giữa Dữ liệu tĩnh (Assets), Lõi Logic (Core Scripts) và Cấu hình hệ thống (Configs) đảm bảo khả năng mở rộng (Scalability) và triệt tiêu Conflict khi làm việc nhóm.
Assets/ — Trái tim của trò chơi
Scripts/ — Phép thuật điều khiển logic
Giao thức Triển khai (Deployment Protocol)
Hướng dẫn thiết lập môi trường phát triển và kết nối mạng lưới cho BABA_YAGA. Khuyến nghị sử dụng công cụ ParrelSync để tối ưu hóa quy trình kiểm thử Multiplayer (Mô phỏng Host/Client) ngay trên một Editor duy nhất.
|
Engine Core Unity 6000.3.10f1+ |
Architecture Win 10/11 | macOS (M/Intel) |
Storage Budget ~5.0 GB (Repo + Library) |
1. Khởi tạo Không gian mạng (Repository Clone)
# Clone mã nguồn dự án từ kho lưu trữ chính thức
git clone https://github.com/OnlyScove/BABA_YAGA.git
Mở Unity Hub ➝ Chọn Add ➝ Add project from disk.
Trỏ đường dẫn đến thư mục BABA_YAGA vừa clone. Lần chạy đầu tiên (Import Asset Pipeline & Library) có thể mất từ 3 - 5 phút.
|
|
Trò chơi yêu cầu kết nối đến cụm máy chủ Relay của Photon để xử lý State Sync. Bạn bắt buộc phải cung cấp một AppID hợp lệ:
|
Mở Scene trung tâm tại: Assets/Scenes/Main Scene.unity.
Nhấp vào Smart Bootstrapper (Nằm trên thanh Menu Top-bar của Unity) để tự động hóa quy trình tiêm (Inject) cấu hình Network Runner.
Để test thực tế: Khuyến nghị Build ra file .exe độc lập, hoặc sử dụng hệ thống ParrelSync Clone Editor để chạy 2 Instances song song.
© 2026 SCOVANIA STUDIOS
"Baba_Yaga is more than a game, it's a social experiment."