射擊游戲演算法
❶ 關於游戲里傷害值的計算
根據每個游戲不同,傷害對於防禦是不同的,如果是最簡單的正隱演算法的話,攻擊值-防禦值=掉的血,這很簡單,100攻擊,50護甲,然後孝蠢你掉了50滴血。但也有些游戲把防禦值乘上了個系數的,比如就變成:攻擊值-防禦值*0.4=掉的血,每個游戲都有不同的演算法,不需要過多的去糾結吧。。。反彈這個東西有兩種,一種是反彈一個固定值,比如50,攻擊100的話,你掉50血,對面掉50血。第二種就是百分比反彈,比如反彈80%的傷害,比較好理解吧。元素傷害要看你對應的元素防禦,依次用減法去減舉慎廳就OK了。。玩游戲。。別那麼認真。。。
❷ 射擊游戲里的子彈是如何飛行的
從第一款FPS 游戲 《德軍總部3D》出現以來,這種類型的 游戲 廣受好評,創新的玩法也層出不窮,比如「吃雞」。
但是你知道 游戲 里的子彈是怎麼飛行的嗎?
早期,它和現實世界中的子彈完全不一樣,很多玩家合理地利用了這個bug,比如CS里的甩狙。
隨著PC運算能力的提高,子彈的演算法也在不斷進步,彈道的效果越來越真實。
最近一位軟體工程師Tristan Jung在 游戲 論壇上總結了FPS 游戲 的一些子彈軌跡演算法。讓我們一起來看看FPS 游戲 這二十多年來發生的變化。
早期的FPS 游戲 都採用一種「光線投射」(ray casting)的技術,用槍口發射出去的射線來確定子彈的軌跡。光線投射可以確定與光線相交的第一個對象。
在FPS里,這種演算法叫做「命中掃描」(hitscan),當你扣下扳機時,物理引擎會計算下面幾件事:
如果引擎發現你有物體擋住了子彈的路徑,就是通知系統該物體被擊中。
hitscan的核心很簡單,至於物體被子彈擊中後的下一步邏輯是什麼,可以根據 游戲 要求定義:
1、如果允許子彈穿透,那麼它將穿透路線上的所有物體;
2、消除最大的射線范圍,就可以一直發射出激光,直到命中物體為止;
3、將某些表面設置為具有反射性,可以將子彈彈開。
使用hitscan演算法,最大的好處是計算簡單快速,不需要額外的內存或處理時間即可構建新的物理對象。這也意味著在多人 游戲 時,所需的網路資源也最少。
因此,行業中的許多 游戲 都將hitscan用作射擊演算法也就不足為奇了。
不僅《德軍總部3D》和《毀滅戰士》這些經典 游戲 採用,連近年來的一些熱門 游戲 也是。比如《守望先鋒》、《使命召喚》里的一些武器即是採用hitscan演算法。
但是hitscan還是存在著一些缺陷。
首先,子彈的速度是無限的,比光速還快,瞬間到達被擊中的物體。即使你離目標很遠,只要你開槍的一瞬間,對手在準星上,就必死無疑。
其次,子彈的路徑是直線,沒有考慮風向、重力等因素,即使在建模的時候把路徑改成曲線,但是在子彈射出後也無法更改路徑。
為了讓射擊 游戲 更真實,就需要使用另一種方法。
這個演算法聽起來很花哨,其實很簡單。
武器射出的每顆子彈,都會在環境中創建一個新的物理對象,有著自己的質量、速度和引擎要計算的命中框。
由於每個彈丸都是獨立存在的,因此可以考慮風力、摩擦、重力和溫度等因素。任何作用在子彈上的力都會改變其方向。
而且在這種演算法下,子彈不會瞬間移動,還可以實現以下功能:
1、在一些 游戲 中有「子彈時間」特效;
2、如果長距離狙擊移動目標,需要提前目標的估計移動量則念;
3、實現榴彈等爆炸物的延遲爆炸。
但是在進行多人 游戲 時,伺服器將需要做更多的計算,來確保所有對象都同步,並且必須解決不同客玩家之間的差異或沖突,以免在同一台伺服器上給玩家帶來不一致的體驗。
一個方法是,在 游戲 時間之前載入對象的「池」,並在需要時「彎曲並啟用」它們。一旦撞擊到物體表面,就回收這個對象,將其保存以備後用。
這種方法將減少反復創建和銷毀對象的計算和內存成本。
至於 游戲 時間的同步,存在著多種計算方法:
1、時間是與渲染分開計算,即使存在跳幀, 游戲 也能精確地表示對象。這種方法需要計算自上次渲染之後經過的確切時間。
2、計算每一幀的時間,將物理引擎綁定到幀速率。如果禁用幀速率上限,或開始丟幀,則坦盯會看到加速或卡頓的效果。
而且,這種演算法在子彈速度足夠快時,可能會遇到對象彼此「互穿」的情況,盡管它們在引擎中從未重疊。
有沒有辦法結合了以上兩種方法的優點呢?答案是有的。
最簡單的辦法就是不同武器使用不同的引擎。
大多數FPS 游戲 引擎可以處理兩種類型的子彈模擬。這樣就可以選擇擁有各種各樣的武器。《俠盜獵車手》和《半條命》等 游戲 都具有可以支持兩種物理孫信困類型的武器。
比如《光環》中的突擊步槍使用命中掃描引擎,而刺針槍使用子彈彈道模型。
游戲 開發人員還可以混合使用兩種技術來彌補每個系統的弱點,從而提供更加逼真的體驗。
例如,要解決物體從彈道互穿的問題,可以在引擎的每個時刻上繪制子彈射線,查看射線是否會相交。
也可以混合兩種演算法以增強 游戲 的功能。
《狙擊精英》系列就是一個很好的例子。扣動扳機後,引擎將使用hitscan來確定子彈是否足夠靠近目標以觸發慢動作。如果結果為true,引擎將在子彈時間內計算彈道。
參考鏈接:https://www.gamasutra.com/blogs/TristanJung/20191206/355250/How_Do_Bullets_Work_in_Video_Games.php
❸ 穿越火線KD值是什麼
KD是衡量一個cfer實力的重要指標殺敵數與死亡次數的比例值,即kill/death ,其中K代表KILL(殺人數),D代表DEATH(死亡數),KD則是兩者的比值,KD=1則代表殺人數與死亡數相等。一般來說KD越高cf戰斗實力也就越強,因此KD已經成為各大戰隊選人的標准,類指櫻似於專業中的職業技能等級成績,非常重要。 在現在許多FPS游戲中,也常使用殺敵率來表示KD率,也就是殺敵數與殺敵數和死亡次數之和的比值來確定,兩種演算法是完全不同的,該演算法計算出來的KD率永遠不仿指會大於1。
答題不易O(∩唯大叢_∩)O請採納。
❹ 通過吃雞了解游戲的戰斗系統(一)
最近吃雞如火如荼,火的不要不要的,再加上騰訊、網易、小米先後發力吃雞手游。開辟了新的手游戰場。
根據ios的排行榜,網易通過2款吃雞作品,顛覆了一直霸榜的農葯。可喜可賀。正好最近想寫一篇關於戰斗系統的文章,藉此就用TPS類游戲的戰斗系統來分析一下吧。
戰斗系統是游戲中最重要的組成部分。占據了游戲整個用戶行為的70%左右。很多系統其實大部分都是給戰斗系統輔助掘燃而產生的。
在游戲中,戰斗是最容易產生矛盾沖突的點。不論是野外打怪練級,還是團伙PK,都離不開戰斗系統的幫助。
所以,一個好的戰斗系統會讓玩家迷戀上戰斗的快感,從而產判蘆虛生變強的慾望,進而產生更多的消費(時間與金錢)。
那麼怎麼做一個好的戰斗系統呢?
一般射擊類游戲分為兩種視角:
FPS:第一人稱視角
TPS:第三人稱視角
從上邊兩張圖就可以看出視角的不同,給用戶帶來的體驗是完全不同的。具體有什麼不同?
更適合電子競技類玩家。
用戶沉浸感與代入感非常高。
容易瞄準。
與滑鼠操作相性上佳,即多為PC玩家偏好。
偏好多人在線對戰類FPS是首選。
偏好槍械武器為主的游戲FPS是首選。
更適合喜歡動作游戲成分的玩家。
操作角色可見,更容易對主角產生感情。
玩FPS會暈。
適合手柄等按鍵式操作。
TPS適合自捏角色、換裝等要素。
接近戰要素較多的游戲首選TPS。
總的來說,主觀視角和客觀視角,也可以看做是玩家對游戲要素的需求不同。就單純追求臨場感的射擊游戲來說FPS的體驗無疑是最刺激的,而和滑鼠的速配性也是龐大的PC玩家群體的首選,但缺點是不能加入射擊以外的過於復雜的動作元素——如纏斗式近戰、閃避等以玩家為主軸的激烈動作做在FPS中只會是天旋地轉的效果,而且某些玩家追求的「打擊感」也是一大難題,此外,還有一些玩家天生無法克服的「暈3D」更是讓它們對FPS敬而遠之。
所以根據你的游戲規劃,來決定使用什麼樣的視角進行游戲。
所以吃雞類游戲,均選擇了TPS方式。
但是《絕地求生》中,可以通過V鍵在FPS與TPS視角間進行切換。
2.2 戰斗方式
嚴格來講不論是FPS還是TPS,主要的戰斗流程如下圖所示:
射擊類游戲屬於無鎖定攻擊模式,均需要玩家自行通過操作搜尋、鎖定目標進而對目標進行攻擊。
在這個過程中,需嘩茄要規范一個射擊朝向與「射界」,如下圖所示:
瞄準視角: 是槍械或者武器的朝向(玩家能看到的一面)
射界: 水平射界(X°至Y°)、高低射界(M°至N°)。以射擊游戲舉例。以人為圓點,向瞄準視角引出兩條帶角度的延長線 (水平射界) ,在這個延長線內移動瞄準視角,人物的身體是不會轉動。這就是射界。
2.3 戰斗動作
對於一款動作射擊游戲來說,動作也對整個戰斗系統有很大的貢獻。
通過不同的動作組合,可以將游戲做的更加真實、玩家可進行的操作越多,也越能帶來更多的玩法,豐富游戲度。還可以提高一些游戲難度。配合一些特殊的技巧,可以做到一些神奇的事兒。
射擊類游戲所需要的動作類型,如下圖:
因為動作游戲要配合眾多的裝備、道具來進行。所以動作的匹配是很重要的。
因此,需要在基礎動作上對不同裝備、道具進行針對性的調整。讓每個道具、裝備在使用時都可以很流程。進而更接近現實的感覺,一套行雲流水的動作,也可以讓游戲玩的更爽快。
圖里可以看出,雖然對右手拿板磚的奔跑動作進行了修正,但還是可以明顯看出左手擺臂動作很是僵硬。骨骼動畫在這個狀態下並沒有調整的很自然。還是有一些僵硬、呆板。
所以在設計、調教動作時,多參考視頻,與3D人員多進行溝通,注意細節!!!
2.4 戰斗裝備
在射擊類游戲中,戰斗裝備的分類很簡單,大體上分為:
車輛載具: 汽車、裝甲車、快艇、自行車等
具體的裝備規劃如何,還是要依據整個項目來設計,此處只是舉例而已。
2.5 戰鬥技能
嚴格來說射擊類游戲,很少出現技能這個設計,但是可以通過其他方式來達到這個目的,還可以刺激用戶,增加游戲樂趣。
最出名的就是《使命召喚》中CO—OP中,使用的連殺技能與人物被動技能。
Recon - 小地圖顯示的區域變大,敵方的無人機可以為自己掃描敵人。
Blind Eye - 不會被AI控制的分數獎勵探測到,包括空中支援以及哨械機槍。
Blast Shield - 降低爆炸物傷害。
Ghost - 在跑動、操作分數獎勵、安裝或拆除炸彈時無法被UAV及顯示在小地圖上的掃描探測到。(跑動這一條件比BO3還要嚴苛,BO3隻要正常移動搖桿推滿了就可以觸發Ghost技能)
Overclock - Payload充能速度加快。
Dexterity - 換彈、換武器更快。(換彈這個就有意思了)
每個人每場可以攜帶3個技能通過不同槍械搭配與技能組合,可以達到不可思議的效果。這也是《COD》系列CO-OP的精髓。
需不需要技能,或者是否可以使用其他方式代替,還是要看項目的規劃。只要不破壞整體的平衡,更多的創新是可以的。
數值的設計,是游戲中最最重要的東西,這肩負著游戲的平衡性、游戲的收入、甚至整個游戲項目的壽命。
在傳統的RPG游戲中,可能有很多屬性,比如攻擊、防禦、敏捷、精力,HP/MP等等。
其實,射擊游戲也有數值的設計,只是沒有RPG類那麼復雜。
一般來說,射擊游戲的計算公式相對比較簡單。這里我們不涉及復雜的物理學的影響,就是簡單的【攻擊-防禦=傷害】
我們假設人物血量為100,一把AK47一發子彈的傷害是45,防禦為0。
那麼,最後這個人受到的傷害就是45-0=45。最後人物的血量就是100-45=55
這個應該很好理解。
但是這種直接的方式,又太缺乏游戲性或者娛樂性。所以為了增加趣味性,我們增加了一些機制
我們可以把人物的模型進行傷害區域的劃分,根據不同的傷害區域判定不同的傷害。如圖所示:
我把這個人物模型,劃分成了6個傷害區域。 這個區域我們稱呼為HitBox——即碰撞盒!
其原理就是當子彈飛過來碰撞到這個區域,就會檢測此處的傷害計算方法,從而達到不同的效果
最典型的,就是爆頭,當命中頭部時,會被一槍爆頭(致命區域)就是這么來的,此處不需要什麼計算公式,只要被打中頭部就死亡。
但是打中別的位置,可能不致命,那麼此處會有一定的減傷,可能100攻擊力的子彈,打在胳膊上,就會打個8折。
自古,有矛就有盾,有攻就有防。所以給角色增加防具提高防禦力也是一種游戲中的有效變數,也可以更增強真實性。
最常見的防具就兩種:
防彈頭盔
防彈衣
而防具,有兩種演算法;
1、直接增加人物的血量:即裝備可以給角色增加50的血量,那麼人物的總血量為150。
計算方式: 【 攻擊力-(人物血量+防具血量)=剩餘血量】
2、單獨計算防具的防禦力:即命中該裝備區域時,先計算防具的減傷,如果有溢出值,再計算人物血量。如果不是裝備區域,則裝備不參與減傷計算。
計算方式是:【攻擊力-防具防禦力-人物血量=剩餘血量】
通過這篇文章,主要是簡單的將一些關鍵的戰斗系統涉及到的框架結構介紹一下。讓大家理解一下基本的原理。接下來的文章,我會逐一進行詳細的設計分析。
如果大家覺得寫的不錯,敬請關注與其他吧~!
其他文章推薦:
游戲策劃如何設計一個好用的BUFF系統!
吃雞吃雞!帶你走入《絕地求生:大逃殺》的游戲世界。
游戲中的靈魂——解析游戲角色如何設計?
游戲策劃如何設計一個好用的BUFF系統!
int ShutOne(int time)
{
//計時清零,
//3秒,2秒,1秒到開始顯示一隨機字元;
//從鍵盤讀入一字元直到是顯示的字元,超過10次返回負;
//得到結束時間,
//求得射擊時間TimShut=時間-3000毫秒;
//電腦產生一隨機數Trand,比如time+randomize(1000);//假定1000ms內能完成射擊,這里time(ms)時間是游戲難度,
//返回 :Trand - TimShut; 電腦時間》 射擊時間為玩家勝。0,或 負
}
int main(void)
{
int x,result=0;
......
for(i=0; i<10; i++)
{
x=ShutOne(500); //難度為 500ms
if(x>0)
result++;
}
if(result==5) //again
{ x=ShutOne(500);
f(x>0)
result++;
}
if(result》5)
輸出玩家勝;
否則:
玩家負
}
❻ 游戲ratingpro是什麼意思
ratingpro是個人綜合得分。ratingpro常用於csgo游戲當中,得分主要影響的數據悔拆分別是擊殺,陣亡,團隊影響。具體演算法是把多殺,首殺,殘局,拆包,下包,殺敵人數和死亡次數開碧旦棗方後,取余數的階乘,再求個導遲跡數就是ratingpro。《反恐精英:全球攻勢》,原名Counter-Strike:GlobalOffensive,是一款由VALVE與HiddenPathEntertainment合作開發、ValveSoftware發行的第一人稱射擊游戲,於2012年8月21日在歐美地區正式發售,國服發布會於2017年4月11日在北京召開。
❼ 網路射擊游戲的命中演算法是如何實現的
在客戶端判斷可以大大減少伺服器的資源開銷,並能夠實現玩家看著打中了就是打中了,不會出現因為目標位置在客戶端與伺服器間不同步造成的游戲體驗下降;但是出於數據安全性考慮,一旦客戶端與伺服器的數據加密演算法被破解,那麼就可以使用外掛軟體來偽裝客戶端向伺服器傳遞命中的數據包,嚴重影響游戲的平衡性。