国产精品免费嫩草研究院|无遮羞动漫在线观看AV|国产麻豆精品传媒AV国产在线|村在线观看|寂寞情人1正版|韩国床震韩国床震古|精品系列专区久久

引擎之旅 Chapter.4 日志系統

關于近段時間為何沒有更新的解釋:Find a new job.
目錄
  • 引言
  • 日志語句的分類
  • 控制臺窗體 和 VSOutput Tab的日志打印
  • 存儲至特定的文件中
  • 展示堆棧信息
引言一般來說 , 一個優質的商業級別的游戲本質上就是一個復雜龐大的軟件系統 。在龐大系統的開發過程中難免會出現錯誤 。為了排查錯誤、校驗代碼的正確性 , 游戲引擎一般會提供一些調試和開發工具 , 一般有如下幾個:
  • 日志及代碼追蹤:日志系統一般提供向控制臺等頁面打印字符串的功能;在打印中也能夠清晰的顯示調用的堆棧信息 , 以便于定位代碼錯誤的位置 。
  • 調試繪圖功能:引擎會提供在游戲場景中繪制輔助線的功能 , 這些輔助線能清晰的表示范圍、方向等信息以供游戲開發者進行調試 。
  • 內置菜單:游戲編輯器的一些全局設置 , 通過不同的設置 , 方便游戲開發者對特定渲染、邏輯等進行調試 。
  • 內置控制臺:對于游戲引擎來說 , 項目為非控制臺程序 , 因此我們無法用簡單的使用printf方法將日志輸出至控制臺 。內置控制臺就是游戲編輯器中收集和顯示日志的窗體 。
  • 性能剖析與統計:方便游戲開發者定位性能瓶頸(一個重要的模塊)
當然 , 僅僅這一章節無法去完成對這些調試工具的闡述 。本文中的日志系統主要實現了日志及代碼堆棧信息的輸出功能(上述的第一點) , 其他部分的內容后續在將其慢慢的完善 。本章中的日志系統主要實現一下幾點功能:
  • 日志語句可分類 , 且不同的分類有相關顏色的提示 。
  • 日志可打印到控制臺窗體、Vistual Studio輸出框 。
  • 日志可存儲至特定的日志文件中 。
  • 日志語句可展示相關的堆棧信息 。
顯示效果如下:
  • 不顯示相關堆棧信息
    引擎之旅 Chapter.4 日志系統

    文章插圖
  • 顯示相關堆棧信息
    引擎之旅 Chapter.4 日志系統

    文章插圖
日志語句的分類將日志語句分類可以讓開發者打印不同重要性的Log 。比如Unity編輯器中的Console將日志語句分為了:Log、Warn、Error三個部分 。在TurboEngine的設計中 , 我將日志分類寫為一個枚舉類 , 并將不同的類型在二進制不同的位中岔開 , 方便篩選 。
//日志語句重要性等級enum LogImportantLevel : int{ CodeTrace = 0b00001,//最低級 , 用于記錄代碼執行軌跡(白) Info = 0b00010,//常規 , 顯示日志消息(綠) Warn = 0b00100,//較高級 , 用于日志警告信息(警告) Error = 0b01000,//高級 , 用于日志錯誤信息(錯誤) Critiacal = 0b10000,//最高級 , 用于關鍵日志信息(關鍵信息)};控制臺窗體 和 VSOutput Tab的日志打印這一部分很簡單 。將日志打印到Console和VS Output主要使用以下兩個函數
//to Consoleprintf(const char* format,...);//to VS OutputOutputDebugStringA(const char* lpOutputString);我一般喜歡將特定的功能封裝在自己的函數中 , 一方面可以作為將函數用自己的命名形式統一命名方便調用 。另一方面 , 我們需要對原生函數進行功能上的拓展 。

    經驗總結擴展閱讀