首頁> 遊戲競技> 目錄頁> 第526章 我們需要全新的聯機算法

第526章 我們需要全新的聯機算法

2026-10-19 13:30:52 作者: 哈娜歐菲手

  回到gamenova。

  姑且是安排了一下部分大型街機廳的改造計劃。

  對於美國這種看似有些水土不服的環境,這樣的模式到底行不行得通,完全還是個未知數。

  至少試試看總沒錯。

  至於接下來要做的事情,那自然就是迎接年底聖誕檔的大作了。

  《雷神之錘2》

  暌違許久的續作終於要來了。

  fps遊戲也算是gamenova的鎮宅之寶了。

  只要《德軍總部3d》、《doom》以及《quake》還在,那gamenova在電子遊戲領域的影響力就註定是永遠掛在第一檔。

  全球首款3d遊戲,以及全球首款真3d遊戲這些名號,已經足以讓gamenova名垂千古了。

  哪怕是在百年後,恐怕那些對遊戲史進行考古的人們,也仍然會重新翻開這段歷史。

  而現在,是時候讓這個名號再度加碼了。  『咔』

  林立新將一張軟盤送進驅動器里,面對著眼前的那台笨重的矢量顯示器。

  綠色的線條從黑色背景上亮起,勾畫出一條立體的3d走廊。

  隨著他在鍵盤上操作,遊戲的主角便跟著前進、後退,轉向。

  唯一的問題大概就是這些操作都非常的僵硬。

  每次移動都需要等待這台破電腦重新繪製整個畫面。

  轉頭也只能90度旋轉,連《德軍總部3d》那種水平自由轉向都做不到。

  這不是gamenova的作品。

  它的年紀可要比gamenova都大得多。

  這是《maze war(迷宮戰爭)》,已經是1973年誕生的作品了。

  是的,如果真的要嚴格意義上追溯起第一人稱視角射擊遊戲,其實《mazewar》要比《德軍總部3d》早得多。

  從學術的角度來講,它才是真正意義上的『最早的fps』。  而負責運行它的這台『破電腦』,在當年是只有大學高校才玩得起的科研級計算機。

  也正是因為這種普及度上的缺憾,才導致它只能算是一個『科研項目』,而非真的遊戲。

  直到《德軍總部3d》的誕生,才算是真正將fps帶到了普通人的視角里。

  還順帶實現了自由轉頭和自由移動。

  除了3d之外,《maze war》這位老祖宗級的作品,還實現了一個對fps可以說是命根子的功能。

  聯網對戰。

  不是現在這種已經逐漸有些樣子了的網際網路。

  

  而是區域網。

  事實上gamenova過去就曾參考過它的一些實現方式。

  《midi maze》,一款靠midi音頻線將多台pc連接在一起實現聯網對戰的作品,也算是《maze》系列的其中一條分支。

  至於再後來的arpanet阿帕網,其實也有《maze》對應的版本。

  「它的聯網機制太原始了。」  卡馬克的聲音從旁響起。

  他剛才啃完了《maze war》的源碼。

  「我猜也是,應該是類似咱們《文明》里的那種實現方式?」

  「嗯,每個玩家在操作後都要所有人同步一次數據,太低效了。」

  卡馬克點點頭。

  《maze war》到底是個快20年前的作品了,用如今的眼光來看,簡直原始的不像話。

  假設玩家a在遊戲裡移動了一步,那客戶端就要給所有玩家發送這個移動消息。

  包含了移動的玩家是誰、移動到的位置、方向等各種亂七八糟的信息。

  當所有人都收到後,才會進行一次全量同步。

  這種實現方式在那個時代倒是沒什麼毛病。

  一局遊戲撐死也就三四個玩家,網絡也只需要負責傳輸這些數據,沒有其他的上下行開支,更沒有多麼複雜的地圖。


  但哪怕是再稍稍進步一丟丟,快進到《doom》的時代,這套系統就完全行不通了。  「跟咱們的p2p鎖步同步肯定沒法比,20年的代差呢。」

  林立新擺擺手。

  《quake》有聯機對戰的需求,gamenova早就已經嘗試解決過這方面的問題。

  當時他們採用的方案是p2p鎖步同步。

  不同於《maze war》這種低效的處理方式,《quake》換用了一套更加先進的方案。

  每一名玩家要在每一幀內都匯報操作。

  只有局內所有人都廣播完了操作,下一幀才會開始。

  加上一些優化用的預測和回滾,整個遊戲這才勉強算是能夠正常運作了。

  不過p2p也催生出了一個非常嚴重的問題。

  一卡俱卡。

  好處是不會有人因為網絡差就被別人血虐。

  但壞處也在這裡,所有人都要跟著一起卡,一旦局裡有個卡比,誰也別想玩過癮。  這個問題幾乎無解,目前社群里比較主流的解決方案就是……搬家。

  如果兩人之間的物理距離變近了,那網絡延遲自然也會變低。

  這也是林立新現在在這兒琢磨的原因。

  他需要尋找到一個更優秀的方案,以應對接下來的新作。

  「《quake》現在的聯機代碼也已經過時了,不適合高速發展的網際網路時代。」

  「是……」

  卡馬克輕輕點了點頭。

  儘管這裡面有很多他當初的奇思妙想,是他最引以為傲的『榮耀』。

  可即便如此,他也不得不承認這件事。

  過時了。

  時代發展的速度遠遠超過了任何人的想像。

  興許一年前還毀天滅地無往不利的東西,一年後就會變成無人問津的過時老梆子。  就像是i486輕而易舉地就超越了athena當初獨領風騷的參數那樣。

  「不必擔心,我們其實已經有差不多的技術棧了,只不過它還欠缺一些優化。」

  林立新看到卡馬克那有些受損的驕傲,出聲安慰了一句。

  對於一位真正的天才來說,技術被否定的確是一件很不舒服的事。

  「客戶端預測和伺服器權威,咱們過去曾經嘗試著做過。」

  林立新回憶著。

  縱觀gamenova的技術積累,從來都沒少跟網際網路打交道。

  這裡面用到的技術簡直無奇不有。

  上到《quake》里的大量網絡通信優化才得以實現的真實時聯機,下至《stars!》中用到的pbem電子郵件同步……

  可以說是只要是他們能想到的技術,基本都曾嘗試著用過了。

  歷史能夠證明,c/s模型絕對是符合時代發展方向的道路,至少在林立新的記憶中,在21世紀20年代後,現代遊戲業也仍然遵守著這個規範。

  當然這個c/s並不是後來v社的反恐精英,而是指的client/server模型,也就是客戶端/服務端模型。  一個伺服器,對應多個客戶端。

  客戶端負責處理所有只需要本地處理的內容,比如渲染畫面、播放聲音、處理輸入等。

  而伺服器則是只需要從完全數據的角度來處理各個客戶端發送的輸入信息。

  哪怕是到了現代,各路開發者們也仍然是在這個卡馬克創造的體系上不斷縫縫補補。

  某種意義上算是一種綠皮科技。

  靠著堆帶寬和疊優化強行把問題給解決了。

  這其中最關鍵的一個優化機制,同樣是卡馬克所創造的。

  於1996年提出的『quakeworld』理念。

  也就是gamenova早就已經用上了的客戶端預測。

  客戶端不等伺服器回應,先把操作處理完,等到信息傳回後再嘗試修正。

  這樣一來便大大地優化了那種按下按鍵后角色要等一會兒才會給出回應的割裂感。


  按鍵不再黏手,也不會不跟手。  這套系統被一直保留到了現代fps體系里。

  ……

  卡馬克和山姆一人一台pc,跟林立新這邊聯機在一起。

  簡單試玩了幾局,林立新便停了下來。

  到這裡已經足夠了,他也就是捎帶手蹭點經驗而已。

  其實打從一開始他就已經有了一點想法。

  如果要從技術的層面看待fps類遊戲的發展史。

  做出過貢獻最大的,除了卡馬克和他的idsoftware之外,就只有一家了。

  valve,v社。

  起源引擎以及《半條命》、《反恐精英》等一眾作品,簡直就是fps的超大型實驗田。

  接過了idsoftware的棒,帶領fps遊戲繼續向著現代前進。

  「咱們之前做的客戶端預測雖然解決了移動上的卡頓,但在面對真正交火的時候沒有任何幫助。」  林立新簡單總結了一下,隨後看向卡馬克,

  「不過我們可以延續這個思想,做出『客戶端側武器預測』,類似移動的處理方式。」

  這就是維爾福所採用的第一項優化技術了。

  「讓客戶端自主決定是否開槍了?這……不太好。」

  卡馬克眉頭微微一皺,難得頂了一句。

  他曾經在設計客戶端預測的時候考慮過這一點,但因為各種原因後來又將其廢除了。

  最大問題在於……作弊。

  一個卡逼可以輕而易舉地靠著延遲戲弄所有人。

  如果刻意控制自己的網速,有的時候能起到奇效。

  「不不不,它只是在演戲。」

  林立新擺擺手,起身來到白板前,抄起筆便迅速畫上了密密麻麻的內容,

  「你們看,在現在的《quake》里,卡頓感的主要來源其實就在開火這一層。」  「玩家雖然移動上不會有卡頓感,但如果是按下滑鼠嘗試開火,這些延遲仍然存在。」

  「想像一下一位玩家在按下開火鍵後,要等待上百ms才會看到自己手裡的槍開火了。」

  「這種體驗是十分令人惱火的。」

  他解釋的足夠清楚,哪怕是山姆在此刻也聽明白了。

  「所以是……假開火?看起來開火了,實際上是自己客戶端這邊模擬出來的?」

  「沒錯,真正的情況完全由服務端計算決定,仍然是靠信息進行回滾修正。」


關閉
Δ