• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 28,  comments - 15,  trackbacks - 0

            游戲引擎演化史
             
                出處:網上收集整理
             
             
                在閱讀各種游戲介紹的時候我們常常會碰見“引擎”(Engine)這個單詞,引擎在游戲中究竟起著什么樣的作用?它的進化對于游戲的發展產生了哪些影響?
             
            什么是引擎
               
                我們可以把游戲的引擎比作賽車的引擎,大家知道,引擎是賽車的心臟,決定著賽車的性能和穩定性,賽車的速度、操縱感這些直接與車手相關的指標都是建立在引擎的基礎上的。游戲也是如此,玩家所體驗到的劇情、關卡、AI、美工、音樂、操作等內容都是由游戲的引擎直接控制的,它扮演著中場發動機的角色,把游戲中的所有元素捆綁在一起,在后臺指揮它們同時、有序地工作。簡單地說,引擎就是“用于控制所有游戲功能的主程序,從計算碰撞、物理系統和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等。”
               
                可見,引擎并不是什么玄乎的東西,無論是2D游戲還是3D游戲,無論是角色扮演游戲、即時策略游戲、冒險解謎游戲或是動作射擊游戲,哪怕是一個只有1兆的小游戲,都有這樣一段起控制作用的代碼。經過不斷的進化,如今的游戲引擎已經發展為一套由多個子系統共同構成的復雜系統,從建模、動畫到光影、粒子特效,從物理系統、碰撞檢測到文件管理、網絡特性,還有專業的編輯工具和插件,幾乎涵蓋了開發過程中的所有重要環節,以下就對引擎的一些關鍵部件作一個簡單的介紹。
               
                首先是光影效果,即場景中的光源對處于其中的人和物的影響方式。游戲的光影效果完全是由引擎控制的,折射、反射等基本的光學原理以及動態光源、彩色光源等高級效果都是通過引擎的不同編程技術實現的。其次是動畫(Animation),目前游戲所采用的動畫系統可以分為兩種:一是骨骼動畫系統,一是模型動畫系統,前者用內置的骨骼帶動物體產生運動,比較常見,后者則是在模型的基礎上直接進行變形。引擎把這兩種動畫系統預先植入游戲,方便動畫師為角色設計豐富的動作造型。
             
                引擎的另一重要功能是提供物理系統,這可以使物體的運動遵循固定的規律,例如,當角色跳起的時候,系統內定的重力值將決定他能跳多高,以及他下落的速度有多快,子彈的飛行軌跡、車輛的顛簸方式也都是由物理系統決定的。碰撞探測是物理系統的核心部分,它可以探測游戲中各物體的物理邊緣。當兩個3D物體撞在一起的時候,這種技術可以防止它們相互穿過,這就確保了當你撞在墻上的時候,不會穿墻而過,也不會把墻撞倒,因為碰撞探測會根據你和墻之間的特性確定兩者的位置和相互的作用關系,這對游戲非常重要。如今物理系統已經發展演化為另一個獨立的,非常復雜的引擎分支,例如Havok物理引擎,軟件公司專注于對其進行研發,從而將其作為Middleware進行授權。
                渲染(Rendering)是引擎最重要的功能之一,一個游戲畫面好壞,是否真實漂亮,其效果直接取決于渲染引擎代碼的好壞。3D模型制作完畢之后,美工會按照不同的面把材質貼圖粘貼到模型上,這相當于為骨骼蒙上皮膚,最后再通過渲染引擎把模型、動畫、光影、特效等所有效果實時計算出來并展示在屏幕上。渲染引擎在引擎的所有部件當中是最復雜的,它的強大與否直接決定著最終的輸出質量。
             
                引擎還有一個重要的職責就是負責玩家與電腦之間的溝通,處理來自鍵盤、鼠標、搖桿和其它外設的信號。如果游戲支持聯網特性的話,網絡代碼也會被集成在引擎中,用于管理客戶端與服務器之間的通信。
             
                通過上面這些枯燥的介紹我們至少可以了解到一點:引擎相當于游戲的框架,框架打好后,關卡設計師、建模師、動畫師只要往里填充內容就可以了。因此,在3D游戲的開發過程中,引擎的制作往往會占用非常多的時間和預算,《馬科斯·佩恩》的MAX-FX引擎從最初的雛形Final Reality到最終的成品共花了四年多時間,LithTech引擎的開發共花了整整五年時間,耗資700萬美元,Monolith公司(LithTech引擎的開發者)的老板詹森·霍爾甚至不無懊悔地說:“如果當初意識到制作自己的引擎要付出這么大的代價的話,我們根本就不可能去做這種傻事。沒有人會預料得到五年后的市場究竟是怎樣的。”
                正是出于節約成本、縮短周期和降低風險這三方面的考慮,越來越多的開發者傾向于使用第三方的現成引擎制作自己的游戲,一個龐大的引擎授權市場已經形成。
             
            引擎的進化
                
                曾經有一段時期,游戲開發者關心的只是如何盡量多地開發出新的游戲并把它們推銷給玩家。盡管那時的游戲大多簡單粗糙,但每款游戲的平均開發周期也要達到8到10個月以上,這一方面是由于技術的原因,另一方面則是因為幾乎每款游戲都要從頭編寫代碼,造成了大量的重復勞動。漸漸地,一些有經驗的開發者摸索出了一條偷懶的方法,他們借用上一款類似題材的游戲中的部分代碼作為新游戲的基本框架,以節省開發時間和開發費用。根據馬老先生的生產力學說,單位產品的成本因生產力水平的提高而降低,自動化程度較高的手工業者最終將把那些生產力低下的手工業者淘汰出局,引擎的概念就是在這種機器化作業的背景下誕生的。
             
                每一款游戲都有自己的引擎,哪怕是手機游戲。但真正能獲得他人認可并成為標準的引擎并不多。縱觀九年多的發展歷程,我們可以看出引擎最大的驅動力來自于3D游戲,尤其是3D射擊游戲。盡管像Infinity這樣的2D引擎也有著相當久遠的歷史,從《博德之門》(Baldur’s Gate)系列到《異域鎮魂曲》(Planescape:Torment)、《冰風谷》(Icewind Dale)直至《冰風谷2》,但它的應用范圍畢竟局限于“龍與地下城”風格的角色扮演游戲,包括頗受期待的《夜在絕冬城》(Neverwinter Nights)所使用的Aurora引擎,它們都有著十分特殊的使用目的,很難對整個引擎技術的發展起到推動作用,這也是為什么體育模擬游戲、飛行模擬游戲和即時策略游戲的引擎很少進入授權市場的原因,開發者即便使用第三方引擎也很難獲得理想的效果,采用《帝國時代2》(Age of Empires)引擎制作的《星球大戰:銀河戰場》(Star Wars:Galactic Battleground)就是一個最好的例子。
               
                因此,下面對引擎的歷史回顧將主要圍繞動作射擊游戲的變遷展開,動作射擊游戲同3D引擎之間的關系相當于一對孿生兄弟,它們一同誕生,一同成長,互相為對方提供著發展的動力。
             
            引擎的誕生(1992年~1993年)
             
                1992年,3D Realms公司/Apogee公司發布了一款只有2兆多的小游戲——《德軍司令部》(Wolfenstein 3D),稍有資歷的玩家可能都還記得初接觸它時的興奮心情,用“革命”這一極富煽動色彩的詞語也無法形容出它在整個電腦游戲發展史上占據的重要地位。這部游戲開創了第一人稱射擊游戲的先河,更重要的是,它在X軸和Y軸的基礎上增加了一根Z軸,在由寬度和高度構成的平面上增加了一個向前向后的縱深空間,這根Z軸對那些看慣了2D游戲的玩家造成的巨大沖擊可想而知,這就是3D。
             
                Wolfenstein 3D引擎的作者是大名鼎鼎的約翰·卡馬克(John Carmack),這位id Software公司的首席程序師兼創始人之一正是憑借這款Wolfenstein 3D引擎在游戲圈里站穩了腳跟。事實上,《德軍司令部》并非第一款采用第一人稱視角的游戲,在它發售前的幾個月,Origin公司就已經推出了一款第一人稱視角的角色扮演游戲——《創世紀:地下世界》(Ultima Underworld),這款角游戲采用了類似的技術,但它與Wolfenstein 3D引擎之間有著相當大的差別,舉例來說,《地下世界》的引擎支持斜坡,地板和天花板可以有不同的高度,分出不同的層次,玩家可以在游戲中跳躍,可以抬頭低頭,這些特性Wolfenstein 3D引擎都無法做到,而且從畫面上看,《德軍司令部》更接近漫畫風格而不是傳統的像素畫面。
             
                盡管從技術細節上看,Wolfenstein 3D引擎比不上《創世紀:地下世界》的引擎,但它卻更好地利用了第一人稱視角的特點,快速火爆的游戲節奏使人們一下子記住了“第一人稱射擊游戲”(FPS-First Person Shooter) 這個單詞,而不是“第一人稱角色扮演游戲”。《德軍司令部》后來還發布過一款名義上的續集——《三元的崛起》(Rise of the Triad),這款游戲在Wolfenstein 3D引擎的基礎上增加了許多重要特性,包括跳躍和抬頭低頭等動作。引擎誕生初期的另一部重要游戲同樣是出自id Software公司的一款非常成功的第一人稱射擊游戲——《毀滅戰士》(Doom)。Doom引擎在技術上大大超越了Wolfenstein 3D引擎,《德軍司令部》中的所有物體大小都是固定的,所有路徑之間的角度都是直角,也就是說你只能筆直地前進或后退,這些局限在《毀滅戰士》中都得到了突破。盡管游戲的關卡還是維持在2D平面上進行制作,沒有“樓上樓”的概念,但墻壁的厚度可以為任意,并且路徑之間的角度也可以為任意,這使得樓梯、升降平臺、塔樓和戶外等各種場景成為可能。
             
                由于Doom引擎本質上依然是二維的,因此可以做到同時在屏幕上顯示大量角色而不影響游戲的運行速度,這一特點為游戲創造出了一種瘋狂刺激的動作風格,在這方面迄今為止大約只有《英雄薩姆》(Serious Sam)系列能與之相比,除此之外還沒有哪款3D引擎能在大批敵人向你涌來的時候依然保持游戲的流暢,這也是為什么如今市面上的大部分第一人稱射擊游戲都在積極地培養玩家的戰術運用能力、提高玩家的射擊準確率而拒絕濫砍濫殺的主要原因之一。值得一提的是,盡管Doom引擎缺乏足夠的細節度,但開發者仍然在《毀滅戰士》中表現出了驚人的環境效果,其純熟的設計技巧實在令人贊嘆。
             
                不過更值得紀念的是,Doom引擎是第一個被用于授權的引擎。1993年底,Raven公司采用改進后的Doom引擎開發了一款名為《投影者》(ShadowCaster)的游戲,這是游戲史上第一例成功的嫁接手術。1994年Raven公司采用Doom引擎開發《異教徒》(Heretic),為引擎增加了飛行的特性,成為跳躍動作的前身。1995年Raven公司采用Doom引擎開發《毀滅巫師》(Hexen),加入了新的音效技術、腳本技術以及一種類似集線器的關卡設計,使你可以在不同關卡之間自由移動。Raven公司與id Software公司之間的一系列合作充分說明了引擎的授權無論對于使用者還是開發者來說都是大有裨益的,只有把自己的引擎交給更多的人去使用才能使引擎不斷地成熟起來。《毀滅戰士》系列本身就相當成功,大約賣了350萬套,而授權費又為id Software公司帶來了一筆可觀的收入。在此之前引擎只是作為一種自產自銷的開發工具,從來沒有哪家游戲商考慮過依靠引擎賺錢,Doom引擎的成功無疑為人們打開了一片新的市場。
             
            引擎的轉變(1994年~1997年)
             
                在引擎的進化過程中,肯·西爾弗曼于1994年為3D Realms公司開發的Build引擎是一個重要的里程碑,Build引擎的“肉身”就是那款家喻戶曉的《毀滅公爵》(Duke Nukem 3D)。《毀滅公爵》已經具備了今天第一人稱射擊游戲的所有標準內容,如跳躍、360度環視以及下蹲和游泳等特性,此外還把《異教徒》里的飛行換成了噴氣背包,甚至加入了角色縮小等令人耳目一新的內容。在Build引擎的基礎上先后誕生過14款游戲,例如《農夫也瘋狂》(Redneck Rampage)、《陰影武士》(Shadow Warrior)和《血兆》(Blood)等,還有臺灣艾生資訊開發的《七俠五義》,這是當時(至今依然是)國內不多的幾款3D射擊游戲之一。Build引擎的授權業務大約為3D Realms公司帶來了一百多萬美元的額外收入,3D Realms公司也由此而成為了引擎授權市場上的第一個“暴發戶”。不過從總體來看,Build引擎并沒有為3D引擎的發展帶來任何質的變化,突破的任務最終由id Software公司的《雷神之錘》(Quake)完成了。
             
                《雷神之錘》緊跟在《毀滅公爵》之后發售,兩者孰優孰劣一時之間成為玩家的熱門話題。從內容的精彩程度來看《毀滅公爵》超過《雷神之錘》不少,但從技術的先進與否來看,《雷神之錘》是毫無疑問的贏家。Quake引擎是當時第一款完全支持多邊形模型、動畫和粒子特效的真正意義上的3D引擎,而不是Doom、Build那樣的2.5D引擎。此外Quake引擎還是連線游戲的始作俑者,盡管幾年前的《毀滅戰士》也能通過調制解調器連線對戰,但最終把網絡游戲帶入大眾的視野之中的是《雷神之錘》,是它促成了電子競技產業的發展。
             
                一年之后,id Software公司推出《雷神之錘2》,一舉確定了自己在3D引擎市場上的霸主地位。《雷神之錘2》采用了一套全新的引擎,可以更充分地利用3D加速和OpenGL技術,在圖像和網絡方面與前作相比有了質的飛躍,Raven公司的《異教徒2》(Heretic II)和《命運戰士》(Soldier of Fortune)、Ritual公司的《原罪》(Sin)、Xatrix娛樂公司的《首腦:犯罪生涯》(Kingpin:Life of Crime)以及離子風暴工作室(ion Storm)的《安納克朗諾克斯》(Anachronox)都采用了Quake II引擎。
                Quake II引擎的授權模式大致如下:基本許可費從40萬美元到100萬美元不等,版稅金視基本許可費的多少而定,40萬美元的許可費大約需提取10%以上的版稅金,100萬美元的許可費則提取很少一部分版稅金。這樣算下來,《雷神之錘2》通過引擎授權所獲得的收入至少有一千萬美元,盡管游戲本身的銷售業績比起《毀滅戰士》來要差很多,大約賣了110多萬套,收入在4500萬美元左右,但在授權金這一塊它所獲得的盈利顯然要遠遠高于《毀滅戰士》,此時的引擎已經從一種單純的工具變成了一塊令人垂涎欲滴的肥肉。
             
                俗話說“一個巴掌拍不響”,沒有實力相當的競爭者,任何市場都無法發展起來的。正當Quake II獨霸整個引擎市場的時候,Epic Megagames公司(即現在的Epic游戲公司)的《虛幻》(Unreal)問世了。毫不夸張,第一次運行這款游戲的時候,我的確被眼前的畫面驚呆了,盡管當時只是在300x200的分辨率下運行的這款游戲(四大悲事之一:玩游戲機器不夠勁)。除了精致的建筑物外,游戲中的許多特效即便在今天看來依然很出色,蕩漾的水波,美麗的天空,龐大的關卡,逼真的火焰、煙霧和力場等效果。從單純的畫面效果來看,《虛幻》是當之無愧的佼佼者,其震撼力完全可以與人們第一次見到《德軍司令部》時的感受相比。
             
                Unreal引擎可能是使用最廣的一款引擎,在推出后的兩年之內就有18款游戲與Epic公司簽訂了許可協議,這還不包括Epic公司自己開發的《虛幻》資料片《重返納帕利》,其中比較近的幾部作品如第三人稱動作游戲《北歐神符》(Rune)、角色扮演游戲《殺出重圍》(Deus Ex)以及永不上市的第一人稱射擊游戲《永遠的毀滅公爵》(Duke Nukem Forever),這游戲至今都沒上市,8年多了,不過據傳還在開發中^_^|||。這些游戲都曾經或將要獲得不少好評。
             
                Unreal引擎的應用范圍不限于游戲制作,還涵蓋了教育、建筑等其它領域。Digital Design公司曾與聯合國教科文組織的世界文化遺產分部合作采用Unreal引擎制作過巴黎圣母院的內部虛擬演示,Zen Tao公司采用Unreal引擎為空手道選手制作過武術訓練軟件,另一家軟件開發商Vito Miliano公司也采用Unreal引擎開發了一套名為“Unrealty”的建筑設計軟件,用于房地產的演示。這款與《雷神之錘2》同時代的引擎經過不斷的更新,如今發展成為3D游戲界最為先進的引擎之一---Unreal 3。
             
            引擎的革命(1998年~2000年)
             
                游戲的圖像發展到《虛幻》這里已經達到了一個天花板的高度。前面說過,引擎技術對于游戲的作用并不僅局限于畫面,它還影響到游戲的整體風格,例如,所有采用Doom引擎制作的游戲,無論是《異教徒》還是《毀滅巫師》,都有著相似的內容,甚至連情節設定都如出一轍。玩家開始對端著槍跑來跑去的單調模式感到厭倦,開發者們不得不從其它方面尋求突破,由此掀起了第一人稱射擊游戲的一個新的高潮。
             
                兩部劃時代的作品同時出現在1998年——Valve公司的《半條命》(Half-Life)(注:其實名字準確翻譯應為半衰期,既然國內大家都這樣叫了,就半條命吧)和Looking Glass工作室的《神偷:暗黑計劃》(Thief:The Dark Project),盡管此前的《系統震撼》(System Shock)等游戲也為引擎技術帶來過許多新的特性,但沒有哪款游戲能像《半條命》和《神偷》那樣對后來的作品以及引擎技術的進化造成如此深遠的影響。
             
                曾獲得無數大獎的《半條命》采用的是Quake和Quake II引擎的混合體,Valve自己把id的引擎代碼幾乎全部重寫和修改了一遍,并將其命名為GoldSrc。Valve公司在這兩部引擎的基礎上加入了兩個很重要的特性:一是腳本序列技術,這一技術可以令游戲以合乎情理的節奏通過觸動事件的方式讓玩家真實地體驗到情節的發展,這對于誕生以來就很少注重情節的第一人稱射擊游戲來說無疑是一次偉大的革命;第二個特性是對人工智能AI引擎的改進,敵人的行動與以往相比明顯有了更多的狡詐,不再是單純地撲向槍口。這兩個特點賦予了《半條命》引擎鮮明的個性,在此基礎上誕生的《軍團要塞》(Team Fortress Classic)、《反恐精英》(Counter-Strike)和《勝利之日》(Day of Defeat)等優秀作品又通過網絡代碼的加入令《半條命》引擎煥發出了更為奪目的光芒。
             
                在人工智能方面真正取得突破的游戲是Looking Glass工作室的《神偷:暗黑計劃》,游戲的故事發生在中古年代,玩家扮演一名盜賊,任務是進入不同的場所,在盡量不引起別人注意的情況下竊取物品。《神偷》采用的是Looking Glass工作室自行開發的Dark引擎,Dark引擎在圖像方面比不上《雷神之錘2》或《虛幻》,但在人工智能方面它的水準卻遠遠高于后兩者,游戲中的敵人懂得根據聲音辨認你的方位,能夠分辨出不同地面上的腳步聲,在不同的光照環境下有不同的目力,發現同伴的尸體后會進入警戒狀態,還會針對你的行動做出各種合理的反應,你必須躲在暗處不被敵人發現才有可能完成任務,這在以往那些純粹的殺戮游戲中是根本見不到的。
              
                如今的絕大部分第一人稱射擊游戲都或多或少地采用了這種隱秘的風格,包括《榮譽勛章:盟軍進攻》(Medal of Honor:Allied Assault)。遺憾的是,由于Looking Glass工作室的過早倒閉,知名制作人Warren Spector(代表作:Deus Ex)跳槽到ion Storm(后來也倒閉了,Warren命不好啊,呵呵),Dark引擎未能發揚光大,除了《神偷:暗黑計劃》外,采用這一引擎的只有《神偷2:金屬時代》(Thief 2:The Metal Age)和《系統震撼2》等少數幾款游戲。
             
                受《半條命》和《神偷:暗黑計劃》兩款游戲的啟發,越來越多的開發者開始把注意力從單純的視覺效果轉向更具變化的游戲內容,其中比較值得一提的是離子風暴(ion Storm)工作室出品的《殺出重圍》(Deus Ex),《殺出重圍》采用的是Unreal引擎,盡管畫面效果十分出眾,但在個體的人工智能方面它無法達到《神偷》系列的水準,游戲中的敵人更多的是依靠預先設定的場景腳本做出反應,例如砸碎彈藥盒可能會引起附近敵人的警惕,但這并不代表他聽到了什么,打死敵人后周圍的同伙可能會朝你站立的位置奔過來也可能會無動于衷,這些不真實的行為即便在《榮譽勛章:盟軍進攻》里也依然存在。圖像的品質抵消了人工智能方面的缺陷,而真正幫助《殺出重圍》在眾多射擊游戲中脫穎而出成為黑馬的則是它的獨特風格,游戲含有濃重的角色扮演成分,人物可以積累經驗、提高技能,還有豐富的對話和曲折的情節劇本。同《半條命》一樣,《殺出重圍》的成功說明了敘事對第一人稱射擊游戲的重要性,能否更好地支持游戲的敘事能力成為了衡量引擎的一個新標準。
             
                從2000年開始第一人稱射擊游戲朝著兩個不同的方向分化,一是如《半條命》、《神偷》和《殺出重圍》那樣通過融入更多的敘事成分和角色扮演成分以及加強游戲的人工智能來提高游戲的可玩性,二是朝著純粹的網絡模式發展,在這一方面,id Software公司再次走到了整個行業的最前沿,他們意識到與人斗才是其樂無窮,于是在Quake II出色的圖像引擎的基礎上加入更多的網絡成分,破天荒推出了一款完全沒有單人過關模式的純粹的網絡游戲——《雷神之錘3競技場》(Quake III Arena),它與Epic公司稍后推出的《虛幻競技場》(Unreal Tournament)一同成為引擎發展史上的一個轉折點。
             
                隨著Quake III引擎的大獲成功,id Software公司在引擎授權市場上也大賺了一筆。Raven公司再次同id Software公司合作,采用Quake III引擎制作了第一人稱射擊游戲《星際迷航:精英部隊》(Star Trek Voyager:Elite Force),此外這部引擎還被用于制作第三人稱動作游戲《重金屬F.A.K.K. 2》(Heavy Metal F.A.K.K 2)和《艾麗絲漫游魔境》(American McGee’s Alice)、兩款二戰題材的射擊游戲《重返德軍總部》(Return to Castle Wolfenstein)和《榮譽勛章:盟軍進攻》,以及《絕地放逐者:絕地武士2》(Jedi Outcast:Jedi Knight II)。從地牢到外太空,從童話世界到二戰年代,從第一人稱視角到第三人稱視角,充分顯示了Quake III引擎的強大潛力。
             
                Epic公司的《虛幻競技場》雖然比《雷神之錘3競技場》落后了一步,但如果仔細比較一下的話,你就會發現它的表現要略高出后者一籌。從畫面方面看兩者差不多打成平手,但在聯網模式上,它不僅提供有死亡競賽模式,還提供有團隊合作等多種激烈火爆的對戰模式,而且Unreal Tournament引擎不僅可以應用在動作射擊游戲中,還可以為大型多人游戲、即時策略游戲和角色扮演游戲提供強有力的3D支持。Unreal Tournament引擎在許可業務方面的表現也超過了Quake III,迄今為止采用Unreal Tournament引擎制作的游戲非常多,其中包括《星際迷航深度空間九:墜落》(Star Trek Deep Space Nine:The Fallen)、《新傳說》(New Legend)和《塞拉菲姆》(Seraphim)等。
             
                在1998年到2000年期間迅速崛起的另一款引擎是Monolith公司的LithTech引擎,這款引擎最初是用在機甲射擊游戲《升剛》(Shogo)上的。前面說過,LithTech引擎的開發共花了整整五年時間,耗資700萬美元,功夫不負有心人,1998年LithTech引擎的第一個版本推出之后立即引起了業界的注意,為當時處于白熱化狀態下的《雷神之錘2》vs.《虛幻》之爭潑了一盆冷水。
             
                正是由于過于高昂的開發代價,2002年Monolith公司決定單獨成立一個LithTech子公司(現更名為Touchdown Entertainment),以LithTech引擎的授權許可作為主要業務,希望借此撈回一些成本。采用LithTech第一代引擎制作的游戲包括《血兆2》和《清醒》(Sanity)等。2000年LithTech公司推出了引擎的2.0版本和2.5版本,加入了骨骼動畫和高級地形系統,給人留下深刻印象的《無人永生》(No One Lives Forever)以及Vancouver Barking Dog Studio(現被Rocksatr收購改名為Rockstar Vancouver)的《全球行動》(Global Operations)采用的就是LithTech 2.5引擎,此時的LithTech已經從一名有益的補充者變成了一款同Quake III和Unreal Tournament平起平坐的引擎。隨后LithTech引擎的3.0版本也發布,并且衍生出了“木星”(Jupiter)、“鷹爪”(Talon)、“深藍”(Cobalt)和“探索”(Discovery)四大系統,其中“鷹爪”被用于開發《異形大戰掠奪者2》(Alien Vs. Predator 2),“木星”用于《無人永生2》的開發,“深藍”用于開發PS2版《無人永生》,“探索”則被用來制作《The Matrix Online》。
             
                LithTech引擎除了本身的強大性能外,最大的賣點在于詳盡的售后服務,除了LithTech引擎的源代碼和編輯器外,購買者還可以獲得免費的升級、迅捷的電子郵件和電話技術支持,LithTech公司甚至還會把購買者請到公司進行手把手的培訓。而且LithTech引擎的平均價格也不算很高,大約在25萬美元左右,同Quake III引擎的70萬美元相比已經是相當低廉了。
             
            引擎的發展(2001年~)
             
                2001年有許多優秀的3D射擊游戲陸續發布,其中一部分采用的是Quake III和Unreal Tournament等現成引擎,如《星際迷航深度空間九:墜落》、《重返德軍總部》和《榮譽勛章:盟軍進攻》,而更多的則采用的是自己開發的引擎,比較有代表性的包括網絡射擊游戲《部落2》(Tribes 2)、第一人稱射擊游戲《馬科斯·佩恩》、《紅色派系》(Red Faction)和《英雄薩姆》等。
             
                《部落2》采用的是V12引擎,這款引擎雖然無法同Quake III和Unreal Tournament相提并論,但開發者為它制定的許可模式卻相當新穎,你只需花上100美元就可以獲得引擎的使用權,不過天下沒有免費的午餐,隨之而來的一系列規定相當苛刻,例如,開發者不能把該引擎用于為其它游戲發行商、其它商業游戲站點等競爭對手制作游戲,開發出來的游戲必須在發行前交給GarageGames公司(V12引擎的所有者),不能交給任何第三方,GarageGames公司將擁有這些游戲五年的獨家發行權等等。盡管如此,對于那些規模較小的獨立開發者來說,這個超低價引擎仍然具有非常大的吸引力。
             
                《馬科斯·佩恩》采用的是MAX-FX引擎,這是第一款支持輻射光影渲染技術(Radiosity Lighting)的引擎,這種技術以往只在一些高級的建筑設計軟件中出現過,它能夠結合物體表面的所有光源效果,根據材質的物理屬性及其幾何特性,準確地計算出每個點的折射率和反射率,讓光線以更自然的方式傳播過去,為物體營造出十分逼真的光影效果。MAX-FX引擎的另一個特點是所謂的“子彈時間”(Bullet Time),這是一種《The matrix》風格的慢動鏡頭,在這種狀態下甚至連子彈的飛行軌跡都可以看得一清二楚。MAX-FX引擎的問世把游戲的視覺效果推向了一個新的高峰。
             
                《紅色派系》采用的是Geo-Mod引擎,這是第一款可任意改變幾何體形狀的3D引擎,也就是說,你可以使用武器在墻壁、建筑物或任何堅固的物體上炸開一個缺口,穿墻而過,或者在平地上炸出一個彈坑躲進去。Geo-Mod引擎的另一個特點是高超的人工智能,敵人不僅僅是在看見同伴的尸體或聽見爆炸聲后才會做出反應,當他們發現你留在周圍物體上的痕跡如彈孔時也會警覺起來,他們懂得遠離那些可能對自己造成傷害而自己又無法做出還擊的場合,受傷的時候他們會沒命地逃跑,而不會冒著生命危險繼續作戰。
             
                《英雄薩姆》采用的是Serious引擎,這款引擎最大的特點在于異常強大的渲染能力,面對大批涌來的敵人和一望無際的開闊場景,你絲毫不會感覺到畫面的停滯,而且游戲的畫面效果也相當出色。此外值得一提的還有《海底驚魂》(AquaNox)所用的Krass引擎,這款引擎被作為GeForce 3的官方指定引擎,專門用于宣傳、演示GeForce 3的效果,視覺方面的表現無可挑剔。
             
                可以看出,2001年問世的幾部引擎依舊延續了兩年多來的發展趨勢,一方面不斷地追求真實的效果,例如MAX-FX引擎追求畫面的真實,Geo-Mod引擎追求內容的真實,《命運戰士》(Soldier of Fortune)的GHOUL引擎追求死亡的真實;另一方面則繼續朝著網絡的方向探索,如《部落2》、《軍團要塞2》(Team Fortress 2),以及Monolith公司的大型網絡游戲《The Matrix Online》。
             
                不過,由于受到技術方面的限制,把第一人稱射擊游戲放入大型網絡環境中的構想至少在目前還很難實現。眾所周知,一般的大型網絡游戲多為節奏較慢的角色扮演游戲,這些游戲所使用的引擎,無論是《卡米洛特的黑暗年代》(Dark Age of Camelot)使用的NetImmerse引擎,還是《地平線:伊斯塔里亞大陸》(Horizons:Empires of Istaria)使用的Horizons引擎,或是“據說可以保證50萬人在同一虛擬世界中盡情游戲而不會有任何滯后感”的Big World引擎,都無法支持一個供數百名玩家同時戰斗的大型團隊動態環境。正是基于這樣的考慮,id Software公司重新把目光放在了單人模式上,《雷神之錘4》和《毀滅戰士3》重新建構一個以單人游戲為主的引擎。與此同時,老對手Epic游戲公司也開發了新一代Unreal引擎和《虛幻競技場2》的引擎。
             
                最后需要指出的是,許多優秀的游戲開發者正在退出游戲開發市場,轉而進入引擎授權市場,僅靠開發引擎吃飯,這是個危險的信號。盡管引擎的不斷進化使游戲的技術含量越來越高,但最終決定一款游戲是否優秀的因素在于使用技術的人而不是技術本身。如前所述,引擎相當于游戲的框架,框架打好后,你只需往里填充內容即可,在這里,框架只是提供了一種可能性,游戲的精彩與否取決于內容如何而非框架如何。正如《無人永生》開發小組所說:“所有問題最終都會歸結為一點——你的游戲是否好玩。”
             
            自家引擎
             
                購買授權引擎還會引發其它一些問題,Raven就遭遇了受制于引擎更新進度的麻煩,本來其Voyager : Elite Force的開發工作早在《Quake 3:Arena》上市前就已展開,但id這部作品的開發進程一拖再拖,給Raven造成了極大的不便。

                “試圖去擊打一個移動目標一直都很非常困難,”Jake Simpson訴苦到,“我們很久之前就已期盼著這部引擎能夠快點完成,不然這顯然會對我們自己的上市日程造成極大沖擊——尤其是在我們與id還有著特別協議的情況下,即我們作品的發售日期不能與id的QuakeIII挨得太近。”

                “我們游戲的開發進度只能與Quake III引擎的開發進度大致相當,因此當我們有時獲得了更新源代碼后,只能將其中變化的部分進行簡單的剪切粘貼,而沒有時間進行深入細致的改良。”

                不過,就算開發者能夠擁有一套現存的完善引擎,其大部分功效最后也不得不被扔棄——如果你不僅僅只是希望制作一部看得過眼的資料片的話,對此,Scott Miller評述到:“理論上說,購買了現有引擎使用權的開發商確實能夠節約大把的開發時間。”

                “但事實上,如果他們真心希望開發一部AAA級別的游戲,他們就需要對所獲得的引擎進行根本上的升級與改進,Half-Life就是一個典型的例子,Duke Nukem Forever也是一樣。到最后,引擎大部分地方其實都是我們自己的成果。”
             
                當然基本上,所有的Unreal Tournament基礎核心代碼還是會得以保留,Scott進一步解釋到,“我們自己新開發的代碼則主要用于增添引擎的其它特效。”
             
                或者用John Romero最近在達拉斯Razer-CPL大賽上所說的那樣:“有時我想,要是能只購買引擎的核心部分就好了,那樣我就能隨心所欲增加任何自己想要的東西。”
             
                既然你打算將引擎的大部分代碼進行重寫,有人也許會想:“那何不干脆從頭干起更好?”

                英國開發商Rebellion的創始人之一Jason Kingsley便是持有這種想法的開發人之一,而它的兩部作品《Aliens vs Predator》(異形vs掠奪者)及組隊型動作冒險游戲《Gunlok》(鋼鐵戰場),也正是用自家的引擎開發的。

                Jason告訴我們說:“用我們自己的引擎,使我們能夠自由盡情的發揮,這樣就不必妥協于他購的引擎——或準確的說是二手引擎。”

                Rebel Act工作室的Xavier Carrillo也同意Jason(作品Blade<黑暗之刃>)的看法,他告訴我們說從頭創建屬于自己的游戲引擎比外購引擎“更具有靈活性”,它將使你自己對整個游戲的開發“擁有完全的掌控權,并能依據自己的開發需求對引擎進行設計規范。”
             
                Starbreeze(代表作《The Chronicles of Riddick: Escape From Butcher Bay》) 公司一位正在忙于在線第一人稱射擊游戲《Enclave》(困土)開發的關卡設計師:Jens Matthies也認為使用自己開發的引擎使開發者們有了“對游戲設計過程中的所有方面全面施掌控的權力。”

                他還說:“如果我想到了一個新點子,我便會把它告訴Magnus(Starbreeze的主程序員),如果他贊成的話,他就會將其加入游戲中,這對我這樣的關卡設計者來說實在太有利了,因為這種做法有可能使一切都能變得盡善盡美。”

            自創的弊端

                很顯然,開發全新引擎也有很大的弊端,Xavier就告訴我們從頭設計獨立引擎:“無疑需要更多的程序員,更多的時間,更多的金錢,而所有其它部門的工作進程都得要視引擎的進化程度而定。”

                而Jens也直言不諱地認為這確實是一個大問題,他解釋到用一個尚在開發中的引擎制作游戲,意味著“永遠都會存在著你很想加入,但事實上卻無法加入的特效”,甚至“要到很晚才能進行關卡設計。”

                雖說若真的有必要從頭設計一部引擎,開發者還可以根據游戲的需要對其進行量身定制的話,那么如果游戲引擎的設計實在變動得太過頻繁,那將意味著大量的早期工作將被推翻重來,或至少是在工程后期需要重新編譯。

            結束語

                綜合上段所言,相對于自主研發的引擎,授權引擎的最大優勢便體現了出來——它起碼可以給你的開發小組一個穩定的開發環境。正因為大部分授權引擎的技術相對都比較成熟,因此你的美工與策劃們可以按照自己的節奏進行開發設計,而不必停下來等待程序師們的步伐。雖然有時候,對授權引擎的大規模修改也不可避免地造成設計上的返工,但通常引擎的基本特性還是足以保證公司的剩余力量能夠繼續前進,而不必一遍又一遍地重頭再來!

             
            附錄:
             
            3D Engine 的設計架構
             
            作者:Luke Hodorowicz
            翻譯:樂晨光 (2001/9/28)
             
            佳文須共賞,也歡迎大家自由轉載 :)
             
            Introduction (簡介)
             
                讓咱們談談你如何撰寫一份提供優秀性能的3D引擎。你的引擎需要提供的包括:曲面(curved surfaces)、動態光線(dynamic lighting)、體積霧(volumetric fog)、鏡面(mirrors)、入口(portals)、天空體(skyboxes)、節點陰影(vertex shaders)、粒子系統(particle systems)、靜態網格模型(static mesh models)、網格模型動畫(animated mesh models)。假如你已經知道如何以上所述的所有功能順利工作,你也許便能將那些東東一起置入到一個引擎當中。
               
                等等!在你開始撰寫代碼前你必須先構思一下如何去架構你的引擎。多數來講,你一定是迫切地渴望去制作一個游戲,但如果你立即投入便開始為你的引擎撰寫代碼后,你一定會覺得非常難受,開發后期你可能會為置入新的特效與控制而不得不多次重寫大量的局部代碼,甚至以失敗而放棄告終。花一點時間好好地為你引擎深謀遠慮一番,這將會為你節省大量時間,也少一點頭痛。你一定不會急切地去架構一個巨型的工程;或許你也會在引擎未完成時而干脆放棄它,然后去干的別的什么事兒。好了,當你掌握學習你所需知識的方式之前,也許你還不能完成那些事兒。將設計真正地完成確實是件美事,為之你會感覺更好,你將為之而耀眼!
             
                讓我們分析一下具備完整功能的3D游戲引擎的需要哪些基本部件。首先,這為具有相應3D經驗但且還需一些指引的開發者提供了一些信息。這是一些并不難且能快速掌握但是你必須應用的內容條目。為將你的工作更好地進行下去,這里將對關于“把多大的工作量”與“多少部分”置入一個游戲引擎給出一個總概。我把這些成分稱為 系統(System)、控制臺(Console)、支持(Support),渲染/引擎 內核(Renderer/Engine Core)、游戲介質層(Game Interface)、以及工具/數據(Tools/Data)。
             
            Tools/Data (工具/數據)
             
                在開發過程中,你總是需要一些數據,但不幸的是這并不象寫文本文件或是定義一個立方體那么簡單。至少,你得需要3d模型編輯器,關卡編輯器,以及圖形程序。你可以通過購買,也可以在網上找一些免費的程序滿足你的開發要求。不幸的是你可能還需要一些更多的工具可你卻根本無法獲得(還不存在呢),這時你只得自己動手去寫。最終你很可能要自行設計編寫一個關卡編輯器,因為你更本不可能獲得你所需。你可能也會編寫一些代碼來為大量的文件打個包,整天面對應付成百上千個文件倒是非常痛苦的。你還必須寫一些轉換器或是插件將3d模型編輯器的模型格式轉換成你自己的格式。你也需要一些加工游戲數據的工具,譬如可見度估算或是光線貼圖。
             
                一個基本的準則是,你可能要為設計工具而置入比游戲本身等量甚至更多的代碼。開始你總能找到現成的格式和工具,但是經過一段時間以后你就能認識到你需要你的引擎有很大的特性,然后你就會放棄以前的撰寫方式。也許目前非常流行利用的第3方工具輔助開發,所以你必須時刻注意你的設計。因為一旦當你將你的引擎發布為opensouce或是允許修改,那也許在某天中會有某些人來應用你的開發成果,他們將其擴展或者做某些修改。或許你也應該花大量時間去設計美術,關卡,音效,音樂和實體模型,這就和你設計撰寫游戲,工具以及引擎一樣。
             
            System (系統)
             
                系統(system)是引擎與機器本身做通信交互的部件。一個優秀的引擎在待平臺移植時,它的系統則是唯一需要做主要更改(擴加代碼)的地方。我們把一個系統分為若干個子系統,其中包括:圖形(Graphics)、輸入(Input)、聲音(Sound)、記時器(Timer)、配置(Configuration)。
             
                主系統負責初始化、更新、以及關閉所有的子系統。
             
                圖形子系統(Graphics Sub-System)在游戲里表現得非常直觀,如果想在屏幕上畫點什么的話,它(圖形子系統)便干這事兒。大多數來講,圖形子系統都是利用OpenGL、Direct3D, Glide或是軟件渲染(software rendering)實現。如果能更理想一些,你甚至可以把這些API都給支持了,然后抽象出一個“圖形層”并將它置與實現API之上,這將給了客戶開發人員或是玩家更多的選擇,以獲取最好的兼容性、最佳的表現效果。
             
                輸入子系統(Input Sub-System)需要把各種不同輸入裝置(鍵盤、鼠標、游戲板[Gamepad],游戲手柄[Joystick])的輸入觸發做統一的控制接收處理。比方說,在游戲中,系統要檢測玩家的位置是否在向前移動,與其直接地分別檢測每一種輸入裝置,不如通過向輸入子系統發送請求以獲取輸入信息,而輸入子系統才在幕后真正地干活(分別檢測每一種輸入裝置),這一切對于客戶開發人員都是透明的。用戶與玩家可以非常自由地切換輸入裝置,通過不同的輸入裝置來獲取統一的行為將變的很容易。
             
                聲音子系統(sound system)負責載入、播放聲音。該子系統功能非常簡潔明了,但當前很多游戲都支持3D聲音,實現起來會稍許復雜一些。
             
                3D游戲引擎中很多出色的表現都是基于“時間系統”(time)的。因此你需要一段時間來為時間子系統(Timer sub-system)好好構思一番。即使它非常的簡單,(游戲里)任何東西都是通過時間觸發來做移動變化,但一份合理的設計將會讓你避免為實現而一遍又一遍地撰寫大量雷同的控制代碼……
             
                配置系統(Configuration)位于所有子系統的頂端。它負責讀取配置記錄文件,命令行參數,或是實現修改設置(setup)。在系統初始化以及運行期間,所有子系統都將一直與它保持通訊。切換圖象解析度(resolution),色深(color depth),定義按鈕(key bindings),聲音支持選項(sound support options),甚至包括載入游戲,該系統將這些實現顯得格外的簡單與方便。把你引擎設計得更為可設置化一些,這將為調試與測試帶來更大的方便;玩家與用戶也能很方便地選擇他(她)們喜歡的運行方式。
             
                Console (控制臺)
             
                哈!我知道所有人都樂意去跟風做一個象Quake那樣的控制臺(console)系統。但這的確是一個非常好的想法。通過命令行變量與函數,你就能夠在運行時改變你的游戲或是引擎的設置,而不需要重啟。開發期間輸出調試信息它將顯得非常的有效。很多時間你都需要測試一系列變量的值,將這些值輸出到控制臺上要比運行一個debugger速度顯然要快得多。你的引擎在運行期間,一旦發現了一個錯誤,你不必立即退出程序;通過控制臺,你可以做些非常輕便的控制,并將這個錯誤信息打印出來。假如你不希望你的最終用戶看見或是使用該控制臺,你可以非常方便地將其disable,我想沒人能看得見它。
             
                Support (支持)
             
                在你引擎中任何地方都將被使用到。該系統包含了你引擎中所有的數學成分(點,面,矩陣等),內存儲管理器,文件載入器,數據容器(假如你不愿自己寫,也可以使用STL)。該模塊任務顯得非常基礎與底層,或許你會將它復用到更多別的相關項目中去。
             
                Renderer/Engine Core (渲染/引擎 內核)
             
                哈~是呀,所有的人都熱愛3D圖象渲染!因為這邊有著非常多的不同種類的3D世界渲染方式,可要為各類擁有不同工作方式的3D圖形管道做出一個概要描述也是幾乎不可能的。不管你的渲染器如何工作,最重要的是將你的渲染器組件制作得基化(based)與干凈(clean)。首先可以確定的是你將擁有不同的模塊來完成不同的任務,我將渲染器拆分為以下幾個部份:可見裁減(Visibility)、碰撞檢測與反饋(Collision Detection and Response)、攝像器(Camera)、靜態幾何體(Static Geometry)、動態幾何體(Dynamic Geometry)、粒子系統(Particle Systems)、布告板(Billboarding)、網格(Meshes)、天空體(Skybox)、光線(Lighting)、霧(Fogging)、節點陰影(Vertex Shading)和輸出(Output)。其中每一個部分都得需要一個接口來方便地實現改變設置(settings)、位置(position)、方向(orientation)、以及其他可能與系統相關的屬性配置。
             
                即將顯露出來的一個主要缺陷便是“特性臃腫”,這將取決于設計期間你想實現什么樣的特性。但如不把新特色置入引擎的話,你就會發覺一切都將變的很困難,解決問題的方式也顯得特別遜色。還有一件有意義的事便是讓所有的三角形[triangles](或是面[faces])最終在渲染管道里經過同一點。(并非每次的每個三角形,這里討論的是三角形列表[triangle lists]、扇形[fans]、帶形[strips]、等) 多花一些工作讓所有物體的格式都能經過相同的光線、霧、以及陰影代碼,這樣就能非常便利地僅通過切換材質與紋理id就使任何多邊形具有不同的渲染效果。
             
                這不會傷及到被大量被渲染繪出的點,但是一旦你不當心,它可能會導致大量的冗余代碼。你也許最終便能發現,實現所有這些你所需的極酷效果可能只占了所有的15%左右的代碼量甚至更少。這是當然的,因為大多數游戲引擎并不只是圖形表現。
             
            Game Interface (游戲介面)
             
                一個3D游戲引擎很重要的部分便是------它是一個游戲引擎。但這并不是一個游戲。一個真正的游戲所需的一些組件永遠不要將它包含到游戲引擎里。引擎與游戲制作之間的控制介質能使代碼設計變得更清晰,應用起來也會更舒服。這雖是一些額外的代碼,但它能使游戲引擎具有非常好重用性,通過設計架夠游戲邏輯(game logic)的腳本語言(scripting language)也能使開發變的更方便,也可以將游戲代碼置入庫中。如果你想在引擎本身中嵌入你的游戲邏輯系統設計的話,大量的問題與大量修改一定會讓你打消復用這個引擎的念頭。
             
                因此,此時你很可能在思考這個問題:聯系引擎與游戲的介質層到底提供了什么。答案就是控制(control)。幾乎引擎的每一個部分都有動態的屬性,而該引擎/游戲介質層(engine/game layer)提供了一個接口去修改這些動態屬性。它們包括了攝像器(camera)、模型屬性(model properties)、光線(lights)、粒子系統物理(particle system physics)、聲效播放(playing sounds)、音樂播放(playing music)、輸入操作(handling input)、切換等級(changing levels)、碰撞檢測以及反饋(collision detection and response)、以及2D圖形界面的頂端顯示、標題畫面等相關的東西。基本上來講如果你想讓你的游戲能優雅的實現這些元素,在引擎中置入這個介質層(interface)是必不可少的。
             
            The Game (游戲)
             
                在這里,我無法告訴你如何去寫你的游戲。這該輪到你發揮啦。如果你已經為你那令人贊異的引擎設計出了一套出色的介質層的話,我想在設計撰寫游戲過程中一定會輕松許多。
             
                3D游戲引擎設計是一項巨大的軟件工程。一個人獨立完成設計并撰寫也并非不可能,但這不只是熬一兩個晚上便能搞定的,你很可能會出寫出幾兆的源代碼量。如果你沒有持久的信念與激情,你很可能無法完成它。當然,別指望你的第一次嘗試就能寫出完整的引擎,挑一個比較小的項目所需的小規模引擎去實現。按你的方式去努力工作,你就能到達成功。

            本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lijiesun/archive/2008/08/26/2832012.aspx

            本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lijiesun/archive/2008/08/26/2832012.aspx

            本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lijiesun/archive/2008/08/26/2832012.aspx

            本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lijiesun/archive/2008/08/26/2832012.aspx

            posted on 2010-01-06 13:48 閆軍yy 閱讀(353) 評論(0)  編輯 收藏 引用 所屬分類: 我的心情
            久久久久久精品免费看SSS| 久久精品国产亚洲AV电影| 成人国内精品久久久久影院| 久久精品毛片免费观看| 久久精品国产亚洲av水果派| 国产精品美女久久久| 日日狠狠久久偷偷色综合0| 色欲久久久天天天综合网 | 国产精品久久久久影视不卡| 久久这里只精品国产99热| 狠狠综合久久AV一区二区三区| 日本精品久久久久中文字幕8| 久久久久亚洲AV成人网人人网站| 国产成人精品久久一区二区三区 | 欧美亚洲日本久久精品| 中文字幕久久精品无码| 久久久久亚洲AV成人网| 亚洲一区中文字幕久久 | 日本精品久久久久中文字幕8| 久久人人超碰精品CAOPOREN| 97超级碰碰碰久久久久| 少妇熟女久久综合网色欲| 久久久午夜精品| 中文成人久久久久影院免费观看| 久久久无码精品午夜| 国产精品青草久久久久婷婷 | 久久精品国产只有精品66| 久久99精品国产麻豆宅宅| 久久久精品免费国产四虎| 人妻久久久一区二区三区| 99久久免费国产精品特黄| 亚洲国产天堂久久综合| 亚洲а∨天堂久久精品9966| 久久精品这里只有精99品| 香蕉久久一区二区不卡无毒影院 | 伊人久久大香线蕉综合影院首页| 久久中文精品无码中文字幕| 久久久久久久综合综合狠狠| 精品熟女少妇aⅴ免费久久| 久久人人爽人爽人人爽av| 精品熟女少妇aⅴ免费久久|