強詞奪理篇
這一天,現代遊戲部像往常一樣準備開始社團活動。但是僅限於這天,變成了與平時不一樣的社團活動。
事情是以天道接下的發言開始的。
「對了,杉鹿,一直有疑問,你也該告訴我們了吧?」
「恩?什麼?」
「前段時間,剛讓岸嶺玩FPS的時候,有「點射」的話題吧?」
點射。在FPS中設計技術的一種。
像是在現實中的槍一樣,在真實系FPS中,連續射擊槍的話,會因反作用力引起瞄準偏差。近距離的話,即使多少有偏差也沒關係,但是,射擊像豆粒一樣小的遠距離的敵人的時候,有一點點小小的偏差,就會完全打不中敵人。
因此,射擊遠距離敵人的時候,手指從射擊數發子彈的鳥槍拿開,防止瞄準偏離的技巧變得必要。這統稱為「點射」。
「那是,不是說了這樣的話嗎?射擊遠距離的敵人點射是必須的,但是,如果點射的話,發射比率就會下降。因此,在最初中了一槍的時候被對方逃脫了的話,不是就打不到了嗎?」
「啊,是啊。」
察覺到岸嶺和天道想要說什麼。
「我也注意到了。那時,杉鹿不是這麼說了嗎?網路對戰的話,不用放在心上也可以。為什麼?是有遲緩的問題還是什麼的……」
「恩,那件事。到底為什麼不用放在心上?我一直不明白。」
「啊,那件事?說說也好……不過有些說來話長啊?要說那個的話就不得不說Ping和fps了。」
「沒事,這樣的話我也想聽。一定要給我們講解啊!」
說話的是瀨名老師。
「想想看,還沒有對岸嶺有這方面的講解!我也一直想找個適合的時間講解。現在正好!」
「誒——?麻煩啊。但是,算了,確實,說一次比較好。」
雖說平時是性格尖酸的杉鹿,但是一被拜託,意外地變得猶豫不決。
「恩。首先,我需要白板,還有筆。」
「知道了。這就準備。」
天道哐當哐當地拿出在活動室角落的白板。
另一邊,瀨名老師從白衣的口袋中拿出什麼東西給杉鹿,「請用!」
「這是什麼?眼鏡?我,我眼睛又沒問題。」
「沒問題,伊達眼鏡!小玩意,不要在意,請戴吧,解說者戴眼鏡是天經地義的啊!」
「……」
被強迫戴上眼鏡的杉鹿一邊板著臉一邊對岸嶺小聲的說。
「……雖然一直這麼認為,你不覺得這個顧問哪兒有些奇怪嗎?」
「不要說得像和你沒有關係一樣。怎麼說也算還是杉鹿的顧問吧。」
另一方面,瀨名老師在準備的白板上醒目的潦草地寫著
「杉鹿圓的FPS講座」。
「好了,這準備好了!請開始吧!」
「……算了,怎麼都行。」
杉鹿無語地戴上伊達眼鏡,站在白板前。
(意外的很合適……)
原本就是氣場很強的杉鹿。她一戴上眼鏡,多少減弱了平時的孩子氣,顯得成熟了,讓岸嶺感到了與平時不一樣的魅力。
「那,開始講義了。首先從Ping開始。」
杉鹿在白板上寫著「Ping」。似乎發不出g的音。
「沒有聽過啊。」天道說,「大概是表示通訊狀態的詞語吧?」
「大體上對了。正解是‘從給目標終端傳送資料包到返回應答的資料包這一往返時間’。那,接下來……岸嶺,聽過‘伺服器’和‘接收器’嗎?」
「誒,那個……好像聽過網路用語……確實,伺服器連線接收器,進行資料的互換什麼的……」
「恩。伺服器的意思是接收的盤子這樣的意思。例如,我雖平時都是遊戲機聯網對戰,但是,也要啟動伺服器程式,然後其他的玩家用接收器程式相連線交換資料。」
杉鹿在白板的中央寫著醒目的「server(伺服器)」,用線圈起來。
在那周圍從寫著「client(接收器)1」到「client4」這四個專案。然後,拿出紅色的筆,用紅色的線把四個「client」分別和「server」連起來。
「把這個紅色的線想成是網路線路就好。用這個線路就可以進行伺服器和接收器之間資料的交換了。這樣說明白嗎?」
「什麼。伺服器上要連著四個接收器嗎?」
「恩。但是,雖然只是像這圖一樣用長長的紅線連著,但是也可以接收器1是從日本的入口、接收器2是從美國的,
實際上,從接收器連到伺服器的是以貓和路由等很多機器為中介,所以,資料的處理是很費時間的。而表示伺服器和接收器的通訊狀態的就是稱之為Ping的單位。這個單位越小就表示通訊狀態越好。」
「為了易於理解,舉個例子!」瀨名老師眼鏡泛光。
「這個Ping原本從潛水艇所使用的聲納的音波命名而來!在電影中,有見過潛水艇為了探查周圍,開啟聲納這種場面吧?總之就是那個的網路版!為了計算接收器和伺服器之間的距離,敲打Ping,調整反應,這樣解釋就行了!」
「原來如此,明白了。」
對於閱讀過有潛水艇出來的小說的岸嶺來說這個例子很容易理解。在漆黑的海中視線不好。因此利用聲波就能知道周圍的地形和敵人的潛水艇。即使在網路中也是同樣的,用目測無法知道與伺服器之間的距離。取而代之的是敲打那個Ping來測定距離吧。
「好了,因為Ping像單位一樣也能理解吧。接下來,雖然是Ping所顯示的伺服器和接收器通訊狀態的數值,但是是顯示了遊戲速度的單詞。就是叫做fps。」
「f、f、ps?」天道微微歪著頭。「第一人稱的槍擊戰嗎?」
「不是,這不一樣!」瀨名老師插嘴道
「杉鹿君說的是framespersecond(每秒幀數)吧!」
「f、frames?per……second?」沒有聽過的單詞組合,岸嶺也歪著頭思考。
「persecond這個詞知道。」天道說,「就是每秒的意思吧。」
「恩,翻譯的話就是‘每秒的幀數’,唉,說明的話很麻煩。」
「行了,這就交給我吧!」
眼鏡閃耀著光芒的是喜歡解說的瀨名老師。
「聽好了!遊戲是程式驅動的各位都知道吧!隨著電腦的進步,不管多大的計算都能一瞬間解決,因此,遊戲就誕生了!說到遊戲的程式,畫面的描繪、調節器情報的輸入檢知、正確判定的處理計算等,實際上涉及很多方面!把這些處理全部集中,稱之為遊戲迴圈,由進行秒間30次到60次的遊戲迴圈構造了遊戲的世界。」
「……誒。那……」
雖然剛才的潛水艇的例子很容易理解,但是對岸嶺來說這次的解說過於專業了。
「不明白?那,就拿動畫舉例吧!動畫是以數萬枚的畫格連續拍攝而做出來的,知道吧?動畫中,一秒能使用15枚到24枚畫格!遊戲也相似的,通過一秒鐘數十次的程式處理來描繪畫面。」
「總之,這個遊戲迴圈一次所處理的分量就稱之為一幀。這個幀越多就能更順利地運轉。一秒就能決定勝負的STG的話,就應該要大概60幀每秒運轉。需要很長的電腦的思考時間的SLG的話,30幀每秒的遊戲也是有的。」
「原來如此。換句話說,fps就是‘一秒鐘處理幀多少次’的意思吧?」
像是對天道的話能夠理解似的這樣附和著。
「就是這樣的!順便提一下,為什麼60次稱之為基本!因為最近的電視和電腦監視器一秒中能夠更新畫面的次數大概就是60次。」
「哦,這樣啊。」
因為監視器能夠描繪的次數是每秒60次,所以在遊戲中也是每秒60次的描寫。而且,一次的描寫稱之為一幀。
「明白了,fps是什麼東西。」
「真的明白了?」遭到了杉鹿的白眼。「那,問題。一幀大概是多少秒?」
「誒?誒?誒?」
一時混亂的岸嶺很難冷靜下來思考。
「厄~因為一秒60份,1除以60……」
「0、01666秒……大概是0、017吧?」不愧是天道,一瞬就算出來了。
「正確……雖然想這麼說,但是錯了。這個實際上是假借的問題。根據遊戲的不同,有一秒30幀的也有一秒60幀運轉的吧?因此‘以60fps運轉的遊戲的話一幀大概是0、017秒,以30fps運轉的話就是0、033秒’這是正確答案。」
「……對、對不起。有點跟不上了。」
「放棄還太早了!沒辦法啊,這可以說是總結。在遊戲中,決定一秒中被處理多少次。」
「這麼說就明白了。但是,這與在遊戲中變強有什麼關係嗎?」
「因為是基礎用語,首先都不知道這個的話就無法開始。那,如你所希望的進入正題吧。比如,和很多玩家一起玩遊戲的時候,區分畫面分割什麼的,基本上只有兩種方法吧?物理上,書檯遊戲機以電纜直接連線或是通過網路對戰。」
「恩,是的。」
「但是,在同一個場所準備數臺遊戲機並不簡單,不是嗎?因此,最常用的對戰方法就是網路對戰。」
「啊,這個社團也是這樣的。」天道點了點頭。「遊戲機全部是由網路連線的。」
「啊,是嗎?因為同一間房間有四臺遊戲機,為什麼不直接連線起來呢?」
「用電纜連線十分麻煩。而且也有應付不了的遊戲。就這點,用網路的話,只要設定一次路由的話後面就簡單了。」
「順便說一句,JGBC也是同樣的!在那個會場中,應該有數十臺的遊戲機,但是那也全部是用網路連線的。這是為了能夠再現參賽者平時的環境!」
「那、那……即使是同一個會場,還特意和遠處的伺服器通訊,再對戰嗎?」
「是啊。但是,不管在什麼樣的環境,用網路對戰也有麻煩的東西。那就是lag(滯後)。」
「llag……」
「遲緩、滯後的意思啦。比如……對了,玩真實系的FPS時,明明是比對方先射擊,但是為什麼還輸了,沒有這樣的經驗嗎?」
有這樣的記憶。
「恩,有、有!還以為是單純的槍或是我能力差的原因。」
「唉,你的話確實有這種可能,應該也有滯後這一原因的狀況。聽好了?基本上,進行10人的網路對戰,10人當中就有一人是伺服器程式,形成10個人全部是以接收器程式連線的形式。就是說,成為伺服器的人是以伺服器程式和接收器程式兩種形式執行。」
杉鹿開始在白板上畫新的圖來。
首先,在中央寫上「PC1接收器」,在他的正下方寫著「伺服器」。然後,用紅色的線把「PC1」和「伺服器」連起來。
然後,在他的周圍寫著「PC2」、「PC3」、「PC4」,同樣用紅色的線與中央的「伺服器」相連。
「這個是什麼知道嗎?」
「什麼?就是說PC1是靠伺服器運轉,這裡全部的玩家是以接收器程式相連的?」
「就是這樣。這個接收器程式是以數幀的間隔把控制器的輸入情報、移動速度和視線角度等的資料整合,送到伺服器上的。在伺服器中處理這個資訊,再把這個結果返回到接收器,反映到遊戲畫面中。但並不是所有的FPS是這樣的,格鬥遊戲的話是每幀都輸送控制器的輸入資訊。喂,岸嶺,有好好在聽嗎?」
「恩、總覺得……」
「唉,算了,之後會給你總結的。」
「但是,真的可以那樣做嗎?」
像是和岸嶺聊其他話題的天道一邊用手撐著下巴一邊詢問道。
「把數幀內總結的控制器資訊和角色的資訊不斷送出去是……這樣的話,10幀大概就是0.1、0.2秒的樣子咯?能夠以這樣的速度輸送這些資料嗎?」
「按鈕資訊什麼的也不是什麼很大的資訊量啊!」瀨名老師說,「基本上,一個按鈕只能管理ON和OFF,十字鍵也包含了16個bit(位元),換句話說,就是有2個位元組的話就能管理16個按鈕!加入模擬棒和角色的視角的話當然就更復雜了,但是,因為壓縮技術的發展,這個數字變得更小了!而且,就算是用電話線連線網路的時代,通訊速度也有28800bps,更不要說寬頻發達的今天,甚至能達到10Mbps!很輕鬆就能在0.1秒中進行數字節的通訊!」
「原來如此,這麼說就明白了。」
天道似乎明白了,但是bit、位元組什麼的對岸嶺來說還是完全不懂。
「喂,岸嶺君,不理解剛剛說的也沒關係!總之,世界是一直在進步的!」
「哈,這麼說就明白了!」
「好了,這是最重要的。雖然通訊速度越來越快是事實,但是在網路上資料的處理在物理上無論如何會產生遲緩。例如,日本和美國,單程大概是1萬公里,往返的話是2萬公里,對吧?用光速通訊的話,一瞬都用不到。」
「恩。光速是30萬公里每秒,即使這樣也會有0.06、7秒的遲緩。」
天道又一瞬間就進行了驚人的運算。
「對。60fps的遊戲的話,因為一幀是0.017秒,單純計算的話會有4幀的遲緩。即使是Ping,實際上,調變解調器呀路由呀,因為通過了很多的機器處理,就更慢了。產生10幀左右的遲緩的話,一被射中在瞬間就會死的真實系FPS中就會變成致命的吧?」
對這樣的話,岸嶺也能明白。
「恩,是啊。被狙擊手射中頭部的話只要一發。」
「因此,在網路遊戲中,為了處理這個物理的遲緩就進行了很多的處理。代表性的是,「在伺服器程式內構建未來的世界」這樣的處理。」
「未來的世界?!」
突然變成出人意料的話題。
「恩。雖然有點複雜,但是FPS的伺服器程式是處理接收器和資料,構建我們所看不見的一個遊戲的世界的。
只是沒有畫面的顯示,之後是完全一起的。在那個世界,有玩家操作的角色,是普通的遊戲。而且,那個世界只有短短几幀的未來的世界。可以說在時間上是先行的?在那,從接收器開始輸送控制器資訊,改變過去……這樣的未來世界被重建,這個結果被反映在我們的遊戲畫面上。」
這時,杉鹿回過頭去看瀨名老師。
「實際試一下比較好。老師,稍稍準備下遊戲吧。一打中馬上就會死的真實系FPS就行。我們稱作製作私人的房間。」
「恩,知道了。」
瀨名老師麻利地準備遊戲,製作私人房間。
然後,岸嶺他們加入,開始對戰模式。
「現在,在瀨名老師那裡執行伺服器程式。包括瀨名老師,我們四個各自都已接收器程式與那個相連。這裡,例如,我讓角色移動的話——」
杉鹿首先啟動了自己的角色,移動到天道的角色的前面。天道的畫面反映出杉鹿的,杉鹿的畫面顯示出天道的。
「行了嗎?因為有兩個調變解調器,應該容易分辨。仔細觀察我的畫面和天道的畫面,進行比較。」
只是一瞬,杉鹿輕輕地把左控制棒向前一倒,讓角色前進。
首先,在杉鹿的畫面中,角色立刻就前進了,但是在天道的畫面中,角色是以稍微慢一步的身姿移動的。
「恩。杉鹿的畫面中是沒有問題的,但是在我的畫面中就有點慢了。這就是lag(遲緩)嗎?」
「是的。雖然這只是被處理的影響最小的lag。為此,在伺服器中描繪了‘未來的世界’。不是很難理解的說明。例如——」杉鹿再次指著遊戲的畫面。
「在現在的遊戲中,大家都不要動,什麼也不要輸入進控制器。因為在伺服器程式內的未來的世界中,大家應該一直是靜止的。但是,這時候,我要讓角色前進。」
杉鹿又往前推到模擬棒。
「這樣做的話,這個資訊就被送到伺服器,成為‘過去的角色在移動了’,未來世界會被再次運算再次構建。然後,這個未來的資訊返回各個接收器,反映在遊戲中。即使不得不有數幀的物理上的迴避,但是在伺服器程式中常常被構建成數幀份的未來的世界,因為在那裡的結果會被反映到接收器上,至少在視覺上感覺不到什麼延遲。一起槍擊看看。」
杉鹿的角色只向天道射擊了一槍。
果然,一瞬的遲緩後損傷才被反映,天道的畫面閃著紅色的光。
「首先,槍擊後訊號才被送到伺服器,未來的世界被反映出來,在判斷其他角色的位置資訊和是否瞄準打中。然後,知道打中了的資訊,再在伺服器上進行損傷的處理,通過網路再次返回接收器,最終放映到各個玩家的畫面中。」
「……好像明白了,又好像沒明白。」
實際上,這已經達到了岸嶺理解的極限。
「恩,我也有點混亂了。」連天道也這麼說。
「唉,混亂也可以理解的。」瀨名老師說,「總之,就是這麼一回事,各位!在網路對戰中,一定有物理上的遲緩!對此的解決方法……不如說為了搪塞過去,在伺服器上描繪了未來的世界,在那的計算結果會被反映在接收器上!因此,自己看到的畫面和其他人的畫面就有差異!」
這個歸納確實稍稍容易理解些。
「在此的基礎上,終於回到了天道最初的疑問上。」
「啊,就是說,在用點射擊倒敵人時的話題?」
「總之就是這樣的。在完全停止時,在遭到敵人的射擊,即使慌慌張張地出動,這一控制資訊從‘輸送到伺服器’、‘在未來的世界被處理’、直到‘在遊戲中反映出結果’的構建是需要花時間的。因此,這就是結論。就是說‘從靜止的狀態到動態,即使能在自己的畫面中看到也是要花時間的’。」
至此,杉鹿像是調整呼吸一樣大口地吸著氣。
「啊——終於完了,雖然很長,最後一句話總結。‘被敵人襲擊後再回避已經遲了’。」
「這樣啊。」天道深有感觸地點著頭。
「這麼說來,被敵人偷襲後即使藏在隱蔽處也會就這樣死咯。雖然自認為沒有遲緩……」
「這正是杉鹿君給我們解說的現象!就是說,即使被擊中後慌慌張張地移動,在這一資訊傳送到伺服器程式到更新世界前,已經在伺服器上被判定被擊中死亡了!」
「……好像明白了。」
一方面,岸嶺依舊歪著頭。
「還沒明白?無論如何,即使一次,在自己的畫面上看到是靜止不動,在其他的玩家看來也是不動的。靜止不動的敵人不是很好的靶子嗎?為了防止這點,要極力運動,極力避免動作遲緩這一動作,這是很重要的。即使不能理解原理,這樣理解就行了。」
「啊,恩。這樣歸納的話就明白了。」
「而且,通訊的遲緩,會以某個契機,很容易就變大的。如果在某處引起了通訊延遲的話,就會在各處發生很大的遲緩。那個lag是十分大的,就是說Ping惡化了,即使比對手先射擊也會被殺,會發生這類的現象。」
「總之,如果是和對方在同一時點互射,勝利的一方就是Ping好的一方嗎?」
對天道的疑問,杉鹿點頭贊同。
「恩,就是這樣的。Ping不好的一方,從伺服器輸送的資料因為間隔大,遊戲的更新也跟著分散。這樣的話,大概……對程式的處理也有影響吧,看到其他的玩家的角色瞬間移動,總之淨是些不利的事。」
「這就是致命的……那,現在在我們當中,操縱伺服器的瀨名老師就是最有利的嗎?」
「基本上是這樣的!」瀨名老師說,「自然,考慮到在我的接收器程式上的問題,這會被修正過來!而且,像JGBC這樣的大會,通訊環境應該是安定的,不用考慮這個也沒關係!」
「即使這樣,物理上的遲緩也是有的,動作的反應一定會變慢。狙擊手不得不潛伏這種狀況也是沒辦法的,但是到處移動一定是有利的。雖然說了一堆道理,但是結論就是這樣。」
「哦。因此,在FPS中,闖入敵營的攻擊手是最強的咯?」
「恩,這也是一個原因。總之,我的講座結束了。雖然早知道道理最好不過了,但是隻有那樣,越強就越不能小看遊戲。好啦,開始正式遊戲吧。」
「是啊。那,為了實踐下杉鹿的話,今天也開始正式的社團活動吧!」
就這樣,岸嶺他們利用剩下的時間開始努力練習FPS。
這之後,岸嶺作為攻擊手馳名JGBC,不過這是後話了。