大世界設計需求

去年年初寫的一個粗版的大世界的設計需求和方案,方案部分就不方便公佈。目前大世界大部分功能都已經實現,也有一些調整,也投入了實際的使用。雖然功能比較簡單,但真實現起來也涉及到方方面面,整個過程還是比較糾結,也踩了不少坑。

設計目的:

  • 希望支持至少2Kx2K的超大無縫世界,地形支持滿視距,Streaming加載切不卡頓
  • 希望支持無縫晝夜天氣變化
  • 希望還原逼真的效果表現,PBR材質
  • 希望支持美術和策劃的多人編輯,部分數據是文本支持Merge
  • 自動生成HLOD,自動動態加載,自動碰撞數據生成,自動合批,自動LOD切換
  • 部分場景數據可自動生成
  • 動態音效,可觸發生態
  • 場景可破壞可交互,場景可編輯
  • 支持熱更
  • 支持無縫室內
  • 支持海底世界
  • 支持雲海
  • 支持遮擋剔除
  • 部分自動化生產

規格指標:

  • 大世界相關內存控制在300M以內(包括地形、貼圖、Lightmap,碰撞等,不包括後處理Shader,動畫,角色,UI,技能,音頻,MONO堆,引擎等)
  • 至少2Kx2K的可行走區域,3Kx3K的可視距離
  • 12m/s高速移動不卡頓,無GC,無明顯穿幫
  • 任意傳送無明顯穿幫
  • 場景內大範圍尋路,跨場景尋路無明顯卡頓
  • 反覆切地圖以及超長時間掛機無洩漏
  • 地圖熱點分佈均勻無明顯性能瓶頸點
  • 大量動態物件音效無卡頓無明顯熱點
  • 純場景100幀
  • iPhone6S+,SamsungGalaxyS8+

功能點:

  • 編輯器
    • 地形的分塊切割和加載(包含Lightmap,instance,動態LOD等)
    • 場景模型的分塊切割和加載(包含Lightmap)
    • 美術多人聯合大世界編輯
    • 策劃多人聯合大世界編輯(區域,刷怪,刷NPC,事件等邏輯數據)
    • 體素物理引擎和體素自動化生產
  • 加載管理器
    • 智能可預測加載系統(依據玩家行為,狀態預測性加載)
    • 可視範圍管理(場景分層,可視距離動態可調)
    • 基於九宮的多線程加載和下載
    • TextureStreaming
    • MeshStreaming
    • 體素Streaming和合並(壓縮,稀疏矩陣等)
    • HPA尋路數據Streaming和合並
    • 音頻Streaming
    • 邏輯數據Streaming
  • 性能優化
    • 智能動態性能調節系統
    • 場景HLOD系統
    • 場景自動一次化動態管理
    • 角色智能(玩家配置,策劃配置,機型,所處環境,是否插電等)動態LOD管理(模型,材質,動畫,替代模型,陰影,音效,特效,最簡數據,UI等)
    • 材質Shader動態LOD
    • Animation和AnimatorLOD(動態調節頂點受骨骼影響數,動畫更新頻率,GPU運算,動畫壓縮)
    • 粒子LOD(表現LOD,粒子發射器數量LOD,GPU運算)
    • 植被LOD
    • Animation不可見優化
    • 粒子不可見優化
    • 遮擋剔除
    • 緩存池
    • 自動合併和Instance
    • 每幀低GC
    • Lightmap的動態加載(遠景Lightmap的處理)
    • 邏輯層和表現層分離,分層限幀和動態負載均衡
    • 高性能運算遷移到C++
    • 陰影(實時,靜態動態調節和融合)
  • 渲染
    • 基於PBR渲染
    • 24小時無縫時辰系統
    • 可交互植被系統(風,碰撞,陰影)
    • 雲海
    • 海水系統
    • lightweight渲染管線,自動合批排序(植被,石頭等)
    • 物件漸顯漸隱
    • 高效能弱化實時Shadowmask
    • 大氣散射霧效,高度深度霧效
  • 其他
    • 可破壞場景
    • 動態音效,可觸發生態
    • 全地圖跨場景尋路
    • 分塊熱更
  • 調試
    • 各個層(角色,地形,遠景,近景,細節,碰撞,音效等)實時(PC,手機)性能顯示和開關
    • 各種數據(貼圖,Mesh,動畫,Shader)實時(PC,手機)性能顯示和開關
    • 運行時CPU,GPU負載獲取
    • 超標數據熱點實時Debug顯示
    • 自動生成可視化熱力圖


分享到:


相關文章: