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

4.9 KiB

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

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.

Hệ thống lõi: EnvironmentScanner.cs

Sử dụng kết hợp Physics.OverlapSphereNonAlloc để tối ưu hóa bộ nhớ (Zero Garbage Collection) và SphereCast để 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 Interface IInteractable, đả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.