番外 杉鹿圆的FPS讲座

    强词夺理篇

    这一天,现代游戏部像往常一样准备开始社团活动。但是仅限于这天,变成了与平时不一样的社团活动。

    事情是以天道接下的发言开始的。

    「对了,杉鹿,一直有疑问,你也该告诉我们了吧?」

    「恩?什么?」

    「前段时间,刚让岸岭玩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,不过这是后话了。
友情链接