遊戲開發入門:專案管理管什麼?

project-management我想,在進入 Scrum 這個新奇有趣又好玩的新主題之前,必須要先來一兩篇楔子,介紹關於遊戲開發層面的入門知識。首先,就來談談基礎的專案管理概念。

(圖片來源:http://www.areait.info/)

「專案管理」聽起來是一個很酷炫的 Buzz Word,如果用一句《神奇寶貝》裡的名言比喻,專案管理就像是個「可愛又迷人的反派角色」一樣,經常讓人對它又愛又恨。在之前的「經驗與管理的迷思」以及「Peopleware:腦力密集產業的人才管理之道」這兩篇文章裡,已經討論過「人」這項因素對於開發團隊的重要性。然而在一個企業、公司或團隊中,如果只注重人的因素仍然是不足夠的,因為即使是能力再強的領導者或管理者,也無法一天八小時盯住每一項工作的執行細節。如果說在管理學中常聽到的「領導統御」是著重於「人」的層面,則「流程管理」就是著重於「事」的層面。良好的管理制度,將能夠補足「人」所力有未逮之處。

專案管理,最初由時間管理 (Time Management) 的概念衍生而來,而時間管理的概念則存在於我們每一個人的生活當中;當你身為一個學生的時候,如何管理一天的生活?如何管理二個月的暑假生活?如何管理一整個學期的生活?如果只是放任著時間流去,最後或許會發現自己什麼事情也沒有完成,什麼東西也沒有留下。對於遊戲開發來說亦然如此,專案的功能清單與臭蟲列表上,總是存在著難以計數的項目等待進行;有多少事情需要完成?有多少人手可以用?六個月之內可以看到什麼樣的成果?專案管理,必須要能夠妥善地回答這些問題。

舉個實際的例子,假設你身為一位程式設計者,在夙夜匪懈、含辛茹苦地讀完 C++ 語言、視窗程式設計與 DirectX 繪圖 API 之後,終於能夠開始動手寫遊戲了!一開始,目標不要訂得太高,先從 2D 的小小遊戲開始好了。首先確立了遊戲的玩法與各項設計要素後,就可以準備開始寫程式了!但是在真正動手寫程式之前,總得先有個目標與方向,列出遊戲中各項必須具備的功能系統:

  • 繪圖系統
  • 音源系統
  • 特效系統
  • 角色系統
  • 操控系統

嗯,看起來很不錯,已經把一個小遊戲所需完成的基本系統全部條列出來了。然而,這些項目的定義,對於工作的執行者來說,太過於模糊而簡略;例如其中的「角色系統」究竟指的是角色的動作系統,還是角色的屬性系統?角色有沒有包含怪物的相關功能?為了釐清這些問題,我們必須進一步地將這些系統大項,分解成為比較詳細的功能小項:

  • 繪圖系統:
    • 2D 圖件功能
    • 背景圖件功能
  • 音源系統:
    • 音效播放功能
    • 音樂播放功能
  • 特效系統:
    • 圖片半透明效果
    • 淡入淡出效果
  • 角色系統:
    • 角色動畫功能
    • 怪物 AI 功能
  • 操控系統:
    • 鍵盤輸入功能
    • 滑鼠輸入功能

這種由上而下分解的階層架構 (Top-Down Hierarchy),讓我們能夠將原來不知如何下手的「遊戲系統」這個龐然巨物,一層層分解為可對付的任務。如果目前的清單仍然過於模糊不清,也可以繼續往下分解,直到階層架構能夠清楚傳達每項工作的意義為止。經過階層分解所得的這份清單,也就是所謂的 To Do List(待辦項目清單),理論上我們只要把上面所列出來的項目通通完成,第一個自己製作的遊戲就大功告成了!

然而,除了工作項目以外,另一項不能忽略的程序,就是估算每個工作項目所需的執行時間

  • 繪圖系統:
    • 2D 圖件功能:16 小時
    • 背景圖件功能:12 小時
  • 音源系統:
    • 音效播放功能:8 小時
    • 音樂播放功能:8 小時
  • 特效系統:
    • 圖片半透明效果:12 小時
    • 淡入淡出效果:16 小時
  • 角色系統:
    • 角色動畫功能:24 小時
    • 怪物 AI 功能:24 小時
  • 操控系統:
    • 鍵盤輸入功能:8 小時
    • 滑鼠輸入功能:8 小時

在遊戲專案的計畫中,有了系統功能的細節項目,以及每個工作項目的執行時間之後,接下來就能夠排定各個工作項目的執行順序。排定工作的優先順序,需要取決於每個項目的關鍵性、重要性以及項目與項目之間的相依關係;以這個例子來說,特效系統中的半透明功能與淡入淡出功能,都需要等待繪圖系統完成後,才有辦法開始動手進行。

經過優先順序排列之後的工作項目列表,如下所示:

  • 操控系統:
    • [1] 鍵盤輸入功能:8 小時
    • [2] 滑鼠輸入功能:8 小時
  • 繪圖系統:
    • [3] 背景圖件功能:12 小時
    • [4] 2D 圖件功能:16 小時
  • 角色系統:
    • [5] 角色動畫功能:24 小時
    • [6] 怪物 AI 功能:20 小時
  • 音源系統:
    • [7] 音效播放功能:8 小時
    • [8] 音樂播放功能:8 小時
  • 特效系統:
    • [9] 圖片半透明效果:12 小時
    • [10] 淡入淡出效果:16 小時

在此我會將操控系統列為製作遊戲的第一優先選擇,因為有了鍵盤與滑鼠的輸入功能,將會比較便於後續的開發與測試程序。接著要在畫面上顯示出東西,所以必須完成基本的背景圖件與 2D 圖件功能;有了圖件功能後,就能夠接著進行角色與怪物動畫的功能製作。完成以上主要的功能項目後,再繼續製作與其他系統比較沒有依存性的音效與音樂功能。為什麼把半透明和淡入淡出效果排在最後的順序?因為這兩項都不算是遊戲中的「必要」(Must-Have) 功能,而是「有也不賴」(Nice-to-Have) 的附加功能;雖然能夠使畫面更美觀,不過並不是非完成不可的功能。

以上,就是一個以程式設計者觀點出發的「遊戲專案時程」計畫程序。

在一個完整的開發團隊中,專案的時程安排進度管理狀況往往比上述的例子複雜許多。一般來說,專案管理者會將每位工作者都視為一項可分配使用的資源 (Resource),完成一項工作則需要 1 至多項不同的資源配合。而每個人與其他人之間,幾乎都會存在著某種程度的依存性 (Dependency)。例如,我所預計進行的這項工作,需要等待美術同仁的建模工作完成後才能夠開始;或者是程式的紙娃娃裝備功能,除了企畫的裝備部位設定資料以外,還需要先拿到美術的裝備模型與貼圖檔案,才有辦法進行實際測試。

工作項目與工作項目之間,存在依存關係,而工作者與工作者之間,同樣也存在著依存關係。程式設計者與程式設計者之間,需要彼此合作,因此難以避免地會有彼此間的依存關係存在,而對於企畫與美術設計者來說亦然如此。所以如果專案中的時程沒有安排妥當的話,將很有可能造成專案進度的延誤,或者是某些人做得要死,另外一些人卻閒置無事的糟糕情境。

正因為工作項目依存性的緣故,團隊中的專案時程,就像是一張錯綜複雜的蜘蛛網。專案管理者必須從中訂定出專案執行的關鍵要徑 (Critical Path),確定哪一些項目才是最為關鍵的部分。如果以 RPG 的術語來比喻,關鍵要徑就像是遊戲中的主線任務;不論你的支線任務解了成千上百,如果不完成主線任務,故事劇情就無法推展下去,也就自然無法打倒最終魔王,並且看到美好的結局動畫與遊戲成品。

如果你現在只是一位單純的美術設計者、企畫設計者或者程式設計者,沒有身負管理職務的責任,或是對管理職務沒有半點興趣的人,可能會想問:「專案管理又與我有什麼關係?」其實專案管理的重要性,就如同每個人自身的時間管理一樣,正確的時間管理,可以讓一個人活得充實而滿足,而正確的專案管理,則能夠讓專案健康地成熟長大。不是因為學會專案管理,就可以當主管,然後可以管理一堆下屬員工。專案管理的出發點,在於幫助我們解決問題、達成目標,然後得以順利地完成專案。

身為業界中的小小工作者,我們或許偶爾都會抱怨:「為什麼總有開不完的會議、做不完的報告加上寫不完的文件?為什麼除了『做遊戲』之外,還需要做這麼多繁雜又無趣的事情?」如果能夠從專案管理的觀點來思考,就會清楚瞭解良好的管理制度可以幫助我們更加順利地執行專案,讓專案能夠早日完成並且順利上市,接著大紅大紫,最後賣到翻掉。專案管理能夠幫助團隊,迅速且有效地檢視目前的各項執行狀況、提供統計數據,並且找出潛在的問題;反之,如果在進度執行之後的數個星期、甚至數個月之後,才發現專案中的天大問題,此時縱使管理者突然腦袋開竅、大徹大悟,可能也早已造成難以挽回的慘烈局面了。

如果與其他產業相比,遊戲產業與傳統製造業或高科技製造業所需使用的管理方法,可以說是大相逕庭。我們可以訂立出非常嚴謹的 SOP(標準作業程序),每個人的每一項步驟都按照標準程序操作;然而即使從頭到尾每一項步驟都執行無誤,生產出了一件合格的商品,也無法保證最終所產出的成果,是一件「好玩」的遊戲成品。再者,即使這次花費了 18 個月、500 萬美金與 30 人團隊,成功了做出一套銷量百萬的遊戲大作,同樣無法保證能夠在相同的條件下,達成一樣的成功結果。

為什麼?

monopoly-game因為,「Creating fun can not be planned」;因為遊戲產業與其他產業不同之處,就在於「創造樂趣的時程難以管理」;也正是因為「樂趣無法規劃」的因素,所以遊戲產業不能夠與軟體產業劃上等號。這也是為什麼多數的遊戲專案,幾乎都會遭遇某種程度的進度落後與時程延遲的主要原因。所以如果身處上位的老闆與管理者,以為能夠複製別人成功的模式、複製自己過去成功的方法,或者是以製造業的思維來治理公司或者管理遊戲專案,都很有可能使得團隊陷入危險的處境中,專案的完成之日自然也遙遙無期。

(圖片來源:http://www.pigs-in-lipstick.co.uk/)

然而,做為遊戲的開發者以及員工的身份,我們無法對著老闆與發行商說:「因為樂趣無法規劃,所以專案進度勢必要向後延遲 N 個月!」在遊戲業中,只有這麼一間 id Software,能夠在發行商詢問遊戲何時完成時說出「It’s done when it’s done.」這樣豪邁爽快的話。也只有受萬人景仰膜拜的 Blizzard Entertainment(現已合併成為 Activision Blizzard),可以在公布遊戲影片的十數個月之後才正式釋出,同樣能夠賣破數百萬套以上的遊戲。所以,做為大大業界裡的小小公司、小小主管或者小小開發者,我們必須努力地找出時間預算品質三者之間的平衡點以及折損點。

有的老闆或者主管,喜歡三不五時在辦公室裡走來晃去地「巡視」員工的工作情形,我想這應該是大部分人都不願意使用的「專案管理」形式。以專案管理之名,不論是要以紙本的方式或者以電子檔案的方式指派任務,不論是要由工作者主動回報進度或者被動地由主管詢問進度,管理者都需要時常反省現行制度的真正用意為何,才不會使原來是一番美意的良好制度走了調,反而成為徒具形式的惱人雜務。如果各種文件、方法與手段,不能夠有效地幫助我們達成目標,產生出更好的成果,就毫無意義可言了。

專案管理到底在管些什麼,你是否已經有了答案? :P

在遊戲專案的開發過程中,除了排定工作項目之外,還有許許多多需要進行的流程:要由誰來估算工作時程?要怎麼估計某個工作項目需要花費多少時間?怎麼估算比較準確?如何驗證進度與成果?如何考評工作績效?下篇文章裡,將繼續探討與工作時程相關的主題。

6 Replies to “遊戲開發入門:專案管理管什麼?”

  1. HI 半路你好

    不才認為專案管理知識體系中,不論是Scrum或是PMBOK 皆是協助執行專案的方法,兩種皆有各自的優點。倚天劍屠龍刀…

    可惜國內遊戲開發業界少有能徹底專精,去了解專案管理知識體系PDCA的基礎內涵,來做專案管理。說句難聽話專案管理知識體系,不是單單只有在排時程和畫甘特圖。

    同時這裡也驗證半路的說法,畢竟專案管理是管理方法的一部份。如果管理層沒有這個知識來推動或是建立PMO,下面容易啞巴吃黃蓮,同時東西南北搞不清專案令到底是啥…

    創造樂趣其實與專案管理是相輔相成,在專案管理與新產品開發知識領域也都是驗證這樣的事情。其實新產品開發(創造樂趣)與專案管理大家都是好朋友,只要CCB同意並可以接受專案計劃變更,專案就照新計畫前進,另一個重點就是考驗管理層與遊戲專案經理(製作人)的眼光與魄力。

    遊戲產業不同於軟體產業,每個DOMAIN都有各自的領域。總的來說不才認為遊戲專案需求是偏向高自由度,遊戲專案經理(製作人)的溝通能力,遠遠強過同規模的軟體專案水準。

    專案管理方法是手上的劍,貫通專案管理知識是心中的劍。如何做到人劍合一,這便是有趣的地方了。

    期待您後續的文章:)

  2. @owlet:
    你好,

    我很認同你的看法,的確不單單是排時程或者畫甘特圖就能稱做專案管理。從前國內遊戲業的開發模式多採用土法煉鋼的方法,不過我認為當遊戲公司成長到了某種規模以上之後,專案管理絕對是公司裡不可或缺的管理知識。但是要如何將專案管理的精髓真正帶入公司的制度與文化中,而非只是流於紙上作業或者空泛口號,我想多數的遊戲公司,都還有許多要向其他領域的產業學習的地方。

    其實我並沒有學習過 PMP 或者 PMO 等等專案管理的正統課程知識,這裡的文章僅是就我所知的內容提出一些個人心得與簡介。感謝你提供專業的意見,後續的文章還請多多指教。 :)

  3. “假設你身為一位程式設計者,在夙夜匪懈、含辛茹苦地讀完 C++ 語言、視窗程式設計與 DirectX 繪圖 API 之後,終於能夠開始動手寫遊戲了!”

    說的就是我阿XD~

    現在也正在製作
    以前都想說會寫程式就OK了
    但很多內容的東西都沒想過 . 計畫也是

    前幾天也因為亂增加核心目標而差點失敗(想到啥就做啥..)
    後來看了半路你的文章後就覺得好多了

    狀況也好多了 \= w =/

  4. @KONA:
    恭喜你熬過最辛苦的初學階段,現在手中掌握了各種工具,就開始盡情地做遊戲吧!

    (當然還是得邊做邊學習囉~ XD)

Leave a Reply