Files
BABA_YAGA/BABA_YAGA_Updater/sections/03_architecture.md
2026-06-07 21:17:51 +07:00

113 lines
4.9 KiB
Markdown

<div id="arch"></div>
## <img src="https://api.iconify.design/lucide/cpu.svg?color=%2333CCFF" width="28" height="28" style="vertical-align: middle;"> 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.
<br>
### <img src="https://api.iconify.design/lucide/git-merge.svg?color=%23E0E0E0" width="22" height="22" style="vertical-align: middle;"> 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)*
```mermaid
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
```
<br>
<img src="https://api.iconify.design/lucide/radar.svg?color=%23E0E0E0" width="22" height="22" style="vertical-align: middle;"> 2. Tactical Environment Scanner & Interaction
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.
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; margin-top: 10px;">
<tr>
<td width="80px" align="center" style="background: rgba(51, 204, 255, 0.1); border-radius: 8px 0 0 8px; border-left: 3px solid #33CCFF;">
<img src="https://api.iconify.design/lucide/scan-line.svg?color=%2333CCFF" width="40" height="40">
</td>
<td style="background: rgba(255,255,255,0.03); padding: 15px; border-radius: 0 8px 8px 0;">
<h4 style="margin: 0 0 5px 0; color: #E0E0E0;">Hệ thống lõi: <code>EnvironmentScanner.cs</code></h4>
<p style="font-size: 14px; color: #999; margin: 0; line-height: 1.5;">
Sử dụng kết hợp <code>Physics.OverlapSphereNonAlloc</code> để tối ưu hóa bộ nhớ (Zero Garbage Collection) và <code>SphereCast</code> để tính toán đường đạn thể tích. Hệ thống tự động phân tích và trích xuất các đối tượng thỏa mãn đa hình <strong>Interface <code>IInteractable</code></strong>, đảm bảo người chơi có thể kích hoạt các thiết bị (Cửa, Máy phát điện, Bẫy) một cách mượt mà ngay cả khi chúng hoàn toàn chìm trong bóng tối.
</p>
</td>
</tr>
</table>