龙空技术网

红警这种老游戏兵一多就卡,其实原理是这样的

桥南小艺 608

前言:

此刻同学们对“红警2玩着玩着就卡住”大约比较关切,兄弟们都想要分析一些“红警2玩着玩着就卡住”的相关知识。那么小编在网摘上收集了一些对于“红警2玩着玩着就卡住””的相关资讯,希望看官们能喜欢,大家快快来学习一下吧!

去年某个时间在B站看到了一个UP主“红警08”玩红色警戒的游戏视频,引起了我这个十几年前玩过的人的兴趣。我去翻看了这个UP主的投稿,发现此人是某年的红色警戒全能王冠军,全国总决赛亚军。两年前开始发红警游戏视频,一天两个视频没有间断过。自己玩自己解说,讲话又挺有趣,后来更是涨到了一百万粉丝。感觉红警这个老游戏又焕发了新春。于是我也去下载了对战平台上去玩了一会。

我这种游戏手残党,跟别人拼地堡抢地盘肯定是不行了的。虽然看了很多08的视频,知道游戏要怎么玩,但总是手速太慢,我的电厂刚出来,别人的兵营就挨着我的基地直接过来抢了。玩了几盘发现我还是只适合玩防守地图。有的防守地图很夸张,电脑单位越出越多,越来越打不动,就会使用一招卡怪,那么地图上的电脑进攻单位就更会越来越多,然后整个游戏就卡了。这个卡不是电脑单位自己卡,而是整个游戏全部都卡。因为当你有了超级武器的时候,屏幕右下角就会出现一个倒计时,在卡顿的时候这个倒计时会走的比顺畅时慢的多。红警08这种老玩家也是经常吐槽,这个老游戏就是这样,坦克和兵一多就卡。

前一阵子看网上有个坦克大战的制作视频,就是以前玩红白机连着电视机用手柄玩的那个。我看着视频自己也实现了一遍,并花了一个星期将其改造成网络版可以多个人一起玩,可以混战。由于理解了游戏制作原理,我便可以解释这个老游戏为啥兵一多就卡了。

我们知道一个视频是由很多张图片组成然后快速替换组成的。其中一张图片就叫做一帧。游戏其实也是一个视频,只是这个视频里边的一些元素比如坦克你可以控制它前进后退等。我们也经常听到一些玩家说游戏掉帧了,或者一些游戏右上角直接标记着当前帧率是多少。而游戏就是这样,就是开发者在一块画布上一帧一帧的画上去的。而画一帧的时候,需要先画底色,加载背景。然后在对应位置上画上各个单位的对应图片。其实把东西画到画布上并不会花太多的时间,但是计算各个单位的位置和对应图片就有可能会花费很长的时间。

首先每个单位都要移动,移动就要计算与其它单位是否有碰撞,如果碰撞就不能按照原来的路线,就得重新规划路线,如果重新规划的路线还是跟其他单位有碰撞,那就得再重新计算。我们可以想想,如果地图上出现了1000个单位,那么第一次规划路线就要计算499500次,然后后面的单位可能还有多次计算,每次计算是一个坐标范围的判断,也是一个相对耗时的操作,然后根据移动的相对位置调整单位图标的方向,这是一个三角函数的计算,(在计算机里边,加减法计算最快,然后是乘除,再后面就是三角函数等等)。

其次就是很多的单位会自动攻击在攻击范围内的敌方作战单位,因此每个单位还需要计算其是否要对旁边的敌方单位进行攻击,如果产生了攻击,就需要重新计算图标的方向与样式,还要新增子弹的图标,然后跟敌方单位的护甲和子弹的攻击力计算地方单位的耗血,还有自身的经验值增加,判定是否升级等等。而老游戏中,帧率一般是固定的比如30,如果一帧耗时比设定时间30毫秒要短,那么可以通过延时睡眠要控制帧率,如果一帧计算的耗时要大于设定时间,那么一秒钟就没法产生30张图片,而每帧之间元素的移动之类的变动都是按照30的帧率来设定的,因此如果一秒钟只产生了15张图片,那么就会相当于我们看视频选择了0.5倍慢速播放。这样游戏就会显得很卡。

虽然我们现在的计算机配置很高了,目前i9的CPU可以高达5GHz的频率,但是这个频率一个是多核一起工作的效果,而且想在几十毫秒内计算上万次的复杂运算,还有有点难度的。并且一开始卡怪,到了一定数量的时候,每多一个电脑单位,就会多出更多的计算量。因此就会越来越卡。

想要解决这个卡顿,可以有很多种方法,一个是不出这么多怪。二个是进行减帧,只是减帧就变成了跳跃式播放了。三就是优化算法,比如在帧率没法保证时,控制坦克被其他单位卡住了不能动之后,两个帧内就不再进行位置计算,这样就可以减少很大的计算量,通过损失一点单位移动流畅度来保证整个游戏的流畅度。

春节一过开始上班,工作就开始忙了起来,我又把游戏给卸载了。

标签: #红警2玩着玩着就卡住 #红警2进入游戏后很卡 #红色警戒打开很卡