The world at your fingertips — 天涯明月刀幕后23(海战)
前文回顧
項目的開始都是令人記憶深刻的,而開發的過程卻是平淡乏味的。好比高速上開車,周圍的景色一成不變,就容易疲累瞌睡。
天刀開發幾年后,逐漸和玩家見面,工作的重心,也從怎么讓人眼前一亮,變成了怎么把這一大攤子的內容都整合到一起,如何確保性能和內存,如何滿足策劃和美術的需求。
項目早期什么都是新的,新的挑戰,新的團隊,新的游戲;項目的中后期什么都是舊的,舊的代碼,舊的數據,舊的流程。倦怠不可避免,需要一些技術的理想主義,給團隊尋找高光時刻,給大家找到遠方的挑戰。
幾次測試后,工具大致可用,策劃美術開始狂堆內容,邏輯和后臺程序忙著做邏輯內容。引擎團隊也需要找點目標。
海洋和航行進入了視野。
之前說過,程序員喜歡做水。天刀最初的demo有水,但還不夠好。幾次迭代后就不再使用了,這次又拿回來重做。
長時間的閉關開發是最有意思的事情。做水也許是很容易進入心流的吧,每天看paper,對著數學公式瞎想,沒有什么人打擾,閉關一個月,努力搞一些說出去外行聽完一臉懵逼的功能,搞定可以炫耀,失敗了也很難有人指責。技術是最好的壁壘,隔絕世間的喧囂。
我們安排小謝去搞這個功能。一方面他是資深渲染,之前也有類似的開發經驗,另一方面也和公司內部的職級晉升體系有關。
在騰訊體系內,對一個技術人員,技術級別晉升是一個很重要的事情。沒有做過好的技術,就不容易得到專業職級晉升,這個容易理解。但在一個項目里,總有人需要做一些相對不難的臟活累活,這個就很糾結。
我們團隊,為了平衡項目利益和個人發展訴求,一般的做法是臟活累活輪流干,有難度的挑戰也輪流做。有時沖刺,挑戰技術難點,做有亮點的事情,以便升級,有時做助攻,分擔點瑣事,輔助其他同事晉級。
這次輪到渲染小謝挑戰一下高科技了。
海水渲染一直是一個很有趣的領域,各個前沿項目不停做出各種高端效果,發布各種先進算法,眼花繚亂。大多數算法核心都是基于快速FFT變化來做,加上各種tricky的技巧,做出其他相關的效果,浪花、浪的形態、水的折射反射、水在海灘的波浪等,都是需要一一解決的,充分展現了工程上的復雜度,是可以持續做很久的一個技術。
海水這部分,我們大量參考了刺客信條的海水系統。刺客信條4-黑旗中的海水系統給我們留下了非常深刻的印象,海水的表現、和天氣互動、以及海水和船的交互,是當時最頂尖的水準了,也只有神海3后期的海水能超越,但那個又是略有不同的技術體系。
水的這一塊持續進步中,也加入了各種參數,二手QQ購買平臺可以在統一的天氣框架下調整天氣表現,表達出狂風暴雨天氣下的驚濤駭浪。
另一邊,有了觀感良好的大海,總是希望有些不一樣的gameplay。既然大家都是刺客信條海戰系統的深度愛好者,我們的第一想法自然就是做一個海戰系統,這個能展現技術實力,有非常大的挑戰,而且用各種違反物理常識的輕功在大海上跳躍和戰斗,想想也是非常有趣的,應該可以非常出彩。
但難題接蹱而至。
最初的網絡戰斗體系,在位移層面,并沒有考慮platform。也就是說,所有的位移相關的事情,默認都是發生在整個世界坐標體系下,并沒有考慮人可能站在一個會移動的物體上。技術上倒是不復雜,所有的位移計算,都應該要考慮站在什么平臺上,在這個例子中就是船上,位移要加上船的速度。但在這個接近上線的關口,我們卻不敢做如此激進的改動。這個改動意味著所有的前后臺邏輯都需要重新梳理,所有戰斗體系中的位移要另行計算,多層移動的邏輯也要改變算法,技能中和場景的碰撞也面臨沖擊。更可怕的是,即使程序員有勇氣去改,我們又怎么面對策劃的大量數據,他們是不是需要重新配置數據,我們怎么面對玩家測試,已經有無數人測試過,驗證過我們的移動體系,重新寫一個,會有多大的沖擊呢?移動模塊是一個最基礎的模塊,改變實在太大。
當年多層碰撞體系,也是考慮到沖擊過大,所以沒有做真實物理碰撞,而是用折中的多層碰撞結構,這次的platform移動,相比上次,更是動搖了根本,實在下不了決心推翻重做。
項目大了,獨立出自己的意志,裹挾著你的喜好,去向你不想的地方。理想和現實,總要有選擇,我們還是選擇了面對現實,收起不必要的幻想,先做點基礎工作,把復雜留給以后。
既然如此,就只能做一個非常簡單的航海玩法了。玩法本身不展開,大家可以隨意吐槽,只說一下船體互動。
船的互動,是有一些文章介紹過的,刺客信條和神海的文章都有講過如何做船和水的交互。簡單說,就是在船下綁定很多probe,可以想象成一個虛擬的船,綁定了很多浮筒。每幀判斷浮筒和水面的位置差,來判斷船應該受到多少浮力,然后相應調整船的姿態。
但這工作真不是一帆風順的。我們先讓一個小楊同學去開發這個模塊,當時離上線只有3周不到,我判斷這個功能并不好做,如果來不及做好,老于又要動刀砍特性了。
偏偏越著急,越容易出問題。小楊做啥都挺給力,但做船就是沒找到感覺,半天沒有好的效果。船體和水的互動,一直有奇怪的問題,都談不上什么物理規律,最基礎的觀感就不對。
實在來不及了,又過了一周,再搞不定,就真沒法上線用了。咬咬牙,又拉了個壯丁,叫何老師一起來搞。
何老師是一個骨骼清奇,身軀微胖,腦洞大開大合的程序員。早年和我初識,天天魔獸3單挑,連贏我幾個月。然而辦公室里面回蕩的一直是他的慘叫,天天哭喊著不行了要打不過了,不明真相的群眾以為我又虐他。好事者過來張望,何老師一邊喊著救命救命,一邊指揮部隊在我基地中拆遷違章建筑,驅趕采礦農民。
合作多年,對何老師有足夠的信任。岔開話題,稍微談幾句,從占用leader的管理精力的維度,我怎么分類程序員。我們把能不能獨立工作作為一個維度,需不需指導作為另一個維度,就可以看到有四類程序員。大致分為:不能干活不需要指導,不能干活需要指導,能干活需要指導和能干活不需要指導。
最低級的類別,不能獨立工作且不需要指導。這類同學只能給最簡單的工作,也沒什么潛力,指導的念頭都沒了。
稍好點的,不能獨立工作但需要指導。這類同學已經有不錯的能力,但由于時不時需要leader投入一定的關注,而在一個大團隊里面,leader的精力永遠是團隊的瓶頸,所以這類同學有價值,但團隊里面如果這類人手太多,項目規模是很難擴大的。
更好點的,是能獨立工作但需要指導的。這類人需要有簡單的方向指導,就可以交付很好的成果,定期匯報成果,不用太操心做不出來,就是進度上要操心一下。
最好的,就是能獨立工作且不需要指導的。你發現團隊有啥搞不定,扔過去讓他搞定即可。也不用管太多,對他有充分的信心,可以近似認為,如果他也沒有搞定,那很有可能這個特性換了誰都沒有辦法搞定的。
最后一類就是預研的技術終結者,他一出手,要么功能做成,要么徹底失敗,再無回旋余地。
何老師就要擔任這樣一個技術終結者。他做完奇葩的多進程加載,又喊著:不行啊、太難了、搞不定、要被開除、老板饒命啊,勉勉強強接下了燙手的熱山芋,一起來開發船和水的互動。
幾天內就看見了明顯的改善,挑剔的老于也覺得,有希望,這個特性可以有。何老師又繼續努力了一周,差不多把這個特性做進了版本,船終于可以在海上航行,隨著海浪,一起搖擺。
我也已經記不清具體他是怎么解決問題的,這不就是feature teminator的價值所在。項目中有太多細節需要leader操心,如果有人能讓我減少關注,且依然能安全交付feature,我就可以把精力放在更危險的領域,更好的確保版本的安全。
BTW,知道大家又要吐槽航海玩法單調,枯燥乏味,沒有好好利用功能。但從這一篇來看,策劃也很不容易,航海不僅僅他們的問題,技術層面依然有很多不容易解決的問題,也許值得另外起一個項目單獨解決。
總結
以上是生活随笔為你收集整理的The world at your fingertips — 天涯明月刀幕后23(海战)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The world at your fi
- 下一篇: 《守墓人》主程:如何用像素风做出真实的游