完全不可能。
1、物理規律的限制
如果你玩過CS,就知道50ms的延遲和100ms的延遲是天壤之別;甚至哪怕是WOW這樣粗笨的東西,200ms的延遲和500ms也毫無可比性。
然而,CS只需7K頻寬,WOW即便是打戰場,也只需十幾至多幾十K的頻寬。
而1080P的視訊,要達到遊戲所需的解析度,起碼要幾M的頻寬。
不僅如此。視訊之所以能壓縮,原因是我們早已知道了它的全部內容,所以可以挑一個關鍵幀完全傳輸過去、然後剩下的幀就只需傳輸與前一幀的差異部份。
這個過程,就導致從視訊生成(捕獲)到傳輸再到客戶機上重新播放出來,起碼會因為編碼-解碼過程額外引入幾個乃至幾百個毫秒的延遲(換句話說,在本機上,第一幀畫面播放時,第二幀畫面已經在後台計算生成了;第二幀畫完給顯卡顯示,第三幀開畫[不這樣做會導致螢幕閃爍];而一旦要透過網路傳輸,就必須插入一個伺服端生成-客戶端重建過程)——顯然,這個額外延遲是不可能去掉的,網路頻寬再高都不行(更大的頻寬可以減少傳輸一幀數據所需的時間,但不可能減少到0)。
不壓縮直接傳?那麽每幅1080p畫面就是一副6M的高畫質大圖——50M位/秒的寬頻需要1秒才能傳過去;哪怕google那變態的1Gbps寬頻,折算下來也不過128M字節/秒——4.6個毫秒的延遲就這樣加進去了。
你可以試一試,哪怕是你的電腦網路攝影機捕捉視訊、然後直接在本機上顯示,中間都有明顯可覺察的延遲(至少約100毫秒)。
這還只是1080P。想想即將進入主流的4K級怎麽辦吧。
而要讓玩家產生「即時」的感覺,那麽從輸入指令、到畫面上有所反應,這個延遲的要求就非常苛刻,不然就會出現非常「肉」的感覺,完全不是玩遊戲的體驗。
——想想前些年是怎麽黑android反應遲鈍的吧。就因為從使用者輸入到它做出響應,比iPhone多延遲了幾個毫秒,就已經明顯「不跟手」了:這可還是普通套用。
然後,光速是大約30萬公裏每秒;北京到深圳直線距離大約有2000公裏;不考慮電/光訊號在電纜/光纖內傳輸時,速度低於真空光速這一事實、也不考慮途中經過的交換機/路由器所引入的額外延遲(每一跳至少引入大約一兩個毫秒的延遲),訊號從北京傳到深圳,至少就需要7個毫秒。
然而,這只是不到一半的時間。因為完整的過程是:使用者輸入指令---指令傳輸給千裏外的伺服器---伺服器做一番邏輯運算,最終渲染出視訊影像---影像傳輸給使用者主機(至少要把一幀傳完)---使用者機解碼、顯示。
換句話說,物理規律決定了,即便傳輸途徑最佳化到極限(不經過交換機/路由器直達)、傳輸速率無限大(一幀數據瞬間傳完)、伺服器和使用者主機效能無限(可以無延遲編解碼視訊),玩家發出指令到畫面響應,也需要至少14個毫秒;實際工程中,真正能做到的極限,應該不會低於50ms——幾百年內的極限,除非基礎物理理論允許超光速,否則拿來天頂星科技都不行。
你不妨ping一下本地網站,看看這個值究竟是多少。
預設情況下,ping發出去的,還只是32字節的探測包。視訊傳輸那種大包,延遲自然更大。
作為一個IT界老油條,這麽多年,哪怕本地互聯網伺服器,能把延遲做到30毫秒以下的都幾乎見不到;最為極限的體驗,是當年在家裏加入附近一家網咖搞的CS伺服器,但同樣也有十幾毫秒的延遲。
其他的,哪怕是在公司內網ping公司內部的伺服器,一般都有超過20ms的延遲(這是因為,為節約成本,公司區域網路內部使用了普通的百元級路由器;這種路由器一旦開啟流控等其實很基本的「高級」功能,它的芯片效能/記憶體容量就捉襟見肘了)。
有人可能會說了:哎呀足夠了,50ms玩CS都夠了。
很遺憾,完全不夠。因為這個50ms延遲,和CS的50ms延遲有本質區別。
CS之類遊戲在背後做了很多最佳化。其中之一,就是玩家做出操作後,就立即在本地機上完成渲染,讓他能立即看到操作反饋;同時,這個訊號透過網路傳輸給伺服器,等待伺服器響應——如果這個響應和本地預測相同,那就不理它;否則就要重新渲染(所以在延遲很高的時候玩CS,經常會看到有人沖出去老遠、然後忽然回到他沖出來的地方並死掉:這就是本地預測和伺服器響應出現了矛盾)。
即便如此,超過50ms延遲的網路上,都經常出現「我明明瞄準他了怎麽他就是毫發無傷」的惡心場景——想要讓高手玩家有「指哪打哪」的體驗,延遲就得低於50。
而延遲一旦達到100ms,最最普通的CS玩家都會發現「命中基本靠蒙」——距離遠還能打中,近距離跑動射擊幾乎怎麽打都會打空。
換句話說,CS的響應延遲是響應延遲,網路延遲是網路延遲;所以,50ms的網路延遲下玩CS,仍然勉強可以有「即時」的感覺;但如果是雲遊戲……網路延遲就是響應延遲(最最理想的演算法!),此時畫面明顯「不跟手」,即玩家操縱滑鼠先動,準心要「遲疑」一下才能跟隨滑鼠動作,這對槍戰類遊戲來說是完全不能接受的。
註意,這還只是最最理想化的演算法。實踐中,網路不可能直線拉你家。七拐八彎的一拐,距離就長多了(咱就不說玩美服歐服了);然後再加上每個交換機/路由器額外引入的1~2ms左右延遲、視訊編解碼必需的幾個毫秒延遲……
好吧,你透過雲伺服器下個象棋、玩個回合制RPG什麽的,還是可以的。
別的嘛……洗洗睡吧。
PS:當年玩WOW的應該深有體會:一旦同宿舍的朋友上網幹點什麽(看視訊或下載東西),你就大機率要被團長罵然後扣DKP……我就是為了解決這個問題才買了帶流控的路由器,結果流控開時間略長延遲直接飆300+。想得到電信級的可靠性,你就得掏電信級的價格——有的路由器賣2000,還有的賣20000甚至20萬,真不是漫天要價。
2、硬體架構的限制
回答我,64顆CPU的伺服器,其運算效能相當於多少台相同CPU型別的單CPU伺服器?
很遺憾。64顆CPU的伺服器,它的效能很可能還不如40台單CPU伺服器。
各國競相研制的、數千顆CPU的超級電腦,在專用演算法的協助下,能有60%的利用率,已經算先進水平了——換句話說,1000顆CPU,只能當600顆用。
這是因為,多顆CPU,若共享記憶體就會爭用記憶體,共享匯流排就爭用匯流排——記憶體好解決,為每顆CPU多插幾根記憶體條就行;但匯流排……要麽讓它隨CPU數目按平方關系增長(於是成本迅速失控),要麽……就爭用吧。
所以,和一般人的想象相反,高效能伺服器的效能價格比,其實要比中低效能的伺服器、家用機低得多得多——所以google才用普通PC機組成的集群當伺服器。
換句話說,除非電腦基本原理改變;否則,伺服器上的計算資源,永遠比客戶終端要昂貴得多——換句話說,一堆效能夠用的分布式客戶機,永遠比一台效能絕佳的伺服器便宜。
高效能伺服器的優勢,其實就是……省電、可靠、維護方便。沒了。
然而,這裏還只考慮了CPU。要即時渲染遊戲級別的3D動畫,這必須GPU來。
所謂GPU,其本身就是N多核心組成的並列機;要多支持一個玩家,就需要多一塊的GPU;和CPU一樣,每多一塊GPU,就多了一個爭用匯流排的熊孩子……
要支持200個使用者,你得插200塊GPU;幸好,GPU之間不需要互動,那麽我們只要多弄200條匯流排就行了……但CPU可不行,建模什麽都得它來……不過只做這個的話,是不是可以一一隔離?
好主意,咱為每個玩家買台PC機吧。
(當然,可以透過特制的、支持多攝影機的GPU來稍微緩解這個問題;但也只是緩解而已;而且,用這種方案緩解GPU需求,就意味著爭用匯流排的熊孩子又多了一大坨……)
3、越來越強悍的便攜終端
做一個效能強悍的CPU,對現在的技術來說實在太容易了,而且會越來越容易。
沒有任何跡象、任何原理會限制客戶終端使用的CPU;這些CPU體積只會越來越便攜、效能越來越強悍、功耗卻越來越低——而且,得利於現代大工業生產,它們越優秀、適用面越廣,生產成本就越低。
舉例來說,現在的USB鍵盤/滑鼠之類外設,核心芯片就是一顆1MHZ的8位元微控制器;尤其對鍵盤這樣的低速裝置來說,一顆1MHZ的微控制器足夠同時控制數百個鍵盤了。
為什麽要如此「浪費」呢?
因為專門設計的、更低效能的CPU,套用面實在太窄;銷量上不去,價格就下不來。
所以,鍵盤、遙控器等等壓根不需要什麽計算能力的裝置,人們都給它塞了一顆相當強悍的CPU進去——完全不理會這顆CPU的效能,已經快趕上當年的紅白機了。
不用這種市場上鋪貨量最大的、雖然效能過分強悍但價格卻最為低廉的CPU,才是在鋪張浪費呢。
廢話少說,咱看看這個:
¥0-¥500 - Android 或 IOS / 手機 / 手機\通訊
三四百塊錢左右隨便撿個渣渣android,這個android效能如何呢?
普遍來說是:4~8核,1GHZ以上時脈;個別還帶GPU。
好吧,放著這便宜的、4核1.2G本地CPU不用,去和幾百人擠著用你幾十萬塊錢買來的、連GPU都沒有的渣渣多CPU伺服器?
Dell PowerEdge伺服器
PS:註意預設是最低配報價。滿CPU/記憶體再加上專業級的RAID,一台效能可觀的伺服器,價格往往就飆過了幾十萬。
當年我們玩過一台四十多萬的頂配戴爾710伺服器,48核768G記憶體+RAID;在上面建立200個VPS例項後,近一半例項無法登陸,另有十幾個可登陸的例項連MySQL都跑不起來。
哪怕經過最佳化,這台伺服器真能撐起200使用者同時線上,每人2000的伺服器成本(電費網費人工統統不計),效能也玩不過當時200~400的入門級雜牌Android手機(哪怕4G的CPU,讓每個核心服務4個人也太過瘋狂;再加上記憶體存取沖突/頻寬限制,打不過當時600MHZ 512M記憶體的入門手機才是正常的)。
尤其是那些帶GPU的、三四百的手機,跑遊戲方面的套用,直接完爆那些沒有GPU的、十幾萬甚至幾十萬的伺服器有木有。
好吧,你有錢,搬台雙顯卡交火的圖形工作站來,能拼得過10部三四百的手機嗎?
可一台圖形工作站……三四千?夠買那倆顯卡不夠?
好吧,你掏上幾十萬,誘惑使用者放棄自己手裏幾千塊錢買來的效能強悍的旗艦;最後卻只能給每個使用者提供個連市面上最渣的手機效能的零頭都不如的渣渣?
這也太情懷了吧。
類似前面關於鍵盤用CPU的討論,將來,哪怕雲服務已經普及,個人終端之類裝置,CPU頻率也不太可能會低於1G——起碼得夠跑瀏覽器、夠解碼視訊吧?
而且,這種大批次生產的、在將來的科技條件下完全無技術含量的低端CPU,價格很可能會降到一個非常驚人的程度——比如,上百兆甚至幾G時脈的處理器,被無差別的塞到家用路由器(現在已經塞進去了)、智慧家電,甚至……滑鼠鍵盤遙控器裏面。
就好象現在我們隨隨便便把接近紅白機效能的CPU塞進鍵盤裏面一樣。
唾手可得的、強悍而廉價的本地計算能力,這才是未來的發展趨勢;放棄這些免費的本地資源,強推那些旨在壟斷的各種雲XX,顯然是在逆潮流而動。
——當然,這不是在反對雲技術。
我只是在陳述一個事實:雲技術絕不等於強制封印使用者的本地計算能力、然後逼他們使用昂貴而劣質的遠端服務:有自由軟體,你封不住的。
恰恰相反,雲技術應該是補使用者本地資源之不足,幫使用者解決數據可靠性、存取性、共享等問題(典型如雲端儲存)、以及計算能力問題(典型如搜尋)等等。
綜上,雲遊戲顯然不過是扯淡罷了。
退一萬步,雲遊戲也絕不會是現在那種一切都放遠端、本地什麽都沒有的扯淡定義。
最最起碼,視訊渲染是必須留在原生的;否則,物理學、電腦架構以及成本等等,都不允許這種扯淡玩意兒出現。
我認為一種可行的方案是:本地先下載模型、貼圖、基本動作邏輯等等,由遠端控制遊戲邏輯,有點像D3、WOW模式,只是本地客戶端可以做的更輕量一些。
更好的辦法是本地客戶端標準化,提供一整套的API甚至某種控制語言,伺服器利用這些API/語言就可以即時在本地生成類D3/WOW的客戶端——類似webGL技術,但還要更強悍一些,以便本地能有機會,透過設定的邏輯對使用者操作做出即時反應;或者,就好象half-life以及它那一大堆MOD一樣,加個MOD就變CS,再加個又成了TF……只是要更靈活、更開放同時更安全一些。
但這個技術,首先,和現在的伺服器-客戶機模式並無根本區別,只是遊戲客戶端(遊戲引擎)標準化了而已;其次,對本地計算能力仍然有較高要求(甚至更高,畢竟要考慮安全性,不太可能允許隨便跑原生程式碼的)——一句話,就D3那傻樣,除了客戶端(引擎)標準化了之外,沒啥本質改變。