數學演算法(轉)

subid發表於2007-08-16
數學演算法(轉)[@more@]我的遊戲夢

作者:指顧江山

那是一個充滿幻想的夢境,夢雖然很長,不變的是夢的結局——醒來。
———— 作者題記 指顧江山

很好的天氣。
當我從考場步出來的時候,似乎什麼都沒有想,又似乎什麼都在腦子裡,除
了GRE的成績。幾個月來煉獄般的生活,導師、工作、考試的巨大壓力,似乎瞬間
消散,又確確實實留下了一些東西在身體裡,使得我可以昂起頭,面對周圍的一
切。有人說不考GRE,人生就會有缺憾,
可能真的有道理吧。

快要步出清華大門的時候,我的思路逐漸清晰了起來。出國,至少兩年以後
吧。我有著業餘高手級的文學,詩詞,歷史功底,專業的計算機程式設計水平,半專
業的人工智慧知識和數學功底,愛玩,愛幻想,喜歡投入,總在構思著故事和遊
戲,有時我甚至覺得自己是個天生的遊戲工作者。我要留出畢業後的一年半時間,
痛痛快快地去試試自己的夢想,不管結局如何。不然,也許我的一生將會有個永
久的遺憾。

回到實驗室,我撥了鐘的電話,他是前導公司的遊戲策劃。

“嘟。嘟。。。”,佔線,鍾大概又在玩MUD了。沒辦法,晚上去他家找吧。

見到鍾已經是一週多以後,他總在公司熬夜,我找了他三次,並且留下了字
條,才終於在週六逮住了他。我說我對遊戲設計有一些想法,並和他稍微聊了聊。
鍾對我講的方面做的不多,他說會找赤壁的主程式設計師劉和我討論一下。同時也提
醒我,遊戲設計是很麻煩的。

“為了一個箭樓的火力強度設定,我們就花了很大精力” ,鍾說。

“哦”,我心裡想,用上運籌學知識,這個問題不應該那麼困難。

我問了前導的地址,這一次,我沒有對鍾說我想加盟前導。

前導總部坐落在一箇舊樓的第四層,我費了很大勁才找到。鍾幫我找來了劉,
劉向我介紹赤壁編寫的一些情況。

“那麼,士兵們尋路的演算法是什麼呢?”我問。

“我們自己設計的演算法,效果還不錯。”

“有一種積體電路佈線的演算法,好象可以用在這裡。”

“我把謝找來吧,他是新來的,現在在做這方面的工作。”

謝是廣西一所大學計算機系畢業的,木訥寡言,他說現在他使用的是A*演算法,
是世界上最先進的演算法,保證可以找到最短路徑。

“A*演算法?”
“就是在每一點估計到終點的距離,沿著最小——”
“我明白了”,我怎麼給忘了,是A*演算法,也叫最佳搜尋演算法。我不由對謝
另眼相看,看來前導確實招到了高手。

“現在尋徑演算法效率如何?”

“設定棧為200的話,同時跑400個兵沒問題,即使考慮到其他程式耗費的時
間,同時跑一二百個士兵也可以。要把棧設成400就不行了。”謝說。果不出我所
料,我決定把自己的想法和盤托出。

“我覺得世界上的遊戲,包括C&C,魔獸等等,在部隊人工智慧演算法上都設計
的不好,部隊單位一多,速度就上不去,並且存在堵死的可能。但是,在解決這
個問題上,前導的《赤壁》有著得天獨厚的條件。那就是將領的設定,但是將領
的作用在赤壁中發揮的還不夠充分。”“從人工智慧引擎來說,可以有兩個主要
改進方向,如果這兩個方向實現了的話,前導的即時戰略人工智慧引擎將是世界
最先進的,遠遠超過國外遊戲的水平。”“一個是給士兵、將領、統帥以不同的
智慧模型,士兵圍繞著將領,只需要聽從將領命令,並判斷附近十幾乘十幾區域
內的情況就可以了,這樣,計算士兵行為的複雜度是幾十倍的降低,將領則判斷
整支部隊的行進路線,可以採用A*演算法對整個棋盤進行判斷,將領要始終注意維
持隊形,避免士兵掉隊。士兵只要不掉隊,就不會不知所措。這樣,一支混編的
部隊行軍速度將由最慢的作戰單位決定,這也符合常理。統帥實際上只需要計算
敵方統帥的策略,不必擔心速度,因此可以編的更復雜,統帥指揮將軍,不直接
指揮士兵,這樣統帥也可以完成更復雜的任務。”“出現意外的,本單位無法解
決的情況則向上級彙報,士兵向將軍報告,將軍向統帥報告,形成一個類似訊息
處理機制這樣的結構,上級再決定如何統籌解決,如哪支部隊讓路,遭遇敵人怎
麼辦等等,這樣,可以避免出現堵死的情況和邊捱打,邊傻追一個敵人的情況。”

“第二個是把判斷改為計算,將領的各項屬性透過一些方程式算出他的策略,
不同的將領應有各自的優缺點,都有最適合的場合,最擅長的戰鬥。如張飛勇猛
而欠謹慎,因此遇敵也喜歡猛打猛衝,所以善攻不善守,趙雲比較謹慎,防守就
比較擅長,衝鋒陷陣就不如張飛的威力。如果找到根據將領的各項屬性來計算策
略的方法,各個將領的性格因素能在遊戲中表現出來,那麼這個遊戲就具有了很
強的RPG性質。”

“主帥也分無能型,謹慎型,勇猛型等等,但主帥的性格變化可以更多,我
們甚至可以設計一些戰術,比如偷襲,燒糧,騷擾等等,供主帥選用。在指揮將
領方面,只有聰明的主帥才可以知人善任。對抗相同數量的部隊,和郭汜對陣與
同曹操對陣難度就大不一樣。這樣,才是真正的即時戰略遊戲而不是即時戰術遊
戲。”

“另外,戰鬥中最好有一些隨機性,使得人們只能預知大概趨勢,而不能預
知精確結果。我認為這應是幾乎所有遊戲應遵循的原則。”

我在講這些的時候一定是神彩飛揚,以至於劉微笑著,用那種眼神看著我,
帶點鼓勵,也帶點同情,象是在說:“我們以前也曾這樣充滿幻想,但當發現幻
想離現實很遠時,會痛苦的。”


半個月後,我又去了趟前導。

“謝走了”,劉說,帶著點苦澀的笑。“幾個哥們找他開網路公司”。

真是出乎意料,但也在情理之中。
“編遊戲比一般程式設計工作要辛苦的多,掙的錢卻少”劉繼續說,“如果沒有
編遊戲的熱情,我們的工作根本做不下去。”

我們聊了《赤壁》系列的下一部——荊州。荊州雖然還是即時戰略,但與赤
壁的區別很大,勝負將不僅取決於一兩場區域性戰鬥的結果,兵種也將變得更多,
更復雜。

當時前導正在全力趕製《水滸》,《西遊記之齊天大聖》也在製作中,劉估
計正式開始製作《荊州》將是第二年夏天了。我們商定我抽空寫寫士兵策略和將
領策略,看看簡化士兵策略演算法和給將領策略加入性格因素是否可行,如果可行,
《荊州》將是第一個實驗品。這時,前導快要搬家了。

當我再次去前導時,已經是新的一年,前導也已搬到了新家——一棟看起來
頗為整潔乾淨的小樓房。 看來前導的經營狀況良好。

這次我交給了劉一個遊戲劇本:烽火英雄傳,是根據資治通鑑中契丹滅後晉
一段歷史改編的。我不想寫那種拯救世界的英雄,更偏愛於驚心動魄的歷史事件
中見證人的角色。如同劇本中的主人公,挽回了一場大戰役的結果,卻挽不回後
晉的覆亡。同時,我也不想人為製造什麼美滿的結局,歷史的結尾就夠了:契丹
退回北方,隨即內亂,趁人之危建立的後漢王朝風雨飄搖,漢奸們一個個走向自
己的結局,郭威、柴榮崛起,趙匡胤登上舞臺,大亂即將結束,主人公也到了歸
隱的時候。

“看來只是一個普通的RPG劇本。”

“我想實現的是動態戰棋。象Diablo又不完全是Diablo。具體的戰鬥形式可
以有簡單的戰鬥,暗殺,刺殺,追殺,逃跑,突圍,以及大軍混戰中的斬將奪旗,
關鍵還是在於不同的戰鬥設計,實現它們需要比較高超的數學模型知識。”

“ 我在想一種戰鬥形式,表現大場面下個人的行為,
象兩軍陣前斬將奪棋,透過士氣的變化來體現勝敗的走向等等,而不是以簡
單的屠殺為滿足。我希望能有一個用即時戰略的引擎做的戰棋遊戲。”

“我想畢業後到前導工作”,我說。

劉楞了一下,然後露出了一個比較燦爛的笑容。

“做遊戲很辛苦的,待遇也不好,並且要有捱罵的心理準備。”

“我來前導,不是為了玩遊戲,我給自己一年半的時間,在這段時間裡,我
想盡情發揮自己。”我說。

“非常歡迎。不過,你最好和邊總談一下,選擇工作很重要的是選擇老闆。”


我們接著聊做遊戲,又談了挺久,劉答應和邊總約個時間和我見面。

第二天,劉打電話通知我,週六上午見邊總。

週六我九點就到了前導,一個工作人員接待了我。我說明來意後,他問了一
句“聽說你對赤壁有一些改進意見?”,看來訊息已經傳出去了。我們聊了一會
兒,我又等了一小段時間,十點左右,邊總請我過去。
邊總看上去四十多歲,沒什麼老闆架子,他自稱也是研究所裡出來的。我們
的話題很快就轉到了遊戲工作上。我直截了當地對前導的新策劃《紅樓夢》提出
了擔憂。“我很喜愛《紅樓夢》,讀過很多遍,我覺得現在所有的遊戲形式都不
適合表現紅樓夢,因此很擔心編出來的遊戲體現不出原著的魅力。”

“為了紅樓夢,我前期已經投入了十萬元,讓幾個人去研究怎麼做。”邊總
侃侃而談。“最後的報告沒有達到我的要求,但也有不少成果,策劃的女孩說遊
戲怎麼編,怎麼玩已經在她腦子裡有了概念。”“紅樓夢具體將做成一個事件迷
宮的方式。。。”“我們曾經就這些設想請教過紅學家們,那些老人聽說要把紅
樓夢編成遊戲,都特別激動,說要全力支援。。。”
“另外,我們要採取公開徵集劇情的方式,讓玩家參予編寫。。。”“紅樓
夢做出來也許不夠成功,也許會賠錢,但關鍵在於能夠體現我們的能力,做出來
之後,
別人看你就不一樣了。。。”“《紅樓夢》之後,我還考慮編一個現代生活
的遊戲,用類似的結構。。。”

我逐漸明白了邊總的苦心,
如果《紅樓夢》成功,足以改變人們對於遊戲的看法,遊戲將不再被認為僅
僅是消磨時間,也可以幫助大家瞭解文學,更進一步,則可以成為現實的另一種
表示方式。僅從紅學家們支援遊戲這點來說,就足夠給遊戲正名了。當然,這個
遊戲一定要編好,不在於多麼好玩,而在於體現它的表示形式是否可行,是否有
發展和是否有文學和藝術價值。

“完成這樣的遊戲,情感模型和社會模型非常重要,現在沒有一個遊戲能用
演算法來模擬出哪怕有點逼真的情感。”我說。“情感應該是隻能大約把握,卻捉
摸不透的,絕不是簡單地說你投入了多少就回報多少。”
“但我倒有個想法,用非線性迭代方程來做情感模型。非線性迭代方程產生
的混沌結果就是無法估計的,可以用它當作人物的反應,而某些引數則是真正的
情感引數,與人物的行為並沒有直接的、線性的關係,就象你和別人鬧矛盾並不
說明別人不喜歡你了,也許是太喜歡你才對一些事情很敏感的。”“所有情感模
型對應的方程應該都有一個‘過猶不及’的效果,再加上點隨機性,並且要比較
符合常理,這樣你大概可以推測情感的發展趨勢,又無法預測下一步會發生什麼。”
“社會模型比情感模型更復雜,但是如果情感模型成功,可能很多技術可以應用
到社會模型當中去。”“總體的感覺是,《紅樓夢》不好做,但做成了的話,絕
對是一個突破。”


我們繼續談遊戲,從前導的談到其他國內的,又談到國外的。邊總給赤壁打
了60分。談到編寫遊戲工作時,邊總的觀點是:最重要的是程式設計的人有興趣,老
板則應該少管,給工作人員以儘量發揮的空間。他舉了當時頗為成功的一個遊戲
《大唐詩話》,說當時公司根本就不重視這個遊戲,讓製作組隨便編編,結果卻
大獲成功。邊總說劉的工作組目前工作比較良好,他希望保持這個工作組的穩定。
因此我提出加盟《紅樓夢》製作組。

“我們還是希望主程式設計師比較有經驗。”“我來前導,也不可能一開始就當
主程式設計師,我想做情感模型。”“不過我要預先提醒你,理論研究和實際工作不
一樣。”“我會注意的,不過我自信,如果我做不出來,國內幾乎沒有人能做出
來!”

這次見面使我下決心,畢業後不管各種國家優惠待遇,也不要拿到北京戶口
的機會,以普通程式設計師的身份來前導工作。其實我對邊總的現代生活遊戲前景並
不看好,但我卻很感興趣於把情感模型和社會模型用於武俠RPG遊戲。這樣的遊戲
簡直可以成為RPG的終結者。為這樣的遊戲,後來我設想了很多,我把我所設想的
遊戲叫做——江湖行。


《江湖行》的關鍵在於江湖模型,江湖模型中又有門派模型,個人策略模型
等等。我想充分運用統計學、隨機分佈理論、非線性迭代、混沌和複雜、甚至分
形來設計這些模型。在我想象中的《江湖行》中,江湖的主要勢力是各個門派,
門派之間也有普通、結盟、仇敵等等關係以及自己的勢力範圍。在勢力範圍以外
的地區,並非沒有此門派的人走動,而是相對較少。另外,勢力範圍也在不斷地
變化之中,每一次變化往往都意味著一場血雨腥風的較量。江湖中的一般小人物
隨機出現即可,只有門派掌門、門派中的重要人物、與主人公關係特別密切的人
才有自己的屬性。小人物的隨機出現是根據出現地點的勢力範圍、門派的勢力狀
況、當時門派的行動策略以及小人物自身的屬性而決定出現機率的。江湖中的人
物依武功和所參加的戰鬥決定其名望引數。一般名望高的人不屑於與名望低的人
較量,除了少數殺人狂魔外。但是,如果一個低名望的人殺某一幫派的人太多,
就不免要招來強敵,但另一方面,一個人為某一門派立的功太大的話,也會受到
特殊的保護的。那些有自己屬性的人,不管屬於哪個門派或者是無門無派,都不
意味著他們的身份已經固定,他們可以升職或被降職,可以叛變,有時也會送命。
因為每個人的資質不同,武功的進步上也帶有一定的隨機性。同時,江湖上也會
按照統計學的規律,隨機誕生一些新星,以取代消亡者,有些則是透過消滅對手
來完成取代。因此,即使門派內部,也將會爾虞我詐。從資料結構上來說,每個
門派是一個樹,樹的頂點是掌門,然後再一級級地向下發展。樹的節點也分明節
點和暗節點兩種,暗節點就是臥底,內奸或密使。不但一個樹的明節點可能和其
他樹的暗節點重複,不同樹的暗節點也可能重複(雙重間諜),還有一棵樹自己
的明節點和暗節點重複的情況(裝成小人物的幫中高手)。人物正常情況下按照
明節點身份行動,只有外界條件觸發才導致人物行為改變。另外,還有一些流浪
高手,歸隱高手等等。戰鬥上是分勝敗易,殺人難,決定剷除一名高手是江湖中
的大事,武功高出越多,殺死敵人的機率越大,但如果武功相差不是非常多,要
殺掉一個高手將非常辛苦,還要當心高手的夥伴幫忙。我希望最終達成的模型是
即使我們任其自然發展,它還總是江湖的樣子。

而遊戲中的主角的行為,有一個基本的原則:你可以做你想做的任何事,但
必須要為其付出代價。你可以殺手無縛雞之力的人,但必須準備面對捕快的追殺,
你可以殺掉追殺你的捕快,但必須準備與名捕較量。你可以殺掉某個掌門的幼子,
但一旦被發現,就試試看能不能逃過整個門派的追殺吧。另外,你自己的感情也
會限制你的行為,如果你選擇喜歡上了一個女孩,又選擇殺了她,結果多半是自
己發瘋。
主角的資質是隨機設定的,但當然有一些有利因素:主角撞上奇遇的機率比
較大。因此,即使是資質平平的主角,也可能成為絕頂高手的。在遊戲裡還可以
設定故事情節,故事情節的發展是觸發式的,並且大體按照江湖的規則。遊戲中
可能有很多短故事和一些長故事,最高理想是用故事編輯器來編故事。遊戲開始
時,主角可以是個平民,也可以是個幫派小人物,要是開始就是一派掌門,也沒
什麼不可以,只是這遊戲就有點象三國了。主角在江湖中游蕩,可以加入某個門
派,也可以哪個門派都不加入,找遊俠,隱俠學武功,還可以從一個門派改投另
一個門派。練功方式有點類似MUD,可以自己練,也可以找人比試,當然,找上大
魔頭算你自己倒黴。你挑戰的結果會影響你的名聲。名聲大了,麻煩也就來了,
有人找你比試,有門派邀你加盟,總之是左右為難。但正如前面所說
,殺人是一件大事,所以小命的危險還不大。另一種危險是寶貝,匹夫無罪,
懷璧其罪。不小心找到一本秘笈之類的,武功當然可以突飛猛進,但萬一被人從
武功上看出來歷,招來一群爭奪者,那麻煩可就大了。因此,未練成武功之前,
一定要慎重。遊戲的結局可以借鑑《大航海時代II》,以觸發故事的結局作為結局,
同時你還可以選擇繼續玩下去。對於觸發故事,我也有不少設想,假設你加入了
一個門派,成為本門的重要人物,和另一個門派是死敵,不慎觸發了故事,於是,
你愛上了敵對門派中的一個女孩,然後,看著辦吧,如果你們選擇私奔,兩個門
派會一起追殺你們。

我向往的是一個變化無窮的江湖,在這個江湖之中又有自己的規律和能夠體
現出人們情感的故事。

這天,鍾請我晚飯,我費了很大勁才讓鍾明白《江湖行》的設想。“其實,
就是一個單人MUD。”鐘下結論道。
“可以這樣說。”
“如果做出來,真的是遊戲的巨大突破。”
“我也知道很困難,但並非不可實現”我說。“我先做紅樓夢的情感模型和
社會模型,如果成功,再移植到江湖人物和門派上,然後,再向整個江湖模型進
軍。”
“這些東西好象難度非常大,但即使數學家做不出來,也並不一定就真的做
不出來。做這些模型最重要的是數學模型能力,和理論研究是兩回事。也許沒人
做出來只是因為沒有高手去做。”我笑笑。“其實,老外的數學水平很差的。”
“另外,我覺得,即使能產生一些副產品,意義也很重大。”“我曾經有一個有
點關係的設想,就是在RPG遊戲中加入鏢局的設計。”鍾說。“主角可以到鏢局掙
銀子,鏢局接鏢,走鏢,強盜劫鏢等等都是隨機出現的。”我們商定,由鍾提出
具體的要求,我考慮如何實現,並給出演算法模型。剛加入前導肯定只能做一個普
通程式設計師,但我希望改變整個前導。我想透過鍾和劉把我的很多想法實現。〈江
湖行〉的設想太遙遠,我打算以〈紅樓夢〉為第一步,〈烽火英雄傳〉或者我的
另一個設想〈天外傳說〉或者公司提出的其他遊戲,關鍵是試著把即時戰略引擎
用於RPG的設想作為第二步,如果一切順利,我也就不打算出國,而是全力向〈江
湖行〉挑戰!

聊天過程不免會涉及遊戲界的現狀。“前導公司情況還好吧”“象這樣的小
公司,會不會突然倒閉都是說不準的。說不定哪次資金週轉不靈,一下就完了。”
我笑笑,沒太把這句話放在心上。

回去的路上,沒來由地想起蘇芮的一句歌詞——是我們改變了世界,還是世
界改變了我和你。

那段時間,我拼命地買書,從《可計算性和複雜度理論》到非線性科學叢書
中的三本,從小波理論到分形圖象學,還有好幾本〈第一推動叢書〉用來開闊眼
界。至於運籌學、機率論、計算方法、神經網路、、數學模型、計算機圖形學等
等教材,不管學過沒學過,見一本買一本。我的時間除了寫畢業論文外,也大都
用在了學習這些知識上。我學習的目標是知道什麼時候需要用什麼知識,以便將
來查閱,因此大部分書是走馬觀花。但讀非線性科學叢書則很辛苦,因為我必須
掌握非線性迭代的一些規律。同時,我也開始編寫幾個小實用程式。

“送你一個小禮物。”我拿出一張光碟(我們實驗室有刻盤機),“一個隨
機數生成庫。”“C語言裡不是有隨機數生成程式嗎?”劉說。“C裡面的速度有
限,隨機性也不好。我這個是批次產生隨機數的一個類,核心程式碼用匯編編寫,
瞬間就能產生幾千個隨機數,並且隨機性絕對好。另外,它還可以直接產生高斯
分佈的隨機數——”“等等,什麼叫高斯分佈?”“高斯分佈是自然界最常見的
機率分佈,很多其他分佈在數量很大的時候也可以用高斯分佈近似。用高斯分佈
隨機數模擬隨機事件效果絕對好。另外,分形裡也要大量用到高斯隨機數。”我
執行了另一個程式,螢幕上顯示出一個線條畫成的山。“這就是用這個隨機數發
生程式畫成的分形山。”我雙擊滑鼠左鍵,螢幕上的山改變了形狀。“我們可以
考慮用分形演算法自動生成背景。”我拿出一本書,翻開彩頁,交給劉。“這裡的
風景都是計算機畫出來的,只要在分形演算法基礎上把遮掩、光、影效果加上就可
以。”彩頁中有很多圖象,不僅有山,有水,還有似乎是洪荒時期的植物,升起
的月球上環形山清晰可辨,雲、煙更是惟妙惟肖——因為雲、煙本就是遵循分形
規律的典型。劉向我講述了〈荊州〉所希望產生的隨機地形圖,我略微考慮了一
下,斷定分形演算法可以完成它,於是我們決定用分形來做地圖。

當時劉被調去給〈西遊記〉組做3d打鬥動畫,我幾次去都看見他在忙著編Di
rectX程式。〈西遊記〉遊戲的結尾是孫悟空與巨靈神之間的3d動畫單挑。畫面上
孫悟空和巨靈神的動作都挺花哨的。“是實時戰鬥嗎?”“不是,是回合制的。
實時的太困難。”“哦。”我心裡有一個聲音同時問:“有多困難?”幾天後,
我又來到了前導。“3d實時戰鬥好象並不困難。”我說。“既然單人動作已經可
以實現,那麼困難就在擊中判斷上。就是什麼時候兵器相交,什麼時候某方被擊
中。我們需要編寫一個判斷的程式。”“DirectX有這樣的功能。”“但是需要判
斷的專案太多,是不是?這樣不是辦法。但是,我們不需要象DirectX那樣精細,
只需要讓人感到有比較逼真的打鬥效果就可以了。”“我們可以把人和兵器分解
成球體和圓柱體的組合。象一個人頭是個球體,雙臂、雙腿總共是八個圓柱體,
身體如果說一個圓柱體不逼真,可以用三個並排的,相互重疊的圓柱體表示,手
、腳也當作球體。孫悟空的金箍棒是一個細長的圓柱體,巨靈神的雙錘都是圓柱
體加球體。當然,不是真的這麼畫他們,只是用於擊中檢測。這樣,一方可以用
不到二十個圓柱體和球體表示”“在計算機中,建立一個空間座標系,座標系中
物體資料結構是點或者線段和一個距離引數。對於球體,它的球心為點引數,球
半徑為距離引數,對於圓柱體的記錄,圓柱軸線段為線段引數,截面半徑為距離
引數。也就是說,圓柱實際上是用和這條線段距離小於截面半徑的所有點表示,
這樣有一些誤差,但是沒什麼大關係。”“這樣,擊中檢測就變的很簡單了,比
如計算孫悟空是否擊中巨靈神的頭,只要計算表示金箍棒的線段和表示巨靈神頭
的球心之間距離是否小於金箍棒的距離引數和巨靈神頭的距離引數之和就可以了。
一次判斷只需要計算幾十個線段和點之間的距離,整個計算時間絕對能控制在毫
秒量級以下。”“也許,〈西遊記〉之〈大鬧天宮〉可以用這種方法。”劉說。

我再次來到前導。“做的怎麼樣了?”“差不多結束了,”劉說,“玩玩看
看?”遊戲中,孫悟空有體力、內力和生命值三種屬性,體力有三大格,在不斷
地回覆中,一般攻擊或者防禦消耗一格體力,狠招消耗兩格體力,必殺技消耗三
格體力。體力不夠,不能出手。純防禦把傷害減到四分之一,但體力停止回覆,
防守反擊把體力回覆速度降到三分之一,傷害減半。魔法有恢復和殺傷兩種。光
、影和很多動作做的相當漂亮。我試了試各種攻擊魔法,代價是孫悟空犧牲了好
幾次。“好象攻擊力最強的魔法不是畫面最漂亮的。”“美工做的時候,策劃沒
有說哪些魔法攻擊力強,哪些弱。”我拿到了一個招式威力表,看了一下。“這
樣不行,”我說,“招式的威力都是固定的,那麼,必然存在一個最佳策略,玩
家只要按照最佳策略進行,就必然得到最佳結果。比如現在,孫捂空的最佳策略
是:必殺技,血快滿了就回復。其他的設計全都成了陪襯了。”劉去找了西遊記
的策劃,策劃想了一下,決定讓必殺技消耗魔法。劉把這個方案轉告了我。“這
樣還是不行!”我幾乎喊了出來。“線性的規則永遠得不到非線性的結果,這樣
的改動最佳策略仍然存在,招式必須得和生命、狀態值關聯上才會有變化的效果!”
“資料結構已經定死了,”劉說。“要把它們關聯上,整個資料結構都得改變,
至少得一個月。”我有點沮喪。“那麼就是設計上的問題了,策劃應該知道——
等等,我有辦法了!”我轉向劉,“程式可以判斷受攻擊者是在一般狀態,防守
反擊狀態還是防禦狀態,是不是?”“是的。”“我們可以讓防禦只對攻擊有效,
而對魔法無效,這樣,如果是一般狀態,魔法攻擊是吃虧的,但如果敵人在防禦
中,那麼魔法攻擊的效果就是最佳的。另外,每一次攻擊對敵人造成的傷害可以
用高斯隨機數表示,如果形勢不妙,使用必殺技還有敗中求勝的可能,否則求穩
勝的希望更大。不同的情況下就應該適合使用不同的招式,不能造一些花哨但沒
用的招式。”“整體生命值設定要設成失敗的機率比較大,但存在百分之二三十
的戰勝機率,這樣玩家才會覺得有意思。具體設定成多少可以計算出來,我可以
幫你們算。”劉微笑著說了一句什麼,當時我太興奮,也只顧考慮問題了,沒有
聽清,好象是“你還真有辦法”之類,雖然語氣是善意的,但卻像是帶點訕笑。

當我再次來到前導時,我的第一個問題是:“現在3D戰鬥怎麼樣?”“還是
老樣子,”劉說,“和你上次玩的一樣,一點改動都沒有。”“為什麼?這樣所
有的魔法攻擊都沒用,美工的工作都成了浪費!”“他們自己都不急,我們急有
什麼用。”劉平平淡淡地說,似乎早已習慣了這種情況。那一瞬間,我的心好冷。

馬上就要畢業了。我把戶口落回原籍,準備以打工的身份留在北京,但有一
些手續還得回合肥辦一下。回合肥之前,我去了趟前導。
“有個很不好的訊息,”劉說。“前導融資失敗了。”“會怎麼樣呢?”
“不知道,最好的情況是裁去一些製作組,最糟的情況是不再做遊戲了。”
如果是裁去一些部門的話,我相信最後裁去的是劉的工作室。“我去合肥十天左
右,回來之後再和你聯絡。”第二天,我踏上了去合肥的火車。

前導,唉,前導。也許他們鋪的攤子太大了,也許他們太好高鶩遠了,也許。。。
但如果他們真能融資成功,是不是一切都不同了呢?只能祝願結果會好一點,也
許只有經過涅磐,鳳凰才真正成其為鳳凰吧。

回到北京的第二天,我就去前導看看結果。原先坐滿了工作人員的大廳現在
冷冷清清,地上到處是廢紙,這一切都預示著,最糟的結果發生了。劉還在,在
一個單獨的機房裡。“將來有什麼打算。”
“等。”劉說。“我們這一組心還很齊,大家都想繼續做遊戲。但是,家裡
壓力也很大,他們本來就不希望我做遊戲。”“你們組有多少人?”“三個程式
員,兩個美工,一個策劃。現在我們希望加盟別的遊戲公司。”“哪個公司,聯
繫好了嗎?”“尚洋吧。”“尚洋?!”我立刻回想起被罵的體無完膚的《血獅》。
“自從《血獅》失敗以後,尚洋公司也是痛下決心改變形象。”劉說。仍然帶著
他那慣有的笑容。“並且,其他公司一下子也吃不進那麼多人。只是,以後工作
條件就艱苦了。”“本來我們還有3D即時戰略的設計的。”
劉給我演示著畫面:起伏的山巒上,零零星星地分佈著持戟計程車兵。“這些
可能要等到很久以後了。”我感覺自己的遊戲夢正在遠去。我想留住它,我想不
管收入,不管將來,對劉說:“我願意成為你們組的第七個成員。”但話到嘴邊,
變成了:“希望以後和你繼續聯絡。”

我終於畢業了。畢業的我,卻不知道該去哪裡。導師和外邊有一個合作專案,
派了四個學生,他建議我領著學生們工作,先幹三個月,每月發我兩千。工作剛
開始的時候,我從對windows95系統都不熟悉,對VxD一無所知。
在一個月多一點的時間裡,我除了幫那些學生調程式外,完成了一個200K的
擷取windows95檔案操作的vxd,其中包括硬體等級的磁碟讀寫,直接獲取實體記憶體
然後自己進行分配管理的類,對FAT16的讀取以及在硬碟中直接讀取長檔名,一
個讀取磁碟的自定義Cache結構,Hash函式搜尋的檔案讀取簇表等等。合作方的老
板想僱傭我,我說要等我與老師的口頭協議到期以後。這時,劉的製作組已經加
盟尚洋了。我和他透過幾次電話。


“現在怎麼樣了。”
“很忙,忙著做《烈火文明》。”“我挺希望瞭解你們現在的情況。”“恐
怕現在比較困難了,尚洋管理比較嚴格,不過,管理本來也應該嚴格些。”

與導師的口頭協議到期之後,我與合作方的老闆談妥了,成為新老闆在北京
新開的公司的技術部經理,待遇比較優厚。後來,我們搬了家,我通知了劉我們
的新電話號碼。而後,我們再沒有聯絡過。



* * * * * * * * * *


尾聲

今年一月的某一天。新老闆非常聰明,但並不是這個專業的專家。他的設想
雖然不嚴謹,但前兩天我剛剛證明了他的想法不同於以往的任何一個系統,或許
這真的是一條很好的出路。
一個多月來,老闆的設想一直在我的腦子裡,我知道它有明顯的破綻,但我
希望能找到一種方法,使得破綻不那麼明顯,尤其是現在,加上點理論說明,大
概就對付過去了。驀然,腦海裡靈光一閃——我找到了!這次不是對付,而是解
決。我終於沿著老闆的思路,把一個真正的模型建立起來了!靠著這個成果,今
後我也許將前途似錦。

那天,我又回想起我的種種遊戲設想。如果我做遊戲,會這麼投入嗎?我的
多層策略模型、即時戰略引擎下的戰棋,還有我的《江湖行》,這麼多幻想,會
是個什麼命運呢?我做出來的遊戲會是好遊戲嗎?或者只是充滿了Bug的怪物?但
我知道,從這天起,我的遊戲夢徹底結束了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10796304/viewspace-962618/,如需轉載,請註明出處,否則將追究法律責任。

相關文章