第二卷 附录小说 杉鹿圆的FPS讲座 理论强化篇

  这一天,现代游戏社一如平常地正要开始社团活动。不过只有这天的活动内容与平常不一样。

  事情的开端,是天道以下这句发言:

  「对了,杉鹿,我一直有个疑问,是不是可以请你告诉我了?」

  「嗯?什么问题?」

  「上次我们第一次让岸岭玩FPS的时候,不是讲到了『点发』吗?」

  所谓的点发,就是FPS的一项射击技巧。

  就跟现实当中的枪械一样,在拟真系FPS当中如果让枪械全自动射击,准星会因为后座力而偏掉。若是近距离的话稍微偏掉没差,但是在射击豆子大的远处敌人时,只要有一点误差就会完全射不中敌人了。

  因此,在射击远距离的敌人时,必须每开几枪就放开扳机,藉此抑止准星的偏差。这种技巧就是所谓的「点发」。

  「那时候我们讲到,射击远距离敌人时一定要用点发,可是点发难免会造成射击速率下降对吧?所以我就问说,在第一发命中时如果被对手跑了,不就杀不死对手了吗?」

  「啊,原来是那件事啊。」

  岸岭也明白了天道想问什么。

  「我也很想知道呢,那时候杉鹿不是说,这方面的问题在网路对战时不用在意吗?记得你好像是说跟Lag的问题有关……」

  「对,就是那件事。为什么不用在意呢?我一直不懂。」

  「哦,你是问那个啊。要我告诉你可以……可是讲起来有点长喔。因为要解释这个问题,就得讲到Ping还有FPS。」

  「没关系,如果是这样的话,我也想拜托你,请务必跟大家解说一下!」濑名老师推了她一把:「仔细想想,我还没跟岸岭同学解释过这方面的事呢!我早就想找机会解说一番了,这样正好!」

  「啊──?好麻烦喔。不过也是啦,的确应该跟你们解释一下。」

  杉鹿平时虽然讲话带刺,不过被人拜托做什么的时候,好像不太擅长拒绝。

  「好吧,首先我要一个白板,还有笔。」

  「知道了,我来准备。」

  天道把房间角落的白板喀啦啦地拉了过来。

  至于濑名老师则是从白袍口袋中拿出一个东西,「拿去用吧!」交给了杉鹿。

  「这啥啊?眼镜?我又没有近视。」

  「别担心,这眼镜没度数!别管那么多细节,你就戴吧,解说员都得戴眼镜,这是惯例!」

  「…………」

  杉鹿被迫收下了眼镜,板著脸小声对岸岭说道:

  「……我每次都在想,你们的顾问是不是哪里有毛病啊?」

  「不要讲得好像事不关己啦,他也是杉鹿的顾问啊。」

  至于濑名老师,他正在准备好的白板上写上几个大字「杉鹿圆的FPS讲座」。

  「好,这样就万事俱备了!开始吧!」

  「……算了,怎样都好啦。」

  杉鹿自暴自弃地戴起平光眼镜,站到白板前。

  (想……想不到还满合适的……)

  杉鹿本来就是个满凶悍的女生,如今戴起眼镜,减少了几分平常的孩子气,看起来成熟了些,散发一种与平时不同的魅力。

  「那我要开始讲解喽,首先从Ping开始。」

  杉鹿在白板上写上「ping」,g好像不发音。

  「我有听过。」天道说:「就是用来表示网路连线状态的单字吧?」

  「大致上算对,不过更正确来说是『向目标主机传出封包后的封包往返时间』。那么接下来……岸岭,你有听过『伺服器』与『用户端』吗?」

  「咦?呃……好像有在网路用语里听过……我记得是让伺服器与用户端连线,藉此互相传递资料……」

  「没错,伺服器的英文Server就是托盘之类的意思。比方说我们都是藉由网路让游戏机连线对战,那也是某个地方启动了伺服器程式,然后其他玩家以用户端程式与伺服器连线,互相传递资料。」

  杉鹿在白板中央写上大大的「伺服器」几个字,然后划线圈起来。

  接著她在「伺服器」的周围又写上「用户端①」~「用户端④」四个项目,然后拿出红笔,用红线将四个「用户端」与「伺服器」分别连起来。

  「你就把这条红线当作是网路连线,伺服器与用户端就是使用这个连线在互相传递资料。到目前为止跟得上吗?」

  「勉……勉强。就是伺服器跟四个用户端连线了,对吧?」

  「对,不过,这幅图的四条红线长度都差不多,但比方说用户端①可能是从日本存取资料,用户端②却可能是从美国存取,实际上要让用户端连上伺服器,必须透过数据机或是路由器等各种装置,所以资料传递其实还蛮花时间的。而Ping就是显示伺服器与用户端之间连线状态的单位。基本上这个单位的数字越小,就等于连线状况越好。」

  「我举个简单的例子!」濑名老师眼镜一亮。「Ping这个名称原本是取自潜舰的主动声纳!你们有没有在电影里看过潜舰探测周围时拍发声纳的场面?简而言之就是那个的网路版!你们可以解释成拍发Ping等待回应,以侦测用户端与伺服器之间的距离!」

  「原来如此,我好像懂了。」

  岸岭曾经读过有潜舰登场的小说,因此很能理解濑名老师举的例子。在黑暗的海底看不见任何东西,所以要用声波探测周围的地形或敌军潜舰。网路也是一样,不可能目测用户端与伺服器的距离,大概是因为这样,才要发送Ping测量距离吧。

  「哎,Ping就像是一个单位,所以应该不难懂吧,那我要进入下一段喽。Ping是代表伺服器与用户端之间连线状态的单位,至于电玩也有表示速度的单位,就是FPS。」

  「FPS?」天道微微偏头。「那不是指First Person Shooter吗?」

  「不,这次不一样!」濑名老师插嘴道:「杉鹿同学说的,应该是Frame Per Second(画面更新率)吧!」

  「F……Frame?Per……Second?」

  一连串很少听到的单字组合,让岸岭也偏了偏头。

  「Per Second我懂。」天道说。「简而言之就是『每秒』的意思吧。」

  「没错,翻成国语应该就是『每秒显示影格数』之类的吧。至于它的意思嘛……嗯──只要懂了就会觉得很简单,可是要解释还真难呢。」

  「好吧,那么这里就交给我来!」

  最爱做解说的濑名老师眼镜耀眼一亮。

  「听好了!所谓的电玩游戏都是用程式在跑,这点你们也都知道吧!拜科技进步所赐,如今的电脑能够一瞬间完成庞大计算,电玩游戏也就于焉诞生!而游戏程式又分成相当多种类,像是图像描绘、接收手把讯号、计算处理攻击判定等等,相当复杂!这些处理统称为游戏回圈,每秒跑三十次或六十次的游戏回圈,以架构出流畅的游戏世界!」

  「…………呃。这个……」

  刚才潜舰的例子很好懂,但这次的解说专业术语太多,岸岭跟不上。

  「听不懂吗?那我用动画来打比方吧!动画是用几万张赛璐珞片连续拍摄制作成的,这你应该知道吧?动画每秒需要用到十五到二十四张赛璐珞片!游戏也是一样,每秒要进行多达几十次的程式处理,才能描绘出图像!」

  「总之,一次游戏回圈处理就叫做一影格,影格数越多动作就越平滑。像是瞬息间决胜负的格斗游戏或是STG,大多数都是以六十FPS在跑的。如果是电脑需要长时间思考的SLG等类别,也有的游戏是三十FPS。」

  「原来如此,也就是说画面更新率,指的就是『每秒处理几影格』吧。」

  天道似乎懂了,如此回答。

  「就是这样!顺便一提,为什么是以六十次为基本呢?因为最近的电视或电脑萤幕每秒能更新的次数大多都是六十次!」

  「哦,原来如此。」

  因为萤幕每秒能描绘六十次,所以游戏也是每秒描绘六十次。而每一次描绘好像就叫做一影格。

  「我大概明白FPS是什么了。」

  「真的明白了吗?」杉鹿冷眼瞪著岸岭。「那我考考你,一影格大约是几秒?」

  「咦?咦?咦?」

  岸岭慌张了一下,不过冷静一下就发现不难。

  「呃──六十分之一秒,就是1÷60……」

  「〇‧〇一六六六秒……差不多是〇‧〇一七秒吧。」

  或许该说不愧是天道,她一瞬间就算出来了。

  「我很想说你答对了……可惜就差一点,其实这是个陷阱题。我刚才说过有的游戏每秒跑三十影格,有的跑六十影格,对吧?所以正确答案是『六十FPS的游戏每影格大约〇‧〇一七秒,三十FPS的游戏则是〇‧〇三三秒』。」

  「……抱……抱歉,我有点跟不上了。」

  「放弃得太快了吧!真拿你没办法耶,总之统整起来,就是游戏每秒会固定做几十次的处理啦。」

  「这……这样的话我勉强能理解。不过,我不懂这跟打电动变强有什么关系耶……」

  「要从基础用语开始学起,才能进一步说明啊。那就照你的希望,开始进入主题吧。比方说假设有很多玩家想一起玩游戏,除了分割画面之类,就只有两种方法,对吧?一种是直接用缆线连接好几台游戏机,一种则是经由网路对战。」

  「嗯,对啊。」

  「可是一般来说,很难在同一个地方准备好几台游戏机,对吧?所以最普遍的方法就是网路对战。」

  「嗯,我们社团也是。」天道点点头。「游戏机都是经由网路连接的。」

  「啊,是这样喔?因为同一间房间里有多达四台的游戏机,我还以为是直接连接,而不是用网路呢。」

  「说了你可能觉得意外,其实用缆线反而比较麻烦,而且有的游戏不对应。如果是网路的话,只要设定一次路由器,之后就简单了。」

  「顺便一提,JGBC也是用这个方法!JGBC的会场有几十台游戏机,但全部都是经由网路连线的!理由是这样比较能重现参赛者平常的游戏环境!」

  「那……那么……也就是说大家在同一个会场,却特地与远方的伺服器连线对战吗?」

  「对啊。不过啊,不管在什么样的环境下,网路对战都会有个棘手的问题,那就是Lag。」

  「Lag……」

  「你就当作是延迟或滞后的意思就对了。比方说……有了,在玩拟真系FPS时,有没有过一种经验,就是明明是自己先开枪,却射输对方?」

  岸岭有这个经验。

  「嗯,有有有。但我那时以为是枪的问题,或是我本领太差。」

  「哎,你的话或许有可能,不过有时候应该也是Lag造成的。听好喽,基本上,假设有十个人玩网路对战,会由十个人当中的一个人开设伺服器,然后十个人都以用户端程式与伺服器连线。换句话说,开设伺服器的人会同时用到伺服器与用户端。」

  杉鹿开始在白板上画一幅新的示意图。

  首先她在中央写上「PC1用户端」,正下方写上「伺服器」。然后用红线把「PC1用户端」与「伺服器」连起来。

  接著她又在周围写上「PC2用户端」「PC3用户端」「PC4用户端」,同样用红线连到中央的「伺服器」。

  「你应该看得懂这个的意思吧?」

  「勉……勉强。也就是PC1开设了伺服器,然后所有玩家以用户端程式跟伺服器连线对吧?」

  「没错。用户端程式每隔几影格,就会把这几影格之间的手把输入讯号、移动速度与视线角度等资料一起持续送往伺服器。伺服器处理这些资料,再把结果送回用户端,显示在画面上。不过也不是所有FPS都是如此,像格斗游戏的话甚至是每影格都会持续将手把的输入讯号送到伺服器。喂,岸岭?你有跟上吗?」

  「呃,嗯,勉强……」

  「哎,没差,晚点我再帮你做个总整理。」

  「不过,这真的办得到吗?」

  跟岸岭不同,天道似乎都有听懂,手托著下巴问道:

  「你说用户端每隔几影格,就会把这几影格之间的手把讯号或角色资料送到伺服器……但十影格也不过才〇‧一二秒吧?这么多资料能送得这么快吗?」

  「按钮讯号的资料量其实不大!」濑名老师说:「因为基本上一颗按钮用ON跟OFF就能管理了,加上十字键也才十六位元,也就是说只要有二个位元组就能管理十六颗按钮了!当然如果再加上类比操作杆或角色的视线角度,问题会再复杂一点,不过因为现代压缩技术进步的关系,实际上的数字比这更小!而且就连用电话线上网的时代,连线速度都有二八八〇〇BPS了,更不要说现在宽频技术发达,有些厂商甚至主打最高一〇MBPS!〇‧一秒传送个几位元,小意思啦!」

  「原来如此,也是呢。」

  天道好像明白了,但又是位元又是位元组的,岸岭还是一样有听没懂。

  「啊,岸岭同学,刚才讲的这些不懂没关系!简而言之,就是世界一直在进步啦!」

  「哦,这我就懂了。」

  「然后呢,接下来才是关键。网路连线速度越来越快是事实,但是在网路上传递资料,不管怎么样就是会产生延迟。比方说日本与美国单程大约一万公里,往返就有两万公里,对吧?就算用光速传递资料,也不可能一瞬间就传到。」

  「对耶,就算光速是每秒三十万公里,也还是会产生〇‧〇六七秒的Lag呢。」

  天道再度以惊人的心算能力一瞬间算出答案。

  「没错。如果是六十FPS的游戏的话,一影格是〇‧〇一七秒,单纯计算起来就会产生四影格的延迟。在解释Ping的时候我也讲过,实际上必须透过数据机或路由器等各种装置处理资料,所以速度会更慢。一旦延迟达到十影格左右,在一枪致命的拟真系FPS就会攸关生死问题,对吧?」

  岸岭勉强听懂了她的意思。

  「嗯,对啊。要是被狙击手爆头,一枪就没命了。」

  「所以网路游戏为了解决这个物理性的Lag,就会做很多处理。比较具代表性的处理方式,就是『在伺服器程式内架构未来世界』。」

  「未……未来世界?」

  话题突然变得好夸张。

  「没错。讲起来有点复杂,FPS的伺服器程式会与用户端互相传递资料,并且架构一个我们看不到的世界。这个世界只是没有显示图像,其他都一样,在这个世界里也有玩家操作的角色在玩游戏。而且这个世界是未来的世界,不过只比我们快个几影格就是了。说成时间进行得比我们快,或许比较好懂?然后用户端将手把讯号传送到这个世界,藉此改变过去……应该说重新架构未来世界,再把结果反映到我们的游戏画面上。」

  讲到这里,杉鹿转向濑名老师。

  「还是实际演练一下吧。麻烦老师准备一下游戏,要选一中枪就会没命的拟真系FPS。然后请老师开一个私人房间,叫我们过去。」

  「嗯,我知道了!」

  濑名老师手脚俐落地启动游戏,创建了私人房间。

  然后岸岭等人进入房间,启动对战模式。

  「这时候伺服器是在濑名老师那边,然后包括濑名老师在内,我们四个人都以用户端连接到伺服器。现在,比方说我移动一下角色──」

  杉鹿先把自己的角色移动到天道的角色面前。现在天道的画面上看得到杉鹿,杉鹿的画面上也看得到天道。

  「看好喽。两个萤幕摆在一起,应该很清楚,你仔细比较一下我跟天道的画面。」

  杉鹿把左操作杆稍微往前推了一下,让角色前进。

  首先,杉鹿画面上的角色立刻前进。然后稍微慢了一步,天道画面上的角色也跟著移动。

  「唔,杉鹿的画面上没有任何问题,但我的画面稍微慢了一点。这就是Lag吗?」

  「对,不过,这个Lag已经把影响处理到最小了。为了做这个处理,伺服器内才需要描绘『未来世界』。其实不会很难懂,比方说──」

  杉鹿再度指著游戏画面。

  「现在游戏里所有角色都没在动,也没有人按手把按钮,所以伺服器内的未来世界,大家应该也都是静止不动的。可是,如果我现在让角色前进……」

  杉鹿又推了一下类比操作杆。

  「这样一来,我输入的讯号就会送到伺服器,变成『角色在过去移动了』,于是未来世界就会重新计算、架构。然后这份未来的资料会再送回各个用户端,反映到游戏上。即使有几影格无法回避的物理性Lag,因为伺服器程式一直在架构几影格的未来世界,然后将结果反映给用户端,所以至少看起来感觉不到太大延迟。开枪也是一样。」

  杉鹿的角色对天道开了一枪。

  还是一样,慢了一拍后才出现损伤,使天道的画面发出红光。

  「首先开枪之后,讯号会送到伺服器,反映到未来世界之中,然后伺服器会比对其他角色的位置资料,判断是否命中。一旦判断命中了,伺服器就会处理损伤资料,透过网路再送回用户端,然后才会反映在各个玩家的画面上。」

  「……好像听懂了,又好像没听懂。」

  事实上讲到这里,已经超出了岸岭的理解范围。

  「嗯,我也开始有点混乱了。」

  就连天道都这么说。

  「哎,会混乱也是没办法的!」濑名老师说:「简而言之呢,各位!就是网路对战一定会有物理性的Lag!为了解决……或者该说掩饰这个问题,伺服器内会描绘未来世界,然后把计算结果反映给用户端!所以自己看到的画面跟别人的画面会有误差!」

  这样归纳的确比较好懂。

  「讲完了这些,才终于能够回到天道一开始的疑问。」

  「哦,就是用点发打倒敌人的问题,对吧?」

  「简而言之,就是当你的角色在完全停止不动时被敌人开枪打中了,就算急著想移动,手把讯号『送到伺服器』,『在未来世界做处理』,『再将结果反映到游戏上』,其实要花蛮多时间的。所以结论就是『从停止状态开始移动,会比自己的画面看起来更花时间』。」

  讲到这里,杉鹿深吸一口气调整呼吸。

  「啊──真是,讲了老半天,结论不过就是这么一句话:『等到中枪才想躲就来不及了』。」

  「原来是这么回事啊。」

  天道若有所感地点点头。

  「你这么一讲让我想到,有时候被敌人开枪打中之后躲到隐蔽处,却常会照样死掉。我甚至还以为是程式漏洞呢……」

  「这正是杉鹿同学解释的现象!换句话说,中弹之后急著想跑,但是在手把讯号传送到伺服器,世界更新之前,伺服器已经先做出了中弹判定,角色就死了!」

  「……好像听懂了,又好像没听懂。」

  至于岸岭还是一样,有点丈二金刚摸不著头脑。

  「你还不懂吗?总之,一旦你让角色停下来,自己的画面看起来可能还好,在其他玩家的画面上却已经站很久了。站著不动的敌人打起来最轻松了对吧?为了预防这一点,重要的是尽量不要停下来,并且尽量避免让动作变慢。理论不懂没关系,明白这一点就够了。」

  「啊,嗯,归纳得这么简短,我总算听懂了。」

  「而且连线的Lag,会因为一点小原因而轻易变严重。只要哪边发生网路塞车,马上就会造成严重Lag。Lag如果太严重,或者说Ping太差,有时候会发生明明是自己先开枪,却还是被对手射杀的现象。」

  「简而言之,就是如果跟对手完全同时开枪,赢的会是──Ping比较好的一方?」

  杉鹿点头回答天道的问题。

  「哎,就是这么回事。Ping较差的一方就连接收伺服器资料的间隔都会比较长,所以游戏更新也会断断续续的。这样一来,可能……当然也要看程式怎么处理,但其他玩家的角色看起来可能会像是在瞬间移动,或是其他类似的现象,总之应该会对自己很不利。」

  「那真的很严重……也就是说,现在我们几个当中,开伺服器的濑名老师最占优势?」

  「基本上可以这么说!」濑名老师说:「不过,我的用户端程式应该会基于这点做些调整!再说JGBC之类的大赛网路都很稳,这方面应该是不用担心!」

  「不过毕竟还是有物理性Lag,所以动作反映就是会比较慢。非得狙击或是埋伏的时候没办法,但永远都是随时移动的一方比较有利。讲了老半天的理论,其实结论不过如此。」

  「原来是这样,所以大家才会说FPS里最难缠的,是杀进敌阵的攻击手?」

  「哎,算是原因之一啦。总之,我的讲课就到此结束。知道理论当然很重要,不过游戏本领不是靠理论就能变强的。好啦,差不多该来玩游戏了吧。」

  「也是。那么为了实践杉鹿的教导,今天照常开始正式的社团活动吧。」

  就这样,岸岭等人用剩下的时间大玩特玩FPS。

  不久之后,岸岭将以攻击手之名在JGBC一举成名,不过那又是另一个故事了。

上一章目录+书签下一章