original address
這篇文章首發(fā)于一本談游戲研發(fā)的雜志,是趙青寫的,寫得非常不錯。所以我把這篇文章貼出來和大家一起學(xué)習(xí),本來我還找尚進寫關(guān)于封神的開發(fā)回顧,可惜他太忙,一直沒將文章給我,不能不說是個遺憾。
如果這篇文章涉及到版權(quán)問題,請聯(lián)系我,我將會盡快刪除。
《劍俠情緣網(wǎng)絡(luò)版》開發(fā)回顧
2003 年的1月,我剛剛開發(fā)完《天王》項目,正在休息、總結(jié)和規(guī)劃下一個項目。《天王》是我開發(fā)的眾多項目中最滿意的一個,雖然這篇文字主要是對《劍俠情緣網(wǎng)絡(luò)版》(以下簡稱《劍網(wǎng)》)這個項目的回顧,但作為《天王》的項目經(jīng)理和主程序,我還是想簡單談?wù)勊!短焱酢酚袔讉€第一:它是西山居第一個采用外購引擎來開發(fā)的游戲,第一個3D游戲,第一個動作類游戲,第一個被我們自己的開發(fā)人員所認同、并且愿意自發(fā)測試的游戲。雖然由于開發(fā)時間短、人員少以及我們沒有開發(fā)3D動作類游戲的經(jīng)驗,它還有很多不足之處,但從開發(fā)人員的觀點來看,它無疑是一個成功的項目。今后如果有機會,我會把《天王》的開發(fā)歷程介紹給大家,不過現(xiàn)在我要回到《劍網(wǎng)》的正題來。
也正在這個時候,已經(jīng)開發(fā)了很長時間的《劍網(wǎng)》出現(xiàn)了很大的問題,項目延遲非常嚴重,原項目負責(zé)人也離開了西山居。需要指出的是這種大的人員更迭已經(jīng)發(fā)生過一次,最初的主程序和項目負責(zé)人在2002年中期已經(jīng)離開了西山居。公司找到我,希望我來做《劍網(wǎng)》的項目負責(zé)人和西山居的技術(shù)總監(jiān)。對我而言,這是一個巨大的挑戰(zhàn)!當(dāng)時的情況非常不好,一方面是公司過高的期望和過緊的進度要求,一方面是項目組的普遍士氣低落和項目進度的失控。不過我還是相信我對項目控制的經(jīng)驗和我的熱情,相信項目組的開發(fā)實力,相信公司對完成這個項目的決心和準備投入的人力、物力和財力。后來的事實證明我當(dāng)時的想法是正確的。在最后的幾個月中,我們完成了一個不小的奇跡。6月開始內(nèi)測,9月開始公測,12月開始收費,最高在線人數(shù)一路攀升。更重要的是,《劍網(wǎng)》的成功為公司開發(fā)以后的產(chǎn)品積累了很多寶貴的經(jīng)驗。《劍網(wǎng)》收費后10個月,使用幾乎相同的技術(shù),公司就推出了第二個網(wǎng)絡(luò)游戲《封神榜》。
現(xiàn)在,我把在開發(fā)《劍網(wǎng)》中的經(jīng)驗教訓(xùn)共享出來,希望能讓其他的項目管理人員、項目開發(fā)人員少走一些彎路。
一、項目概述
開發(fā)規(guī)模
《劍網(wǎng)》的開發(fā)人員更迭比較頻繁,所以統(tǒng)計人數(shù)是一件比較困難的事情,下面的數(shù)字只能反映平均的人數(shù)情況
l 項目初期,共4人,都是程序;
l 項目中期,共25人,6個程序、5個策劃、14個美工;
l 項目后期,共44人,12個程序、6個策劃、18個美工、8個測試
開發(fā)時間
從2000年9月項目準備開始,到2003年12月項目收費,整個項目的開發(fā)時間為39個月。在這段時間內(nèi)西山居還推出了3款產(chǎn)品《新劍俠情緣》、《月影傳說》和《天王》。
目標(biāo)平臺
PC平臺的MMORPG游戲
目標(biāo)市場
亞洲地區(qū),尤其是華語地區(qū),包括中國大陸、香港、臺灣、日本、韓國、新加坡等
開發(fā)硬件
l 客戶端開發(fā)硬件為 Intel P3-800、512M內(nèi)存、Geforce2 MX 400顯卡
l 服務(wù)端開發(fā)硬件為 Intel 雙CPU至強服務(wù)器,2G內(nèi)存
開發(fā)軟件
l 程序 :MS Visual C++ 6.0、Intel VTune,、Visual Assist, Lua
l 美術(shù) :3DMax 5.0、Photoshop 6.0
l 策劃 :Microsoft Office系列軟件
二、主要經(jīng)驗總結(jié)
從開發(fā)周期和投入的人力物力來看,《劍網(wǎng)》都是西山居自1996年成立以來規(guī)模最大、曲折最多的項目。這個項目的開發(fā)過程中犯了很多錯誤,也使得我們積累了寶貴的經(jīng)驗。在這里,我先概要地列出一些《劍網(wǎng)》開發(fā)過程中的錯誤和經(jīng)驗,在下面的討論中,對它們還將更詳細地闡述:
n 開發(fā)網(wǎng)游和開發(fā)單機游戲有著本質(zhì)的不同,他們的可玩性體現(xiàn)在不同的方面。單機游戲的可玩性主要體現(xiàn)在人機互動,網(wǎng)絡(luò)游戲的可玩性主要體現(xiàn)在人與人的互動;單機的RPG游戲常以精彩的劇情取勝,而網(wǎng)絡(luò)多人在線RPG游戲則很難制作出豐富的劇情;單機游戲的玩家比較成熟,大多憑興趣玩游戲,很多網(wǎng)絡(luò)游戲的玩家在接觸網(wǎng)游之前都沒有玩游戲的經(jīng)歷,他們只是把玩網(wǎng)絡(luò)游戲當(dāng)作交友或者消磨時間的手段。應(yīng)該在項目開發(fā)的過程中時刻提醒自己,我們要開發(fā)的是個網(wǎng)游而不是單機游戲。其實并不是只有我有這樣的想法,在和大宇的姚壯憲先生聊天時他也表達了同樣的觀點。《劍網(wǎng)》的開發(fā)人員大都沒有開發(fā)網(wǎng)游的經(jīng)驗,甚至沒有玩網(wǎng)絡(luò)游戲的體驗,所以《劍網(wǎng)》中存在不少單機游戲的痕跡也就不奇怪了。
n 游戲首先是一個商業(yè)產(chǎn)品,技術(shù)只是游戲的一個基礎(chǔ),或者說只是更好地表現(xiàn)游戲的手段,而不是目的。但由于金山公司以程序員為主,西山居也不例外,實際上很多項目的關(guān)鍵性決策都是由崇尚技術(shù)并追求完美的程序員做出的,所以《劍網(wǎng)》中有不少華而不實,卻極其耗時的技術(shù)研究。比如《劍網(wǎng)》中的3D顯示模式的開發(fā)耗時巨大,但最終由于效率的原因,很少有用戶使用。我的建議是開發(fā)一個大型項目時,最好80%的技術(shù)都使用成熟的技術(shù)。比如《劍網(wǎng)》,應(yīng)該使用《劍俠情緣 2》的引擎,再花些時間研究客戶端的換裝系統(tǒng)和服務(wù)器端的技術(shù),這樣《劍網(wǎng)》至少可以提前一年推出。
n 網(wǎng)絡(luò)游戲中穩(wěn)定的服務(wù)器端以及提供便捷的運營、維護、更新、信息統(tǒng)計工具是最重要的幾件事情,應(yīng)該投入最核心的技術(shù)人員和充足的時間去研發(fā)和測試。但遺憾的是西山居一直沒有自己的服務(wù)器端的技術(shù)人員,而且對此也沒有給予充足的重視,最終需要公司其他部門的支持。而很多關(guān)鍵性服務(wù)器端的功能也只是在內(nèi)測前幾周才完成,缺乏足夠的測試。
說了這么多《劍網(wǎng)》中的不足,并不是說《劍網(wǎng)》的開發(fā)過程一無是處。西山居相對于很多國內(nèi)的開發(fā)團隊和小組,更加負責(zé),更加用心,更加細致,更加專業(yè)。這些不足說明了國內(nèi)的游戲開發(fā)整體上還處于一個初級階段。國內(nèi)的游戲開發(fā)團隊都需要少一些浮躁,多一些踏實。不論在管理方面,還是對游戲的認識,或是技術(shù)方面,我們都有很多地方需要學(xué)習(xí)、改進。
三、項目起源
2000 年的時候,圖形化網(wǎng)絡(luò)游戲《萬王之王》開始進入中國,金山公司也是候選的代理、運營商之一。當(dāng)時文字Mud已經(jīng)流行了很長一段時間,國外也有了《UO》之類的網(wǎng)絡(luò)游戲大作,但是《萬王之王》是第一部進入國內(nèi)的圖形化商業(yè)化的網(wǎng)絡(luò)游戲。我也參與測試了這個游戲。即使在當(dāng)時的技術(shù)水平下,我也覺得《萬王之王》制作得比較粗糙,最讓我不可理解的是,他的同步策略大部分都是客戶端的命令需要等待服務(wù)端的驗證返回,這樣的做法使得客戶端玩家的行為極為不流暢。這也是金山最終沒有運營這款游戲的原因之一。
當(dāng)時,由于盜版和制作水平的問題,國內(nèi)的游戲市場非常萎靡。西山居好像金山的一根雞肋,雖然開發(fā)了不少經(jīng)典的單機游戲,但由于盈利太少,和其他國內(nèi)游戲公司一樣,一直處在奄奄一息的狀態(tài)。
之后,《萬王之王》在大陸的運營取得了出乎意料的成功,也給公司的高層極大的震動,自主研發(fā)一款網(wǎng)絡(luò)游戲提上了日程。如果從那時起公司就投入足夠的人力、物力,潛心完成一款網(wǎng)絡(luò)游戲,那么也許現(xiàn)在金山會占有國內(nèi)網(wǎng)絡(luò)游戲市場一半以上的份額。但遺憾的是由于決策的失誤,推動力的不足,以及精力過多的分散在其他游戲的研發(fā)上,使得《劍網(wǎng)》的推出至少延后了2年,在競爭如此激烈的網(wǎng)絡(luò)游戲市場,對一個產(chǎn)品來說,這么長時間的延遲幾乎是致命的。
我一直覺得中國現(xiàn)在的游戲開發(fā)人員趕上了一個好時候,現(xiàn)在有這么多的人在關(guān)注游戲行業(yè),這在以往是無法想象的。不過游戲行業(yè)這么火爆并不是因為我們的研發(fā)實力有了多大的提高,也不是因為我們開發(fā)出了多少既叫好、又叫座的游戲大作,而是我們碰上了一種好的盈利模式,僅此而已。網(wǎng)絡(luò)游戲杜絕了盜版,又給千萬個網(wǎng)絡(luò)終端前孤獨、無聊的人們一種有趣的交流、溝通手段,所以它的成功是一種必然。
四、設(shè)計目標(biāo)
開發(fā)初期,設(shè)定了一些我們開發(fā)的原則和最終的目標(biāo),有些是對的,有些是錯的。每個決定當(dāng)時都引起了西山居內(nèi)部激烈的討論:
1. 是采用即時戰(zhàn)斗模式還是回合制戰(zhàn)斗模式。
我們最終采用了即時戰(zhàn)斗模式,相對于回合制模式,這樣的開發(fā)難度稍大些。不過我覺得這不是一個錯誤的決定。
2. 是否采用超大、無縫鏈接的地圖。
開發(fā)人員都有一個美好的愿望,希望開發(fā)出超大的無縫鏈接的游戲世界,讓成千上萬的用戶可以方便的溝通,交流。很明顯這是一個聽起來很好,但做起來很難,而且沒有太大實用性的想法。可惜的是我們決定了要這樣做,更可惜的是最終我們花了不少時間也沒能實現(xiàn)這個目標(biāo)。這是個錯誤的決定。
3. 我們的核心技術(shù)人員都是《暗黑破壞神》的忠實玩家,也非常推崇它所使用的技術(shù),模仿它做一個類似的客戶端幾乎獲得了所有人的支持。最終我們完成了一個類似于它的客戶端,但顯示效率差了很多,而且花掉了我們太多的人力和精力。這是一個錯誤的決定。
4. 我們曾經(jīng)有過一個聽起來不錯的想法,在開發(fā)《劍網(wǎng)》的同時,利用現(xiàn)成的資源和技術(shù)再開發(fā)一個單機游戲。最終這個目標(biāo)沒有實現(xiàn),我們低估了開發(fā)一個單機游戲所要投入的精力。這是一個非常錯誤的決定。
五、過程模型
《劍網(wǎng)》采用的是快速原型的軟件工程模型。這種方式比較適合游戲行業(yè)的特點,以及我們項目具體的特點。
一般來說,我們在第一個里程碑通常只會投入核心技術(shù)人員完成一個技術(shù)原型,以解決規(guī)劃中的游戲所需功能中可能的技術(shù)難點。這一點非常重要。很多游戲開發(fā)到中后期才會發(fā)現(xiàn)還有不少技術(shù)門檻需要跨越,以至項目最終延期。同時我們在第一個里程碑會細化策劃的設(shè)計,在第一個里程碑結(jié)束的時候形成一個比較系統(tǒng)的《設(shè)計文檔》,這個文檔越細致、越系統(tǒng)、越接近游戲最終的設(shè)計方案,游戲開發(fā)的過程就越順利。經(jīng)過這么多年游戲的研發(fā),我深刻地認識到,策劃是一個游戲的靈魂,是一個游戲是否能夠成功的關(guān)鍵。好的策劃需要深厚的功底,需要出色的溝通和表達能力,需要很強的邏輯推理能力,需要優(yōu)美的文字功底,需要創(chuàng)新精神同時更需要熟悉游戲業(yè)務(wù),了解終端用戶的心理。好的策劃是項目經(jīng)理、產(chǎn)品經(jīng)理、制作人的合適人選。不過遺憾的是策劃是中國游戲開發(fā)團隊最薄弱的一環(huán)。我接觸過的大部分策或者眼高手低、不切實際,或者難以溝通,或者沒有從開發(fā)商業(yè)產(chǎn)品的角度出發(fā)設(shè)計游戲。希望我這樣說沒有傷害到廣大策劃朋友的工作熱情,其實我提到的這些缺點,每個游戲開發(fā)團隊中的每個崗位上都會出現(xiàn),只是游戲策劃工作的超乎尋常的重要性,所以才會特別拿出來討論。
第一個里程碑中還會確定核心游戲資源的數(shù)據(jù)格式,并且完成大部分游戲編輯工具。一般情況下這些工具包括:地圖編輯工具、圖素編輯工具、模型(圖片)編輯工具、特效編輯工具、腳本編輯功能等。《劍網(wǎng)》的第一個里程碑完成的非常不順利,實際上很多應(yīng)該在第一個里程碑完成的功能直到項目進展到最后階段才真正完成。我們只在第一個里程碑中完成了客戶端顯示和換裝系統(tǒng)的技術(shù)研究。而非常重要的服務(wù)器端的技術(shù)研究只是泛泛而過,沒有形成一個實用的、具評估價值的技術(shù)演示,這是《劍網(wǎng)》整個研發(fā)過程中最失敗的一點。同時由于客戶端過于復(fù)雜,地圖編輯工具的研發(fā)也延遲到了項目接近完成時才最終完成。
如果能夠順利完成第一個里程碑,我們會在第二個里程碑中擴展已有的功能,添加核心游戲邏輯,形成一個游戲的原型。第二個里程碑完成后,已經(jīng)可以看到游戲的雛形。這時候如果發(fā)現(xiàn)游戲的可玩性不夠,策劃還可以做比較大的調(diào)整。這個里程碑中美工需要開始利用已完成的編輯工具,來編輯游戲資源。雖然延遲了不少時間,但《劍網(wǎng)》第二個里程碑基本完成。不過遺憾的是,我們?nèi)匀粵]有把服務(wù)器端技術(shù)原型的研發(fā)當(dāng)作重點,底層網(wǎng)絡(luò)模型、服務(wù)器架構(gòu)、同步策略都在項目的最終階段成為項目的攔路虎,以致公司需要抽調(diào)其他部門的核心骨干,集體攻關(guān)。
后兩個里程碑,主要是游戲的內(nèi)容制作階段和測試階段,也就是在第一、第二的原型的基礎(chǔ)上根據(jù)策劃的設(shè)計,不斷地完善游戲的功能,不斷地產(chǎn)品化。這兩個階段也非常重要,大部分游戲功能、可玩性以及游戲的細節(jié)都是在這期間完成的。由于技術(shù)上已經(jīng)不存在障礙,所以一般情況下,即使這個階段出現(xiàn)延遲,也不會對整個項目產(chǎn)生太大的影響。
從軟件工程的角度看,《劍網(wǎng)》做的比較好的地方是非常注重測試環(huán)節(jié),測試介入到了項目開發(fā)、運營的全過程。這在西山居以往是不曾有的,也是我極力推動的一件事情。在我剛剛擔(dān)任西山居技術(shù)總監(jiān)時,整個部門沒有一位全職測試人員,而《劍網(wǎng)》結(jié)束時,我們的測試人員和程序、策劃人員的比例基本上達到了1:2,測試人員在《劍網(wǎng)》的后期開發(fā)過程中發(fā)揮了至關(guān)重要的作用,尤其是當(dāng)《劍網(wǎng)》內(nèi)測初期,公司缺少專業(yè)的運營人員,測試人員就承擔(dān)了大部分的運維工作,保證了《劍網(wǎng)》內(nèi)測的順利進行。
綜合起來,特別需要注意的是:
l 要在第一個階段,也就是技術(shù)原型階段完成真正重要的技術(shù)的研究和驗證,確定項目的可行性,降低項目的風(fēng)險。
l 第一個階段中,策劃提供的《設(shè)計文檔》體現(xiàn)的是對美工和程序的具體需求。《設(shè)計文檔》應(yīng)當(dāng)盡量要做到系統(tǒng)化、清晰。
l 游戲是一個數(shù)據(jù)驅(qū)動的產(chǎn)品,開發(fā)階段需要生成大量的游戲數(shù)據(jù)。自主研發(fā)的游戲編輯工具非常重要,它的易用性會直接影響美工、策劃的工作效率。
六、技術(shù)要點
金山公司的創(chuàng)始人求伯君先生是個優(yōu)秀的程序員,公司的核心骨干也大都是程序員出身。因此,崇尚技術(shù),追求完美的程序員文化深深地影響著每一位金山員工。在西山居中,程序員雖然在人數(shù)上只占到了很小的比例,但作為金山公司的一個事業(yè)部,其思考問題的方式和文化氛圍和金山公司一脈相承,都是以程序員為主導(dǎo)的。這種以程序員為主導(dǎo)的開發(fā)方式在西山居延續(xù)至今,有利有弊。從目前的實際情況看,利大于弊;而從長遠看,弊大于利。游戲行業(yè)技術(shù)門檻較高,技術(shù)更迭較快,許多技術(shù)甚至直接推動了個人計算機硬件的更新?lián)Q代。無可否認,技術(shù)是游戲?qū)崿F(xiàn)的基礎(chǔ)。同時目前國內(nèi)缺乏專業(yè)的策劃人員,所以以程序員作為游戲開發(fā)的主導(dǎo),起碼在目前的實際情況下,是一個正確的選擇。但是畢竟最終決定游戲優(yōu)劣的是游戲的可玩性。從長遠來看,培養(yǎng)和尋找合適的策劃人員,由他們擔(dān)任制作人,將游戲開發(fā)從技術(shù)主導(dǎo)轉(zhuǎn)變?yōu)橛螒蛐灾鲗?dǎo),是我們努力的方向。
相對與單機游戲,網(wǎng)絡(luò)游戲的技術(shù)難點更多。一般情況下,我們會將網(wǎng)絡(luò)游戲中使用的技術(shù)劃分成如下幾個方面:
1. 通用底層功能
包括游戲中各個模塊都會使用的一些基礎(chǔ)模塊,大致上有:
l 文件管理模塊
l 日志功能模塊
l 內(nèi)建的調(diào)試機制
l 內(nèi)存管理機制
l 性能統(tǒng)計分析模塊
l 數(shù)學(xué)、物理模塊
2. 客戶端的顯示
客戶端的表現(xiàn)力和效率是游戲能否成功的一個重要的決定因素,以一個3D游戲為例,大致上的功能有:
l 貼圖管理模塊
l 插件模塊
l 模型、動畫管理模塊
l 場景管理模塊
3. 游戲邏輯
游戲邏輯指策劃提出的與游戲性相關(guān)的各種功能模塊,對于網(wǎng)絡(luò)游戲,大致上有:
l 戰(zhàn)斗系統(tǒng)
l 角色人工智能(AI)
l 組隊功能
l 交易系統(tǒng)
l 人際關(guān)系系統(tǒng)
l 幫會系統(tǒng)等等
4. 服務(wù)器邏輯
網(wǎng)絡(luò)游戲中多臺不同職能的服務(wù)器支撐起一個完整的游戲世界,他們之間的通訊和邏輯決定了網(wǎng)絡(luò)游戲的穩(wěn)定性和負載的上限,網(wǎng)絡(luò)游戲中不同職能的服務(wù)器大致上有:
l 帳號服務(wù)器
l 游戲邏輯服務(wù)器:完成游戲中角色AI計算,戰(zhàn)斗中的傷害計算,經(jīng)驗分配等游戲邏輯相關(guān)計算的服務(wù)器
l 游戲邏輯集群總控服務(wù)器:協(xié)調(diào)各個游戲邏輯服務(wù)器的一個總控服務(wù)器,類似于一個局域網(wǎng)中的網(wǎng)關(guān)。
l 角色數(shù)據(jù)庫服務(wù)器
5. 內(nèi)部開發(fā)工具的研發(fā)
游戲開發(fā)過程中,美術(shù)、策劃會使用大量的我們內(nèi)部開發(fā)的工具來制作、轉(zhuǎn)換、并生成最終游戲數(shù)據(jù),大致上有:
l 場景編輯工具
l 圖素編輯工具
l 模型編輯工具
l 貼圖編輯工具
l 特效編輯工具
l 界面編輯工具
l 腳本編輯工具
具體到《劍網(wǎng)》,開發(fā)過程中的技術(shù)難點主要集中在兩大方面:
客戶端的顯示和換裝系統(tǒng)
《劍網(wǎng)》的客戶端需要支持兩種顯示模式:純二維的顯示模式以及類似于《暗黑破壞神》的半三維的顯示模式。這給劍網(wǎng)的研發(fā)帶來來很大的困難。首先是資源格式的問題,同樣的資源格式可能適合二維顯示,但不適合三維顯示。事實上我們低估了這塊工作的技術(shù)難度。《劍網(wǎng)》后期,資源格式已經(jīng)定型,大部分游戲資源已經(jīng)生成,這時我們才發(fā)現(xiàn)提高三維顯示模式效率唯一可行的方式是重新規(guī)劃游戲資源的格式和組織方式,但這對于已經(jīng)進入一個研發(fā)后期的項目來說幾乎是不可能的。另外,由于《劍網(wǎng)》涉及到復(fù)雜的換裝系統(tǒng)和數(shù)量眾多的角色類型,所以我們要設(shè)計一種好的換裝系統(tǒng),既能達到策劃的需求,又能盡可能降低游戲客戶端資源的容量。這也是一個難點。
服務(wù)器端的集群結(jié)構(gòu)、網(wǎng)絡(luò)底層通訊模型、游戲邏輯的同步策略
服務(wù)器的穩(wěn)定性和流暢性是網(wǎng)絡(luò)游戲玩家最關(guān)心的幾個問題之一。大部分網(wǎng)絡(luò)游戲的服務(wù)器結(jié)構(gòu)都可劃分到如下兩類,單游戲服務(wù)器結(jié)構(gòu)和游戲服務(wù)器群組結(jié)構(gòu)。采用單游戲服務(wù)器結(jié)構(gòu)的比如《奇跡》,一個游戲世界由一臺服務(wù)器支撐。這種結(jié)構(gòu)比較簡單,每個游戲世界承載的玩家數(shù)量比較少,但正是由于簡單,所以比較容易達到穩(wěn)定、流暢的要求。《劍網(wǎng)》采用了游戲服務(wù)器群組結(jié)構(gòu),由多臺游戲邏輯服務(wù)器協(xié)同運作,構(gòu)成一個完整的游戲世界。比如我們的一個完整的游戲世界由80個場景構(gòu)成,單一服務(wù)器無法將這80個場景一起載入,我們就把這些場景分別放在8臺游戲服務(wù)器上,每臺大致有10個場景,這8臺服務(wù)器協(xié)同工作,構(gòu)成一個完整的游戲世界。這種結(jié)構(gòu)設(shè)計復(fù)雜,承載的用戶數(shù)可動態(tài)調(diào)整,要達到穩(wěn)定、流暢的設(shè)計目標(biāo),需要付出更大的努力。
同時,選擇一個高效的網(wǎng)絡(luò)底層通訊模型也是我們的一個主要工作。不同的網(wǎng)絡(luò)通訊模型適合不同的應(yīng)用,網(wǎng)絡(luò)游戲?qū)Τ休d的用戶數(shù)量要求比較高,針對這種具體的需求,我們在Windows平臺下采用了IO完成端口的模型;在Linux平臺下,采用了實時信號量的網(wǎng)絡(luò)通訊模型。(由于《劍網(wǎng)》大部分的開發(fā)人員都不熟悉Linux下的編程方式,所以我們開發(fā)的大部分時間都在Windows平臺下進行的,直到大部分功能都已完成后才由專人移植到Linux平臺下,所以我們有兩套網(wǎng)絡(luò)底層庫。最終《劍網(wǎng)》的服務(wù)器采用的是Linux。)
這里我想重點談?wù)勍讲呗浴M皆诰W(wǎng)絡(luò)游戲中是非常重要的,它保證了每個玩家在屏幕上看到的東西大體是一樣的。解決同步問題的最簡單的方法就是把每個玩家的動作都向其他玩家廣播一遍,但是這樣做會占用比較多的帶寬,所以我門要考慮一種比較高效的同步策略,其中涉及如下幾個問題:
l 同步的范圍,即一條網(wǎng)絡(luò)消息要向哪些客戶(玩家)傳輸
l 同步的內(nèi)容,即傳輸哪些內(nèi)容
l 同步的頻率,即多長時間同步一次
l 如何解決網(wǎng)絡(luò)延遲帶來的問題
l 如果優(yōu)化,減少帶寬的消耗
l 如何防止作弊
由于篇幅有限,只具體談?wù)勍降膬?nèi)容:
1. 同步內(nèi)容的分類
n 命令同步,即時發(fā)送。命令同步指游戲中的一些瞬間行為,比如玩家和角色的行走、玩家和角色間的攻擊,都可視為游戲命令。命令可能是客戶端發(fā)起,也可能是服務(wù)端發(fā)起。
n 狀態(tài)同步,按照一定頻率、可以區(qū)分細節(jié)度發(fā)送,只由服務(wù)端發(fā)起。
由于網(wǎng)絡(luò)延遲,游戲中同步的內(nèi)容如果只有命令同步,很容易在游戲進行一段時間后,服務(wù)器端和客戶端的狀態(tài)偏差比較大,所以需要間隔一段時間,同步一些關(guān)鍵的狀態(tài),校正客戶端和服務(wù)器端的差別。
2. 邏輯對象屬性的細分:游戲由不同的邏輯對象構(gòu)成,比如玩家對象、角色對象。每個邏輯對象中會包含大量的屬性,我們需要在同步時區(qū)別對待這些屬性。
n 不需同步的屬性,服務(wù)端和客戶端都可根據(jù)本地的配置文件載入,比如角色的名字,角色的速度等。
n 需要在對象創(chuàng)建時同步一次,以后不會改變的。比如角色的類別。
n 需要頻繁的同步的屬性,比如角色的生命。
3. 邏輯對象行為的同步策略
n 客戶端自己決定,不需要同步給其他客戶,屬于客戶端專有對象的行為,比如用來播放特效的特效對象,以及用來增加客戶端表現(xiàn)力的各種小動物,這些對象不會影響游戲的進行,所以不需同步。
n 客戶端發(fā)起命令,在發(fā)給服務(wù)器的同時,為了增加本客戶端的流暢度,自己預(yù)測命令執(zhí)行的結(jié)果。服務(wù)器端將使用同樣的算法執(zhí)行命令,同時將命令轉(zhuǎn)發(fā)給相關(guān)的其他客戶端。其他客戶端在收到命令后,在本地執(zhí)行命令。這種策略的缺點是發(fā)起命令的客戶和其他客戶在執(zhí)行命令上有一個Ping值的延遲。比如玩家的行走命令。
n 客戶端發(fā)起命令,發(fā)給服務(wù)器,但本地不執(zhí)行,等待服務(wù)器處理或者確認,返回后再執(zhí)行,這樣所有的客戶端的行為基本一致,也不可能出現(xiàn)作弊。比如玩家傷害計算,玩家升級的判斷。
n 服務(wù)端發(fā)起的行為,發(fā)送給相關(guān)的客戶,比如角色的行走命令,角色的狀態(tài)同步。
七、游戲設(shè)計
網(wǎng)絡(luò)游戲和單機游戲的可玩性有很大的不同,用戶群也有不小的區(qū)別,這一點之前已經(jīng)提到過。網(wǎng)絡(luò)游戲中應(yīng)該提供足夠的、方便的玩家和玩家間的交互方式,玩家在游戲中建立的人際關(guān)系越多、越牢固,對這個游戲的粘著度就越高。一個普通的網(wǎng)絡(luò)游戲玩家,每天花在游戲中的時間大約是2個小時左右,所以我們需要設(shè)計足夠多的游戲方式,讓玩家減少由于不斷的重復(fù)而造成的枯燥感。經(jīng)歷了這幾年網(wǎng)絡(luò)游戲的發(fā)展,玩家已經(jīng)開始厭倦單調(diào)枯燥的打怪升級的游戲方式,游戲設(shè)計者都開始考慮怎樣變革才是正確的道路。
《劍網(wǎng)》的設(shè)計者希望創(chuàng)造一個豐富的武俠世界。10個門派、5行相克、完全隨機出現(xiàn)的、幾乎不可能重復(fù)的裝備系統(tǒng),這些一直是《劍網(wǎng)》重要的特征和賣點。但是過于復(fù)雜的系統(tǒng)使得劍網(wǎng)各個門派間平衡性的調(diào)整成了一個艱巨的、幾乎不可能完成的任務(wù)。同時《劍網(wǎng)》提供的游戲方式過于單薄,玩家在經(jīng)過一段時間后,很快就會覺得游戲中沒有什么可玩的,這也造成了不少玩家的流失。
這里我想再談一個核心的問題,玩家為什么會選擇一款網(wǎng)絡(luò)游戲,并且保持一定的粘著度,原因大致如下:
l 可以獲得一定的利益,或者他感到在游戲中利益是保值或者增值的。這類玩家的典型代表是一些職業(yè)玩家;
l 可重復(fù)的游戲樂趣,這一點對于網(wǎng)絡(luò)游戲比較難做到。由于網(wǎng)絡(luò)游戲的特點,為了防止作弊和減少網(wǎng)絡(luò)延遲的影響,很難做到操作的技巧性。所以玩家在不斷的重復(fù)同樣的操作行為的過程中很容易感到枯燥;
l 可以獲得與人交互的樂趣,這一點正是網(wǎng)絡(luò)游戲的先天優(yōu)勢,比較容易做到,不過我們需要考慮的是如何做得更有特點
八、結(jié)語
沒有想到寫了這么多,需要指出的是雖然我現(xiàn)在已經(jīng)離開了金山公司,但我依然認為西山居是國內(nèi)比較出色的制作團隊。如果有好的決策,把握好發(fā)展方向,會有更加美好的未來。這類總結(jié)性的文章注定了就是以暴露問題和總結(jié)經(jīng)驗為重點。如果有不妥之處,請朋友們多多批評指教。也希望這篇文章可以給正在開發(fā)網(wǎng)絡(luò)游戲的朋友一些借鑒,哪怕只有一點,我也心滿意足了。
posted on 2007-12-27 13:00
七星重劍 閱讀(837)
評論(0) 編輯 收藏 引用 所屬分類:
GameDevStory