天天看點

quake3源代碼整體印象及基于其的開源引擎項目

總體而言 , quake 系列引擎的整體架構非常漂亮 , 是學習的好材料 。

并且從 quake1 到 quake3, 整體邏輯端代碼變化不大 , 真正比較有突破性的是渲染引擎。

. 本人在學習 quake 引擎過程中常常敬佩卡馬克的想象力 ,api 函數是如此之簡潔 , 整體架構是如此之完美 , 面向對象的 c 寫得如此之漂亮 。

通過 quake 引擎 , 可以學到遊戲設計的各個概念以及各個子產品 , 外部工具是如何完美的結合起來 , 這一點是非常非常重要的 .

QUAKE1 及其基于 QUAKE1 架構的擴充引擎   DARKPLACES

QUAKE2 及其基于 QUAKE2 架構的擴充引擎   QFUSION

QUAKE3 及其基于 QUAKE3 架構的擴充引擎   XREAL/EVQ3 

這些擴充引擎都是非常著名的開源項目,資料比較多,而且都有相應使用這些擴充引擎作成的遊戲,可以觀看到遊戲實時效果。

例如

基于 DARKPLACES 引擎的遊戲 —NEXUIZ ,渲染效果極其驚人啊!!!

基于 QFUSION 引擎的遊戲 -----WARSOW

基于 XREAL/EVQ3 引擎的遊戲 -----REVOLUTION

A:DARKPLACES 使用 QUAKE1 的架構結構,重寫了全部的渲染子產品,網絡協定以及傳輸子產品 , 支援 DOOM3 類型的光影特效,根據我的感覺,應該是渲染效果最好的開源的項目,使用到了相當多的特效( DOOM3 光影特效 = Stencil Shadow Volume, Per Pixel Lighting, NormalizationCubeMap, 2D+1D Attenuation Texturing, and Light Projection Filtering ). 該引擎可以使用著名的QUAKEC進行伺服器端遊戲邏輯的開發(相當于QUAKE3中的GAME.DLL子產品),同時相對于QUAKE1的QUAKEC内置函數,該引擎擴充了相當多的伺服器端QUAKEC函數.更漂亮的是他同時擴充了用戶端邏輯部分的函數,通過這些函數可以編寫用戶端遊戲邏輯(相當于 QUAKE3中的CGAME.DLL子產品,但不完全等同).事實上本人是非常喜歡QUAKEC的編碼方式,簡練而強大.

B:QFUSION 引擎最大的特點是他的邏輯結構非常清晰 , 他所擴充的骨骼動畫系統是其最大的特點 . 本人的感覺是極其漂亮 ( 當然每個人的觀點不同 , 這隻是本人的觀點罷了 ). 他使用了 skm 骨骼動畫檔案格式 . 正是通過該引擎的骨骼動畫系統 , 讓本人完全掌握整個骨骼動畫的精髓 , 真是收益非淺啊 !!! 而且整個遊戲邏輯端非常清晰 , 在代碼分析時候主要以該引擎作為原代碼基礎 .

C:xreal/evq3 整體架構與 quake3 變化不大 , 但是最重要的一點是 , 本人最喜歡的渲染器結構是 quake3 的 render.dll, 簡直是太完美了 ,quake3 的渲染器可以使用雙處理器 , 為了支援雙處理器的運作 ,quake3 自己實作了一條渲染指令流水線 , 及其完美 , 收益非淺啊 !!!! 又要說一句非常重要的話了 , 偉大的慷慨的卡馬克 . 而引 xreal/evq3 擎完美的保留了 quake3 的渲染器架構結構同時擴充了較多的功能 , 光影特效足夠強大 . 增加了 md5 骨骼模型的渲染

http://ioquake3.org

http://www.openarena.ws

http://xreal-project.net/

http://www.moddb.com/engines/qfusion

http://icculus.org/twilight/darkplaces/

本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/zlstone/archive/2009/10/10/4651271.aspx

繼續閱讀