免费大黄网站,久久午夜夜伦鲁鲁片免费无码影视 ,国产又色又爽又黄的,久久国产成人午夜av影院

當(dāng)前位置:首頁 > 包裝 > 正文內(nèi)容

[競(jìng)技對(duì)戰(zhàn)游戲]cs的專業(yè)技術(shù)內(nèi)幕分析,史上最強(qiáng)?。?轉(zhuǎn)載)

習(xí)冰煙5年前 (2020-10-08)包裝266
印刷廠直印●彩頁1000張只需要69元●名片5元每盒-更多報(bào)價(jià)?聯(lián)系電話:138-1621-1622(微信同號(hào))

  hitbox(命中框)扭曲

  cs有一個(gè)編程錯(cuò)誤導(dǎo)致的hitbox扭曲的歷史。model(模型)存貯在.mdl文件中(人物模型文件),在cstrik/models文件夾下。

  這些文件保存著準(zhǔn)確并且精確的數(shù)據(jù)。但是,cs一旦讀取了這些數(shù)據(jù),會(huì)在最終使用這些數(shù)據(jù)之前進(jìn)行大量的運(yùn)行處理。在這個(gè)處理過程中的bugs會(huì)導(dǎo)致在游戲運(yùn)行中的hitbox的實(shí)際位置同在人物model文件中顯示的不同。

  換句話說,上一頁圖片中所顯示的hitbox,基本上是一個(gè)謊言;他們只是或許會(huì),而不是一定會(huì)那樣發(fā)生。

  扭曲的問題在1.1版中已經(jīng)被cs開發(fā)小組認(rèn)識(shí)到,并作為一個(gè)主要的問題來處理,大量的工作被投入在修補(bǔ)這個(gè)問題上。

  不幸的是,cs1.3仍然存在一些hitbox扭曲問題。這些問題顯然比上一個(gè)版本要少-具體說,墻面效果(如果一個(gè)人物是蹲著的并且一面墻出現(xiàn)在正在瞄準(zhǔn)這個(gè)人物的武器的視線中,頭部hitbox會(huì)消失)已經(jīng)被修補(bǔ)了。

  hitbox扭曲的錯(cuò)誤可被歸結(jié)成兩類:一類是出現(xiàn)在持有特定的武器(例如,cs1.1中,一個(gè)拿著aug的人物在站著的時(shí)候沒有腿部的hitbox)。還有一類總是出現(xiàn),同持有武器無關(guān)。

  人物model文件包含有每一種人物移動(dòng)動(dòng)作的配置定位信息-走動(dòng),蹲下,奔跑,游泳,持有步槍,擊發(fā)步槍,持有雷,等等。

  mp5,兩把散彈槍,m249機(jī)槍,ak47,雙槍,刀還有雷具有它們自己的獨(dú)立的定位信息.所有其他的武器使用兩種通用持有武器定位信息的其中之一。(這就是為什么在1.1中雙搶有一個(gè)獨(dú)特的特定錯(cuò)誤)

  cs 1.3中的hitbox扭曲

  我們?cè)谶@里看到胸部和肩膀的hitbox在人物蹲下并持有一個(gè)awp的時(shí)候垂直擴(kuò)展了一段非常明顯的距離。注意,

  準(zhǔn)星的兩條水平線處于人物頭盔的上面。比較這個(gè)位置同人物模型hitbox的區(qū)別,很明顯這里不應(yīng)該出現(xiàn)一個(gè)hitbox.

  這種垂直的擴(kuò)展也出現(xiàn)在頭部的hitbox上,并且因此可能導(dǎo)致了1.3中的高爆頭率。

  爆頭

  hitbox是矩形的,model不是。因此,hitbox的邊角經(jīng)常輕微突出在可見的model外面。在一些情況下,這個(gè)突

  出的程度足夠?qū)е乱恍﹩栴}。具體說,從一個(gè)人物的后面很難打出一個(gè)爆頭,因?yàn)楸巢亢图绨虻膆itbox使頭部的hitbox變得非常不明顯。

  客戶端和服務(wù)器

  客戶端-服務(wù)器通訊

  客戶端是半條命的程序,由玩家使用并連接到一個(gè)服務(wù)器上。半條命服務(wù)器端是一個(gè)中央程序,允許許多客戶端連接上來,運(yùn)行cs游戲。

  客戶端不進(jìn)行互相通訊;他們只和服務(wù)器通訊。服務(wù)器跟蹤客戶端的行為,以及一個(gè)客戶端影響到另一個(gè)或幾個(gè)客戶端的行為,服務(wù)器通知那些客戶端它們需要知道的事情。

  整個(gè)布局象一個(gè)星型,服務(wù)器處于中心,輻射狀連接到圍繞著它的客戶端上。

  有兩個(gè)基本問題同客戶端-服務(wù)器通訊有關(guān):帶寬和延遲。

  在一個(gè)理想的世界里,客戶端-服務(wù)器的通訊將會(huì)是毫無阻礙的:沒有數(shù)據(jù)流量的限制并且傳送應(yīng)該是即時(shí)的。于是,客戶端總是同服務(wù)器處于完全相同的狀態(tài)。

  在現(xiàn)實(shí)中,有對(duì)客戶端同服務(wù)器之間的數(shù)據(jù)每秒流量的限制(帶寬)以及數(shù)據(jù)傳送所消耗的特定時(shí)間(延遲)。

  數(shù)據(jù)傳送的限制發(fā)生在兩個(gè)方面。

  首先,服務(wù)器有一個(gè)設(shè)置,指定它同一個(gè)客戶端進(jìn)行通訊的最大數(shù)據(jù)流量帶寬。所以,即使一個(gè)客戶端通過一

  個(gè)cable或者xdsl連接,這種連接至少有每秒64KB的速率,服務(wù)器仍然僅僅傳送通常8KB每秒的數(shù)據(jù)(這是一個(gè)典型的值,但依據(jù)服務(wù)器有所不同);服務(wù)器設(shè)定帶寬限制。

  這么做的原因是服務(wù)器有那么多的玩家連接進(jìn)來,他們消耗著很大的帶寬,這不得不需要付出代價(jià);通過限定一個(gè)限值,服務(wù)器可以進(jìn)行經(jīng)濟(jì)有效的處理。

  其次,客戶端如果在使用低帶寬連接(56k modem),將比服務(wù)器限定的帶寬限制擁有更小的帶寬,這些不幸連接會(huì)擁有一個(gè)因?yàn)檩^低的實(shí)際連接帶寬而設(shè)定的帶寬限制。

  延遲主要取決于連接方式(56k,isdn,xdsl等等)。延遲越大,數(shù)據(jù)離開客戶端后到達(dá)服務(wù)器需要的時(shí)間越長(zhǎng)。

  連接 帶寬 延遲

  56k modem 低 高

  ISDN 低 低

  xDSL 高 低

  衛(wèi)星連接 高 高

  注意,延遲同帶寬是截然分開的。這就是為什么,例如,單通道isdn同雙通道isdn有同樣的延遲,而衛(wèi)星連接-盡管每秒可達(dá)幾兆的帶寬-對(duì)于實(shí)時(shí)游戲卻是毫無用處的因?yàn)檠舆t可達(dá)到2000毫秒。

  帶寬問題

  因?yàn)橹荒軅魉陀邢迶?shù)據(jù)流量所導(dǎo)致的基本問題是,如果發(fā)生的事件很多,因此服務(wù)器需要傳送的數(shù)據(jù)流量大于

  限定值,那么必須采取一些措施。實(shí)際所發(fā)生的是:一些數(shù)據(jù)-可能是至關(guān)重要的數(shù)據(jù),例如一個(gè)玩家正在開槍-被簡(jiǎn)單的忽略了。

  想象一個(gè)玩家只有一個(gè)56k的modem. 這只能有客戶端到服務(wù)器的每秒3k的流量,以及服務(wù)器到客戶端的每秒5k的流量。(大多數(shù)的連接方式是不對(duì)等的,在一個(gè)方向上傳送更多的數(shù)據(jù)在另一個(gè)方向上更少)。

  開始時(shí),我們的玩家正在一個(gè)地圖上的荒蕪區(qū)域里遛彎。沒什么太多的事情發(fā)生,除了他的位置正在變化,那

  么,客戶端只需要傳送很少的數(shù)據(jù)給服務(wù)器-大概每秒1k. 同樣的,服務(wù)器也沒有太多的事情需要通知客戶端,因?yàn)樵谒母浇鼪]有事情發(fā)生。

  現(xiàn)在,但是,玩家轉(zhuǎn)過了一個(gè)拐角,進(jìn)入了一個(gè)激戰(zhàn)區(qū)。忽然,他的客戶端需要被傳送大量的信息:視野里有

  很多人,很多槍都在開火,手雷滿天飛等等。服務(wù)器需要傳送給客戶端每秒10k的數(shù)據(jù)以保持玩家對(duì)正在發(fā)生的

  事情有所了解,但是,暈了,客戶端每秒只能接受5k的數(shù)據(jù)。會(huì)發(fā)生什么?服務(wù)器無法傳送每秒10k的數(shù)據(jù),于是它不得不選擇某些50%的數(shù)據(jù),應(yīng)被傳送的,卻被拋棄了,還有50%的數(shù)據(jù)被實(shí)際傳送了

  確切地說,這個(gè)問題的處理還同另一個(gè)問題有關(guān),這就是在服務(wù)器和客戶端之間傳送的數(shù)據(jù)是怎樣被規(guī)劃的-基本上,服務(wù)器能夠放棄相當(dāng)數(shù)量的數(shù)據(jù),而不將有關(guān)信息提供給客戶端。

  實(shí)時(shí)游戲更象一卷膠片。刷新率越高,移動(dòng)的顯示效果越真實(shí)。但是刷新率在這里不是那個(gè)由顯卡創(chuàng)造的刷新率,而是服務(wù)器每秒更新客戶端的數(shù)據(jù)以使它知道當(dāng)前正在發(fā)生的事情的速率。

  想象服務(wù)器每5秒鐘只通知客戶端一次正在發(fā)生的事情??蛻舳藢?huì)見到人物瞬間移動(dòng)很大的距離,會(huì)完全看不見一個(gè)手雷已經(jīng)被投擲出來,并且會(huì)經(jīng)常掛了卻看不見他的對(duì)手,因?yàn)樗氖澜鐑H僅每5秒更新一次。

  現(xiàn)在想象更新率每秒一次:一個(gè)很大的提高,我們的玩家不再錯(cuò)過手雷投擲,并且看見人物以一種合理的連續(xù)動(dòng)作移動(dòng),但始終處于每秒一次的更新,他仍然發(fā)現(xiàn)瞄準(zhǔn)非常困難。

  現(xiàn)在想象更新率是每秒25次。忽然,我們的玩家進(jìn)入了狀態(tài)。他的客戶端更新的那么快因此正常的移動(dòng)效果就可以顯現(xiàn)出來。

  但是,這里有個(gè)沖突。服務(wù)器更新客戶端的數(shù)據(jù)越快,需要傳送的數(shù)據(jù)每秒就越多。如果產(chǎn)生了太多的數(shù)據(jù),多于能夠支持的連接,那么服務(wù)器就不得不開始丟棄數(shù)據(jù)。

  當(dāng)這個(gè)發(fā)生的時(shí)候,服務(wù)器簡(jiǎn)單的臨時(shí)減少更新頻率??蛻舳丝匆姷氖澜绫唤盗思?jí),但仍然保持功效。

  如果,另一方面,是客戶端傳送了過多的數(shù)據(jù)給服務(wù)器,那么客戶端降低更新頻率。

  重要的是,在一個(gè)玩家周圍發(fā)生的事情越多,越多的數(shù)據(jù)就必須在每個(gè)更新中傳送出去。所以,35 updates每秒可能在一個(gè)無人區(qū)表現(xiàn)的很好,但會(huì)在激戰(zhàn)中表現(xiàn)得慘不忍睹。

  這就是使用者最終得到一些權(quán)利來配置他的客戶端行為的原因??蛻舳说膸捔髁渴枪潭ǖ?,但是客戶端同服

  務(wù)器相互之間更新的有多快卻完全取決于使用者。這給了使用者一個(gè)粗糙的,但卻有用的機(jī)會(huì)來控制數(shù)據(jù)傳送流量(粗糙的是因?yàn)閿?shù)據(jù)傳送流量在每個(gè)更新中是不同的,并且使用者無法控制這些)

  在半條命里配置客戶端同服務(wù)器的通訊基本上是一個(gè)知道你有多少帶寬的問題,然后就可以指定更新的頻率,同時(shí)不會(huì)在動(dòng)作頻繁的時(shí)候使數(shù)據(jù)連接飽和。

  延遲問題

  正如前面提到的,延遲問題是一個(gè)影響通訊的主要問題。

  基本的問題是這個(gè):服務(wù)器接受所有客戶端的信息,以通知服務(wù)器客戶端正在做什么。服務(wù)器通過這些信息持續(xù)不斷的更新cs世界的狀態(tài),并且通知所有的客戶端關(guān)于這個(gè)世界的當(dāng)前狀態(tài)。

  那么,思考一個(gè)玩家按下了向前移動(dòng)鍵。250毫秒以后,服務(wù)器接收到了這個(gè)信息。直到這個(gè)發(fā)生以前,移動(dòng)并沒有真的發(fā)生因?yàn)榉?wù)器不知道它已經(jīng)發(fā)生了。

  一旦服務(wù)器知道了,它更新那個(gè)玩家的位置,并告訴其他的客戶端這個(gè)玩家已經(jīng)移動(dòng)了。

  250毫秒之后,所有的其它的客戶端接到了這個(gè)信息,并且最終在屏幕上看見了這個(gè)移動(dòng)。

  當(dāng)然,玩家實(shí)際上是在500毫秒之前作的這個(gè)動(dòng)作,每一個(gè)玩家在屏幕上看見的,是所有的玩家在大約半秒鐘以前的位置。

  這里有一個(gè)微妙的問題,但是,必須要明白。在其他玩家正在做什么(500毫秒之前)和服務(wù)器知道什么(250毫秒之前)之間,有一個(gè)差別。

  當(dāng)一個(gè)玩家瞄準(zhǔn)并且射擊另外一個(gè)玩家,真正有關(guān)系的是服務(wù)器知道的這個(gè)目標(biāo)玩家的位置-不是目標(biāo)玩家的客戶端知道的位置,因?yàn)槟莻€(gè)信息還沒有到達(dá)服務(wù)器-那么服務(wù)器怎么會(huì)知道?

  因此,思考當(dāng)一個(gè)玩家瞄準(zhǔn)另外一個(gè)玩家并且開槍的時(shí)候究竟發(fā)生了什么。他實(shí)際上是在瞄準(zhǔn)那個(gè)玩家在500毫秒以前的位置-從目標(biāo)玩家的視點(diǎn)來看,但是卻是僅僅250毫秒以前的位置-從服務(wù)器的視點(diǎn)來看

  我們的玩家已經(jīng)開槍的信息,需要耗費(fèi)250毫秒到達(dá)服務(wù)器。很明顯,如果我們對(duì)這個(gè)延遲什么都不做,瞄準(zhǔn)一個(gè)目標(biāo)將變得非常困難。

  解決的辦法相當(dāng)靈巧。服務(wù)器保存一個(gè)玩家位置的最后大約半秒鐘的歷史數(shù)據(jù)。當(dāng)玩家開槍的信息到達(dá)服務(wù)器的時(shí)候,服務(wù)器知道這個(gè)信息用了多久才到達(dá)服務(wù)器(例如,241毫秒)并且也知道正被射擊的玩家的大概延遲(例如,210毫秒),然后依據(jù)這兩個(gè)延遲的長(zhǎng)度的和檢索歷史數(shù)據(jù)中的位置記錄,以確定,當(dāng)我們的玩家開槍的時(shí)候,目標(biāo)是否正在準(zhǔn)星之下。

  服務(wù)器正在做的事情,是描繪正在開槍的玩家所看到的世界。如果這個(gè)玩家瞄準(zhǔn)了目標(biāo),那么他就能夠擊中,甚至是世界在他開槍之后已經(jīng)產(chǎn)生了變化。

  在這種方式下,玩家能夠瞄準(zhǔn)他們的目標(biāo),而不需要手動(dòng)調(diào)節(jié)。

  這也是為什么玩家有時(shí)候會(huì)在甚至已經(jīng)跑進(jìn)了拐角之后,脫離了對(duì)手的視線之后死亡。他們是在跑進(jìn)拐角之前被擊中的,但是服務(wù)器僅僅在一些時(shí)間之后,當(dāng)那把殺了他們的槍射擊的信息到達(dá)服務(wù)器后,才能意識(shí)到他們死了,當(dāng)然這需要一個(gè)附加的延遲,以便于服務(wù)器能通知客戶端,這個(gè)玩家已經(jīng)死了。

  客戶端可以通知服務(wù)器,他們是不是希望使用這個(gè)歷史位置信息(例如,他們是否希望能夠瞄準(zhǔn)目標(biāo),還是他們將要自己進(jìn)行手動(dòng)調(diào)節(jié))

  控制這個(gè)的命令是 cl_lc. 設(shè)置到1,那么客戶端使用這個(gè)歷史數(shù)據(jù),為0則不使用。

  客戶端-服務(wù)器通訊設(shè)置

  有4個(gè)命令用來設(shè)置這個(gè)通訊的表現(xiàn)。

  cl_cmdrate是客戶端每秒鐘通知服務(wù)器它的行為的次數(shù)。記住,數(shù)據(jù)在一次更新的流量取決于有多少事情發(fā)生

  cl_updaterate 是服務(wù)器每秒鐘通知客戶端地圖里發(fā)生了什么的次數(shù)。同樣,有更多的行為,就有更多的數(shù)據(jù)。流量發(fā)生在每一次更新中。

  cl_rate 設(shè)定客戶端能夠在每秒鐘傳送給服務(wù)器的字節(jié)的最大上限。這個(gè)值是必需的,因?yàn)榉?wù)器不能可靠的監(jiān)測(cè)客戶端的數(shù)據(jù)傳送率。這個(gè)值需要被設(shè)定到適合你到服務(wù)器的連接的數(shù)據(jù)上傳的速率。

  rate是服務(wù)器每秒鐘傳送給客戶端的字節(jié)的上限。sv_maxrate,是服務(wù)器指定的上限,在速率超過sv_maxrate的時(shí)候使用。

  從客戶端到服務(wù)器的更新通常包含很少的數(shù)據(jù)-大約20字節(jié)。

  從服務(wù)器到客戶端的更新包含許多數(shù)據(jù),從在一個(gè)安靜的地區(qū)的大概30字節(jié)到激戰(zhàn)區(qū)的175字節(jié)。

  例如,一個(gè)56k modem有最大33.6k上傳速率,和一個(gè)最大56k下載速率。這里的值是字元(bit).但是,這些值是信號(hào)率,不是數(shù)據(jù)載荷率。信號(hào)率是每秒的字元數(shù),但不是所有這些字元可被用于傳送數(shù)據(jù)。有一些-大概10%-被用于控制信息。所以,一個(gè)33.6k字元每秒的連接能夠?qū)嶋H上,傳送大概30.2k字元每秒的實(shí)際數(shù)據(jù),也就是3780字節(jié)-并且這是cl_rate應(yīng)該被設(shè)定到的值(假設(shè)有一個(gè)完美的上傳連接-如果modem連接到了一個(gè)有噪音的線路上,那么數(shù)據(jù)傳送率會(huì)降低,所以值必須根據(jù)這個(gè)而降低)。

  同樣,根據(jù)這個(gè)換算56k連接的實(shí)際速率,rate應(yīng)根據(jù)這個(gè)實(shí)際值而設(shè)定。

  rate等于下載速度乘以0.9除以8

  cl_rate等于上傳速度乘以0.9除以8

  通常,客戶端沒有很多的數(shù)據(jù)通知服務(wù)器端,客戶端到服務(wù)器的通訊很少遭遇瓶頸,即使是在56k的modem上。

  注意,控制信息載量依賴于客戶端同isp的連接方式的不同而不同,但是在高帶寬的連接上這個(gè)問題基本上可以忽略,因?yàn)檫@種連接所擁有的帶寬通常超過服務(wù)器端所設(shè)定的限制。

  cl_rate和rate的值的小數(shù)部分的設(shè)定絕對(duì)不會(huì)產(chǎn)生任何效果。設(shè)定小數(shù)部分能夠提高性能只是一種街坊之間的謠傳。

  如同原來提到的,客戶端到服務(wù)器的更新通常很少,以20字節(jié)的連續(xù)發(fā)送。在一個(gè)56k的調(diào)制解調(diào)器上,如果有一個(gè)完美的連接,3780字節(jié)每秒到服務(wù)器的更新會(huì)是有效的,那么cl_cmdrate可以被設(shè)定到189。這樣,半條命就會(huì)有一個(gè)硬編碼的內(nèi)在最大值,大概60。

  從服務(wù)器到客戶端的更新傳送更多的數(shù)據(jù)。大的更新(例如激戰(zhàn)狀態(tài))占據(jù)大概175字節(jié)。在一個(gè)完美的56k modem連接上有6300字節(jié)每秒的有效傳送率,cl_updaterate應(yīng)該被設(shè)定到36。

  l_updaterate等于rate除以175

  cl_cmdrate等于cl_rate除以20

  通過寬帶連接的玩家會(huì)有非常不同的設(shè)置,首先,寬帶連接總是會(huì)有超過服務(wù)器提供的有效帶寬。因此,rate和cl_rate都需要被設(shè)定到他們的最高值,因此客戶端可以使用所有有效的帶寬。

  rate和cl_rate的最高值是20000。

  對(duì)cl_cmdrate和cl_updaterate的正確設(shè)定值的計(jì)算實(shí)際上通常依賴于玩家連接到的特定的服務(wù)器,因?yàn)樗膕v_maxrate值將成為有效帶寬的限定因素,并且有效帶寬定義了正確的更新設(shè)定。

  如同前面提到的,半條命有一個(gè)內(nèi)在的硬編碼最大值,用于兩個(gè)更新設(shè)定,推薦的設(shè)定是75(安全起見),這個(gè)應(yīng)該根據(jù)需要通過調(diào)節(jié)sv_maxrate在連線的時(shí)候減低。

  net_graph命令提供客戶端同服務(wù)器的通訊的具體信息。

  我們感興趣的地方是:choke.

  choke代表在兩個(gè)方向上更新沒有被送出的數(shù)量,因?yàn)橥ㄓ嵾B接已經(jīng)飽和了。

 ?。↙oss則相當(dāng)不同,并且很少被使用,它代表被送出,但永遠(yuǎn)不會(huì)到達(dá)目的地的更新的數(shù)字。如果玩家經(jīng)歷到了很大的loss, 意味著在網(wǎng)絡(luò)連接上出現(xiàn)了技術(shù)問題,這個(gè)問題不在這個(gè)文章的范圍之內(nèi)。)

  讓net_graph開著,并監(jiān)測(cè)choke值。如果choke發(fā)生了,逐漸的減低cl_updaterate和cl_cmdrate值,直到在戰(zhàn)斗中不再有choke.

  整體目標(biāo)是讓cl_updaterate和cl_cmdrate盡可能的高(以提供一個(gè)理想的移動(dòng)動(dòng)作顯示),同時(shí)保持choke很低或者是0,在戰(zhàn)斗中。

  其它客戶端行為

  半條命的引擎有很多其它的竅門用來增強(qiáng)客戶端的現(xiàn)實(shí)無延遲的感受。

  當(dāng)一個(gè)玩家開槍的時(shí)候,客戶端立刻激發(fā)槍械,產(chǎn)生彈道,并且繪制一個(gè)錯(cuò)誤的彈痕-在它認(rèn)為子彈會(huì)去的點(diǎn)上-這并沒有涉及到服務(wù)器還沒有接受到玩家開槍的信息這一事實(shí).這種方式下,玩家感覺世界立即回應(yīng)了他的開槍動(dòng)作。

  在計(jì)算出彈道和繪制彈痕之后,客戶端通知服務(wù)器玩家已經(jīng)開槍。但是,客戶端不通知服務(wù)器關(guān)于它計(jì)算的彈道,僅僅是:玩家已經(jīng)開槍。

  于是,服務(wù)器計(jì)算出第二條彈道,這個(gè)彈道有一個(gè)不同的隨機(jī)因素,于是,同一顆子彈產(chǎn)生了不同的彈道。

  客戶端錯(cuò)誤彈痕

  有一點(diǎn)很重要,要意識(shí)到服務(wù)器在想什么-它認(rèn)為子彈去了哪里-才是真正發(fā)生的事情。客戶端做的事情就是僅僅幫助欺騙玩家,在他同服務(wù)器的連接中,沒有延遲。

  如果服務(wù)器認(rèn)為子彈擊中了一個(gè)物體,并作出擊中反映,它告訴客戶端,客戶端于是繪制適當(dāng)?shù)膭?dòng)作-打碎了玻璃,血跡等等。

  如果服務(wù)器認(rèn)為子彈錯(cuò)過了目標(biāo),它什么也不做:客戶端繪制的錯(cuò)誤彈痕依然保留。所有的錯(cuò)誤彈痕都是假象:它們不是子彈實(shí)際上命中的地方。

  客戶端永遠(yuǎn),從來不會(huì)在沒有接受到服務(wù)器的相關(guān)指令的時(shí)候繪制命中動(dòng)作。思考如果客戶端會(huì)這么做的時(shí)候會(huì)發(fā)生什么:一個(gè)玩家對(duì)著一個(gè)玻璃窗開槍,客戶端認(rèn)為子彈命中了并立即粉碎了玻璃??蛻舳送ㄖ?wù)器玩家開槍了-但是服務(wù)器監(jiān)測(cè)到子彈錯(cuò)過了玻璃窗。

  這會(huì)怎么樣?客戶端會(huì)神奇的重新建造一個(gè)玻璃窗?當(dāng)然不會(huì)。結(jié)果是,如果一個(gè)客戶端認(rèn)為子彈擊中了一個(gè)目標(biāo),它什么也不做,除了在目標(biāo)上繪制一個(gè)錯(cuò)誤的彈痕,如果一個(gè)錯(cuò)誤的彈痕能夠在上面被繪制的話(例如玻璃窗支持錯(cuò)誤的彈痕繪制,但是人質(zhì)不會(huì))。

  但是,有一個(gè)例外。如果客戶端認(rèn)為子彈擊中了一個(gè)人物或者人質(zhì),它將會(huì)播放子彈命中的噪音。于是,當(dāng)你招呼到很遠(yuǎn)距離以外的子彈的時(shí)候,可能你會(huì)聽到子彈擊中你的噪音,盡管沒有被擊中。

  在1.1.0.6版的半條命,客戶端繪制錯(cuò)誤的彈痕會(huì)同服務(wù)器實(shí)際得出的彈痕有很大的不同,特別是涉及到單發(fā)自動(dòng)狙擊步槍的時(shí)候。半條命1.1.0.8補(bǔ)丁聲明會(huì)修改這個(gè)問題,讓客戶端的子彈彈道適合服務(wù)器的彈道。當(dāng)然,情況已經(jīng)改善了:客戶端的彈道現(xiàn)在已經(jīng)大幅度接近服務(wù)器端的彈道,但它們依然不同。

  最后一點(diǎn)注意。既然客戶端不能在人物或者人質(zhì)身上繪制彈痕,如果客戶端認(rèn)為命中了,而服務(wù)器認(rèn)為沒有命中,子彈會(huì)消失,既不會(huì)繪制彈痕也沒有命中顯示。

  網(wǎng)絡(luò)配置

  tcp/ip負(fù)責(zé)獲得一個(gè)應(yīng)用程序產(chǎn)生的傳送給另外一個(gè)的數(shù)據(jù)。

  這一頁解釋了tcp/ip的基本原則。理解這一段的內(nèi)容很重要因?yàn)檫@對(duì)理解網(wǎng)絡(luò)層的配置至關(guān)重要。

  在我們的例子中,應(yīng)用程序是半條命,并且產(chǎn)生的數(shù)據(jù)(人物移動(dòng),開槍等)是從玩家的電腦發(fā)送到服務(wù)器。(當(dāng)然服務(wù)器也向玩家的電腦發(fā)送信息)。

  一個(gè)典型的半條名客戶端配置產(chǎn)生大約1500字節(jié)的數(shù)據(jù)每秒,需要發(fā)送給服務(wù)器。數(shù)據(jù)不是在產(chǎn)生了之后直接發(fā)送出去:被保存在玩家的電腦上直到足夠多的數(shù)據(jù)被匯集(通常大約600字節(jié)或者左右,將耗費(fèi)0.4秒)然后這個(gè)數(shù)據(jù)包被發(fā)送出去。

  這么做的原因可以追溯到幾十年前。

  nternet基本上集成了很多分離的網(wǎng)絡(luò)。一個(gè)網(wǎng)絡(luò)是一個(gè)計(jì)算機(jī)的群,全部連接在一起。每一個(gè)網(wǎng)絡(luò)連接到幾個(gè)其它的不同網(wǎng)絡(luò)上(所以有很多不同的路線處于任何兩個(gè)給定的網(wǎng)絡(luò)之間)。當(dāng)一個(gè)玩家通過他的小貓撥號(hào)上網(wǎng)的時(shí)候,他的計(jì)算機(jī)臨時(shí)成為他的isp維護(hù)的網(wǎng)絡(luò)的一部分。每一個(gè)計(jì)算機(jī)有一個(gè)單一的標(biāo)示-它的ip地址,一個(gè)ip地址含有四個(gè)數(shù)字,從0-255,用句號(hào)隔開,例如63.12.121.1。每一個(gè)數(shù)字有一個(gè)不同的含義。

  主網(wǎng)絡(luò)。網(wǎng)絡(luò)。次網(wǎng)絡(luò)。特定計(jì)算機(jī)

  每一個(gè)網(wǎng)絡(luò)都被分配了一個(gè)ip地質(zhì)范圍,可以用來分配給它的網(wǎng)絡(luò)內(nèi)的每一臺(tái)計(jì)算機(jī)。例如,可以是62.*.*.*,那么它可以使用任何一個(gè)以62開頭的ip地址。也可以是80.125.*.*-可以使用任何以80.125開頭的ip地址。

  當(dāng)一臺(tái)計(jì)算機(jī)想給另外一臺(tái)發(fā)送信息的時(shí)候,它必須知道另外一臺(tái)計(jì)算機(jī)的ip地址,在我們的例子中,我們的玩家知道cs服務(wù)器的ip地址。半條命生成數(shù)據(jù)包,并傳給tcp/ip軟件,軟件附加一個(gè)頭到這個(gè)包裹上(指定目的地的ip地址),然后把它拋到網(wǎng)絡(luò)上。

  每一臺(tái)電腦維護(hù)一個(gè)計(jì)算機(jī)列表,列表照顧數(shù)據(jù)包,必須發(fā)送給指定的ip地址范圍的一臺(tái)計(jì)算機(jī)。一個(gè)簡(jiǎn)單的計(jì)算機(jī),例如運(yùn)行半條命客戶端的,將只知道一個(gè)ip地址范圍-全部,0.0.0.0到255.255.255.255-然后將會(huì)有一臺(tái)計(jì)算機(jī)繼續(xù)發(fā)送數(shù)據(jù)包(網(wǎng)絡(luò)上的網(wǎng)關(guān))。

  這臺(tái)計(jì)算機(jī)會(huì)聰明一些,知道幾套ip地址(例如58.*.*.*,這是IBM, 59.*.*.* 這是AOL,等等),然后將會(huì)發(fā)送數(shù)據(jù)包給適合的計(jì)算機(jī)-這臺(tái)計(jì)算機(jī)是某一個(gè)組織運(yùn)行的,將會(huì)了解那個(gè)組織所維護(hù)的網(wǎng)絡(luò)。

  這里的重要之處是,可能在一個(gè)ip地址段會(huì)有超過一臺(tái)計(jì)算機(jī)適合條件(例如,在給定的ip地址段中有超過一臺(tái)的計(jì)算機(jī)了解怎樣處理ip地址)。這樣做是為了防止第一臺(tái)計(jì)算機(jī)歇菜,或者連接到第一臺(tái)計(jì)算機(jī)的連接很繁忙或者失敗,第二臺(tái)計(jì)算機(jī)可以啟用,讓系統(tǒng)更健壯。

  因此接收到所有發(fā)送給58.*.*.*的數(shù)據(jù)包的IBM計(jì)算機(jī)了解58.1.*.* 以及58.2.*.* 等等,然后傳送給下一臺(tái)監(jiān)視下一個(gè)網(wǎng)絡(luò)的計(jì)算機(jī)(58.1.1.*。。。等等)。。。。最終傳送給特定的目標(biāo)計(jì)算機(jī)。

  因此,關(guān)鍵問題是,數(shù)據(jù)包是玩家的電腦發(fā)送出去的,行經(jīng)幾臺(tái)其它的電腦以及網(wǎng)絡(luò)連接,最終到達(dá)目的地。

  每一個(gè)數(shù)據(jù)包可以采用單獨(dú)的路線,取決于沿途的計(jì)算機(jī)所做的決定,明確決定哪一臺(tái)計(jì)算機(jī)應(yīng)該接受這個(gè)數(shù)據(jù)包。

  MTU意味著最大傳輸單元。這是一個(gè)數(shù)據(jù)包能夠傳送的最大字節(jié)量的上限。網(wǎng)絡(luò)層通常不發(fā)送包含的字節(jié)數(shù)比限定值低的數(shù)據(jù)包,以便于取得更高效率,所以這個(gè)設(shè)定的低和高,指明了數(shù)據(jù)包的尺寸。

  至關(guān)重要的問題是,MTU設(shè)定得越大,越多的數(shù)據(jù)在被發(fā)送之前就會(huì)被緩存起來,因此客戶端就以較低的頻率發(fā)送數(shù)據(jù)包,這很不爽,因?yàn)橹钡揭粋€(gè)數(shù)據(jù)包被傳送到服務(wù)器以前,這個(gè)數(shù)據(jù)包所代表的玩家的行為不會(huì)發(fā)生任何實(shí)際效果(因?yàn)榉?wù)器還不知道)。

  第二個(gè)問題是,當(dāng)大型的數(shù)據(jù)包從一臺(tái)電腦傳到另外一臺(tái)電腦的時(shí)候,他們通常會(huì)經(jīng)過只支持小得多的MTU的數(shù)據(jù)連接。這就要求大數(shù)據(jù)包被拆解,發(fā)送,重新裝配-這提高了數(shù)據(jù)傳送需要的時(shí)間。

  那么顯而易見的結(jié)論是,設(shè)定MTU到盡可能的小,但是,問題不是這么簡(jiǎn)單。因?yàn)槊恳粋€(gè)數(shù)據(jù)包都有一個(gè)40字節(jié)的頭,包含重要的控制信息。

  這樣,推論是,如果MTU很小,頭會(huì)吃掉大量的有效帶寬,例如,一個(gè)完美的56k modem連接可以上傳4200字節(jié)每秒。如果MTU尺寸被設(shè)定到90,頭是40,這是44%的整個(gè)數(shù)據(jù)包尺寸。如果4200字節(jié)的44%都用于傳送頭,這只保留了2772字節(jié)給客戶端實(shí)際傳送的數(shù)據(jù)-那么,客戶端不得不改變cl_rate到2772并且減低每秒向服務(wù)器的更新次數(shù)因?yàn)樗挥泻苌俚挠行挕?/p>

  indows支持的最低MTU是68字節(jié)。windows不限定上界,但是網(wǎng)絡(luò)限定上界,并且windows尊重這個(gè)值。還有,一些網(wǎng)絡(luò)限定下界,windows同樣也尊重這個(gè)值,只要是在68以上。

  如果MTU被設(shè)置在最小值或最大值得以下或者以上,windows忽略這些值,使用最低值或者最高值。

  通常,大多數(shù)windows使用者使用PPP over analogue modem and ISDN or Ethernet over cable and xDSL. pc使用的網(wǎng)絡(luò)是ppp或者以太網(wǎng)。所有windows使用者運(yùn)行tcp/ip連接。

  注意,tcp/ip和網(wǎng)絡(luò)兩者都有頭.

  Network Header MinMTU MaxMTU

  PPP 6 128 65535

  Ethernet 38 46 1500

  TCP/IP 40 576 65535

  56k modem使用者和isdn使用者,都是用tcp/ip over ppp, 有46字節(jié)的頭。cable和xdsl使用者有78字節(jié)的頭。

  那么,關(guān)鍵問題是:一個(gè)包裹在達(dá)到MTU設(shè)定的尺寸之前不會(huì)被送出。如果MTU值很大,很明顯延遲也更長(zhǎng)。

  但是,如果MTU值太小,頭會(huì)占據(jù)大量帶寬,減低帶寬的有效性.

  RWIN意味著receive window.

  當(dāng)一個(gè)計(jì)算機(jī)發(fā)送包裹給另外一臺(tái)計(jì)算機(jī),接收方計(jì)算機(jī)一旦收到包裹,必須送出一個(gè)收到信息給發(fā)送計(jì)算機(jī),以便于發(fā)送計(jì)算機(jī)知道數(shù)據(jù)包已經(jīng)安全到達(dá)而沒有在網(wǎng)絡(luò)的某一個(gè)部分丟失(丟失會(huì)導(dǎo)致重新發(fā)送)。

  思考一個(gè)計(jì)算機(jī)擁有一個(gè)完美的56kmodem連接,使用576 MTU, 連接到一個(gè)半條命服務(wù)器,并有一個(gè)150ms的ping.

  這個(gè)計(jì)算機(jī)可以發(fā)送7.3個(gè)包裹每秒,如果它只是盡可能快地向網(wǎng)絡(luò)拋出數(shù)據(jù)包的話。

  但是,請(qǐng)想象如果計(jì)算機(jī)在發(fā)送另外一個(gè)包裹之前等待收到包裹的計(jì)算機(jī)的確認(rèn)信息會(huì)發(fā)生什么。

  計(jì)算機(jī)將會(huì)發(fā)送一個(gè)包裹,等待150毫秒以便于包裹到達(dá)服務(wù)器,然后另外150毫秒等待收到確認(rèn)信息。每一個(gè)包裹發(fā)送以后,到isp的連接將被閑置300毫秒,然后另外一個(gè)數(shù)據(jù)包發(fā)送出去。這樣這臺(tái)計(jì)算機(jī)只能發(fā)送3.3個(gè)包裹,而不是7.3每秒。

  很明顯,解決辦法是不要等待收到確認(rèn),但是還要記住,確認(rèn)信息仍然是需要的。如果在一個(gè)給定的時(shí)間里,比如30秒,還沒有收到確認(rèn)信息,那么我們推測(cè)這個(gè)包裹沒有到達(dá)目的地,需要重新發(fā)送。

  rwin是,在接受到目的地電腦的確認(rèn)信息之前,能夠連續(xù)發(fā)送多少個(gè)數(shù)據(jù)包的數(shù)字。

  (實(shí)際上rwin是字節(jié)大小,例如,如果你的mtu是576,而你規(guī)定在收到確認(rèn)信息前可以發(fā)送8個(gè)數(shù)據(jù)包,那么rwin應(yīng)該是8*576=4608)

  如果這個(gè)值被設(shè)定為等于MTU,那么計(jì)算機(jī)的行為就像上面描述的一樣,在每個(gè)數(shù)據(jù)包發(fā)送以后等待確認(rèn)信息。

  當(dāng)運(yùn)行cs的時(shí)候,通常假設(shè)客戶端和服務(wù)器的連接很穩(wěn)定,那么rwin應(yīng)該被設(shè)置在一個(gè)很高的值上。

  一個(gè)很高的值應(yīng)該是64KB,65536。

  TTL意味著time to live.

  ttl是一個(gè)包裹能夠從一臺(tái)電腦傳送到另外一臺(tái)電腦在它被標(biāo)記為丟失并被銷毀之前在從源到目的地的途中的傳送次數(shù)的數(shù)值。(tmd饒舌,那邊的whomi搞傻了,麻煩送去青山醫(yī)院,謝謝。)

  如果我們思考一臺(tái)運(yùn)行半條命的電腦,在ttl為10的情況下傳送一個(gè)包裹到服務(wù)器,而這個(gè)包裹實(shí)際上經(jīng)過了,比如15臺(tái)其它的電腦以到達(dá)服務(wù)器,路線中的第十臺(tái)電腦將會(huì)報(bào)告:這個(gè)包裹已經(jīng)達(dá)到了它的ttl, 我必須廢棄這個(gè)包裹”,然后在這個(gè)點(diǎn)上,包裹不會(huì)被傳送到第11臺(tái)電腦,而是會(huì)被銷毀。

  這么做的原因是防止配置不當(dāng)?shù)碾娔X可能會(huì)發(fā)送一個(gè)進(jìn)入死循環(huán)的數(shù)據(jù)包-永遠(yuǎn)不會(huì)到達(dá)它的目的地。這就必須有一個(gè)機(jī)制讓包裹能夠自己逐漸的死亡。

  hop這個(gè)詞被用來表明一個(gè)包裹從一臺(tái)電腦傳送到另一臺(tái)電腦。

  任何具有良好反映的服務(wù)器將會(huì)被傾向于認(rèn)為是一個(gè)低hop遠(yuǎn)的服務(wù)器,因?yàn)楹苊黠@,有越多的hop存在,就會(huì)讓客戶端同服務(wù)器的路線變得越遠(yuǎn),傳送一個(gè)包裹的時(shí)間就會(huì)越長(zhǎng)。

  而且,當(dāng)運(yùn)行cs的時(shí)候,通常假定客戶端同服務(wù)器有一個(gè)比較可靠的連接,這樣,擔(dān)心一個(gè)處于客戶端和服務(wù)器之間的路線上的電腦是不是配置不當(dāng)是一件多余的事情。

  因此,通常推薦的正常ttl是64,這對(duì)cs比較好。

  武器和槍火

  槍火分析

  一個(gè)槍火真實(shí)度的關(guān)鍵方面是,游戲是如何仿效武器的行為的。

  cs嘗試仿效真實(shí)的武器行為,通過兩個(gè)策略:首先,當(dāng)開槍的時(shí)候,準(zhǔn)星被扯拉向上和左右,不規(guī)律的。其次,每一顆子彈射擊出去的時(shí)候都被從準(zhǔn)星的當(dāng)前位置添加了隨機(jī)的偏移量。

  確切地說,多少扯拉以及偏移量在任何給定的時(shí)刻內(nèi)被應(yīng)用到槍上依賴于3個(gè)因素:

  當(dāng)前連射的時(shí)間長(zhǎng)度

  玩家的移動(dòng)

  使用什么武器

  當(dāng)前的連射時(shí)間越長(zhǎng),越多的扯拉和偏移就會(huì)被應(yīng)用,一直到最大值。在實(shí)際中,這意味著大多數(shù)武器的第一發(fā)都很精確,接著的2到4發(fā)在縱向上偏離,此后,武器迅速達(dá)到拉扯和偏移的最大值,這樣準(zhǔn)星移動(dòng)和子彈偏移的量都會(huì)非常大,因此意味著瞄準(zhǔn)不再可能。

  玩家移動(dòng)看起來添加了一個(gè)拉扯和偏移的放大器。站住不動(dòng)意味著沒有變化,跑動(dòng)看起來減低了準(zhǔn)確率(大概50%),但是處于空中(挑起或者在一個(gè)梯子上)極大減低精確率-大概200%。

  最后,一些武器比另外一些更精確,并有一個(gè)較低的最大拉扯和偏移量,以及在達(dá)到最大量之前有較長(zhǎng)的時(shí)間。

  子彈

  開始的射擊基本上都在準(zhǔn)星的中央。很快,槍變得很難控制,子彈散布在每一個(gè)地方。

  重要的是,每一顆子彈的彈道完全和上一顆子彈無關(guān)。

  槍火

  在連射的子彈之間的關(guān)系的缺少完全不象真實(shí)的武器行為,并且對(duì)于cs而言有很嚴(yán)重的后果,是當(dāng)前版本中高頻率的爆頭的起因。

  在下面的視頻中,每一個(gè)畫面被顯示0.05秒。子彈,一旦從武器中射出,遵循一條直線直到擊中目標(biāo)。這意味著武器的槍管,在射擊的時(shí)候,必須指向子彈落到的地方。

  可以看見,連射的子彈的落點(diǎn)的變化如此之大,槍管的角度變化如此迅速,因此幾條有關(guān)質(zhì)量的物理定律,加速度,以及慣性定律都被打破了。

  在物理上,槍管在0.05秒變換角度如此巨大是不可能的。

  但是,這不是真實(shí)的世界,這是一個(gè)計(jì)算機(jī)仿真,并且因此槍管的移動(dòng)不遵循物理和慣性的定律。

  推論是,所有的武器,在最初的精確射擊之后,都象散彈槍:它們均勻的覆蓋以準(zhǔn)星為中央的區(qū)域。這意味著不論一個(gè)玩家是不是準(zhǔn)確瞄準(zhǔn)了,子彈都會(huì)擊中目標(biāo)。

  注意,如果射出了30發(fā)子彈,并且每一發(fā)都被隨機(jī)的偏移,那么準(zhǔn)星周圍的每一點(diǎn)都有同樣的概率被擊中-因此結(jié)果是,在打光所有的30發(fā)子彈之后,形成了一個(gè)覆蓋均勻的子彈擊中區(qū)。

  在這一點(diǎn)上考慮和比較這種行為同真實(shí)武器的行為很有幫助。一個(gè)真實(shí)的自動(dòng)武器,射擊的時(shí)候,造成一個(gè)子彈流,因此每一顆子彈的命中點(diǎn)都會(huì)接近上一顆子彈。

  在cs中,在武器前面的每一個(gè)點(diǎn)有相等的機(jī)會(huì)被每一發(fā)子彈擊中

  推論是嚴(yán)重的,首先,大量的爆頭產(chǎn)生了,這是因?yàn)椴徽撐淦髦赶蚰睦?,只要在目?biāo)的附近,隨機(jī)的子彈噴射通常會(huì)擊中目標(biāo)并導(dǎo)致爆頭。

  這是為什么玩家可以跳出掩體,連射3到4發(fā)子彈-根本沒有瞄中,準(zhǔn)星也沒接近頭-卻產(chǎn)生了一個(gè)爆頭。

  所發(fā)生的事情是這樣:因?yàn)橥婕以谔S,隨機(jī)的因素使子彈偏離的厲害,因此盡管玩家的瞄準(zhǔn)根本無效(跳起,沒時(shí)間瞄準(zhǔn))離任何目標(biāo)都差得那么遠(yuǎn),子彈打得到處都是-基本上,玩家有3到4的隨機(jī)機(jī)會(huì)打出個(gè)爆頭。

  最近的cs版本提高了特定槍械的隨機(jī)程度(SMGS當(dāng)跳起時(shí),ak47所有的時(shí)間),提高了這些武器的爆頭率,方法是使他們更迅速的達(dá)到隨機(jī)值的最高點(diǎn)。

  激戰(zhàn)中的子彈

  準(zhǔn)星的最終位置同爆頭的噴濺之間的距離是很明顯的,顯然并沒有瞄準(zhǔn)頭,只有隨機(jī)的子彈導(dǎo)致了爆頭。

  作者發(fā)現(xiàn),在一米的范圍內(nèi),ak47的后坐力那么巨大,甚至在瞄著目標(biāo)的脛骨,爆頭卻發(fā)生了,這是不可能被接受的。這個(gè)行為看起來是cs游戲引擎的偽造贗品。

  當(dāng)一個(gè)玩家瘋狂射擊的時(shí)候,他的武器用子彈普遍的覆蓋了整個(gè)在它之前的區(qū)域。因此,他能擊中一個(gè)并不接近他的瞄準(zhǔn)點(diǎn)的目標(biāo)。

  依據(jù)作者的觀點(diǎn),減少未瞄準(zhǔn)的爆頭的最好辦法是讓武器更精確。

  3.超遠(yuǎn)射程的爆頭

  第二個(gè)有關(guān)隨機(jī)子彈分布現(xiàn)象的問題,是超遠(yuǎn)距離的爆頭頻率。

  在超遠(yuǎn)距離,絕大多數(shù)情況下當(dāng)武器射擊的時(shí)候會(huì)偏離目標(biāo):目標(biāo)太小并且對(duì)于刻意的瞄準(zhǔn)來說太遠(yuǎn)。如果在cs中,子彈實(shí)際上或多或少的飛到準(zhǔn)星瞄準(zhǔn)的地方,那么擊發(fā)的子彈幾乎總是會(huì)偏離目標(biāo)(盡管有瞄準(zhǔn)鏡的狙擊步槍會(huì)發(fā)揮正常并且成為這種情況下的首要威脅)

  這樣的話,由于隨機(jī)的彈道分布,從武器中射出的子彈形成了一種“雨霧”(這讓我想起了蜀中唐門),均勻的散布在以準(zhǔn)星為中心的四周。因此盡管事實(shí)是瞄準(zhǔn)目標(biāo)實(shí)際上是不太可能的,但是子彈形成雨霧的這種方式意味著任何處于這個(gè)雨霧籠罩之下的人物都可能被擊中,并且爆頭也會(huì)發(fā)生,正如同他也可能被擊中身體的其他部位一樣,但爆頭只需要一槍斃命。

  當(dāng)然,有了這些東西,就沒有了技巧或者瞄準(zhǔn):不可思議的武器行為導(dǎo)致了不可能的事情發(fā)生。

  在下面這個(gè)視頻里,很明顯遠(yuǎn)距離戰(zhàn)斗發(fā)生時(shí),脫出了武器的有效范圍,例如一把mp5, 它不可能正確的瞄準(zhǔn)那么細(xì)小并正在移動(dòng)的一個(gè)目標(biāo)。如果子彈擊中準(zhǔn)星瞄準(zhǔn)的地方,所有19發(fā)子彈都會(huì)錯(cuò)過目標(biāo)。

  但是,既然這是cs, 對(duì)著目標(biāo)大概地進(jìn)行射擊會(huì)形成一個(gè)子彈的雨霧,于是忽略了射程,子彈飛向了目標(biāo),并且其中一顆找到了頭。

  第二個(gè)主要問題是,在一些特殊情況下,cs則變得過于精確:幾乎所有武器的第一發(fā)子彈都會(huì)精確的命中目標(biāo)。

  這是肯定不對(duì)的。扳機(jī)扣動(dòng)的問題是武器設(shè)計(jì)的一個(gè)重要方面。例如,思考一個(gè)1.5公斤的手槍,有一個(gè)需要2.5公斤的力量才能扣動(dòng)的扳機(jī)。顯然,這對(duì)精確射擊有很大影響。

  類似的,一把典型的ak47的重量會(huì)低于4.0公斤。有一個(gè)不僅僅是很重,并且也很難扳動(dòng)的扳機(jī),這對(duì)首發(fā)子彈的準(zhǔn)確性有極大的影響,實(shí)際上在批貨市場(chǎng),ak47是最不精準(zhǔn)的一種武器:ak47的武器設(shè)計(jì)本身基本上是精準(zhǔn)的,但是任何設(shè)計(jì)都會(huì)受到廉價(jià)配件的危害。

  這個(gè)問題在或多或少的程度上影響所有的武器,這意味著首發(fā)子彈決不應(yīng)該絲毫不差的命中目標(biāo)-這里的例外大概是狙擊步槍,因?yàn)樗鼈兊脑O(shè)計(jì)致力于保持物理平衡,因此扣動(dòng)扳機(jī)不會(huì)影響瞄準(zhǔn)。

  在cs中,幾乎所有的武器都有可能在超遠(yuǎn)距離命中一個(gè)不動(dòng)的目標(biāo),因?yàn)榈谝粯尶偸菧?zhǔn)得要命。這是一個(gè)主要的失誤,給了攻擊型步槍某種遠(yuǎn)的異乎尋常的戰(zhàn)斗能力-這繼而減低了狙擊槍的價(jià)值,特別是單發(fā)自動(dòng)狙擊步槍。

  后坐力

  提高精確度的通常建議是不要一直扣緊扳機(jī),玩家應(yīng)該使用點(diǎn)射,打出幾發(fā)子彈后停一下,等待槍回位,然后進(jìn)行下一輪點(diǎn)射。具體方法是,每?jī)擅腌娺M(jìn)行一輪3發(fā)的點(diǎn)射,這比先打出三發(fā)然后射出大量脫靶的子彈要好。

  準(zhǔn)星的大小是試圖表現(xiàn)在開槍時(shí)候的某一特定時(shí)刻的落彈準(zhǔn)確率。

  實(shí)踐發(fā)現(xiàn),在一輪足夠長(zhǎng)的連射,讓準(zhǔn)星達(dá)到了最大程度以后,停頓大約0.5秒,那么下一輪點(diǎn)射的第一發(fā)子彈是非常精確的,但是緊接著的后來的子彈將會(huì)立刻恢復(fù)到極不準(zhǔn)確的程度。

  簡(jiǎn)單的說:在打出幾槍以后,如果玩家在武器沒有回位的時(shí)候接著進(jìn)行下一輪點(diǎn)射,第一發(fā)子彈仍然是完全精確的,在此之后,武器立刻回復(fù)到極不精確的程度。

  這種特性符合所有的自動(dòng)武器。

  準(zhǔn)星的膨脹應(yīng)被考慮成同武器的精確度相關(guān)。當(dāng)準(zhǔn)星膨脹到極限的時(shí)候,槍是最不精確的。當(dāng)準(zhǔn)星收縮到最小的時(shí)候,槍是最精確的。當(dāng)準(zhǔn)星膨脹了50%的時(shí)候,槍的準(zhǔn)確率也有50%。

  直覺上,我們可以期望,在一個(gè)給定的膨脹率下(25%例如),槍也會(huì)有25%的準(zhǔn)確率。例如,思考兩把mp5,第一把進(jìn)行了一個(gè)長(zhǎng)時(shí)間的連射而且準(zhǔn)星已經(jīng)達(dá)到了50%的膨脹。第二把已經(jīng)進(jìn)行了一個(gè)長(zhǎng)時(shí)間連射,現(xiàn)在不再射擊,這把槍的準(zhǔn)星正處于收縮期(已經(jīng)在連射中達(dá)到最大膨脹)并且現(xiàn)在也正在50%的程度上。

  可能我們會(huì)設(shè)想,如果第二把槍在這個(gè)時(shí)候射擊,那么子彈的精確度應(yīng)該同第一把槍在這個(gè)時(shí)候是一樣的,因?yàn)闇?zhǔn)星都處于50%的膨脹率。

  這不是真的。

  要理解實(shí)際上發(fā)生了什么,首先思考一把攻擊型步槍從準(zhǔn)星最小的狀態(tài)進(jìn)行一個(gè)長(zhǎng)時(shí)間連射的行為特征。第一槍直接命中目標(biāo),接著的幾發(fā)在縱向上偏離,后續(xù)的射擊在縱向的頂端形成一個(gè)帶因?yàn)闇?zhǔn)星進(jìn)行左右的甩動(dòng)。

  重要的事實(shí)是,當(dāng)槍在射擊的時(shí)候,它總是造出這個(gè)圖案。當(dāng)前的后坐力水平所產(chǎn)生的區(qū)別是,從第一發(fā)精確命中目標(biāo)的子彈,到子彈開始從一邊到另一邊繪制帶形這一過程有多快。

  如果有0后坐力,槍會(huì)安排一顆子彈到目標(biāo)上,6-7發(fā)在縱向偏離上,然后進(jìn)入從一側(cè)到另一側(cè)的偏離。

  如果有50后坐力,槍會(huì)安排3發(fā)子彈-而不是正常情況下的6-7發(fā)-在縱向上偏離,然后進(jìn)入從一側(cè)到另一側(cè)的偏離。這三發(fā)子彈均勻分布在縱向上。第一發(fā)完全精確,第二發(fā)在一半高度,第三發(fā)在縱向的頂端。

  如果準(zhǔn)星高度膨脹(接近100%),槍會(huì)只安排一發(fā)子彈在目標(biāo)上,然后立刻進(jìn)入從一側(cè)到另一側(cè)的偏離。但是,這第一發(fā),確實(shí)完全準(zhǔn)確的命中目標(biāo)。

  如果我們思考我們的兩把mp5(一把處于長(zhǎng)時(shí)間連射的中途并在50%的準(zhǔn)星膨脹率上,另外一把的準(zhǔn)星正在收縮,并且也處于50%的準(zhǔn)星膨脹率上)我們會(huì)發(fā)現(xiàn)第一把mp5的射擊將會(huì)產(chǎn)生開始進(jìn)行帶狀繪制的第一顆子彈,然而,第二把將會(huì)產(chǎn)生一顆正好命中目標(biāo)的子彈。

  總而言之,后坐力模式是有缺欠的。首先,如同講過的,這個(gè)模式并不是在準(zhǔn)確地模擬現(xiàn)實(shí)槍火,其次,即使是在它的有瑕疵的后坐力模式上,它允許玩家在高度飄離的武器上射出精確的子彈。

  復(fù)雜的系統(tǒng)都是不可預(yù)見的。改變-甚至是小的改變-可能,或者不會(huì)產(chǎn)生需要的效果,并且看起來更象是產(chǎn)生了一些不需要的效果,其中的一些可能甚至?xí)^想要的效果。cs是一個(gè)復(fù)雜的系統(tǒng)。

  作者推測(cè),后坐力被做成這種模式是為了讓點(diǎn)射更有效率。這一點(diǎn)上它做的足夠好了。預(yù)期之外的側(cè)面效果是玩家可以進(jìn)行長(zhǎng)時(shí)間的連射并且依然能直接進(jìn)行精確射擊,逃脫后坐力的限制。

  提高精確度

  提高精確度的主要技巧是克制長(zhǎng)時(shí)間的連射,要敲打扳機(jī),迅速射擊-但不要太迅速-單點(diǎn)。在單點(diǎn)之間有一個(gè)至關(guān)重要的停頓時(shí)間必須要注意,兩發(fā)點(diǎn)射違背了這個(gè)停頓時(shí)間,并不比長(zhǎng)時(shí)間連射精確太多。

  散彈槍

  如果前面討論過的,武器的誤差在跑動(dòng)中增加,跳動(dòng)總大量增加。但是,有兩個(gè)例外:散彈槍,m3和xm1014.

  這兩把散彈槍都不受跑動(dòng)和跳動(dòng)的影響。

  槍火的聲音可見度

  使用a3d聲效的玩家會(huì)比使用eax聲效,或者沒有3d聲效支持的玩家聽得更遠(yuǎn),大約兩倍遠(yuǎn)。

  這當(dāng)然是一個(gè)很大的優(yōu)勢(shì),如同能夠穿墻透視。

  經(jīng)過地圖測(cè)試的效果,列表如下(注意,s代表使用了消音器,t代表glock18的三聯(lián)發(fā)模式。打開狙擊鏡子不影響聲音的傳送)

 ?。ㄟ@個(gè)列表標(biāo)出了在1.3中,各種武器聲音的可聽見距離,其中的距離數(shù)字單位是所謂世界單位,這是3d開發(fā)引擎使用的構(gòu)圖單位,例如opengl, 我個(gè)人對(duì)d3d沒有太多了解,可能d3d使用同樣的單位,在1.5以及1.6中是不是有新的變化目前還不清楚,好像記得1.6中ct能聽得更遠(yuǎn)?或者類似的什么,但我想這個(gè)列表仍然有很大的參考意義...Noodel注)。

  手槍 沒有3D或者使用EAX 有A3D

  USP 1175 2450

  USP (S) 450 1000

  Glock18 1175 2450

  Glock18 (T) 1175 2450

  Desert Eagle 1600 3300

  SIG P228 1175 2450

  Dual Berettes 1175 2450

  Five-Seven 1170 2450

  散彈槍

  M3 1975 4125

  XM1014 1800 3825

  沖鋒槍

  MP5 1500 3100

  TMP 575 1200

  P90 1500 3100

  MAC-10 1300 2750

  UMP45 1500 3100

  攻擊步槍

  AK47 2400 4950

  G-552 2400 4950

  M4A1 1825 3800

  M4A1 (S) 650 1400

  AUG 1975 4150

  狙擊步槍

  Scout 575 1200

  AWP 3425 7075

  G3 2375 4950

  G-550 2375 4950

  機(jī)槍

  M249 1800 3825

  手雷

  HE gren 3250 6600

  Flash 1150 2475

  刀

  Knife out 350 800

  Knife 1 1200 2475

  Knife 2 1200 2475

  其它

  腳步聲 1150 2450

  上彈聲 1200 2475

  無線電通訊 1200 2475

  手電 打開/關(guān)閉 1200 2475

  摔在地上 1150 2450

  彈夾聲 975 1950

  彈夾聲是指彈夾彈出武器,掉在地上的聲音。請(qǐng)參考下一章節(jié)有關(guān)消音器的介紹以獲取關(guān)于本章節(jié)的更多信息。

  注意,awp和HE都非常響,在有a3d支持的音效上,可以被地圖上的大部分區(qū)域聽見。

  在作者的觀點(diǎn),投資在a3d聲卡上對(duì)專業(yè)的站隊(duì)來說非常值得,因?yàn)樗麄冃枰讵?jiǎng)金高達(dá)幾萬甚至幾十萬的cs競(jìng)賽中比拼,而一塊a3d聲卡只需要20美元。

  windows目前支持多聲卡,使用者只要在需要的時(shí)候進(jìn)行切換。不幸的是,Aurel公司,a3d芯片的設(shè)計(jì)者,幾年前中止了業(yè)務(wù),因此,a3d驅(qū)動(dòng)只存在windows 9x的支持.

  注意,半條命需要2.0版的a3d api.只有使用aureal 8830芯片的聲卡支持這個(gè)版本,所有其他的聲卡(包括所有帶有a3d支持的soundblaster聲卡)只支持1.0版的a3d api.

  (Noodle: 按我所知,現(xiàn)在情況不是這樣,我用的是creative 的pci128d, 我記得包裝盒上聲明支持a3d2.0..如果我沒記錯(cuò)的話)。

  如果半條命被配置為支持a3d,但是聲卡卻不支持a3d或者只支持a3d1.0版,那么a3d的設(shè)置會(huì)被忽略,正常的聲音(或者eax,如果配置了)會(huì)被使用。

  作者懷疑,但沒有驗(yàn)證過,在config.cfg文件中,3d聲音選項(xiàng)的順序很重要,如果s_eax列在s_a3d前面,那么eax會(huì)被選用。由于config.cfg每一次在半條命啟動(dòng)的時(shí)候都會(huì)被排序和重寫,而按照字母順序,s_a3d會(huì)排在eax前面,所以如果你在聲音選項(xiàng)的配置里,同時(shí)選定了eax和a3d,那么應(yīng)該會(huì)選用a3d.

  同時(shí)注意,目前游戲內(nèi)的聲音通話不支持a3d,使用一個(gè)第三方的聲音通訊軟件比較重要。

  消音器

  關(guān)于m4a1和usp的消音器使用問題,長(zhǎng)久以來有大量的爭(zhēng)論,主要有四個(gè)方面的內(nèi)容:可見性,聲音,傷害和精確度。

  一般認(rèn)為,裝上消音器可以減少槍口的火光,事實(shí)不是這樣。用了消音器的玩家自己會(huì)見到火光減少,但其他的玩家見到的,和沒有裝消音器是一樣的。

  消音器減低了射擊的噪音,對(duì)于使用者自己以及其他玩家都是這樣。

  下表列出了聲音的有關(guān)數(shù)據(jù)

  Sound No 3D/EAX A3D

  M4A1, 未消音 1825 3800

  M4A1 彈夾 975 1950

  M4A1, 消音 650 1400

  首先要注意的是,彈夾落地的聲音比消音的m4a1更大。那么,在消音的時(shí)候,其他的玩家會(huì)聽見換彈夾的聲音,即使他沒有聽見開槍的聲音。

  其次,a3d的使用者有更大的優(yōu)勢(shì)。

  一把加了消音器的m4a1比沒加消音器的造成更少的傷害。

  對(duì)此進(jìn)行了8次試驗(yàn),一個(gè)ct用m4a1攻擊一個(gè)全甲的t的腿,四次消音,四次未消音,t在每一顆子彈擊中后的生命值結(jié)果列表如下:

  子彈 消音 未消音

  1st 81 79 79 82 79 81 78 78

  2nd 63 60 61 64 59 60 58 56

  3rd 43 42 43 46 40 40 36 36

  4th 25 21 22 28 18 19 14 14

  5th 7 1 3 10 - - - -

  很明顯的結(jié)果:消音的時(shí)候,總是需要5顆子彈才能殺掉一個(gè)人,未消音的時(shí)候,總是只需要四顆。

  更準(zhǔn)確地說,平均來看消音的m4造成18.9的傷害,未消音的造成22.3的傷害。這個(gè)實(shí)驗(yàn)表明,消音器減低了15.3%的傷害值。

  經(jīng)過可見的視覺效果的調(diào)查,消音器沒有實(shí)際作用-有益的或者有害的-在武器精確度方面。可能會(huì)做一個(gè)統(tǒng)計(jì)調(diào)查,也許會(huì)在以后發(fā)表。

  (Noodle:對(duì)于消音器是不是能夠讓彈道更集中,很多人包括我一直有爭(zhēng)議,但好像沒有確切可信的說法,此作者在此表述的準(zhǔn)確性,我個(gè)人無法預(yù)測(cè),有鑒于他提到了以后會(huì)進(jìn)行進(jìn)一步的實(shí)驗(yàn),可能意味著,目前的這個(gè)結(jié)論他并沒有完全的把握,或者至少是沒有經(jīng)過很嚴(yán)格的驗(yàn)證)。

  刀

  刀是一把需要瞄準(zhǔn)的武器,兩種攻擊方式都會(huì)攻擊到準(zhǔn)星瞄準(zhǔn)的位置。

  刀會(huì),無論如何,擊中附近的任何物體,即使實(shí)際上在準(zhǔn)星里沒有目標(biāo)。這么說,如果預(yù)先進(jìn)行了瞄準(zhǔn),用刀可以打出一個(gè)爆頭,但是,如果你沒打中,你的刀仍然會(huì)擊中目標(biāo)。

  當(dāng)一個(gè)玩家用刀攻擊的時(shí)候, 攻擊立刻發(fā)生,甚至在實(shí)際的揮刀動(dòng)作發(fā)生以前,這是真的,對(duì)于兩種攻擊動(dòng)作都是這樣。

  主要攻擊方式比次要攻擊方式有一個(gè)遠(yuǎn)的多的射程,但是,次要攻擊的殺傷力提高了三倍。

  雷

  高爆雷是cs里唯一能有大面積殺傷力的武器。了解最大殺傷范圍,以及隨著距離的拉遠(yuǎn)傷害值減低的具體情況很有幫助。

  最大殺傷范圍是350世界單位。人質(zhì)在0距離的受到傷害值是170,比玩家受到的要大。殺傷力按照線性比例縮減。

  傷害值的線性特征是沒有想到的,本來以為傷害應(yīng)該是非線性的(例如,現(xiàn)實(shí)中)在特別近的地方受到極端的傷害,然后根據(jù)距離迅速縮減。

  在現(xiàn)實(shí)中,雷爆炸產(chǎn)生一個(gè)給定量的能量。能量向外擴(kuò)展,形成一個(gè)球狀的總量??偭康拇笮≡谌魏谓o定的半徑上以如下的方程式表達(dá):4/3*PI*(r to the power 3), 這里的r是球狀的半徑。

  因此在一個(gè)100世界單位的范圍,球的總量是4188790。在300范圍,總量是113097335-超過27倍,這意味著在300的范圍,造成的傷害是在100的距離的二十七分之一,因?yàn)槔桩a(chǎn)生的固定量的能量擴(kuò)展出去在沖擊波擴(kuò)展到這個(gè)距離的時(shí)候在總量上超過了27倍。

  很清楚,事情不是這樣的,因?yàn)閭υ?00是大約130,300是大約25。

  不幸的是,所有這些東西只有一半用處,因?yàn)槿速|(zhì)比玩家受到更大的傷害。

  進(jìn)一步的調(diào)查顯示HE的最大傷害值對(duì)于一個(gè)玩家是實(shí)際上恰好100。這是可能的,如果雷正好貼近一個(gè)玩家,可以殺掉一個(gè)沒有裝甲的玩家。但是,典型的情況是,形成的傷害是通常92-97,因?yàn)樽尷啄敲赐昝赖馁N近一個(gè)玩家實(shí)在太困難了。

  對(duì)玩家的進(jìn)一步實(shí)驗(yàn)發(fā)現(xiàn),最大傷害范圍仍然是350。

  注意,裝甲可以正好吸收50%的傷害力。在有一點(diǎn)上,雷和子彈的特性一樣,雷爆炸的時(shí)候,只傷害玩家身體上的一個(gè)特定位置(這里顯然忽略了在名義上,雷是一個(gè)有傷害區(qū)域的武器)。

  這樣的話,裝甲可能會(huì),也可能不會(huì)有什么幫助,依賴于傷害的部位在什么地方(記住,裝甲不會(huì)保護(hù)一個(gè)玩家的腿,頭盔可能佩戴了也可能沒佩戴-但是只在雷“擊中”頭部的hitbox的時(shí)候才會(huì)發(fā)生作用)。

  雷完全不受地圖上的物體的影響,不論在雷爆炸的時(shí)候,和目標(biāo)之間有什么東西,雷的傷害力都是相同的,和沒有東西一樣。

  下表是經(jīng)過測(cè)試的,雷的威力同距離的關(guān)系,實(shí)心線是對(duì)于人質(zhì)的傷害/距離比率,虛線是對(duì)于玩家的:

021yin.com/games/cs_report/images/he_gren_plain.png)

  閃光彈

  閃光彈有一個(gè)最大1500世界單位的有效范圍。閃盲的持續(xù)時(shí)間緊密地和距離上的線性特征有關(guān)。

  如果一個(gè)玩家的臉面的方向在一個(gè)閃光彈的90度范圍內(nèi),玩家會(huì)經(jīng)歷一個(gè)全盲的時(shí)期,跟著是一個(gè)恢復(fù)器,然后才能恢復(fù)視線。

  如果玩家的臉面大于閃光彈的90度的范圍,沒有全盲期,恢復(fù)期會(huì)減少到正常的70%。

  下面的圖則顯示閃光雷的具體效能特征,y軸是以秒為單位的時(shí)間。x軸是以世界單位為單位的距離,頂端線是面向閃光彈的玩家的恢復(fù)時(shí)間,中間線是沒有面向閃光彈的玩家的恢復(fù)時(shí)間,底端線是全盲時(shí)間的長(zhǎng)度。

021yin.com/games/cs_report/images/fb_gren_plain.png)

  當(dāng)閃光彈爆炸的時(shí)候,游戲在閃光彈的中心和有效范圍內(nèi)的每一個(gè)玩家之間畫一條直線。如果這條直線沒有被中斷,玩家就會(huì)受到閃光彈的影響。

  閃光彈在有一些場(chǎng)合下會(huì)失效。這發(fā)生在當(dāng)閃光彈與游戲中的一個(gè)別的物體交疊的時(shí)候,這會(huì)讓所有的直線檢測(cè)失敗,因?yàn)殚W光彈的中心位于另外一個(gè)物體內(nèi)部-所有的直線檢測(cè)都會(huì)直接發(fā)現(xiàn)被物體中斷。

  其他問題

  1。手槍-冷槍管綜合癥

  在各種各樣的cs論壇里都有一個(gè)問題的討論,關(guān)于“冷槍管綜合癥”,討論為什么特定武器的最開始的幾發(fā)子彈會(huì)非常的不精確。

  調(diào)查顯示這些評(píng)論是正確的,但是有兩種冷槍管綜合癥,一種是真實(shí)的,影響單發(fā)自動(dòng)狙擊步槍,另外一種是虛假的,影響大多數(shù)手槍。

  當(dāng)cs開局,首次擊發(fā)除了usp和glock以外的任何其他手槍的時(shí)候,客戶端繪制的錯(cuò)誤彈痕是完全不準(zhǔn)確的,但是,實(shí)際的彈道是正常的。

  對(duì)于大多數(shù)手槍,開始射出3-4槍以后,客戶端的錯(cuò)誤彈痕恢復(fù)到正常。deagle是個(gè)例外,需要射出首只彈夾的全部7發(fā)子彈之后才能恢復(fù)正常。

  步槍類的冷槍管綜合癥。

  綜合癥也影響hkg3/sg1以及ssg-550單發(fā)自動(dòng)狙擊步槍。在購買了這些武器之后,最開始射出的幾發(fā)子彈會(huì)脫離目標(biāo)。注意,同手槍類不同,這些偏離是真實(shí)發(fā)生的。

  每一次在購買這些武器之后,這樣的結(jié)果都會(huì)發(fā)生。明顯的解決之道是,在購買后先開幾槍(大概5槍)。作者認(rèn)為這是一個(gè)bug,因?yàn)檫@在互聯(lián)網(wǎng)游戲中沒有意義-很容易就可以避免。

  ssg-550的錯(cuò)誤圖案。

  在對(duì)基本武器進(jìn)行試驗(yàn)的時(shí)候,注意到ssg-550狙擊步槍在不開鏡的時(shí)候有一個(gè)明顯的錯(cuò)誤彈痕圖案。但是在服務(wù)器端,彈道是正常的。

  這個(gè)特性每一次都會(huì)發(fā)生,而不僅僅是冷槍管效應(yīng)。

  aug/ssg-552開鏡錯(cuò)誤圖案。

  基本調(diào)查和試驗(yàn)顯示,這兩把有鏡子的攻擊步槍在打開鏡子之后,它們?cè)斐傻腻e(cuò)誤彈痕會(huì)有垂直的偏移。

  傷害方向指示錯(cuò)誤

  這是一種很少見到的錯(cuò)誤,當(dāng)一個(gè)玩家死亡以后,他的視角被旋轉(zhuǎn)了90度。這也讓傷害方向指示器旋轉(zhuǎn)了90度

  當(dāng)一個(gè)傷害指示器閃亮以后,會(huì)持續(xù)一陣子,緩慢的隱去,大概兩秒。如果一個(gè)玩家被正面的攻擊致死,在他死后他仍然會(huì)看到這個(gè)指示器,但卻變成了在右面。

  主要問題

  1。歷史紀(jì)錄構(gòu)造扭曲?

  有一些證據(jù)顯示,有可能玩家位置歷史信息會(huì)產(chǎn)生錯(cuò)誤。

  下面的圖像顯示了一個(gè)awp在dust上的古怪的命中。

021yin.com/games/cs_report/images/de_dust_demon_awp_352.jpg)

  問題是,這是怎么發(fā)生的?

  一個(gè)可能的原因是,玩家位置歷史信息在這個(gè)服務(wù)器上被關(guān)閉了(sv_unlag)打開或者關(guān)閉這個(gè)功能。但這也解釋不了這個(gè)現(xiàn)象。

  很明顯,目標(biāo)在開槍的時(shí)候不在準(zhǔn)星下面,并且在被命中的時(shí)候也不在準(zhǔn)星下面。

  如果我們推測(cè),hitbox沒有出現(xiàn)問題,并且服務(wù)器打開了歷史位置選項(xiàng),那么看起來有一個(gè)可能的解釋:歷史位置有時(shí)會(huì)搞錯(cuò)。

  如果這是真的,那么玩家可能被在歷史數(shù)據(jù)中“展開”,明顯的使他們變成更大的目標(biāo),因?yàn)樗麄冋谡紦?jù)歷史空間的時(shí)空中的一個(gè)大的量。

  這可以解釋圖中的現(xiàn)象。目標(biāo)的確經(jīng)過過圖中的命中發(fā)生的地方,如果玩家在歷史時(shí)空中被展開了,他仍然占據(jù)著awp的子彈經(jīng)過的那一個(gè)點(diǎn)。

  也可以推斷,玩家能夠在歷史時(shí)空中被壓縮,變得比他們實(shí)際上要小。

  很難輕描淡寫的忽略這個(gè)問題的推論,如果真的是這樣,這也能解釋1.3中的高爆頭率。如果一個(gè)目標(biāo)被展開了,頭和身體的hitbox的比例仍然不變,但是頭的hitbox的絕對(duì)大小變得更大,那么通常只需要一個(gè)headshot就解決了。

  偏差和瞄準(zhǔn)

  當(dāng)一個(gè)玩家精確的跟蹤,并對(duì)著一個(gè)相對(duì)高速移動(dòng)的人物開槍的時(shí)候(例如在這個(gè)玩家前面左右晃動(dòng),或者繞著圈子)直接對(duì)著目標(biāo)開槍是不可能命中的。

  玩家位置歷史記錄失敗

  這個(gè)問題通常被一些富有經(jīng)驗(yàn)的玩家意識(shí)到,他們已經(jīng)遭遇到這個(gè)問題很多很多次。的確,成為一個(gè)好的cser的一部分是必須知道在什么時(shí)候情況會(huì)進(jìn)入一種導(dǎo)致射擊偏差非常大的狀態(tài),并盡力避免這些狀況的發(fā)生。

  這種問題的起因并不明確。一個(gè)可能是:客戶端在從服務(wù)器得到更新信息之間插入的位置信息沒有得到補(bǔ)償。于是,人物們所處的位置總是比他們?cè)谄聊簧蠈?shí)際顯現(xiàn)的提前一點(diǎn)。但是,作者質(zhì)疑這一點(diǎn),因?yàn)楦轮辽倜棵氚l(fā)生20次,在0.05秒內(nèi),所經(jīng)過的距離不足以讓hitbox移動(dòng)的足夠遠(yuǎn)以至于允許一顆瞄準(zhǔn)了人物的子彈偏離目標(biāo)。

  作者傾向于認(rèn)為,這個(gè)問題的起因一定是在于服務(wù)器更正延遲的方式,玩家歷史數(shù)據(jù)沒有充分的,或者正確的發(fā)揮它的功能。

  物體穿透

  1。BSP文件格式的描述

  半條命的地圖是使用BSP文件格式存貯的。理解這種文件格式是如何工作對(duì)于理解物體穿透是怎樣發(fā)生有基礎(chǔ)意義,繼而理解為什么一個(gè)物體能不能被子彈穿透同物體的長(zhǎng)度,厚度,表面文理(木頭,金屬,混凝土等等)完全無關(guān)。

  想象一個(gè)地圖。它包含許多物體-墻壁,門,桌子等等。你可以通過制作一個(gè)每一件物體的完整清單來存貯這個(gè)地圖,它的尺寸,位置,紋理等等。

  每一次繪圖引擎想要在屏幕上畫一個(gè)畫面,它需要知道玩家在哪里,以及他能看見什么物體,然后它才知道要畫什么以及在哪里畫。要做這些,它必須搜索物體列表(記住,每一個(gè)物體有它的位置信息存貯在列表里),以確定玩家在當(dāng)前位置能看見什么物體。

  如果這個(gè)列表只是一個(gè)很長(zhǎng)的列表,繪圖引擎將需要搜索整個(gè)列表得出哪一個(gè)物體是可見的。這需要一段很長(zhǎng)的時(shí)間,嚴(yán)重的影響刷新率,因?yàn)槊恳环嬅娑夹枰荛L(zhǎng)時(shí)間才能畫完。

  要解決這個(gè)問題,物體列表被組織好,以使得出哪一個(gè)物體是玩家可見的這個(gè)工作進(jìn)行得非常迅速,這就是bsp全部所作的工作。

  當(dāng)bsp文件通過一個(gè)地圖生成工具被做出來,它先構(gòu)建一個(gè)單獨(dú)的,很長(zhǎng)的列表,列出所有物體。然后地圖從中間斷開,進(jìn)入兩個(gè)分開的部分。物體列表于是被分割成了兩部分,一個(gè)列出地圖左半部分的所有物體,一個(gè)列出右半部分

  很重要的是,任何被分割成了兩半的物體(例如物體的一部分在左面,一部分在右面),都分裂成兩個(gè)物體-在左邊這一部分的物體是一個(gè)新的物體,右邊的這一部分也是一個(gè)新的物體。當(dāng)然,當(dāng)繪圖引擎繪制的時(shí)候,看起來它很正常-你不會(huì)看見你個(gè)接縫或者邊角。

  把一張地圖分裂成兩部分,以及把物體列表也分割成兩部分的好處是,繪圖引擎可以判斷“玩家在地圖的哪一個(gè)部分?”,它知道答案因?yàn)樗劳婕业奈恢?。結(jié)果是,它可以完全忽略地圖的另外一半(在這一點(diǎn)上,我們說只有兩個(gè)物品列表,這是被過度簡(jiǎn)單化了,因?yàn)橥婕铱赡芙咏貓D的中間,那么他能看見兩邊的物體-但是,現(xiàn)實(shí)中這是不會(huì)發(fā)生的,后面的段落會(huì)有解釋)。

  當(dāng)然,僅僅把地圖分割成兩部分不會(huì)有太大的實(shí)際幫助,因?yàn)槊恳徊糠值奈锲妨斜砣匀环浅iL(zhǎng),實(shí)際上,這個(gè)分割的環(huán)節(jié)會(huì)進(jìn)行很多次,同時(shí)在縱向上和橫向上進(jìn)行,所以你最終會(huì)得到地圖的很多小方塊,每一個(gè)都有它自己的列表。當(dāng)繪圖引擎需要知道它應(yīng)該繪制什么的時(shí)候,它能迅速的檢索這個(gè)小方塊的列表,算出哪一個(gè)是可見的,然后維護(hù)每一個(gè)小方塊的物品列表。這是為什么永遠(yuǎn)不會(huì)有一個(gè)玩家能同時(shí)看到兩面這一類的問題。繪圖引擎建造一個(gè)列表,包含所有玩家能夠看到的地圖的小方塊

  在實(shí)踐中,分割環(huán)節(jié)通常不進(jìn)行一個(gè)正好55分割。地圖生成工具檢測(cè)在分割后會(huì)存在多少個(gè)物體,并且試圖粗略的保持每一個(gè)小方塊中的物體數(shù)目相同。這是因?yàn)榇致员WC每一個(gè)方塊中的物體的相同數(shù)目(盡管最終方塊可能不是一個(gè)正規(guī)的立方體,因?yàn)榉指畈痪鶆颍?duì)于保持高速檢索是非常重要的。

  2。bsp文件結(jié)構(gòu)的推論

  檢測(cè)子彈穿透行為的最重要的問題是一顆子彈穿過的小方塊的數(shù)量。物體的實(shí)際長(zhǎng)度是完全與此無關(guān)的

  awp,scout和hk g3能夠穿透2個(gè)小方塊。攻擊型步槍,m249機(jī)槍,ssg-550和deagle手槍能夠穿透一個(gè)小方塊。

  必須強(qiáng)調(diào),實(shí)際可見的物體長(zhǎng)度和大小是完全無關(guān)的。

  由于地圖生成工具試圖粗略保證每一個(gè)方塊內(nèi)的物體數(shù)量,在地圖上的任何地方增加一個(gè)單獨(dú)的物體能夠改變整個(gè)地圖的方塊的尺寸,位置。

  總結(jié)一下,物體的實(shí)際長(zhǎng)度完全同它能不能被穿透沒有關(guān)系。因此,通過視覺估算一個(gè)物體的長(zhǎng)度和厚度是不是能穿透是完全沒有意義的。通過視覺觀察判斷一個(gè)物體能不能被穿透是完全不可能的。

  物體穿透幻象

  在物體的穿透判斷上,客戶端和服務(wù)器有一個(gè)差別??蛻舳讼嘈艓缀跛械臎]有穿透能力的武器(sig p228,mp5,fn p90等等)能夠穿透一層。

  對(duì)于這個(gè)行為特性的全面揭示,請(qǐng)參看前面的第二節(jié),其中描述了客戶端和服務(wù)器的交互作用。

  雜項(xiàng)

  1???/p>

  盔甲的效力并不因?yàn)榭资軗p而減低。換句話說,25點(diǎn)的盔甲同100點(diǎn)的盔甲有同樣的保護(hù)作用。你只在完全失去盔甲效力的時(shí)候才會(huì)受到更大的傷害。

  盔甲對(duì)從高處摔下沒有保護(hù)力。

  有頭盔的盔甲保護(hù)全身,除了腿。沒有頭盔的則讓頭裸露著。子彈擊中有盔甲保護(hù)的身體部分不會(huì)產(chǎn)生視覺效果,除非打出了爆頭。子彈擊中沒有盔甲的身體部位會(huì)有血跡。

  一個(gè)有盔甲的人被爆了頭會(huì)產(chǎn)生一個(gè)閃光。一個(gè)沒有盔甲的被爆了頭則產(chǎn)生大量的血跡。注意,awp命中總會(huì)產(chǎn)生大量的血跡,不論有沒有盔甲。

  如同前面提過的,盔甲減少50%的沖擊波的傷害。

  想要便宜的恢復(fù)快要耗盡的一套盔甲是不可能的。例如,一個(gè)玩家買了盔甲和頭盔然后戰(zhàn)斗了一陣子,最后剩

  下35點(diǎn)的盔甲,這個(gè)時(shí)候,它有35點(diǎn)的盔甲和頭盔指數(shù)。如果現(xiàn)在他之后買一個(gè)盔甲,而沒有買頭盔,那么它會(huì)有一個(gè)100點(diǎn)的盔甲,而沒有頭盔。

  你只會(huì)有你買的盔甲,你原來有什么完全無關(guān)。

  盔甲吸收一定比例的子彈殺傷力這種方式,當(dāng)爆頭發(fā)生時(shí),會(huì)有計(jì)算錯(cuò)誤。

  當(dāng)一個(gè)有盔甲的玩家被擊中的時(shí)候,一定數(shù)量的傷害產(chǎn)生了。每一種子彈都不同,取決于對(duì)盔甲的穿透力。高速步槍子彈穿透得很好,于是盔甲只吸收了一小部分傷害,低速的小口徑手槍子彈穿透盔甲的能力很差,于是盔甲能吸收大比例的傷害。

  這些都很好,到目前為止,但是讓我們思考一個(gè)具體的例子。一個(gè)玩家?guī)е自诮嚯x被deagle擊中了胸部。44點(diǎn)生命值還有8點(diǎn)盔甲指數(shù)消失了

  但是,當(dāng)爆頭發(fā)生的時(shí)候,傷害值會(huì)被提高大概3倍。但是這會(huì)發(fā)生在還沒有計(jì)算盔甲吸收的傷害值之前,于是,游戲認(rèn)為大約156點(diǎn)的傷害值產(chǎn)生了((44+8)*3),于是盔甲阻擋了26點(diǎn)。

  2。立即下蹲

  蹲下,在cs中是立即性的。耗費(fèi)大約0.1秒從站起到蹲下。這個(gè)問題的推論是,用輕武器有意的瞄準(zhǔn)以取得爆頭的策略的有效性被極大的削弱了,因?yàn)楦櫼粋€(gè)玩家的下蹲動(dòng)作是不可能的-沒有動(dòng)作,下蹲是立即的。

  真實(shí)生活中,下蹲需要耗費(fèi)大約兩秒-相當(dāng)慢的動(dòng)作。

  cs中,人物從站著到下蹲是立即完成的,沒有中間的過程時(shí)間。于是,沒辦法追蹤。

  3.子彈命中力

  被擊中會(huì)受傷。cs里面通過失去生命值來表現(xiàn),但同時(shí)也通過讓被擊中的玩家晃動(dòng)來表現(xiàn)。

  任何走動(dòng)或者跑動(dòng)的動(dòng)作停止,恢復(fù)走動(dòng)或者跑動(dòng)的加速度被縮減,因此在玩家恢復(fù)到正常移動(dòng)之前大概需要三秒鐘,而不是象正常的那樣-幾乎立刻就能獲得達(dá)到正常速度的加速。

  一個(gè)古怪的現(xiàn)象是,玩家可以繼續(xù)跳動(dòng)。在cs中所能看到的最常見的景象是,一個(gè)玩家象一只兔子一樣不停的跳來跳去,盡力躲避飛過來的子彈,因?yàn)橥ㄟ^移動(dòng)來躲避是不可能的,這是因?yàn)橐呀?jīng)被擊中了。所有的有經(jīng)驗(yàn)的玩家都有一個(gè)中彈就跳的反應(yīng)。

  有兩種被擊中后的晃動(dòng)效果,頓住和推動(dòng)。

  有些槍只會(huì)頓住玩家,玩家會(huì)被剝奪走動(dòng)或者跑動(dòng)的動(dòng)作,但是仍然停留在他被擊中的地方。

  其它的槍將會(huì)頓住和推動(dòng)一個(gè)玩家,不僅僅是移動(dòng)停止了,而且子彈的撞擊力會(huì)推動(dòng)這個(gè)玩家。

  當(dāng)玩家與地面接觸的時(shí)候,摩擦力阻止玩家移動(dòng)的太多-盡管在這段短短的時(shí)間里,一個(gè)狙擊手的瞄準(zhǔn)會(huì)被破壞

  但是,如果玩家在空中,并且被一把有推力的武器擊中(尤其是擊中了不止一次),移動(dòng)的量會(huì)很大,忽然把玩家向后拋出幾個(gè)身位。

  按照目前可能的測(cè)試,所有武器的推力都一樣大,推力的大小和傷害度無關(guān)。

  總體來說,手槍和輕型沖鋒槍,使用小口徑子彈,只會(huì)頓住。攻擊步槍和狙擊槍使用大口徑子彈,會(huì)有推力。

  下面的列表標(biāo)出了各種槍械的命中力屬性,*代表頓住,+代表推力。

  USP *

  USP (S) *

  Glock18 *

  Glock18 (T) *

  Desert Eagle +

  SIG P228 *

  Dual Berettes *

  Five-Seven *

  Shotguns

  M3 +

  XM1014 *

  MP5 *

  TMP *

  P90 *

  MAC-10 *

  UMP45 *

  AK47 +

  G-552 +

  M4A1 +

  M4A1 (S) +

  AUG +

  Scout +

  AWP +

  G3 +

  G-550 +

  M249 *

  HE gren *

  注意兩個(gè)例外:m3有推力,但是xm1014只會(huì)頓住。

  配置半條命

  客戶端-服務(wù)器通訊

  cl_cmdrate 客戶端每秒鐘將玩家的動(dòng)作信息更新給服務(wù)器的次數(shù)。

  cl_lc 控制客戶端是不是啟用服務(wù)器的玩家位置歷史信息。

  cl_lw 控制客戶端的行為以及客戶端的彈痕繪制。

  cl_rate 客戶端每秒鐘能夠發(fā)送給服務(wù)器的字節(jié)數(shù)的最大值。

  cl_updaterate 服務(wù)器每秒鐘更新客戶端的次數(shù)。

  rate 服務(wù)器每秒鐘能夠發(fā)送給客戶端的字節(jié)數(shù)的最大值。

  綁定和別名

  當(dāng)一個(gè)玩家在半條命里按一個(gè)鍵的時(shí)候,一些事情會(huì)發(fā)生,這是因?yàn)槟莻€(gè)鍵已經(jīng)被綁定到一個(gè)命令上。例如,向上鍵被綁定在向前移動(dòng)的命令上。

  半條命里的每一個(gè)命令也都可以在控制臺(tái)里面執(zhí)行。

  半條命也支持別名。一個(gè)別名是一個(gè)名字,當(dāng)在控制臺(tái)敲入的時(shí)候,執(zhí)行一整個(gè)系列的命令,一個(gè)接一個(gè)地執(zhí)

  行。玩家使用別名命令告訴半條命用一個(gè)給定的別名要執(zhí)行什么命令。有用的是,別名能夠被綁定到一個(gè)鍵上,于是只按一個(gè)鍵就可以執(zhí)行一系列的命令。

  最后,半條命也能執(zhí)行腳本-磁盤上的文本文件,其中是命令的列表-,使用exec命令。典型的,玩家把他們的

  別名存貯在一個(gè)或者兩個(gè)文件里。執(zhí)行這些文件,于是半條命裝載別名,然后通過鍵的綁定在游戲中執(zhí)行這些命令。這就是買槍腳本工作的方式。

  alias(別名)(命令)

  命令中列出的命令,當(dāng)別名在控制臺(tái)里執(zhí)行,或者通過綁定的鍵執(zhí)行的時(shí)候,會(huì)被執(zhí)行。

  bind (鍵)(命令或者別名)

  當(dāng)給定的鍵被按下的時(shí)候,指定的命令或者別名會(huì)被執(zhí)行。

  echo(字串)

  字串會(huì)被顯示在控制臺(tái)里。

  exec(文件名)

  文件名指向的應(yīng)該是一個(gè)腳本,將會(huì)被執(zhí)行。

  unbind(鍵)

  bound命令綁定的鍵會(huì)被解除,這樣再按下這個(gè)鍵的時(shí)候,任何事情都不會(huì)發(fā)生。這個(gè)命令是bind命令的反命令

  unbindall

  所有綁定在所有鍵上的命令都會(huì)被清除

  demo和電影。

  半條命提供功能記錄游戲的運(yùn)行。可以使用兩種方式:demo和電影。

  要產(chǎn)生一個(gè)avi視頻文件,兩種記錄方式都可被使用,但是電影比較容易處理,因?yàn)樗梢院苋菀妆晦D(zhuǎn)化成avi,但是demo必須要先被轉(zhuǎn)化成電影。

  demo的意思是當(dāng)玩游戲的時(shí)候,一個(gè)傳入傳出客戶端的數(shù)據(jù)流的記錄。因此,文件的大小很小-大約每秒4k.demo文件可以使用playdemo命令來播放。

  電影是半條命存貯的,它所產(chǎn)生的每一幅畫面的bmp文件-每一楨的屏幕拷貝。由于至少通常情況下每秒會(huì)有24幅畫面,而且畫面是完全沒有壓縮的,或產(chǎn)生一個(gè)很大的數(shù)據(jù)量。即使在400*300,每秒鐘25個(gè)畫面,半條命產(chǎn)生每秒7兆的數(shù)據(jù)。

  demo的主要問題是,錄制必須在一進(jìn)入服務(wù)器就開始。即使有一點(diǎn)拖延也不行

  這是因?yàn)楫?dāng)客戶端加入服務(wù)器的時(shí)候,它會(huì)產(chǎn)生和接收一些很重要的數(shù)據(jù),如果demo沒有記錄下這些數(shù)據(jù),那么就不可能播放出來,這很象給一個(gè)jpeg文件解碼卻沒有頭.

  demo的另外的問題是,半條命只記錄輸入輸出的數(shù)據(jù)流,不記錄任何其它的信息。

  因此,例如,當(dāng)你開始播放一個(gè)demo,半條命不知道每一個(gè)人都在哪一個(gè)隊(duì)伍里,它必須隨機(jī)地為每一個(gè)人物添加一套皮膚,于是,你會(huì)看見ct的形象是一個(gè)t.

  類似的,通常半條命不知道彈藥的數(shù)量,以及盔甲還剩下多少指數(shù)。

  但是,這些問題都會(huì)自己逐漸地解決,因?yàn)楫?dāng)一些事情發(fā)生的時(shí)候,會(huì)導(dǎo)致丟失的信息被傳送給數(shù)據(jù)流(例如,一個(gè)玩家死亡了,這就會(huì)顯示他是哪個(gè)隊(duì)伍的),demo從那以后就能顯示正確的信息。

  結(jié)果是,demo需要播放一兩次才能正確的顯示它們應(yīng)該顯示的內(nèi)容。

  電影的主要問題是,這需要一個(gè)非常高性能的磁盤子系統(tǒng)。

  這是因?yàn)?,錄制電影的時(shí)候,半條命緩存一秒的畫面,然后試圖把它們?nèi)繉懙酱疟P上-但是如果在下一幅畫面

  被繪制到屏幕上以前它無法完成這個(gè)動(dòng)作,游戲會(huì)變得非常卡,因?yàn)楫?dāng)數(shù)據(jù)被寫到磁盤上的時(shí)候半條命不會(huì)更新顯示。如果游戲很卡,錄制的電影也會(huì)很卡,當(dāng)然,當(dāng)每一楨畫面都停頓的時(shí)候也不可能進(jìn)行游戲。

  在400*300,25fps的時(shí)候,硬盤需要在0.05秒內(nèi)王磁盤上寫入七兆的數(shù)據(jù),不然下一幅畫面就會(huì)到達(dá)并且游戲就會(huì)開始卡。這需要一個(gè)每秒寫入140兆的硬盤能力。這在當(dāng)前的條件下是不可能的,解決的辦法是使用一個(gè)硬盤緩存的工具,這個(gè)工具會(huì)在ram中臨時(shí)保存7兆的數(shù)據(jù),然后下一秒里把它們寫入磁盤。

  注意,fat32在這個(gè)工作上看起來比ntfs表現(xiàn)得更好,因?yàn)閚tfs需要移動(dòng)更多磁盤頭文件以記錄給定的數(shù)據(jù)。磁盤頭文件的移動(dòng),是需要高速操作的磁盤工作的主要瓶頸。

  supercache 2000是一個(gè)值得推薦的軟件,用于磁盤緩存,盡管它只能用在windows2000/xp.以作者所知道的,沒有相應(yīng)的磁盤緩存工具適合windows9*/ME.

  錄制一個(gè)電影的輸出是一個(gè)單獨(dú)的文件,它實(shí)際上是一個(gè)bmp文件的序列。每一楨都有一張圖片。有一個(gè)工具叫做mkmovie可以用來獲取獨(dú)立的bmp文件,很多種應(yīng)用程序(推薦videoMach)可以把這些圖像轉(zhuǎn)換成一個(gè)avi.

  電影的巨大好處是它能夠直接錄制avi(雖然是bmp格式),錄制可以隨時(shí)打開或者關(guān)閉,當(dāng)然所有的皮膚/彈藥/等等都是正確的,因?yàn)樗鞯墓ぷ骶褪钦_地記錄每一楨的畫面。

  還有一點(diǎn)很重要,存放錄制的電影的磁盤必須提前進(jìn)行碎片整理,如果沒有進(jìn)行的話,不必要的磁盤頭移動(dòng)會(huì)讓文件寫入變慢,就會(huì)很卡。

  在嘗試電影錄制之前,很重要的是進(jìn)行一次干凈的運(yùn)行,或者先運(yùn)行游戲一兩局。

  這會(huì)讓半條命載入它需要的任何磁盤文件(濺血sprite,聲音文件,等等)。如果半條命被強(qiáng)迫在錄制電影的時(shí)候裝載這些文件,就會(huì)很卡,楨會(huì)丟失。

  注意,半條命不懂得路徑,不能使用快捷鍵。你只能把文件寫到半條命的目錄下。如果你有一個(gè)快速的硬盤,并且希望使用那個(gè)硬盤,你就要把半條命裝到那個(gè)硬盤上。

  要把一個(gè)demo轉(zhuǎn)換成電影,正常播放那個(gè)demo然后在播放中執(zhí)行startmovie命令。

  endmovie

  結(jié)束當(dāng)前電影的錄制。

  playdemo (文件名)

  開始播放指定名稱的demo,如果半條命連接在服務(wù)器上,連接會(huì)被終止。

  record (文件名)

  開始錄制以指定名稱錄制的demo。任何同名文件會(huì)被無提示覆蓋。

  startmovie (文件名)

  讓半條命把每一楨都記錄到指定名稱的文件上。任何同名文件都會(huì)被覆蓋。生成的文件是連續(xù)的bmp的序列,有

  一個(gè)小的頭文件存在于文件的開始,指明視頻效果以及類似的事情。mkmovie工具可以用來把這個(gè)文件分離成獨(dú)立的bmp文件。

  stop

  結(jié)束當(dāng)前demo的錄制。

  6。控制臺(tái)

  clear

  清空控制臺(tái)屏幕以及卷屏緩存。

  condump

  這個(gè)命令本來打算用來把控制臺(tái)的信息寫入一個(gè)文件,文件名稱是condump.txt.

  但是,目前這個(gè)功能有缺欠(為了防止緩存溢出),因此,只能生成一個(gè)混亂的文件-大面積的空白區(qū)域以及重復(fù)的文本。

  toggleconsole

  在控制臺(tái)的顯示和隱藏之間切換

  zoom_sensitivity_ratio (number)

  當(dāng)玩家打開狙擊鏡的時(shí)候,對(duì)當(dāng)前鼠標(biāo)靈敏度(sensitivity)的倍數(shù)。默認(rèn)值是1.2。用低sensitivity的玩家也許會(huì)發(fā)現(xiàn)它很有用,可以提高這個(gè)值。因?yàn)榈蛃ensitivity在打開狙擊鏡的時(shí)候,移動(dòng)會(huì)很慢。

收藏0

發(fā)表評(píng)論

訪客

看不清,換一張

◎歡迎參與討論,請(qǐng)?jiān)谶@里發(fā)表您的看法和觀點(diǎn)。