22功能取舍 游戲開發中,程序員總會遇到這樣的問題:是不是硬著寫?
最早開發游戲,都是由程序員進行,那時候游戲相對簡單,一個人寫代碼就可以了,可以說早年的游戲都是硬著寫的。
比如怎么讀取資源,怎樣控制角色,怎樣對話,都是程序員自己寫的。
一個人開發的游戲都是如此。這樣從程序寫代碼,實現游戲玩法角度是最快的。
缺點是游戲哪怕有輕微的調整,有一絲的修改,都要程序員來協助。小的游戲還好,項目規模一大,往往就會失控,而這時候,即使別的程序員想去幫忙,也無從下手。
相對規模的游戲,務必要做到邏輯,功能,資源互相分開。
硬寫的游戲代碼。策劃想改一句對白,改一個人物站立的位置,都需要程序來協助。對于一個游戲來說,這種調整和優化是時時刻刻都要做的。
極端的情況這個單干的程序生病罷工,情緒不佳,乃至消失,連能接著他干活的人都沒有,很多時候這個項目就會廢掉。
硬寫會產生很多弊端,行業內開發游戲還是免不了這樣的事情。
主要原因是兩個,第一是工期:這個做任何軟件工程或者商務工程的人都明白,對外宣傳已經開啟了,而產品必須按時推出跟上市場的節奏。
最出名的案例就是雅利達的《et外星人》,為了趕上電影的熱度,這款游戲的開發時間只有幾周,最終這個暢銷后大規模退貨的產品摧毀了雅利達和那一代游戲產業,上百萬個游戲卡被填埋在新墨西哥的沙漠中。
還有國內著名的兩款游戲《血獅》和《江湖》。
《血獅》在連de摸都沒有的情況下開始了非常宣傳,沒有經驗的開發人員低估了開發的難度(主要是cc這種即時戰略的ai),而上市的時間不能一拖再拖,有一批光盤甚至沒有印刷就被經銷商拿走,迫不得已舉行的式,玩家甚至擠破了聯邦軟件的玻璃門。硬寫趕工的游戲甚至沒有可能出一個較為完善的版本。
另一個前一年上演的例子,深圳金智塔的《江湖》(這個在第三幕中有較多的介紹,此處簡述),主要原因是開發過半時,制作人離職,公司現金流斷了,幾乎倒閉,最后在極短的時間內完成游戲,撲向市場帶來了收入。據當時看到第一版客戶端光盤的內容,第一張游戲只有一個可執行文字和一個運行庫,其他都是各種美術音樂文件,第二張光盤則是告知玩家把所有的文件拷貝到安裝布魯下,這就是程序強行寫就的游戲,bug連篇。
另外一種硬寫的情況,貫穿行業始終,那就是為了合成版本來應付。
應付的對象是老板,投資商,客戶等等。
游戲的開發是有階段的,好比拍電影的時候,并不是按照電影的播出順序去拍鏡頭,而是分成各個小組,分頭去拍攝。如果隨時看一個段落是可以,看類似于最終的成片效果,那是絕不可能的。
對于游戲也是如此,不可能隨時看到一個可運行的階段,而必須要看的時候,就要填寫很多臨時資料,很多臨時代碼,暫時對付看一下。等看完之后,還要拆掉這些臨時的東西,在有些大公司,差不多四分之一的時間都要花費在這里。
吳導說硬寫的意思是:如果想在二十號完成這個能給人看的版本,勢必要寫一些臨時性的代碼,而這些代碼注定會浪費掉!
這時候就是需要制作人做抉擇的時候了,究竟哪一部分可以在未來犧牲掉,哪一部分必須要寫的靈活,方便以后制作。
如果把游戲制作當做一段長長的流程,那么每時每刻做的就是決斷。
曾啟分析,這是一款以劇情推進的回合制戰斗游戲,要以劇情為主的,電視劇假設有47集,那么應對電視劇做的營銷,勢必考慮做47個章節的關卡,假設每個掛機點有2030個掛機點,總共要做的掛機點要超過1000個,這些掛機點根據策劃初步設計,需要對話,動作,或者切換到戰斗,都要手動進行編輯,這個將是未來很大的工作量,所以這個勢必不能硬寫。
曾啟要求程序關于掛機點和關卡的制作務必模塊化,這個意思是。策劃可以用習慣的excel根據格式來編寫關卡,對話(幾十集電視劇對話的文本要按照序列使用),劇情(劇情包括調用指定的npc,走位,動作,如說完轉身還是原地不動等等),這個工作,策劃需要根據畫面,視覺效果來反復調整,所以一定要能方便的工作。
(著名的游戲制作書籍《游戲編程精粹》中特別強調一點,編程的歸編程,設計的歸設計,程序把功能設計的便于策劃工作即可,千萬不要自己做微調)
既然確定了劇情表現要模塊化制作,那么勢必要決定對另一處模塊做刪減。曾啟的決定是戰斗,理由是,我們的演示版本是給影視出品方看的,他們看重的是什么,是劇情的表現而不是戰斗!
曾啟告訴吳導和程序部門,戰斗可以套用簡單的表現,只要能完成多人對多人(5v5)的回合制戰斗,你來我往的打一架就可以,要求僅僅是展示,可以硬寫。這個硬寫表示:任何一次戰斗,玩家和四個助手的生命都是500,攻擊力都是100;任何一次戰斗,五個對手的生命是150、150、200、200、200,攻擊力為80。攻擊力就是傷害值,然后按照排列順序互相格斗,玩家的角色每次打敵人100點血,敵人打玩家80點血,玩家打敵人23回合打死,這種差距導致玩家一定能獲勝。
既然玩家肯定獲勝,那么就能順利的把關卡推下去。
計算工作量,對于一個有足夠經驗和模塊的程序員,只需要二天就能寫完這場戰斗,這是寫死的,無論調整敵人的生命還是我方技能的效果,都需要程序一行行代碼的修改。
如果真正完成一場回合制戰斗(指的是類似于仙劍1代那種回合制),即允許策劃配置敵我,調用戰斗公式,使用技能,達到各種效果的話,至少是一個月(如果是網絡配合組隊式回合制,則至少兩個月)。面對二十天后必須拿出來的版本,只能采用這場臨時的戰斗玩法才能做到。
臨時寫的戰斗代碼,以后會怎么樣呢?肯定的說,實際制作戰斗的時候勢必全部廢掉,這也是游戲研發過程常常強調的取舍,從來沒有充分的時間,充足的資源和無限的人力,所有的游戲制作都是在有限的時間,有限的人力和技術條件下完成的。好比這個影視劇的項目,由于前面已經浪費了近半年,那么要么做出來,要么放棄,魏總選擇的是前者,曾啟也選擇的是前者,時間越緊張,就越要懂得取舍。
所以當曾啟和程序們討論完1月20日的版本計劃后,就召集老金和美術,自己手下的策劃小彬和文案小琳,制定后面的工作計劃。
一個游戲項目研發前期,程序和策劃是分開工作的,程序去搭建整個游戲的框架,策劃去制定游戲長遠的規則,美術則是去制作早期的設定,還有替程序來制作測試的樣品。這包括,根據電視劇提供的定妝照來做三個3d的q版人物,狄仁杰和武則天和李元芳。根據一些電視劇的劇照,從1993年開始的劉威、林芳兵版《唐明皇》,劉曉慶、陳寶國版的《武則天》,和陳紅趙文瑄,周迅版《大明宮詞》以及聶遠、沈傲君、唐國強、秦嵐的《大唐情史》,直到2003年今年賈乃亮,馬蘇的《大唐歌飛》來做場景圖片。這一串dvd碟片看的曾啟和相關的檔案,看得曾啟頭大。總結起來,自己似乎可以寫一部《從1993開始》,講述角色參加拍攝這些唐代電視劇的故事,說不定還可以和唐國強先生拍一些廣告呢,開開挖掘機呢?
總之,預計程序會在兩周后,也就是1月14日提交第一個版本,然后大家坐在一起,把美術整合進去,再進行一番包裝就可以做出版本。
當然,這是理想的情況。
游戲開發從來沒有出現過理想的情況,古今中外,從來沒有!