突破四大關卡,成為出色的網路遊戲開發程式設計師

確認查無此人發表於2014-03-26

第一關:具備踏上網路遊戲開發征程的必備條件

喜歡遊戲

對於自己非常喜歡的遊戲型別,要非常投入地去玩其中的某款遊戲,並且對一款網路遊戲要有非常深入的瞭解。人的精力有限,不可能精通各種型別的遊戲。但是有自己非常擅長的遊戲型別或某款遊戲並對其非常瞭解,這一點是非常重要的。

喜歡程式設計和實際工作

網路遊戲的開發永遠不會有終點。為了向使用者提供持續服務,開發人員需要不斷改進遊戲,修復bug,修正各類問題。如果不能享受這一過程,那就很難在專案中體會到樂趣。也就是說要出於興趣而開始從事遊戲開發。

第二關:持續提升自身的技能

對開發團隊來說,提升工程師的技能水平非常重要。網路遊戲的開發週期一般在半年至1年左右,大型的C/S MMO遊戲甚至會花費3年以上的時間。而且運營開始後,往往還需要3~5年的版本升級工作。在這個期間,如果更換對系統比較瞭解的工程師,會對遊戲更新造成影響,所以從專案角度還是希望儘量由相同的工程師繼續負責維護和升級工作。

現實中並沒有萬能的提升自身技能的做法,但這裡為大家介紹其中一種很有效的,從武術的“守、破、離”中學習的提升技能的方法。

這裡我們按照武術中常用的“守、破、離”將技能的提升劃分為3個階段:“守”是說初學者階段,“破”是說在標準做法基礎上進行改進,“離”是指自己進行創新。

“守”的階段——從模仿開始

首先是“守”的階段,初學者從模仿開始,先參考別人的遊戲,這是最快的學習途徑。

模仿現有的遊戲,不過要注意兩點:①要模仿經典作品而不是非主流的遊戲;②要使用標準的、爭議較少的程式庫。因為如果使用最新的技術,就會同時學習很多東西,這會讓學習的難度加大,影響效果。舉個例子,如果直接用英語教材學習數學肯定會比先用母語教材然後再用英語教材學習的難度大。

初學者在模仿和學習的過程中,如果有可以隨時請教的資深開發者的幫助,一般1~2個月就能入門。而且現在開發環境都很方便,大大縮短了學習週期。也有很多或開源或免費的資源,學習成本也不是很高。此外,在網路上關注那些資深開發者,就能夠通過網路隨時向他們提問,同時關注他們正在關注的知識和技術。有了這些,初學者就可以快速地學習相關技術。現在開發遊戲時缺乏美術素材的問題也有辦法可以解決了,在Google上搜尋“nes sprite”可以找到很多可以使用的美術素材。

另外,開發者還可以利用社交網路的服務,收集玩家的反饋意見,甚至可以進行商業化嘗試。這對開發者也是比較有利的一點。

“破”的階段——研討會、技術會議

初學者階段結束後進入“破”的階段,可以參加一些技術沙龍、會議,把聽到的講座轉化為自己的理解。同時也是很好的機會,可以瞭解自己和業界的資深技術人員之間的技術差距。

不過,網路遊戲的技術會議相對少一些,但最近以網頁遊戲為主的技術會議逐漸增多,大家可以在網路上搜尋相關資訊。

除了技術會議,在“破”的階段,開發者可以多參與不同技術領域的遊戲開發,參與到網路遊戲和Web業界的開發中去,比如可以開發網頁遊戲、手機遊戲,還可以參與教育遊戲的專案、加入硬體開發團隊、參與資料探勘的專案、參與和遊戲開發並不完全相關但是有關係(很可能會用到遊戲開發中)的其他專案。

和遊戲關係密切並且十分熱門的相關技術有Web、WebGL、NoSQL、P2P、Android等。在網路中搜尋並關注那些活躍的同行可以很快擴大自己的視野。然後可以在短時間內通過“模仿”的方式,快速嘗試自己專業之外的技術。

在“破”的階段提升技術,需要將一半的時間用在邊緣領域,和之前沒有共事過的人一起學習提高會取得更好的效果。

“離”的階段——工程師的最高階階段

進入到“離”的階段的話……小編也不知道……(汗!)不過希望有更多的優秀網路遊戲開發者能夠早日進入這樣的狀態,和大家一起分享“離”階段的寶貴經驗。

第三關:突破網路遊戲程式設計的技術難點

難點1:解決冗餘和非同步的問題

網路遊戲的程式設計變得極為複雜?這是遊戲處理的“冗餘”和“非同步”兩個問題造成的。

遊戲進行時的狀態儲存在某一側(服務端或客戶端)的計算機記憶體上,每當玩家做了某些操作,就會有一部分指定的資料被改變。網路遊戲中,“某一側的計算機”就是“實際在什麼地方”的問題。這在SNS等Web服務中完全不是問題,但卻是網路遊戲開發中最大的問題。

  • 遊戲處理的冗餘化→解決主資料和副本資料之間的關係的問題
  • 遊戲處理的非同步化→解決在處理資料變化時同步和非同步之間的關係的問題

難點2:主資料和副本資料——遊戲處理、遊戲的冗餘化

資料是一種“被頻繁使用”的東西。本來進行復制的目的就是將資料放置在離自己較近的地方來節約訪問時間。比如,會議資料只有一份,在沒有副本的情況下,參加會議的所有人員都不得不伸長脖子等著看那份資料,資訊共享的速度非常慢。因此,“複製”的好處就是,主資料和副本資料的距離想多大就能多大。

主資料指的是原本的資料,副本資料是複製之後派生出來的資料。如果是資料庫中的資料發生了改變,那麼首先會對主資料執行修改,然後將主資料傳送給副本。即使副本中的資料也發生了改變,但是之後傳送過來的主資料會將這些改變覆蓋掉,對副本所作的更改就會丟失。

難點3:快取記憶體的問題

通過複製資料提高訪問效能的典型例子就是“快取記憶體”。存在於CPU和主存之間的SRAM(Static RAM)是一種比主存的速度更快的高速儲存器,將主存中的資料複製到SRAM中可以提高處理效能。

在最初提出快取記憶體時,最原始的方式就是隻有在從記憶體中讀取資料時才使用快取記憶體,在寫入資料時並不快取,而是直接寫入主存中。這種方式稱為“直寫”(Write through)。在這種情況下,向主存寫入資料後,快取中對應的內容就不是最 新的了,無法再使用。因為幾乎所有的應用程式都會頻繁進行讀寫操作,所以除了一些極為特殊的應用,這麼做並沒有帶來顯著的效能提升。

隨後,一種稱為“回寫(Wtire back)”的快取方式被提了出來,資料被高速寫入快取後,在具備了某些條件的階段再將資料寫入主存。在“具備某些條件的階段”這一方面,各大晶片製造商實現了幾十種不同的方法,比如“採用先進先出的演算法寫入”、“採用LFU演算法(least frequently used,最不經常使用頁置換演算法)寫入”、“隨機寫入”、“順序寫入”這種簡單的方式,到使用更為複雜的演算法、使用某些統計資訊等,有各種各樣的方式。

這裡不對快取記憶體系統進行詳細討論。根據主資料/副本資料的思想、應用程式的用途以及處理器、記憶體等物理元件的效能/性質,快取系統的設計涉及很多方面,必須有各種技術上的解決方案。

網路遊戲和快取記憶體的比較參見表1,要求不同,網路遊戲的系統設計變化很大。

表1 快取記憶體和網路遊戲

快取記憶體 網路遊戲
處理器用途 遊戲內容
記憶體延遲和容量 資料包延遲和遊戲的資料量
處理器數量 玩家數

難點4:非同步方式、同步方式——遊戲處理的非同步化

比起快取記憶體,網路遊戲開發者應該對版本控制系統更有切身體會,每天都會用到。在這裡,為了對其功能進行比較,我們以功能相對簡單的2個產品為例進行說明,一個是開源的Subversion,另一個是微軟在Team Foundation之前發售的Visual Source Safe。

表2中總結了以上兩種原始碼控制工具與網路遊戲的對比。

表2 Subversion、Visual Source Safe和網路遊戲

專案 Subversion Visual Source Safe
用途 供分散的開發團隊使用 供聚集在一間屋子裡的小團隊使用
避免覆蓋和衝突的策略 複製+合併 檔案加鎖
在網路遊戲中的對應說法 非同步方式 同步方式

在判斷網路遊戲的架構時,必須決定“用哪裡的CPU處理資料”。為此,必須對有關快取記憶體的寫入方式的策略、原始碼控制工具的策略等關於“對於從主資料複製而來的副本資料,應如何處理對其進行的處理”有所瞭解。

第四關:把控網路遊戲開發的成本

瞭解遊戲開發的成本對於網路遊戲程式設計師來說是一個進階話題。開發專案有常識性的日程安排和成本,不過日程安排和成本是不能劃等號的,當然,同時參與專案的人越多,即使工期時間短,成本也會非常高。

程式開發中增加人數並不會讓工作效率呈線性增加,不過美術方面的工作可以通過增加人數來提高開發速度。因為美術工作可以按照“100個道具的影像”來量化規模,所以可以按照美工人數來分配。

開發成本和運營成本可以分別計算。在這裡我們分別介紹專案中程式部分和美術部分的開發成本。根據遊戲內容的不同,美術成本上下浮動很大,基本沒有什麼意義,這裡只作為參考。除錯的成本佔總成本的1~2成,雖然在實際開發中也是不可忽略的部分,但限於篇幅在此不再介紹。下面介紹的成本可以作為一般性的指標,在具體開發中,根據專案的不同,可能會有很大不同,需多加註意。

根據遊戲型別來劃分,開發成本大致如下。

  • 程式的開發成本
  • C/S MMO
    • PC原生遊戲:40~100人月
    • Flash:20~40人月
    • 手機遊戲:20~40人月
  • P2P MO
    • PC原生遊戲:15~50人月
    • Flash:3~30人月
    • 手機遊戲:2~20人月
    • Web社交遊戲:2~20人月
  • 美術成本
  • 大型MMORPG
    • 3D:20~400人月
    • 2D畫素:30~300人月
  • 簡單的MMOG
    • 3D:10~100人月
    • 2D畫素:20~100人月
  • P2P MO
    • 3D:10~200人月
    • 2D畫素:20~200人月
    • Web社交遊戲:1~10人月
  • 運營成本
  • C/S MMO:每月成本為初期專案每月開發成本的50%~100%
  • P2P MO:每月成本為初期專案每月開發成本的5%~20%
  • Web社交遊戲:每月成本為初期專案每月開發成本的100%~200%

如果是AAA遊戲,大概需要在上述成本上再加一位數。比如跨平臺遊戲、在多個國家或者全球,同時發售多語言版本。這種情況可以使用Unreal Engine級別的昂貴的中介軟體,開發人數可能會超過100人。這類遊戲的開發工期大致如下。

  • C/S MMO
    • PC原生遊戲:1~3年
    • Flash:半年~1年
    • 手機遊戲:3個月~1年
  • P2P MO
    • PC原生遊戲:半年~1年
    • Flash:3個月~1年
    • 手機遊戲:3個月~1年
    • Web社交遊戲:2~6個月

上文列舉了使用HTML技術的Web社交遊戲的開發成本作為參考。相對於初期開發成本,社交遊戲的運營成本一般會比較高。

如果開發團隊給出的估算和上述資料有較大出入,則需要調查具體的原因。如果遊戲中有“想要展現不同效果”的地方,可能也會得出應該積極投資的判斷。


本文摘編自《網路遊戲核心技術與實戰》

相關文章