86 lines
4.6 KiB
Markdown
86 lines
4.6 KiB
Markdown
## <img src="https://api.iconify.design/lucide/globe.svg?color=%2333CCFF" width="28" height="28" style="vertical-align: middle;"> 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).
|
|
|
|
<br>
|
|
|
|
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none;">
|
|
<tr style="border: none;">
|
|
<td width="33%" align="center" style="border: none; padding: 15px; background: rgba(51,204,255,0.05); border-radius: 8px 0 0 8px; border-bottom: 2px solid rgba(51,204,255,0.3);">
|
|
<img src="https://api.iconify.design/lucide/fast-forward.svg?color=%2333CCFF" width="28" height="28" />
|
|
<br><br>
|
|
<strong style="color: #E0E0E0;">Client-Side Prediction</strong>
|
|
<br>
|
|
<p style="font-size: 13px; color: #999; margin-top: 5px;">Mô phỏng trước các chuyển động của người chơi trên Local Client, loại bỏ hoàn toàn độ trễ Input Delay khi di chuyển hoặc lướt.</p>
|
|
</td>
|
|
<td width="33%" align="center" style="border: none; padding: 15px; background: rgba(255,51,51,0.05); border-bottom: 2px solid rgba(255,51,51,0.3);">
|
|
<img src="https://api.iconify.design/lucide/shield-check.svg?color=%23FF3333" width="28" height="28" />
|
|
<br><br>
|
|
<strong style="color: #E0E0E0;">Server Authority</strong>
|
|
<br>
|
|
<p style="font-size: 13px; color: #999; margin-top: 5px;">Máy chủ nắm quyền quyết định cuối cùng. Ngăn chặn triệt để các hành vi gian lận như Speedhack, Teleport hay thao túng Hitbox.</p>
|
|
</td>
|
|
<td width="33%" align="center" style="border: none; padding: 15px; background: rgba(255,215,0,0.05); border-radius: 0 8px 8px 0; border-bottom: 2px solid rgba(255,215,0,0.3);">
|
|
<img src="https://api.iconify.design/lucide/history.svg?color=%23FFD700" width="28" height="28" />
|
|
<br><br>
|
|
<strong style="color: #E0E0E0;">Lag Compensation</strong>
|
|
<br>
|
|
<p style="font-size: 13px; color: #999; margin-top: 5px;">Rewind trạng thái Hitbox trên Server về đúng thời điểm Client thực hiện thao tác (Ping), đảm bảo tính chính xác cho các cú vồ/bẫy.</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
|
|
### <img src="https://api.iconify.design/lucide/workflow.svg?color=%23E0E0E0" width="22" height="22" style="vertical-align: middle;"> 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)*
|
|
|
|
```mermaid
|
|
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
|
|
``` |