周璟把那塊硬碟放在梁永琪辦公桌上的時候,動作比平時輕了不少。
他自己沒意識到這個變化,但梁永琪注意到了。
平時周璟放東西都是隨手一擱,硬碟磕在桌面上發出悶響,有時候還會滑出去半寸,他得伸手再扶正。
但今天他把硬碟擱下來的那一瞬間,手腕是微微弓著的,指腹先接觸到桌面,然後硬碟的底部才慢慢落下,整個過程幾乎沒有聲音。
硬碟是銀灰色的金屬外殼,那種磨砂質感的表面沾了一點他手心的汗漬,在辦公室頂燈底下能看出來一個淺淺的指紋印。
邊角有一道撞過的凹痕,大概是從哪台機器上拆下來的時候磕到機箱邊緣了,凹進去的那一小塊地方露出了底下的金屬色,跟周圍灰濛濛的磨砂面一比顯得亮一些。
周璟說這硬碟是從美術組的機器上取下來的,拔線的時候忘了先關電源,直接一把就把數據線拽出來了,線頭拔出來的時候硬碟的指示燈還在那兒一閃一閃地亮,藍白色的光在銀灰色外殼上跳了兩下才徹底滅掉。
「第一版完整地圖渲染,」周璟說這話的時候嗓門比平時大了一點,好像在給自己壯膽似的,但說完這一句他又把音量壓回來了,「長安城主城區、大雁塔外景、水簾洞內部,三張圖全跑了一遍。
今天下午剛出的包。」他說完把兩隻手從口袋裡抽出來,在褲腿上蹭了一下,大概是想擦掉手心那點汗,然後又把手指交叉著搭在身前,指關節微微發白。
梁永琪沒急著說話。
她伸手把硬碟接過來,指尖碰到那道凹痕的時候停頓了一下,仔細看了一眼那個位置,確認沒有傷到接口附近才把它連上自己那台機器的數據線。
她打開文件夾的時候看到裡面有六個文件,三個是預覽圖,三個是源文件包。
她點了第一個預覽文件,就是長安城那張圖。
屏幕亮起來的時候,長安城的街道從一片灰白色慢慢過渡到完整的彩色畫面,這個過程持續了大概兩三秒,像一張底片在水裡逐漸顯出影像。
青灰色的石板路面沿著中軸線往遠處鋪開,每一塊石板的紋理都畫得很細,石板縫裡還填了深褐色的線條,模擬泥土嵌在磚縫裡的樣子。
路面兩旁的建築全是木質結構,那些柱子、橫樑、斗拱的造型是按照那本唐代建築圖錄上的線描稿一筆一筆描出來的,屋瓦的色塊從深灰到墨綠之間做了三層漸變,靠屋頂上端的那一層顏色最深,往下逐漸變淺,到了屋檐邊緣又加深了一度,呈現出那種舊瓦片被雨水反覆浸過之後才會有的色澤變化。
街道盡頭的城門在畫面上方形成一道剪影,城門洞開著的那個口子裡的光暈是暖黃色的,不是那種生硬的亮白色,而是像真實的日光穿過城門洞照進來的那種柔和的黃,帶著一點塵埃漂浮在光線里的質感。
梁永琪盯著這個畫面看了大約十秒鐘,目光從街面的石板移到兩旁的建築檐角,再從檐角順著城牆的輪廓移到城門洞裡那片暖光上。
她沒有說話,只是把眼睛眯起來了一點,像在分辨什麼很細微的東西。
然後她雙擊了第二個文件,切到了大雁塔那張圖。
大雁塔的塔身從下到上逐層收窄,每一層之間的比例關係壓得很準,塔身上那些磚砌的條紋用的是小尺寸的紋理貼圖反覆拼接出來的,拼接的痕跡幾乎看不出來。
每一層的檐角底下都掛了風鈴,風鈴是用像素點陣的方式畫出來的,單個風鈴只有六七個像素點那麼大,但排列得很整齊,遠看像一排淺金色的碎屑貼在深灰色的塔壁上。
塔身底部的基座周圍畫了一圈矮牆,矮牆上開了幾個小門洞,門洞裡的光線處理跟長安城那張圖用的是同一個手法,都是暖黃色的內透光,看著特別真實。
梁永琪看完大雁塔那張圖之後說了一句:「畫面做得非常漂亮。」她這話說得不算大聲,語調也平,但周璟聽完之後肩膀明顯鬆了一下,原本交叉著搭在身前的手指也分開了,垂在身體兩側。
梁永琪接著點開了第三個文件,水簾洞那張圖。
水簾洞的瀑布是用流動的藍白色色塊拼成的,從畫面上方傾瀉下來,水流的路徑不是筆直的,中途會撞上突出的岩石然後分成幾股各自往下墜。
水花濺落到岩壁上的位置用半透明的淺藍色做了三層疊加,最底下那層顏色最深,中間那層淡一些,最上面那層幾乎是透明的,只保留了一點點藍色的調子。
三層疊在一起之後從遠處看真的有水簾落下來的視覺連貫感,那種水幕連續不斷的流動效果讓梁永琪盯著看了好一會兒。
「漂亮是漂亮,」周璟站在旁邊說,兩隻手重新插回牛仔褲的口袋裡了,肩膀又稍微提起來了一點,「但這個尺寸的貼圖密度,跑不動。」他說這話的時候下巴朝屏幕的方向抬了一下,像是在示意梁永琪看電腦右下角那個幀數顯示。
梁永琪順著他的示意看過去。
畫面靜止的時候幀數穩定在二十五幀左右,這個數字在她看過的所有測試數據里不算高,但對於這種精度的地圖來說已經是很不錯的成績了。
她按了一下鍵盤上的方向鍵,讓畫面開始往左邊平移。
街道兩旁的建築開始緩緩滑過屏幕邊緣,石板的紋理跟著移動,就在畫面動起來的那一瞬間,幀數從二十五跳到了十八,又從十八跳到了十一,最後穩定在了個位數上。
畫面卡成了一張一張跳動的靜幀,前一幀里城門還在屏幕中央,下一幀里城門已經跳到了屏幕右側,中間缺少的那一段過渡影像讓整個平移過程看起來像在翻一本翻得很快的連環畫。
梁永琪鬆開了方向鍵,幀數回升了一些,回到了十四五幀的位置,但只要她再次按下按鍵讓角色開始移動,那個數字就像被什麼東西拽著往下墜,一口氣跌到七八幀,然後就再也爬不上來了。
「跑測試的機器是什麼配置?」梁永琪把鍵盤往前推了一點,側過臉問周璟。
「市面上一台普通的網吧機。」周璟說,「奔騰處理器、六十四兆內存,顯卡是市面上最通用的那種型號。
我在電腦城問了一圈,目前國內網吧里舖得最廣的就是這個配置。
我在那台機器上跑完長安城的地圖之後又抱回咱們那台高配測試機上試了一遍,高配機能跑到三十幀左右,畫面流暢得很,怎麼轉視角都不卡。」他說到這停了一下,咽了口唾沫,「但咱們的用戶,百分之八十以上用的都是低配機。
我讓市場組那邊幫我翻了一下後台數據,註冊用戶的硬體配置統計表上寫得清清楚楚,奔騰處理器的占比接近七成,內存六十四兆以下的占了一半多。
咱們要是按高配機的標準來做,那些用戶裝上之後根本跑不動,卡成幻燈片,到時候差評能把論壇淹了。」
梁永琪靠進椅背里,眼睛還停在屏幕上那幀定格的畫面。
長安城的城門在畫面靜止的狀態下依然保持著完整的細節,每一塊城磚的紋理都清晰可見,那些磚縫裡的陰影、磚面上的細小裂紋、風化造成的邊緣圓角,全都一筆一划地畫出來了。
但那是因為畫面不動了。
一旦動起來,那些細節就變成了導致卡頓的冗餘信息,每一幀畫面都在拼命渲染那些不會被玩家仔細看的東西,結果就是什麼都渲染不出來,畫面卡在原地像死機了一樣。
「版本發布先叫停。」梁永琪伸手把硬碟從接口上拔下來,銀灰色的金屬外殼在她掌心裡涼涼的,那道凹痕正好抵在她中指關節的位置上,硌得有點疼。
她換了個握法把硬碟托在手心裡,「你回去列一個清單,把每一張地圖裡的美術資源按占比排序,最高的前十個資源列出來。
技術組那邊也列一份清單,標註哪些渲染環節的占用最高。
兩組清單放一起看,數據說話。」
周璟點了點頭,從口袋裡摸出一支原子筆在手掌上寫了兩個字當作備忘錄,然後推門出去了。
他走路的速度比平時快,門關上之後走廊里傳來他小跑著回美術組那頭的腳步聲。
周璟走了之後梁永琪在辦公室里坐了一會兒,兩隻手搭在椅子扶手上,視線落在屏幕上一個固定的點上但沒有聚焦。
她盤算了一下目前的進度,整個項目的時間表排得很緊,地圖渲染這塊是重頭戲,如果卡在這裡後面所有的環節都得往後推。
過了大概兩三分鐘,她拿起座機撥了技術組的號碼。
接電話的是李軒,話筒里傳過來的背景音里有好幾副鍵盤同時敲擊的嗒嗒聲,還有誰在隔間裡喊了一句「編譯過了」然後又沒聲了。
李軒的聲音聽起來比平時悶一些,像嘴裡含著什麼東西,梁永琪猜他大概又在吃那種硬糖,他一忙起來就愛含著糖,說是能提神。
「李軒,周璟那邊的地圖渲染包你看了嗎?」
「看了。」李軒說,含混的那層聲音稍微清了一點,大概是把他那顆糖換到腮幫子那邊去了,「低配機上幀數只有七八幀,根本沒法用。
我剛才在自己機器上跑了一遍,我的機器比低配機高一檔,也就跑到十二幀,稍微動一動視角就掉到個位數了。」
「你的意見?」
「降貼圖精度。」李軒說,語速比平時快了不少,像這些話在他腦子裡已經轉過好幾輪了,今天終於有人問他他就一口氣全倒出來,「建築紋理從二百五十六乘二百五十六降到一百二十八乘一百二十八,角色模型的網格面數砍掉三分之一,遠景的山和樹直接砍掉一半的繪製距離,這樣幀數至少能提到十五幀以上,畫面損失在可接受範圍內。
玩家玩的時候注意力都在角色和近處的建築上,遠處的細節本來就沒人仔細看,砍掉之後不影響核心體驗。」
「你跟周璟說了?」
「說了。」李軒的聲音里多了一點無奈,「上午我跟他在茶水間碰上了,我就提了一句這個方案,他馬上就把臉拉下來了。
他說降貼圖精度就是毀他的畫,他說他畫了大半個月的瓦片紋理,每一片瓦的顏色漸變都是對著唐代建築彩畫研究的資料書調的,那些灰綠過渡的色值他調了七八遍才定下來,砍成一百二十八乘一百二十八之後像素點一壓縮那個漸變就沒了,變成一塊一塊的色斑,跟馬賽克一樣。
他說要是按我的方案來,長安城那個屋頂遠看就跟一塊髒抹布鋪在那兒似的。」李軒說到這嘆了口氣,「我跟他爭了幾句,他說我不懂美術細節對沉浸感的重要性,我說他不懂低配機用戶跑不動地圖的後果有多嚴重。
我倆誰都沒說服誰,就這麼僵著呢。」
梁永琪的手指在桌面上叩了兩下,清脆的嗒嗒聲在安靜的辦公室里聽著格外清楚。
「你們兩邊先別爭了。
等我明天給回復。
你今天晚上把那份渲染環節的占用清單整理出來,發我郵箱。」
她掛了電話之後把椅子轉了個方向,面對著窗戶坐了一會兒。
窗外的天灰濛濛的,看不太清遠處的輪廓。
她沒盯著窗外看太久,很快就轉回來,把硬碟收進抽屜里,收拾了一下桌面上的文件,拎起包出了辦公室。
那天晚上她回到陳園的時候天已經暗了。
她上樓推開書房的門,陳浩正坐在書桌前翻一本新買的資料書,書脊上印著「中國古代建築彩畫研究」幾個字,書頁翻開的那一面上印著一整頁的瓦當圖案拓片。
他聽見門響抬起頭看了她一眼,把書籤夾進當前那一頁合上了書,往椅背上一靠,等著她說話。
梁永琪把包放在門邊的矮柜上,走過去在他旁邊的椅子裡坐下,把白天那個僵局從頭到尾講了一遍。
她講了大概十幾分鐘,把周璟的精細畫面、李軒要降精度砍面數的要求、兩個人卡在中間誰都不肯退的場面都說清楚了。
陳浩聽完了沒有馬上接話。
他把書合上放在桌角,轉身面朝她,兩隻胳膊肘撐在膝蓋上,身體微微前傾。
「讓美術把遠景和近景分開渲染。」他開口了,聲音不急不緩,「遠景用靜態貼圖,不需要實時刷新,玩家角色走過去了那片背景也不會跟著動。
近景保持現在的精度,玩家周圍的建築、地面、NPC保持現有的紋理密度。
玩家走動的時候,他視線焦點所在的那塊區域是近景,畫面的邊緣和遠處是遠景。
遠景不動,近景動,視覺差會騙過眼睛,讓他以為整張圖都在動,實際上動的那部分只有屏幕中央那一塊區域。
這跟人眼看東西是一個道理,你盯著一個東西看的時候周圍全是模糊的,只有你盯著的那個點是清楚的。
遊戲畫面也是一樣,不需要把整張圖都渲染清楚,只需要把玩家在看的那一塊做精細了就行。」
梁永琪把這段話在心裡過了兩遍,第一遍只是把每個字都聽進去了,第二遍她開始往技術實現的方向上拆解。
然後她站了起來,走到書房角落裡立著的那塊白板前面,從白板底部的槽里摸出一支黑筆,擰開筆帽在上面畫了一幅簡圖。
她先畫了一個大矩形代表屏幕,在矩形中央畫了一個小圓圈代表視線焦點區,矩形的邊緣畫了幾條波浪線代表遠景區域,中央到邊緣之間用漸變的虛線連接起來,虛線越靠近邊緣越稀疏。
「你的意思是,不是一個固定的近景和遠景切分,是根據玩家視線的落點動態調整近景範圍?」她轉過身來,筆尖指著白板上的那個小圓。
「對。」陳浩說,「他的角色往前走,近景的刷新區域跟著他的角色往前推,他往左轉視角,近景區域就往左移。
遠景區域的貼圖不動,始終是靜態的。
這樣他永遠只能看到自己周圍那一塊空間在實時渲染,遠處的東西全是提前存好的背景畫。
背景畫不需要每一幀都重新畫一遍,只用畫一次然後存著,角色動的時候背景畫就像一張貼紙一樣貼在那個位置上不動。」
梁永琪在白板的空白處用文字標註了幾個要點,然後掏出手機把整塊白板拍了一張照。
她把手機收起來的時候指腹在屏幕邊緣停了一下,拇指在關機鍵上按了一下讓屏幕暗下去,然後轉身看著陳浩。
「我明天回去讓他們各自試一下這個方案。
兩個人分開做,各做各的版本,不讓他們湊一塊兒吵。」
【跪求禮物,免費的為愛發電也行!】