Lecture 02 Layered Architecture of Game Engine

Telluluu發表於2024-09-01

Lecture 02 Layered Architecture of Game Engine

渲染只是遊戲引擎中不大的一部分

  • Tool Layer 工具層

    這部分不是實時的,所有可以允許多種實現方法(C++/C#開發等等)

    • DCC Digital Content Creation

      將不同檔案匯入成Assets·

  • Function Layer 功能層

    • 每個tick依次做完所有內容
    • 多執行緒完成不同系統
      • 早期是單核執行
      • 後來將不同型別任務分配到不同核
      • 當前主流的是將Thread Fork/Join到不同核
      • 未來趨勢:將任務打碎成原子稱作Job,比如Unity DOTS的Job System
      • 任務之間存在依賴關係
  • Resource Layer 資源層

    • 由外部格式轉換成引擎內部的高效格式,這個過程叫import,轉換後的檔案稱為asset

    • composed asset:定義asset之間關係的指令碼

      每個asset會有一個唯一識別號guid

    • 不同資源有不同生命週期

    • 記憶體有限,所以需要儘可能釋放載入的資源

    • 關鍵特性:垃圾回收、延遲載入

  • Core Layer 核心層

    • 要求運算效率

      要滿足實時渲染,時間要求苛刻

      • SIMD
    • 記憶體管理

      • 遊戲引擎的主要效能瓶頸

        • 記憶體池

        • 減少快取未命中

        • 記憶體對齊

      • Polymorphic Memory Resource (PMR)

        • 將資料放在一起
        • 按順序訪問資料
        • 按塊申請和刪除
  • Platform Layer 平臺層

    • RHI Render Hardware Interface

      重新定義一層Graphics API,將各個SDK封裝起來

  • 第三方庫

  • 總結

    • 引擎是分層結構
    • 下層需要穩定,絕對的安全、穩定
    • 上層需要可客製化,開放、靈活
    • 虛擬世界是由ticks組成的

相關文章