第六十五章 杰斯特卷軸算法
兩人的聊天結(jié)束之后,實(shí)在是太困的馬克?塞尼便打著哈欠去了休息室睡覺了。
杰斯特倒是坐在之前馬克?塞尼坐的那張椅子上,看著電腦沉思了起來。
在個(gè)人電腦上完成卷軸效果他確實(shí)可以做到,他在重生前就看過卡馬克卷軸的算法,這是一種非常巧妙的方法,能夠在當(dāng)時(shí)并不適合做游戲的pc上,完成像是街機(jī)一樣的卷軸動(dòng)畫效果,不過……
杰斯特想到了一件事,這讓他有些猶豫。
眾所周知,pc游戲誕生的很早,但pc游戲真正的開始被人接受,能夠在質(zhì)量上跟那些精致的家用機(jī)或者是街機(jī)游戲放在一起做對(duì)比,卻是從卡馬克卷軸算法誕生之后開始的。
卡馬克卷軸算法這也是個(gè)人電腦歷史上的兩座里程碑之一,后世無數(shù)的游戲,無論是個(gè)人電腦,街機(jī)亦或者是家用機(jī),都無數(shù)次的使用過這個(gè)卷軸算法。
而且,這兩座里程碑都跟卡馬克有關(guān),一次就是他的這個(gè)卷軸算法,而另一次就是他完成的世界上第一款真正意義的3d引擎。
他的這個(gè)創(chuàng)舉,讓游戲者制作者們可以在pc上完成他們之前夢(mèng)寐以求,但卻無可奈何的種種設(shè)想,pc上第一款在任何一個(gè)方面都不遜色家用機(jī)的游戲正是因?yàn)榭R克卷軸的誕生而誕生的,這款游戲也是動(dòng)作冒險(xiǎn)類游戲的始祖,《波斯王子》。
后世讀卡馬克的傳記的時(shí)候杰斯特最佩服卡馬克的一點(diǎn),就是他是一位真正的程序員。
這里說的程序員可不僅僅是能碼代碼的碼農(nóng),而是具有無窮的創(chuàng)造力,想象力,并且能夠?qū)⑦@些完成為一個(gè)個(gè)不可思議的程序,但卻絲毫不將這些程序視為自己的禁-臠的程序設(shè)計(jì)師。
是的,卡馬克是一個(gè)堅(jiān)定的程序開源者,他所制作的每一個(gè)程序都是不申請(qǐng)專利,并且開源出來允許任意人使用的,最著名都是莫過于閥門的《半條命》就是用的卡馬克為《雷神之錘》編寫的引擎,而且并不需要繳納授權(quán)費(fèi)用。
這是因?yàn)楫?dāng)時(shí)信心滿滿的g胖在看了《雷神之錘》的演示之后發(fā)現(xiàn),他們這些人無論如何也做不出能完成這種效果的3d引擎,也正好g胖的一個(gè)朋友在id給卡馬克當(dāng)小弟,所以順利的從id拿到了雷神的引擎。
這樣,才有了fps在《雷神之錘》之后最具有里程碑意義的作品的問世。
甚至關(guān)于卡馬克卷軸還有一個(gè)關(guān)于他對(duì)程序開源態(tài)度方面的故事。
當(dāng)時(shí)卡馬克在一家游戲雜志工作,他完成了卷軸效果,并且在一名畫師同事的幫助下將《超級(jí)馬里奧》的第一關(guān)給完美復(fù)制到了一臺(tái)電腦當(dāng)中。
然后,他的老板看到了卡馬克演示的游戲效果,只是隨口說了這么一句話。
“喔!你應(yīng)該去申請(qǐng)個(gè)專利。”
沒想到的是,卡馬克怒立即從座位上站起來,用手指指著他老板的鼻子,然后不可歇的吼道:“去他-媽的什么專利!如果你再敢跟我提什么專利,我立馬走人!”
沒過多長(zhǎng)時(shí)間,卡馬克在約翰?羅梅羅的慫恿下,真的辭職了。
所以,對(duì)卡馬克這種天才杰斯特是既想用,但又不想用的,他的確能夠完成很多其他程序員連想都不敢想的事情,問題是他那特別的對(duì)于程序開源的信仰是任何一個(gè)游戲公司的老板都不能忍受的。
你能忍受自己公司好不容易研發(fā)出的游戲引擎被開源后,無償被所有人使用?
如果杰斯特是一個(gè)游戲愛好者或者是獨(dú)立游戲制作人的話,他會(huì)視擁有這種精神的卡馬克是神,但他現(xiàn)在不是,盡管他曾經(jīng)是過。
所以,杰斯特每次給卡馬克的任務(wù)只是一些創(chuàng)意獨(dú)特,但不需要什么高深編程水平的小游戲,而且每次的游戲設(shè)計(jì)方案他都會(huì)申請(qǐng)專利,并且保留著他跟卡馬克的通信,就是為了在將來證明,這些游戲的版權(quán)是屬于他的,而卡馬克只是他雇傭的一個(gè)幫他完成這些想法的碼農(nóng)。
杰斯特就這么坐在電腦前,看著閃爍著熒光的電腦屏幕,他在擔(dān)心,如果自己真的在pc上做出了第一款卷軸游戲,那么對(duì)于現(xiàn)在的游戲產(chǎn)業(yè)會(huì)有何種沖擊。
在雅達(dá)利沖擊的影響下,受損最大的是家用游戲機(jī)市場(chǎng),基本上被完全摧毀了,街機(jī)受到的影響稍微小一點(diǎn),現(xiàn)在在杰斯特的努力下,已經(jīng)開始逐漸的回溫,但受到影響最小的,或者說,基本上沒有收到什么影響,還是個(gè)人電腦游戲行業(yè),跟日本的設(shè)計(jì)師不同,后世杰斯特腦海里知道的無數(shù)歐美設(shè)計(jì)師,都是在這個(gè)時(shí)代的個(gè)人電腦上制作游戲磨礪出來的。
如果自己真的提前幾年推出了卷軸游戲,那么到底會(huì)不會(huì)影響自己將來推出家用機(jī)的計(jì)劃呢?
想了一會(huì),杰斯特的臉上突然露出了嘲諷似的笑容,似乎是在嘲笑著自己。
“我真是有點(diǎn)杞人憂天。”杰斯特嘟囔了一句,他確實(shí)有些杞人憂天了,在他后世的時(shí)候,在電腦游戲在可以跟主機(jī)游戲比質(zhì)量,甚至pc的機(jī)能還要比主機(jī)強(qiáng)的時(shí)候,同一款全平臺(tái)游戲的pc版都很難賣到主機(jī)版的十分之一,甚至幾十分之一,更何況是現(xiàn)在了。
要知道將來pc的占有率可幾十倍于游戲機(jī)呢。
想通了這一點(diǎn),杰斯特的決定也就做了出來,畢竟ati也是他的產(chǎn)業(yè),能夠讓ati提前統(tǒng)治市場(chǎng),對(duì)他只有好處而沒有壞處。
不過杰斯特可不是卡馬克那種具有烏托邦思想的程序員,他是一家游戲公司的擁有者,自然的,他的卷軸效果,自然不可能開源之后被人無償使用,申請(qǐng)專利自然是必然而然的事情。
想通了這些,開了一天車的杰斯特也有些累了,他自己的那間休息室被馬克?塞尼占據(jù),于是他只好在馬克?塞尼辦公室里的沙發(fā)上和衣而臥,勉強(qiáng)的睡上一覺。
第二天。
杰斯特將馬克?塞尼跟兩位他的研發(fā)小組里前兩天跟他一起參與如何在個(gè)人電腦上完成卷軸效果的程序員一起喊道了辦公室中。
“你們是怎么來完成卷軸效果的?”在正式的講解卡馬克卷軸算法之前,杰斯特如此的向幾人詢問。
馬克?塞尼簡(jiǎn)單的說道:“一開始我們想要直接在個(gè)人電腦上復(fù)制我們已經(jīng)在街機(jī)上的方法,無論是在畫面上直接繪制圖像還是多獲取一些內(nèi)存來得到性能的提升,但都不現(xiàn)實(shí),原因是個(gè)人電腦實(shí)在是太慢了,雖然它用的是16位的cpu,但個(gè)人電腦跟街機(jī)的基板不同,它的cpu不可能只負(fù)責(zé)我們的這一款程序的計(jì)算,它要處理的東西非常多。”
“后來我們發(fā)現(xiàn)想要在個(gè)人電腦上完成像是街機(jī)上一樣的效果,在目前的情況下根本是不可能的,除非我們現(xiàn)在是在用三十二位的cpu,以及其他的一些與其配套的內(nèi)存,顯存什么的,所以我跟拉里斯都放棄了,除了總監(jiān)之外。”這次開口的是一位叫做布萊恩的程序員,他跟他身邊的那位有著一圈胡子的叫做拉里斯的程序員就是馬克?塞尼小組里的主程序,《復(fù)仇者》的卷軸效果就是他們攻克的。
這個(gè)時(shí)候馬克?塞尼出聲強(qiáng)調(diào)了一句,他攤了攤手,語氣有些沮喪:“不得不說,我這兩天也沒取得什么效果,所以昨晚上在你回來后,我也打算放棄這個(gè)計(jì)劃了。”
“呵呵。”
杰斯特聽了之后輕笑了一聲。
他略微在心里準(zhǔn)備了措辭,這才開口說道,“不要急著放棄,先讓我們來說說,我們?cè)诮謾C(jī)是怎么完成卷軸效果的,我之前看過你們做的那個(gè)引擎包,也大體的了解你們的一點(diǎn)思路,似乎你們是這么做的,你們?cè)谕婕铱刂频慕巧苿?dòng)的時(shí)候,如果這名角色移動(dòng)的足夠遠(yuǎn),遠(yuǎn)到超出屏幕,為了讓背景也隨著玩家的移動(dòng)而移動(dòng),你們用了最直接的方式,就是讓cpu來進(jìn)行重繪整個(gè)組成畫面的像素。”
馬克?塞尼三人點(diǎn)了點(diǎn)頭,他們?cè)凇稄?fù)仇者》里的確是這么做的。
杰斯特見他們都點(diǎn)頭認(rèn)可,于是繼續(xù)說著。
“不過因?yàn)檫@樣需要的計(jì)算量是很大的,為了讓人物的動(dòng)作也在這樣不斷重繪像素的計(jì)算里不至于顯得不流暢,你們也為此想出了幾個(gè)很巧妙的算法,但這不是我們這次討論的重點(diǎn),我就不說了,只說一下卷軸的重繪。”
說著,杰斯特的語氣變得謙虛起來。
“你們的編程水平都在我之上,按道理說我實(shí)在是不能在你們面前班門弄斧,不過我昨晚上坐在電腦前面的時(shí)候無意中有了一點(diǎn)想法,你們先聽一聽。”
馬克?塞尼三人聽到杰斯特如此謙虛的話,也不由得笑出了聲。
“當(dāng)時(shí)我就在想,我們要的是什么?――我們要在玩家穿過游戲的時(shí)候圖像能夠平滑地移動(dòng)。”杰斯特繼續(xù)說著。
馬克?塞尼三人并沒有因?yàn)榻芩固卣f的都是一些爛大街的東西而不耐煩,他們都見過自己的這位老板在設(shè)計(jì)游戲時(shí)的那種奇思妙想,而有的時(shí)候,設(shè)計(jì)一款卓越的程序有時(shí)候也許只是缺少一個(gè)奇思妙想。
杰斯特說的很快,但吐字依舊清晰。
“當(dāng)時(shí)我想起了之前我在電腦上設(shè)計(jì)一款rpg游戲時(shí)的一個(gè)處理方法,在那個(gè)游戲里,當(dāng)玩家控制的角色走到屏幕上地牢邊緣時(shí),我會(huì)讓背景做一次很大的調(diào)整,這種基于圖素的卷動(dòng)是很常見的技術(shù),而我現(xiàn)在要做的不是基于圖素的卷頭,而是基于像素的卷動(dòng),哪怕玩家只移動(dòng)了一點(diǎn)點(diǎn),背景也要隨之調(diào)整。但問題來了,我一開始跟你們想的一樣,但我在看了馬克?塞尼制作的這個(gè)卷軸動(dòng)畫的程序之后,我發(fā)現(xiàn),這條路是行不通的。”
然后,杰斯特見到三人的臉色愈發(fā)的認(rèn)真起來,他臉上的笑容也愈發(fā)的濃重,于是+繼續(xù)說道:“所以,我就換了一個(gè)思維模式――為什么要讓計(jì)算機(jī)重繪整個(gè)畫面呢?玩家控制的角色每次移動(dòng)的時(shí)候盡管背景在變動(dòng),但并不是整個(gè)背景在變動(dòng),而是只有很少的背景在變動(dòng)啊。”
說到這里,杰斯特臉上的笑容消失,而是變得認(rèn)真了起來,他馬上就要說到卡馬克卷軸的核心。
“那么如果不是每次重繪整個(gè)屏幕,而是只重繪那些真正改變了的部分,會(huì)怎么樣呢?”
杰斯特的這句話一說完,馬克?塞尼三人的眼前都亮了起來,他們已經(jīng)知道杰斯特的想法了,而且他們?nèi)齻€(gè)也是非常有天賦的程序員,他們幾乎在一瞬間就得出了杰斯特的這個(gè)問題的答案。
會(huì)怎么樣呢?
當(dāng)然是毫無疑問的,cpu的計(jì)算量會(huì)只有之前的幾分之一,甚至十幾分之一,而卷軸效果在執(zhí)行起來也會(huì)快很多,準(zhǔn)確的是說,是快非常多。
盡管還沒有真正的用程序來驗(yàn)證,但他們?nèi)艘捕紤{借著自己對(duì)于代碼的敏感,知道,杰斯特的這個(gè)方法,也許真的可以在個(gè)人電腦上辦到之前只能在街機(jī)上才能做到的,卷軸動(dòng)畫效果。
這真是一個(gè)偉大的點(diǎn)子。
這就是馬克?塞尼三人此時(shí)心里唯一的想法。
ps:求推薦票!!
,