这一天,现代游戏社一如平常地正要开始社团活动。不过只有这天的活动内容与平常不一样。
事情的开端,是天道以下这句发言:
「对了,杉鹿,我一直有个疑问,是不是可以请你告诉我了?」
「嗯?什么问题?」
「上次我们第一次让岸岭玩FPS的时候,不是讲到了『点发』吗?」
所谓的点发,就是FPS的一项射击技巧。
就跟现实当中的枪械一样,在拟真系FPS当中如果让枪械全自动射击,準星会因为后座力而偏掉。若是近距离的话稍微偏掉没差,但是在射击豆子大的远处敌人时,只要有一点误差就会完全射不中敌人了。
因此,在射击远距离的敌人时,必须每开几枪就放开扳机,藉此抑止準星的偏差。这种技巧就是所谓的「点发」。
「那时候我们讲到,射击远距离敌人时一定要用点发,可是点发难免会造成射击速率下降对吧?所以我就问说,在第一发命中时如果被对手跑了,不就杀不死对手了吗?」
「啊,原来是那件事啊。」
岸岭也明白了天道想问什么。
「我也很想知道呢,那时候杉鹿不是说,这方面的问题在网路对战时不用在意吗?记得你好像是说跟Lag的问题有关……」
「对,就是那件事。为什么不用在意呢?我一直不懂。」
「哦,你是问那个啊。要我告诉你可以……可是讲起来有点长喔。因为要解释这个问题,就得讲到Ping还有FPS。」
「没关係,如果是这样的话,我也想拜託你,请务必跟大家解说一下!」濑名老师推了她一把:「仔细想想,我还没跟岸岭同学解释过这方面的事呢!我早就想找机会解说一番了,这样正好!」
「啊──?好麻烦喔。不过也是啦,的确应该跟你们解释一下。」
杉鹿平时虽然讲话带刺,不过被人拜託做什么的时候,好像不太擅长拒绝。
「好吧,首先我要一个白板,还有笔。」
「知道了,我来準备。」
天道把房间角落的白板喀啦啦地拉了过来。
至于濑名老师则是从白袍口袋中拿出一个东西,「拿去用吧!」交给了杉鹿。
「这啥啊?眼镜?我又没有近视。」
「别担心,这眼镜没度数!别管那么多细节,你就戴吧,解说员都得戴眼镜,这是惯例!」
「…………」
杉鹿被迫收下了眼镜,板着脸小声对岸岭说道:
「……我每次都在想,你们的顾问是不是哪里有毛病啊?」
「不要讲得好像事不关己啦,他也是杉鹿的顾问啊。」
至于濑名老师,他正在準备好的白板上写上几个大字「杉鹿圆的FPS讲座」。
「好,这样就万事俱备了!开始吧!」
「……算了,怎样都好啦。」
杉鹿自暴自弃地戴起平光眼镜,站到白板前。
(想……想不到还满合适的……)
杉鹿本来就是个满兇悍的女生,如今戴起眼镜,减少了几分平常的孩子气,看起来成熟了些,散发一种与平时不同的魅力。
「那我要开始讲解喽,首先从Ping开始。」
杉鹿在白板上写上「ping」,g好像不发音。
「我有听过。」天道说:「就是用来表示网路连线状态的单字吧?」
「大致上算对,不过更正确来说是『向目标主机传出封包后的封包往返时间』。那么接下来……岸岭,你有听过『伺服器』与『用户端』吗?」
「咦?呃……好像有在网路用语里听过……我记得是让伺服器与用户端连线,藉此互相传递资料……」
「没错,伺服器的英文Server就是托盘之类的意思。比方说我们都是藉由网路让游戏机连线对战,那也是某个地方启动了伺服器程式,然后其他玩家以用户端程式与伺服器连线,互相传递资料。」
杉鹿在白板中央写上大大的「伺服器」几个字,然后划线圈起来。
接着她在「伺服器」的周围又写上「用户端①」~「用户端④」四个项目,然后拿出红笔,用红线将四个「用户端」与「伺服器」分别连起来。
「你就把这条红线当作是网路连线,伺服器与用户端就是使用这个连线在互相传递资料。到目前为止跟得上吗?」
「勉……勉强。就是伺服器跟四个用户端连线了,对吧?」
「对,不过,这幅图的四条红线长度都差不多,但比方说用户端①可能是从日本存取资料,用户端②却可能是从美国存取,实际上要让用户端连上伺服器,必须透过数据机或是路由器等各种装置,所以资料传递其实还蛮花时间的。而Ping就是显示伺服器与用户端之间连线状态的单位。基本上这个单位的数字越小,就等于连线状况越好。」
「我举个简单的例子!」濑名老师眼镜一亮。「Ping这个名称原本是取自潜舰的主动声纳!你们有没有在电影里看过潜舰探测周围时拍发声纳的场面?简而言之就是那个的网路版!你们可以解释成拍发Ping等待回应,以侦测用户端与伺服器之间的距离!」
「原来如此,我好像懂了。」
岸岭曾经读过有潜舰登场的小说,因此很能理解濑名老师举的例子。在黑暗的海底看不见任何东西,所以要用声波探测周围的地形或敌军潜舰。网路也是一样,不可能目测用户端与伺服器的距离,大概是因为这样,才要发送Ping测量距离吧。
「哎,Ping就像是一个单位,所以应该不难懂吧,那我要进入下一段喽。Ping是代表伺服器与用户端之间连线状态的单位,至于电玩也有表示速度的单位,就是FPS。」
「FPS?」天道微微偏头。「那不是指First Person Shooter吗?」
「不,这次不一样!」濑名老师插嘴道:「杉鹿同学说的,应该是Frame Per Sed(画面更新率)吧!」
「F……Frame?Per……Sed?」
一连串很少听到的单字组合,让岸岭也偏了偏头。
「Per Sed我懂。」天道说。「简而言之就是『每秒』的意思吧。」
「没错,翻成国语应该就是『每秒显示影格数』之类的吧。至于它的意思嘛……嗯──只要懂了就会觉得很简单,可是要解释还真难呢。」
「好吧,那么这里就交给我来!」
最爱做解说的濑名老师眼镜耀眼一亮。
「听好了!所谓的电玩游戏都是用程式在跑,这点你们也都知道吧!拜科技进步所赐,如今的电脑能够一瞬间完成庞大计算,电玩游戏也就于焉诞生!而游戏程式又分成相当多种类,像是图像描绘、接收手把讯号、计算处理攻击判定等等,相当複杂!这些处理统称为游戏迴圈,每秒跑三十次或六十次的游戏迴圈,以架构出流畅的游戏世界!」
「…………呃。这个……」
刚才潜舰的例子很好懂,但这次的解说专业术语太多,岸岭跟不上。
「听不懂吗?那我用动画来打比方吧!动画是用几万张赛璐珞片连续拍摄製作成的,这你应该知道吧?动画每秒需要用到十五到二十四张赛璐珞片!游戏也是一样,每秒要进行多达几十次的程式处理,才能描绘出图像!」
「总之,一次游戏迴圈处理就叫做一影格,影格数越多动作就越平滑。像是瞬息间决胜负的格斗游戏或是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。然后请老师开一个私人房间,叫我们过去。」
「嗯,我知道了!」
濑名老师手脚俐落地启动游戏,创建了私人房间。
然后岸岭等人进入房间,启动对战模式。
「这时候伺服器是在濑名老师那边,然后包括濑名老师在内,我们四个人都以用户端连接到伺服器。现在,比方说我移动一下角色──」
杉鹿先把自己的角色移动到天道的角色面前。现在天道的画面上看得到杉鹿,杉鹿的画面上也看得到天道。
「看好喽。两个萤幕摆在一起,应该很清楚,你仔细比较一下我跟天道的画面。」