第197章 用技術重現古戰場吧!
所以什麼叫:「如果士兵不是最小單位,兵團才是?」
這個問題縈繞在整個技術部員工的腦海中。
人是無法理解自己沒有見過的事物的。
就如此時,就如當今,就如在場的諸位,哪怕渡邊這樣的技術男,也一時間無法轉過彎來。
為什麼?
就以當下幾部最具代表性的RTS為例子吧。
西木工作室《命令與征服》《紅色警戒》。
玩家可操控的單位,可以是一輛坦克、一個肉人、一架飛機或者一隻狗————
而其中每個單位,都有自己的血量、坐標、目標、狀態、移動邏輯和攻擊邏輯————
而這,就是最典型的對象式建模。
暴雪的《星際爭霸》和《魔獸爭霸》?
雖然比《紅警》複雜得多,AI、兵種、博弈都更深。
但底層思路一樣是,獸人苦工是一個單位,飛龍和小狗也各是一個單位————
其他的還有什麼《帝國時代》巴拉巴拉,不多贅述。
反正對當下這個時代的人來說,他們對「戰場」這件事的默認理解,就等於很多個體單位的集合。
那滑鼠一點一划拉,看似框住的是一個整體,但其實是框住很多對象,而不是「一個兵團」。
什麼意思呢?
就好比你在紅警里框了100個動員兵,讓他們衝去打犀牛坦克。
你眼睛裡看見的,是100個人一起動。
但在遊戲後台呢,其實是給這100個100塊的好兄弟,挨個單獨算了一遍數據。
~每個兵的坐標在哪?往哪走?走多快?要不要躲障礙物?
嚯~每個兵打誰?打了多少傷害?自己掉了多少血?死沒死?
那這個兵要播放跑步動畫?還是開槍動畫?還是死亡動畫?
所以懂了吧!
如果用這樣的思路,來做《三國》,來做一場真實的戰爭?
鬧呢?
所以包括久多良木健在內的一眾人才會覺得。
蘇硯承提出所謂的千人萬人同屏,根本就是異想天開,是不可能做到的事情啊!
就算現在,他又提出了最小單位不是士兵,而是兵團。
對他們而言,這些想法既反邏輯又超越時代。
很多人的第一反應,都是覺得:「可兵團明明是很多士兵構成的啊?」
「你不還是得先有士兵,才能有兵團?」
或者還有更激進一點的,是那些RTS的死忠粉。
「社長!」
「沒有採礦、沒有造兵、沒有編隊、也沒有點哪走哪和點誰打誰,這還算RTS遊戲嗎?」
「所以社長,你是想要挑戰RTS遊戲品類的邊界嗎?」
對此,蘇硯承直接拍桌怒斥。
「沒有矛盾的事物,只會陷入發展的停滯,難以革新的東西,最後只會死亡!」
「而且,誰說做不到的!程式設計師的美妙就在這裡,不是嗎?」
蘇硯承激情四射地給他們教學講解。
「我們不是魔法師,不能憑空捏造奇蹟,但我們卻是最頂級的魔術師,善用欺詐的手法來達成
最終的目的!」
「那麼有沒有什麼辦法能————」
「哦!」
渡邊思索了很久,大概理解了蘇硯承的想法。
「所以你打算降低精度、假裝人數多、用廉價方法騙玩家?」
雖然很難聽,而且還有些偏差。
「但差不多摸到我的意思了!」
蘇硯承給了他一個響指,讚賞道,「但是你只需要再想深一點,那就是高層的真實,不一定靠低層的獨立來實現,還有對玩家來說,細節與個體其實並不重要,只要秩序、局勢、反饋、場面是真的,那麼這觀感,它就是真的!」
「細說?」
「意思就是,我們的遊戲不必模擬戰爭本身,只需要模擬,戰爭被人看見的樣子!」
而以玩家的角度來看,萬人戰場的真實感,應該來自於哪些東西?
陣列推進、密集衝撞、側翼包抄、局部混亂、騎兵切入、潰敗蔓延————
還有旌旗、煙塵、吶喊、屍體、和一眼望去的人潮————
渡邊思索幾秒,瞭然的舒展起眉頭,「噝,有點意思了~」
「哦,我有點懂了!」
有點懂就好往下講了。
蘇硯承沒有停下解釋,繼續站到白板面前,開始講解該怎麼做到。
畢竟他可不是只有想法,然後讓底下人去想辦法實現的那種領導。
於是上來,先在白板上畫出一個大括號,還有幾個序號。
「所以該怎麼實現這個需求呢?」
「我打算開發一個專門的代理系統,就叫她————軍勢代理系統吧!」
他一邊說,一邊在白板上書寫。
「而這套系統的頂層邏輯,是讓真正參與進計算的,不再是屏幕里的數萬人。」
「而是其中的10個軍團,和每個軍團下5到10個隊列,再到每個隊列下若干表現用的士兵。」
說罷,蘇硯承回頭掃了眼部門會議室。
發現底下好幾個人都眼神迷茫的看著自己,還有幾個管他聽沒聽懂先記筆記的。
「看我幹嘛看板啊!」
他猛敲了敲白板,「還有下邊記筆記的別記了,一會兒又不給你們擦,都給我抬頭聽講,聽懂了比什麼都強!」
噝!
這個感覺,好熟悉!
忽然一陣來自底層代碼的恐懼,讓眾人一個哆嗦,坐正抬頭聽講。
蘇硯承點點頭,接著扭身在白板上寫道。
「所以接著之前的講,我們參與計算的,也不再是單獨的士兵,而是要給它分成三層!」
「真正決策的是「隊」,真正結算的是「陣」,真正表現出的是人」。
——」又是一陣聽天書般的迷茫。
好在蘇硯承繼續解釋。
「第一層參與計算的結構,是軍團層,這一層需要計算的單位數量最少,一次戰爭里就幾十個。」
「我們讓這一層,負責處理戰鬥中的戰術目標、軍令、士氣、指揮半徑和地形影響,還有計算是否推進、防守還是潰退————」
「第二層結構,是隊列層,這一層可能就有幾百個隊列代理負責處理陣型展開、局部接敵、朝向調整、衝鋒狀態及受擊反應等等等等————」
蘇硯承說到一半口乾舌燥。
瀧川雅美在最好的timing,適時把水杯遞過來。
蘇硯承隨口道謝,一個戰術喝水,然後接著說道:「然後第三層,就是士兵層,表現層。」
「這一層,我們只需要讓玩家們看見很多士兵們的表現,簡單來說就是前端!」
「所以這一層,根本不需要每個十兵都能完整思考,或者給他們單獨計算邏輯和渲染。」
「我們只需要讓他們跟隨所在隊列、做局部避讓、播放合適動畫、和在必要時響應近處的戰鬥就行!」
至此,三層架構完成!
思路一下就通暢了!
哦!!
在座的程式設計師都不是傻子,隨著蘇硯承給他們一點點的拆開來講。
似乎腦袋一下子就被貫穿了。
一個個心明眼亮,激動的左右對視。
臥槽我聽懂了!
軍團層是什麼意思,就是把原來上萬個單位的宏觀決策,收束到幾十個軍團代理。
這樣下來,算力消耗幾乎可以忽略不計!
而隊列層呢?
就是把微觀的戰鬥結算,從單個士兵,上收到隊列級!
這樣就避免了上萬個單位的血量、傷害獨立計算。
算力消耗降低好幾個數量級!
然後就是————
呃,難道就我沒聽懂嗎?
瀧川雅美看著這群莫名開始激動的科技人,有些不好意思,戳了戳身邊的渡邊:「所以能給我做個比喻嗎,我也想聽懂。」
渡邊淡淡的解釋,「簡單來說,就是你去方陣表演,你不需要思考,旁邊人做什麼你做什麼就行了。
徹底剝離掉你的決策和結算邏輯,這樣你就不會消耗算力了,至于思考和計算和決策這些更複雜的事情,交給你的上一層和上上一層。」
「哦,這樣嘛,好厲害啊!」
瀧川雅美雙目灼灼,「所以總結下來,其實就前線的將士全身心投入到戰場中,聽命行事,奮力殺敵就可以,而後方人員要考慮的事情就很多了!」
咦?
「雖然你這句話有點怪,但差不多就這麼個意思。」
渡邊歪了歪頭,隨後舉手,「但我又出現了新的問題,老師!」
「好的,渡邊同學你問!」
「那麼在表現層,你打算怎麼表現呢?」
渡邊問,「如果還是要計算每個士兵的走位,是不是又徒費算力,又繞回去了呢?」
「這個問題就很關鍵了啊,拉文克勞加十分!」
蘇硯承笑著點了點他,轉身立馬在白板上寫下了一連串的字符。
看著複雜的公式在白板上成型。
底下一陣的竊竊私語,「學生們」互相交換眼神。
「這是————」
渡邊逐漸眼前一亮:「原來如此,Boids算法,居然打算用在遊戲上嗎,真有你的啊,蘇硯承!」
Boids算法?
啥啥啥,寫的這又是啥!
來自各大遊戲公司的技術精英們,只有幾個閃出恍然大悟的表情,而大多數居然都流露了慚愧的神色。
Boids算法並不是新鮮東西,全稱其實叫作:群體運動模型Boidss模型。
是1986年,一個美國計算機圖形學的頂尖專家,克雷格·雷諾茲,老哥根據觀察鳥群和魚群的運動方式,而創作出來的仿真模擬模型。
這種模型通過分離、對齊、內聚三條極簡的個體行為規則,就模擬出了鳥群、魚群、獸群的自
然集群運動。
最新的幾次運用是在好萊塢,《蝙蝠俠歸來》的蝙蝠群,《獅子王》的角馬群————都運用了這種模型。
而在至今的遊戲行業呢?
暫無!
「所以分離、對齊、內聚,只需要三條基本規則,」
蘇硯承振臂呼喊,「那麼我們便能基於大模型下,經過一點點微調,就能完美地重現出一個完整的軍陣出來!」
分離、對齊、內聚是什麼?
簡單來說就是別撞到邊上的、跟上左右的、別脫離整個隊————
這複雜嗎?
「不,這甚至不需要複雜的AI邏輯,也不需要高開銷的路徑計算!」
渡邊也開始興奮地分析和計算,手指開始在鍵盤上狂敲。
「每個個體只需要參考周圍3到5個士兵的狀態,做幾次簡單的浮點運算————就能模擬出極其真實的戰場人群行為!」
「同時,Boids算法的每個個體計算,都是完全獨立的,天生就適合併行化處理,所以————」蘇硯承點頭,話還沒說完。
渡邊眼前一亮:「所以我們就可以直接調用PS2的vu單元,來做算法的硬體加速!」
蘇硯承和他對視,笑著點頭:「就是這樣!」
三天後。
索尼SCE,地下硬體測試實驗室。
中央的一台21寸特麗瓏監視器,正連著台鎖在防靜電機櫃裡的PS2最終版工程樣機。
久多良木健站在監視器正前方,雙臂抱著胸口,一隻手捂住嘴巴,不停搓著揉著,緊張無比。
他身後,索尼本部的核心硬體工程師團隊圍繞站立,一會兒注視跟前屏幕,一會兒扭頭觀察正在調試設備的蘇硯承和渡邊。
「好了嗎?」很久,久多良木健皺著眉問。
「好了,請看吧!」蘇硯承起身,和他並肩而站。
話音落下,身後的渡邊抬手敲下回車,監視器亮起。
畫面里,是光年引擎的演示區,沒有精緻貼圖,也沒有光影渲染,甚至連基礎的材質都沒有。
只有灰白低模的空曠場景,和稜角分明的幾何體低模士兵————
但這士兵出現在屏幕上的————竟是成千上萬,鋪天蓋地,宛若海潮!
「納尼!!」
「這不可能!」
技術員們驚呼出聲。
而再一次的,久多良木健被身邊的少年所震驚到了!
之前是在頂層,這次卻在地下。
隨後,渡邊敲擊鍵盤,連續輸入指令。
卻見上千幾何士兵組成的八個方陣,開始緩慢地在純灰的坡面上移動。
「噠噠噠!」
鍵盤再敲擊,左右兩軍速度變緩,如巨大的雁張開雙翼——————
竟形成一個古代兵書里記載過的雁形陣!
這在現代RTS遊戲裡,幾乎是不可能做到的畫面!
此刻卻復現在眾人眼前,顯得龐大、密集、有序————
仿佛真窺見那古時的戰場。
於是久多良木健和一眾工程師們,只透過這粗糙的原型,莫名其妙就腦補並賦予了他們材質和色彩。
然後恍惚間,他們開始暢想,開始幻想起自己拿著手柄,就能指揮起千軍萬馬————
仿佛按下手柄的衝鋒鍵,就能聽見整個軍陣的吶喊,那聲音順著音響震得手心發麻。
仿佛能看見虎牢關下,十八路諸侯的聯軍鋪天蓋地,呂布單騎出陣,身後的并州鐵騎列成鋒矢,馬蹄踐踏,揚起煙塵。
亦或者官渡之戰,他們自己親率輕騎,繞後奔襲烏巢,隊列隨心而動,火光順風蔓延!
還是那赤壁江上,玩家一聲令下,上千艘蒙沖鬥艦,順著東風沖向曹營,火船相撞,江面船隊潰散,士兵跳江、潰敗————
而他們,就和那周郎並肩,親眼看著自己彈指間,將春水燒成火海。
「羽扇綸巾,談笑間,檣櫓灰飛煙滅————」
久多良木健忽然想起了這首詞,忍不住輕聲念著,無限遐想。
「我也是,三國迷啊————」
他本來一開始是不信的,可當自己的機器被真正榨出想像之外的東西時。
反而比誰都興奮了!
過了很久,他忍不住翹著嘴角扭頭,看向雄姿英發的蘇硯承。
「沒想到你,居然真的重新定義了RTS遊戲,也重現了最真實的戰場!」
「所以你是怎麼做到————」
卻見蘇硯承笑而不語,久多良木健忽然止住了話,66
沉默許久,久多良木健只自嘲一笑,擺擺手:「一會兒請麻煩你跟我上樓來,我們再重新談談條件吧。」
頓了頓,他又覺得不行,搖頭改口:「我的意思是,所有的條件,都要重談!」
>