《劍俠情緣網絡版》開發回顧

>>>  創業先鋒 眾人拾柴火焰高  >>> 簡體     傳統

 

作者趙青

 

  2003年的1月,我剛剛開發完《天王》項目,正在休息、總結和規劃下一個項目。《天王》是我開發的眾多項目中最滿意的一個,雖然這篇文字主要是對《劍俠情緣網絡版》(以下簡稱《劍網》)這個項目的回顧,但作為《天王》的項目經理和主程序,我還是想簡單談談它。《天王》有幾個第一:它是西山居第一個采用外購引擎來開發的游戲,第一個3D游戲,第一個動作類游戲,第一個被我們自己的開發人員所認同、并且愿意自發測試的游戲。雖然由于開發時間短、人員少以及我們沒有開發3D動作類游戲的經驗,它還有很多不足之處,但從開發人員的觀點來看,它無疑是一個成功的項目。今后如果有機會,我會把《天王》的開發歷程介紹給大家,不過現在我要回到《劍網》的正題來。

  也正在這個時候,已經開發了很長時間的《劍網》出現了很大的問題,項目延遲非常嚴重,原項目負責人也離開了西山居。需要指出的是這種大的人員更迭已經發生過一次,最初的主程序和項目負責人在2002年中期已經離開了西山居。公司找到我,希望我來做《劍網》的項目負責人和西山居的技術總監。對我而言,這是一個巨大的挑戰!當時的情況非常不好,一方面是公司過高的期望和過緊的進度要求,一方面是項目組的普遍士氣低落和項目進度的失控。不過我還是相信我對項目控制的經驗和我的熱情,相信項目組的開發實力,相信公司對完成這個項目的決心和準備投入的人力、物力和財力。后來的事實證明我當時的想法是正確的。在最后的幾個月中,我們完成了一個不小的奇跡。6月開始內測,9月開始公測,12月開始收費,最高在線人數一路攀升。更重要的是,《劍網》的成功為公司開發以后的產品積累了很多寶貴的經驗。《劍網》收費后10個月,使用幾乎相同的技術,公司就推出了第二個網絡游戲《封神榜》。

  現在,我把在開發《劍網》中的經驗教訓共享出來,希望能讓其他的項目管理人員、項目開發人員少走一些彎路。

一、項目概述

開發規模

  《劍網》的開發人員更迭比較頻繁,所以統計人數是一件比較困難的事情,下面的數字只能反映平均的人數情況

l 項目初期,共4人,都是程序;
l 項目中期,共25人,6個程序、5個策劃、14個美工;
l 項目后期,共44人,12個程序、6個策劃、18個美工、8個測試

開發時間

  從20009月項目準備開始,到200312月項目收費,整個項目的開發時間為39個月。在這段時間內西山居還推出了3款產品《新劍俠情緣》、《月影傳說》和《天王》。

目標平臺
  PC平臺的MMORPG游戲

目標市場

  亞洲地區,尤其是華語地區,包括中國大陸、香港、臺灣、日本、韓國、新加坡等

開發硬件
l 客戶端開發硬件為 Intel P3-800512M內存、Geforce2 MX 400顯卡
l 服務端開發硬件為 Intel CPU至強服務器,2G內存

開發軟件

l 程序 MS Visual C++ 6.0Intel VTune,Visual Assist, Lua
l 美術 3DMax 5.0Photoshop 6.0
l 策劃 Microsoft Office系列軟件

二、主要經驗總結

  從開發周期和投入的人力物力來看,《劍網》都是西山居自1996年成立以來規模最大、曲折最多的項目。這個項目的開發過程中犯了很多錯誤,也使得我們積累了寶貴的經驗。在這里,我先概要地列出一些《劍網》開發過程中的錯誤和經驗,在下面的討論中,對它們還將更詳細地闡述:

n
  開發網游和開發單機游戲有著本質的不同,他們的可玩性體現在不同的方面。單機游戲的可玩性主要體現在人機互動,網絡游戲的可玩性主要體現在人與人的互動;單機的RPG游戲常以精彩的劇情取勝,而網絡多人在線RPG游戲則很難制作出豐富的劇情;單機游戲的玩家比較成熟,大多憑興趣玩游戲,很多網絡游戲的玩家在接觸網游之前都沒有玩游戲的經歷,他們只是把玩網絡游戲當作交友或者消磨時間的手段。應該在項目開發的過程中時刻提醒自己,我們要開發的是個網游而不是單機游戲。其實并不是只有我有這樣的想法,在和大宇的姚壯憲先生聊天時他也表達了同樣的觀點。《劍網》的開發人員大都沒有開發網游的經驗,甚至沒有玩網絡游戲的體驗,所以《劍網》中存在不少單機游戲的痕跡也就不奇怪了。
n
  游戲首先是一個商業產品,技術只是游戲的一個基礎,或者說只是更好地表現游戲的手段,而不是目的。但由于金山公司以程序員為主,西山居也不例外,實際上很多項目的關鍵性決策都是由崇尚技術并追求完美的程序員做出的,所以《劍網》中有不少華而不實,卻極其耗時的技術研究。比如《劍網》中的3D顯示模式的開發耗時巨大,但最終由于效率的原因,很少有用戶使用。我的建議是開發一個大型項目時,最好80%的技術都使用成熟的技術。比如《劍網》,應該使用《劍俠情緣2》的引擎,再花些時間研究客戶端的換裝系統和服務器端的技術,這樣《劍網》至少可以提前一年推出。
n
  網絡游戲中穩定的服務器端以及提供便捷的運營、維護、更新、信息統計工具是最重要的幾件事情,應該投入最核心的技術人員和充足的時間去研發和測試。但遺憾的是西山居一直沒有自己的服務器端的技術人員,而且對此也沒有給予充足的重視,最終需要公司其他部門的支持。而很多關鍵性服務器端的功能也只是在內測前幾周才完成,缺乏足夠的測試。

  說了這么多《劍網》中的不足,并不是說《劍網》的開發過程一無是處。西山居相對于很多國內的開發團隊和小組,更加負責,更加用心,更加細致,更加專業。這些不足說明了國內的游戲開發整體上還處于一個初級階段。國內的游戲開發團隊都需要少一些浮躁,多一些踏實。不論在管理方面,還是對游戲的認識,或是技術方面,我們都有很多地方需要學習、改進。

三、項目起源

  2000年的時候,圖形化網絡游戲《萬王之王》開始進入中國,金山公司也是候選的代理、運營商之一。當時文字Mud已經流行了很長一段時間,國外也有了《UO》之類的網絡游戲大作,但是《萬王之王》是第一部進入國內的圖形化商業化的網絡游戲。我也參與測試了這個游戲。即使在當時的技術水平下,我也覺得《萬王之王》制作得比較粗糙,最讓我不可理解的是,他的同步策略大部分都是客戶端的命令需要等待服務端的驗證返回,這樣的做法使得客戶端玩家的行為極為不流暢。這也是金山最終沒有運營這款游戲的原因之一。

  當時,由于盜版和制作水平的問題,國內的游戲市場非常萎靡。西山居好像金山的一根雞肋,雖然開發了不少經典的單機游戲,但由于盈利太少,和其他國內游戲公司一樣,一直處在奄奄一息的狀態。

  之后,《萬王之王》在大陸的運營取得了出乎意料的成功,也給公司的高層極大的震動,自主研發一款網絡游戲提上了日程。如果從那時起公司就投入足夠的人力、物力,潛心完成一款網絡游戲,那么也許現在金山會占有國內網絡游戲市場一半以上的份額。但遺憾的是由于決策的失誤,推動力的不足,以及精力過多的分散在其他游戲的研發上,使得《劍網》的推出至少延后了2年,在競爭如此激烈的網絡游戲市場,對一個產品來說,這么長時間的延遲幾乎是致命的。

  我一直覺得中國現在的游戲開發人員趕上了一個好時候,現在有這么多的人在關注游戲行業,這在以往是無法想象的。不過游戲行業這么火爆并不是因為我們的研發實力有了多大的提高,也不是因為我們開發出了多少既叫好、又叫座的游戲大作,而是我們碰上了一種好的盈利模式,僅此而已。網絡游戲杜絕了盜版,又給千萬個網絡終端前孤獨、無聊的人們一種有趣的交流、溝通手段,所以它的成功是一種必然。

四、設計目標

       開發初期,設定了一些我們開發的原則和最終的目標,有些是對的,有些是錯的。每個決定當時都引起了西山居內部激烈的討論:

1.       是采用即時戰斗模式還是回合制戰斗模式。

 

我們最終采用了即時戰斗模式,相對于回合制模式,這樣的開發難度稍大些。不過我覺得這不是一個錯誤的決定。

2.       是否采用超大、無縫鏈接的地圖。

  開發人員都有一個美好的愿望,希望開發出超大的無縫鏈接的游戲世界,讓成千上萬的用戶可以方便的溝通,交流。很明顯這是一個聽起來很好,但做起來很難,而且沒有太大實用性的想法。可惜的是我們決定了要這樣做,更可惜的是最終我們花了不少時間也沒能實現這個目標。這是個錯誤的決定。

3. 我們的核心技術人員都是《暗黑破壞神》的忠實玩家,也非常推崇它所使用的技術,模仿它做一個類似的客戶端幾乎獲得了所有人的支持。最終我們完成了一個類似于它的客戶端,但顯示效率差了很多,而且花掉了我們太多的人力和精力。這是一個錯誤的決定。

4. 我們曾經有過一個聽起來不錯的想法,在開發《劍網》的同時,利用現成的資源和技術再開發一個單機游戲。最終這個目標沒有實現,我們低估了開發一個單機游戲所要投入的精力。這是一個非常錯誤的決定。

五、 過程模型

  《劍網》采用的是快速原型的軟件工程模型。這種方式比較適合游戲行業的特點,以及我們項目具體的特點。

  一般來說,我們在第一個里程碑通常只會投入核心技術人員完成一個技術原型,以解決規劃中的游戲所需功能中可能的技術難點。這一點非常重要。很多游戲開發到中后期才會發現還有不少技術門檻需要跨越,以至項目最終延期。同時我們在第一個里程碑會細化策劃的設計,在第一個里程碑結束的時候形成一個比較系統的《設計文檔》,這個文檔越細致、越系統、越接近游戲最終的設計方案,游戲開發的過程就越順利。經過這么多年游戲的研發,我深刻地認識到,策劃是一個游戲的靈魂,是一個游戲是否能夠成功的關鍵。好的策劃需要深厚的功底,需要出色的溝通和表達能力,需要很強的邏輯推理能力,需要優美的文字功底,需要創新精神同時更需要熟悉游戲業務,了解終端用戶的心理。好的策劃是項目經理、產品經理、制作人的合適人選。不過遺憾的是策劃是中國游戲開發團隊最薄弱的一環。我接觸過的大部分策或者眼高手低、不切實際,或者難以溝通,或者沒有從開發商業產品的角度出發設計游戲。希望我這樣說沒有傷害到廣大策劃朋友的工作熱情,其實我提到的這些缺點,每個游戲開發團隊中的每個崗位上都會出現,只是游戲策劃工作的超乎尋常的重要性,所以才會特別拿出來討論。

  第一個里程碑中還會確定核心游戲資源的數據格式,并且完成大部分游戲編輯工具。一般情況下這些工具包括:地圖編輯工具、圖素編輯工具、模型(圖片)編輯工具、特效編輯工具、腳本編輯功能等。《劍網》的第一個里程碑完成的非常不順利,實際上很多應該在第一個里程碑完成的功能直到項目進展到最后階段才真正完成。我們只在第一個里程碑中完成了客戶端顯示和換裝系統的技術研究。而非常重要的服務器端的技術研究只是泛泛而過,沒有形成一個實用的、具評估價值的技術演示,這是《劍網》整個研發過程中最失敗的一點。同時由于客戶端過于復雜,地圖編輯工具的研發也延遲到了項目接近完成時才最終完成。

  如果能夠順利完成第一個里程碑,我們會在第二個里程碑中擴展已有的功能,添加核心游戲邏輯,形成一個游戲的原型。第二個里程碑完成后,已經可以看到游戲的雛形。這時候如果發現游戲的可玩性不夠,策劃還可以做比較大的調整。這個里程碑中美工需要開始利用已完成的編輯工具,來編輯游戲資源。雖然延遲了不少時間,但《劍網》第二個里程碑基本完成。不過遺憾的是,我們仍然沒有把服務器端技術原型的研發當作重點,底層網絡模型、服務器架構、同步策略都在項目的最終階段成為項目的攔路虎,以致公司需要抽調其他部門的核心骨干,集體攻關。

  后兩個里程碑,主要是游戲的內容制作階段和測試階段,也就是在第一、第二的原型的基礎上根據策劃的設計,不斷地完善游戲的功能,不斷地產品化。這兩個階段也非常重要,大部分游戲功能、可玩性以及游戲的細節都是在這期間完成的。由于技術上已經不存在障礙,所以一般情況下,即使這個階段出現延遲,也不會對整個項目產生太大的影響。

  從軟件工程的角度看,《劍網》做的比較好的地方是非常注重測試環節,測試介入到了項目開發、運營的全過程。這在西山居以往是不曾有的,也是我極力推動的一件事情。在我剛剛担任西山居技術總監時,整個部門沒有一位全職測試人員,而《劍網》結束時,我們的測試人員和程序、策劃人員的比例基本上達到了1:2,測試人員在《劍網》的后期開發過程中發揮了至關重要的作用,尤其是當《劍網》內測初期,公司缺少專業的運營人員,測試人員就承担了大部分的運維工作,保證了《劍網》內測的順利進行。

綜合起來,特別需要注意的是:
 要在第一個階段,也就是技術原型階段完成真正重要的技術的研究和驗證,確定項目的可行性,降低項目的風險。

 第一個階段中,策劃提供的《設計文檔》體現的是對美工和程序的具體需求。《設計文檔》應當盡量要做到系統化、清晰。

 游戲是一個數據驅動的產品,開發階段需要生成大量的游戲數據。自主研發的游戲編輯工具非常重要,它的易用性會直接影響美工、策劃的工作效率。

六、 技術要點

  金山公司的創始人求伯君先生是個優秀的程序員,公司的核心骨干也大都是程序員出身。因此,崇尚技術,追求完美的程序員文化深深地影響著每一位金山員工。在西山居中,程序員雖然在人數上只占到了很小的比例,但作為金山公司的一個事業部,其思考問題的方式和文化氛圍和金山公司一脈相承,都是以程序員為主導的。這種以程序員為主導的開發方式在西山居延續至今,有利有弊。從目前的實際情況看,利大于弊;而從長遠看,弊大于利。游戲行業技術門檻較高,技術更迭較快,許多技術甚至直接推動了個人計算機硬件的更新換代。無可否認,技術是游戲實現的基礎。同時目前國內缺乏專業的策劃人員,所以以程序員作為游戲開發的主導,起碼在目前的實際情況下,是一個正確的選擇。但是畢竟最終決定游戲優劣的是游戲的可玩性。從長遠來看,培養和尋找合適的策劃人員,由他們担任制作人,將游戲開發從技術主導轉變為游戲性主導,是我們努力的方向。

  相對與單機游戲,網絡游戲的技術難點更多。一般情況下,我們會將網絡游戲中使用的技術劃分成如下幾個方面:

1. 通用底層功能
包括游戲中各個模塊都會使用的一些基礎模塊,大致上有:
 文件管理模塊
 日志功能模塊
 內建的調試機制
 內存管理機制
 性能統計分析模塊
 數學、物理模塊

2. 客戶端的顯示
客戶端的表現力和效率是游戲能否成功的一個重要的決定因素,以一個3D游戲為例,大致上的功能有:
 貼圖管理模塊
 插件模塊
 模型、動畫管理模塊
 場景管理模塊

3. 游戲邏輯
游戲邏輯指策劃提出的與游戲性相關的各種功能模塊,對于網絡游戲,大致上有:
 戰斗系統
 角色人工智能(AI)
 組隊功能
 交易系統
 人際關系系統
 幫會系統等等

4. 服務器邏輯
  網絡游戲中多臺不同職能的服務器支撐起一個完整的游戲世界,他們之間的通訊和邏輯決定了網絡游戲的穩定性和負載的上限,網絡游戲中不同職能的服務器大致上有:
 帳號服務器
 游戲邏輯服務器:完成游戲中角色AI計算,戰斗中的傷害計算,經驗分配等游戲邏輯相關計算的服務器
 游戲邏輯集群總控服務器:協調各個游戲邏輯服務器的一個總控服務器,類似于一個局域網中的網關。
 角色數據庫服務器

5. 內部開發工具的研發
  游戲開發過程中,美術、策劃會使用大量的我們內部開發的工具來制作、轉換、并生成最終游戲數據,大致上有:
 場景編輯工具
 圖素編輯工具
 模型編輯工具
 貼圖編輯工具
 特效編輯工具
 界面編輯工具
 腳本編輯工具

具體到《劍網》,開發過程中的技術難點主要集中在兩大方面:

客戶端的顯示和換裝系統

  《劍網》的客戶端需要支持兩種顯示模式:純二維的顯示模式以及類似于《暗黑破壞神》的半三維的顯示模式。這給劍網的研發帶來來很大的困難。首先是資源格式的問題,同樣的資源格式可能適合二維顯示,但不適合三維顯示。事實上我們低估了這塊工作的技術難度。《劍網》后期,資源格式已經定型,大部分游戲資源已經生成,這時我們才發現提高三維顯示模式效率唯一可行的方式是重新規劃游戲資源的格式和組織方式,但這對于已經進入一個研發后期的項目來說幾乎是不可能的。另外,由于《劍網》涉及到復雜的換裝系統和數量眾多的角色類型,所以我們要設計一種好的換裝系統,既能達到策劃的需求,又能盡可能降低游戲客戶端資源的容量。這也是一個難點。

服務器端的集群結構、網絡底層通訊模型、游戲邏輯的同步策略

  服務器的穩定性和流暢性是網絡游戲玩家最關心的幾個問題之一。大部分網絡游戲的服務器結構都可劃分到如下兩類,單游戲服務器結構和游戲服務器群組結構。采用單游戲服務器結構的比如《奇跡》,一個游戲世界由一臺服務器支撐。這種結構比較簡單,每個游戲世界承載的玩家數量比較少,但正是由于簡單,所以比較容易達到穩定、流暢的要求。《劍網》采用了游戲服務器群組結構,由多臺游戲邏輯服務器協同運作,構成一個完整的游戲世界。比如我們的一個完整的游戲世界由80個場景構成,單一服務器無法將這80個場景一起載入,我們就把這些場景分別放在8臺游戲服務器上,每臺大致有10個場景,這8臺服務器協同工作,構成一個完整的游戲世界。這種結構設計復雜,承載的用戶數可動態調整,要達到穩定、流暢的設計目標,需要付出更大的努力。

  同時,選擇一個高效的網絡底層通訊模型也是我們的一個主要工作。不同的網絡通訊模型適合不同的應用,網絡游戲對承載的用戶數量要求比較高,針對這種具體的需求,我們在Windows平臺下采用了IO完成端口的模型;在Linux平臺下,采用了實時信號量的網絡通訊模型。(由于《劍網》大部分的開發人員都不熟悉Linux下的編程方式,所以我們開發的大部分時間都在Windows平臺下進行的,直到大部分功能都已完成后才由專人移植到Linux平臺下,所以我們有兩套網絡底層庫。最終《劍網》的服務器采用的是Linux。)

這里我想重點談談同步策略。同步在網絡游戲中是非常重要的,它保證了每個玩家在屏幕上看到的東西大體是一樣的。解決同步問題的最簡單的方法就是把每個玩家的動作都向其他玩家廣播一遍,但是這樣做會占用比較多的帶寬,所以我門要考慮一種比較高效的同步策略,其中涉及如下幾個問題:

 同步的范圍,即一條網絡消息要向哪些客戶(玩家)傳輸
 同步的內容,即傳輸哪些內容
 同步的頻率,即多長時間同步一次
 如何解決網絡延遲帶來的問題
 如果優化,減少帶寬的消耗
 如何防止作弊

由于篇幅有限,只具體談談同步的內容:

1. 同步內容的分類
 命令同步,即時發送。命令同步指游戲中的一些瞬間行為,比如玩家和角色的行走、玩家和角色間的攻擊,都可視為游戲命令。命令可能是客戶端發起,也可能是服務端發起。
 狀態同步,按照一定頻率、可以區分細節度發送,只由服務端發起。
由于網絡延遲,游戲中同步的內容如果只有命令同步,很容易在游戲進行一段時間后,服務器端和客戶端的狀態偏差比較大,所以需要間隔一段時間,同步一些關鍵的狀態,校正客戶端和服務器端的差別。

2. 邏輯對象屬性的細分:游戲由不同的邏輯對象構成,比如玩家對象、角色對象。每個邏輯對象中會包含大量的屬性,我們需要在同步時區別對待這些屬性。
 不需同步的屬性,服務端和客戶端都可根據本地的配置文件載入,比如角色的名字,角色的速度等。
 需要在對象創建時同步一次,以后不會改變的。比如角色的類別。
 需要頻繁的同步的屬性,比如角色的生命。

3. 邏輯對象行為的同步策略
 客戶端自己決定,不需要同步給其他客戶,屬于客戶端專有對象的行為,比如用來播放特效的特效對象,以及用來增加客戶端表現力的各種小動物,這些對象不會影響游戲的進行,所以不需同步。
 客戶端發起命令,在發給服務器的同時,為了增加本客戶端的流暢度,自己預測命令執行的結果。服務器端將使用同樣的算法執行命令,同時將命令轉發給相關的其他客戶端。其他客戶端在收到命令后,在本地執行命令。這種策略的缺點是發起命令的客戶和其他客戶在執行命令上有一個Ping值的延遲。比如玩家的行走命令。
 客戶端發起命令,發給服務器,但本地不執行,等待服務器處理或者確認,返回后再執行,這樣所有的客戶端的行為基本一致,也不可能出現作弊。比如玩家傷害計算,玩家升級的判斷。
 服務端發起的行為,發送給相關的客戶,比如角色的行走命令,角色的狀態同步。

七、 游戲設計

  網絡游戲和單機游戲的可玩性有很大的不同,用戶群也有不小的區別,這一點之前已經提到過。網絡游戲中應該提供足夠的、方便的玩家和玩家間的交互方式,玩家在游戲中建立的人際關系越多、越牢固,對這個游戲的粘著度就越高。一個普通的網絡游戲玩家,每天花在游戲中的時間大約是2個小時左右,所以我們需要設計足夠多的游戲方式,讓玩家減少由于不斷的重復而造成的枯燥感。經歷了這幾年網絡游戲的發展,玩家已經開始厭倦單調枯燥的打怪升級的游戲方式,游戲設計者都開始考慮怎樣變革才是正確的道路。

  《劍網》的設計者希望創造一個豐富的武俠世界。10個門派、5行相克、完全隨機出現的、幾乎不可能重復的裝備系統,這些一直是《劍網》重要的特征和賣點。但是過于復雜的

系統使得劍網各個門派間平衡性的調整成了一個艱巨的、幾乎不可能完成的任務。同時《劍網》提供的游戲方式過于單薄,玩家在經過一段時間后,很快就會覺得游戲中沒有什么可玩的,這也造成了不少玩家的流失。

這里我想再談一個核心的問題,玩家為什么會選擇一款網絡游戲,并且保持一定的粘著度,原因大致如下:

 可以獲得一定的利益,或者他感到在游戲中利益是保值或者增值的。這類玩家的典型代表是一些職業玩家;
 可重復的游戲樂趣,這一點對于網絡游戲比較難做到。由于網絡游戲的特點,為了防止作弊和減少網絡延遲的影響,很難做到操作的技巧性。所以玩家在不斷的重復同樣的操作行為的過程中很容易感到枯燥;
 可以獲得與人交互的樂趣,這一點正是網絡游戲的先天優勢,比較容易做到,不過我們需要考慮的是如何做得更有特點

八、 結語

沒有想到寫了這么多,需要指出的是雖然我現在已經離開了金山公司,但我依然認為西山居是國內比較出色的制作團隊。如果有好的決策,把握好發展方向,會有更加美好的未來。這類總結性的文章注定了就是以暴露問題和總結經驗為重點。如果有不妥之處,請朋友們多多批評指教。也希望這篇文章可以給正在開發網絡游戲的朋友一些借鑒,哪怕只有一點,我也心滿意足了。 

趙青 2011-02-19 08:12:16

[新一篇] 游戲制作人的“秘笈寶典”

[舊一篇] 《大唐豪俠》架構開發紀實
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表