射擊遊戲裡的子彈是如何飛行的

2021-01-08 量子位

曉查 發自 凹非寺量子位 報導 | 公眾號 QbitAI

從第一款FPS遊戲《德軍總部3D》出現以來,這種類型的遊戲廣受好評,創新的玩法也層出不窮,比如「吃雞」。

△ 第一款FPS遊戲《德軍總部3D》

但是你知道遊戲裡的子彈是怎麼飛行的嗎?

早期,它和現實世界中的子彈完全不一樣,很多玩家合理地利用了這個bug,比如CS裡的甩狙。

隨著PC運算能力的提高,子彈的算法也在不斷進步,彈道的效果越來越真實。

最近一位軟體工程師Tristan Jung在遊戲論壇上總結了FPS遊戲的一些子彈軌跡算法。讓我們一起來看看FPS遊戲這二十多年來發生的變化。

擋住射線的都會死

早期的FPS遊戲都採用一種「光線投射」(ray casting)的技術,用槍口發射出去的射線來確定子彈的軌跡。光線投射可以確定與光線相交的第一個對象。

在FPS裡,這種算法叫做「命中掃描」(hitscan),當你扣下扳機時,物理引擎會計算下面幾件事:

槍口所指的方向;從槍口射出一束射線,直到達到規定的範圍,比如碰到牆;確定光線投射的路徑上是否光線是否撞擊物體。如果引擎發現你有物體擋住了子彈的路徑,就是通知系統該物體被擊中。

△ 方塊擋在了子彈A射向B的路徑,引擎告知方塊已被擊中

hitscan的核心很簡單,至於物體被子彈擊中後的下一步邏輯是什麼,可以根據遊戲要求定義:

1、如果允許子彈穿透,那麼它將穿透路線上的所有物體;

2、消除最大的射線範圍,就可以一直發射出雷射,直到命中物體為止;

3、將某些表面設置為具有反射性,可以將子彈彈開。

使用hitscan算法,最大的好處是計算簡單快速,不需要額外的內存或處理時間即可構建新的物理對象。這也意味著在多人遊戲時,所需的網絡資源也最少。

因此,行業中的許多遊戲都將hitscan用作射擊算法也就不足為奇了。

不僅《德軍總部3D》和《毀滅戰士》這些經典遊戲採用,連近年來的一些熱門遊戲也是。比如《守望先鋒》、《使命召喚》裡的一些武器即是採用hitscan算法。

但是hitscan還是存在著一些缺陷。

首先,子彈的速度是無限的,比光速還快,瞬間到達被擊中的物體。即使你離目標很遠,只要你開槍的一瞬間,對手在準星上,就必死無疑。

△ 扣動扳機和目標上的火光同時出現,說明子彈是瞬間擊中

其次,子彈的路徑是直線,沒有考慮風向、重力等因素,即使在建模的時候把路徑改成曲線,但是在子彈射出後也無法更改路徑。

為了讓射擊遊戲更真實,就需要使用另一種方法。

給子彈加上彈道

這個算法聽起來很花哨,其實很簡單。

武器射出的每顆子彈,都會在環境中創建一個新的物理對象,有著自己的質量、速度和引擎要計算的命中框。

由於每個彈丸都是獨立存在的,因此可以考慮風力、摩擦、重力和溫度等因素。任何作用在子彈上的力都會改變其方向。

而且在這種算法下,子彈不會瞬間移動,還可以實現以下功能:

1、在一些遊戲中有「子彈時間」特效;

2、如果長距離狙擊移動目標,需要提前目標的估計移動量;

3、實現榴彈等爆炸物的延遲爆炸。

但是在進行多人遊戲時,伺服器將需要做更多的計算,來確保所有對象都同步,並且必須解決不同客玩家之間的差異或衝突,以免在同一臺伺服器上給玩家帶來不一致的體驗。

一個方法是,在遊戲時間之前加載對象的「池」,並在需要時「彎曲並啟用」它們。一旦撞擊到物體表面,就回收這個對象,將其保存以備後用。

這種方法將減少反覆創建和銷毀對象的計算和內存成本。

至於遊戲時間的同步,存在著多種計算方法:

1、時間是與渲染分開計算,即使存在跳幀,遊戲也能精確地表示對象。這種方法需要計算自上次渲染之後經過的確切時間。

2、計算每一幀的時間,將物理引擎綁定到幀速率。如果禁用幀速率上限,或開始丟幀,則會看到加速或卡頓的效果。

而且,這種算法在子彈速度足夠快時,可能會遇到對象彼此「互穿」的情況,儘管它們在引擎中從未重疊。

混合系統

有沒有辦法結合了以上兩種方法的優點呢?答案是有的。

最簡單的辦法就是不同武器使用不同的引擎。

大多數FPS遊戲引擎可以處理兩種類型的子彈模擬。這樣就可以選擇擁有各種各樣的武器。《俠盜獵車手》和《半條命》等遊戲都具有可以支持兩種物理類型的武器。

比如《光環》中的突擊步槍使用命中掃描引擎,而刺針槍使用子彈彈道模型。

遊戲開發人員還可以混合使用兩種技術來彌補每個系統的弱點,從而提供更加逼真的體驗。

例如,要解決物體從彈道互穿的問題,可以在引擎的每個時刻上繪製子彈射線,查看射線是否會相交。

也可以混合兩種算法以增強遊戲的功能。

《狙擊精英》系列就是一個很好的例子。扣動扳機後,引擎將使用hitscan來確定子彈是否足夠靠近目標以觸發慢動作。如果結果為true,引擎將在子彈時間內計算彈道。

相關焦點

  • FC飛行射擊類遊戲推薦,童年的經典回憶,這些遊戲你通關了嗎
    大家好,這裡是紅姐話電競,小編會每天為大家更新最新最有趣的遊戲資訊,歡迎大家的關注。文/紅姐話電競【原創首發,禁止複製抄襲,違者必究】在FC的遊戲類型中,飛行射擊類的遊戲一直是玩家們甚至是玩家父母們都喜歡的遊戲種類,飛行射擊類的遊戲大部分都是以縱版為主的,小部分是橫版遊戲和第一視角的版本,但不管是什麼樣的排版,總歸是飛行射擊類的遊戲。
  • 《武裝飛鳥2》—昔日經典飛行射擊遊戲再現Steam平臺
    《武裝飛鳥2》—昔日經典飛行射擊遊戲再現Steam平臺 前言
  • 《獨狼》:不止在做射擊遊戲
    遊戲通關狂魔。尷尬症候群。我從未想過有一天會對一款第一人稱射擊遊戲感興趣。槍械、殺戮和射擊組合在一起怎麼看也不像是我會感興趣的題材。但是,在試玩之後,這款遊戲卻讓我欲罷不能。「獅子或老虎可能更有力量,但狼從來不會在馬戲團表演。」
  • 讓子彈飛——教你如何遠距離射擊
    子彈依靠激發火藥產生的氣體飛行。根據子彈內火藥不同的作用,可以分為起爆藥和發射藥2種。要讓子彈飛得更快、更遠,就需要研究起爆藥與發射藥對彈丸的作用,以及在起爆藥和發射藥推動下的彈丸如何在槍膛中運動。這就產生了一門專業的學科——內彈道學。內彈道學是彈道學的一個分支,其主要是研究槍炮發射過程中槍炮膛內的火藥燃燒、物質流動、能量轉換和槍炮彈丸的運動等規律以及其他有關現象的學科。
  • 逃離塔科夫飛行彈道與子彈破碎機制講解
    《逃離塔科夫》遊戲中玩家可能在射擊時感到不同子彈的不同效果,而遊戲中的彈道和子彈機制也非常有意思。下面請看玩家「張天成」分享的《逃離塔科夫》飛行彈道與子彈破碎機制講解。希望能為各位玩家帶來一些幫助。 在塔科夫這個遊戲裡,飛行彈道和子彈破碎意味著什麼?
  • 《BPM:每分鐘子彈數》登陸Steam 節奏動作第一人稱射擊Rogue遊戲
    節奏動作型第一人稱射擊Rogue遊戲《BPM: BULLETS PER MINUTE》(《BPM:每分鐘子彈數》)已經登陸Steam商店。遊戲原價70元,折扣價63元。發稿前的328篇評論中,有88%的玩家給出了好評。
  • 空中的戰鷹,九部飛行射擊類遊戲
    本期為遊戲愛好者們,以及軍迷們簡單介紹,九部關於戰鬥機的飛行射擊類遊戲。《皇牌空戰》系列它是目前最著名的飛行射擊類遊戲,在遊戲當中,擁有幾十種現代戰鬥機,可以供玩家體驗,而且精緻的還原各種戰鬥機的特點,它最吸引人的就是以假亂真的畫面,其中的場景建模等,很接近現實。
  • 飛行射擊遊戲《鋼翼少女》上架Steam,美少女化身鋼鐵戰機
    IT之家12月15日消息 3D飛行射擊《鋼翼少女》PC版現已上架Steam,預計將於2020年Q1發售,支持簡體中文,本作講述了少女化作戰機與不明飛行物作戰的故事。遊戲介紹:本作為描述身負戰鬥使命的少女們穿上羽翼,以兵器之姿對抗突然出現的不明飛行物體──「虛無者」的高速飛行射擊遊戲。本遊戲分為兩個部分,分別以不同角度描寫少女們(芙蘿蘭)的故事。其中一個以射擊遊戲呈現的「少女們的戰鬥」,利用各種武器打倒強大的敵人,爽快感滿點。另一部分則以劇情動畫呈現的「少女們的日常」,稱為少女們如何在互相磨合中一路成長。
  • 街機遊戲的類別:橫版過關、格鬥遊戲、飛行遊戲、射擊遊戲 - 街機...
    要說街機遊戲的類別,那就比較多了,包括:橫板過關、格鬥遊戲、射擊遊戲、飛行射擊、爬層遊戲、運動類遊戲、第一人稱射擊、益智遊戲、音樂遊戲.....當年我們玩得最多的就是,清版橫版過關遊戲、射擊遊戲、格鬥遊戲。早年的時候,絕大部分的遊戲還沒有定型,不過在每個時代都誕生過一些經典遊戲,非常有創意。
  • 我只想安安靜靜的打飛機 經典飛行射擊遊戲下載推薦
    說到街機上的飛行射擊遊戲,大家首先就想到彩京的1945系列各CAVE公司的怒首領峰,長空超少年等等。作為最著名的兩大飛行射擊類遊戲軟體公司,彩京注重遊戲的節奏性和操作感,雖然彈幕不多但速度很快,酣暢淋漓。
  • 經典FC射擊遊戲六大天王,你曾經寵幸過幾款遊戲?
    FC平臺的射擊遊戲並不少,但是真正能稱作「精品」的卻寥寥數個,就拿我小時候特別愛在DVD上玩的「中文遊戲300」合集來講,在150款遊戲中有不下20種飛行射擊類的遊戲,能讓我們現在依舊能記住名字的又有幾個呢?B計劃就是其中之一沙羅曼蛇,B計劃,金剛組合,1943,除此之外幾乎就沒有了。
  • 《幾何戰爭3:維度》:一款精彩的移植射擊遊戲
    移動平臺射擊遊戲眾多,但大多以日式彈幕射擊為主,而《幾何戰爭3:維度》(Geometry Wars 3: Dimensions)不同於常見的飛行射擊類遊戲,在畫面表現和戰鬥方式上,都非常有特色。
  • 遊戲廳時期被嚴重低估的射擊遊戲《銃彈嵐》,錯過了就是一個時代
    期間誕生了打量豎版的精品射擊遊戲,其中比較經典的就有《地獄英雄傳說》《黑珍珠部隊》《沙漠王》《忍者戰士》《戰場之狼II》《異域戰將》等等等等。對於玩習慣豎屏的玩家來說,這種畫面也是比較容易被接受的,畢竟那時候的飛行射擊遊戲都是如此。《銃彈嵐》發行的時間是九十年代中期,也算是比較早期的遊戲。遊戲的特效和玩法,已經達到了當時的巔峰。
  • 2000米外射擊的子彈居然自動追蹤目標,卻因造價昂貴難以批量生產
    我們知道,槍械在射擊時,通過三點一線的原理進行瞄準。在目標處於視線範圍之外時,射手往往沒有辦法進行有效射擊。一般情況下,目標只能處於視線範圍之內才能進行瞄準。而子彈往往在出膛的時候,因為初速快,飛行的軌跡是一條直線。隨著,時間的推移。子彈會因為重力的原因開始下降。
  • 細說《Insurgency:Sandstorm》如何提高逼真的第一人稱射擊遊戲標準
    該遊戲最近發布了PC版,並將於2019年推出主機版,我們採訪了幾位團隊成員,向他們了解《Insurgency:Sandstorm》是如何躋身迄今為止最逼真的第一人稱射擊遊戲之列的。或許相較於前作,最明顯的改進是戰術射擊圖形。
  • 這些最好玩的第一人稱射擊遊戲總讓你欲罷不能
    子彈特效和受傷效果都是一流的,遊戲充滿了趣味。6.《霹靂小組4(SWAT 4)》在《戰地1942》中,玩家可以用臥室地板上的模型飛機和塑料士兵模擬戰況,還可以在燃料倉中捉迷藏,把吉普車開進坦克,或是趴在一架飛行中的A6M Zero機翼上,甚至可以跳進大海,在比賽的剩餘時間裡遊泳。真是樂趣無窮。18.《部落:上升(Tribes: Ascend)》
  • 電影裡是騙人的?士兵在戰鬥中跳入水裡,真的就能躲避子彈嗎?
    這種操作,可能就出乎很多人的意料了,子彈這玩意兒,速度快、威力大,連鋼盔都防不住,跳進水裡就能躲子彈?這究竟是好萊塢神劇情節,還是有科學依據呢?首先啊,我們來看看子彈射擊的原理。一顆完整的子彈,包括裝填發射藥的推進部分的彈殼,以及彈頭部分,推進部分就是彈殼的圓柱體部分,彈頭是前端錐形部分。
  • 主播在太空科幻遊戲裡組織射擊比賽後
    活動不僅有Rexzilla的粉絲參與,還吸引了很多《星際公民》社區裡的玩家,按這位主播的觀點,這些玩家本來是「非常孤立的」。每晚有數百名玩家參與到活動中。這是件好事,主播組織活動能讓玩家們互相接觸,還能擴大遊戲的知名度。問題在於:Rexzilla組織的比賽是FPS對戰,而《星際公民》這款遊戲主打的是宇宙中駕駛飛船戰鬥和探險。
  • 一款可圈可點的彈幕射擊遊戲
    關於遊戲發行商 Armor Games 多少是有點名氣的,諸如像素冒險的《蘇打地牢》、益智休閒的《孔明鎖》,以及前不久上架的可愛動作遊戲《貓之旅途》等都可說明這家廠商出品的質量有保證,無論是在畫面表現,還是在可玩度上。
  • 打飛機時我也能搓招,經典射擊遊戲中那些實用的必殺技
    熟悉街機的玩家都知道,能搓招的遊戲一般都是格鬥遊戲或者是清版過關類的遊戲,射擊類不大可能會出現搓招的指令。畢竟在九死一生的環境中,如果招式還要搓,那難度就實在太大了。不過世事無絕對,還真就有那麼一些射擊遊戲中融入了必殺的設定。玩家想要出招的話,就需要在密集的子彈空隙中快速輸入完整的指令。