网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月16日
漏签
0
天
gamemaker吧
关注:
13,582
贴子:
94,201
看贴
图片
吧主推荐
视频
玩乐
30
回复贴,共
1
页
<返回gamemaker吧
>0< 加载中...
【GMS插件】tEngine时间引擎
只看楼主
收藏
回复
sunyubokkkkk
企业掌舵
15
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
众所周知,gamemaker默认是延时保帧的工作模式,该引擎让你可以拥有保时丢帧的工作模式。(目前仍为beta版)
2楼地址,3楼为“延时保帧”和“保时丢帧”的解释,4楼为插件用法。
送TA礼物
IP属地:上海
1楼
2018-07-09 11:18
回复
sunyubokkkkk
企业掌舵
15
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
地址楼保留,一会儿放在此楼回复里,先更3、4楼。
IP属地:上海
2楼
2018-07-09 11:19
回复(3)
收起回复
sunyubokkkkk
企业掌舵
15
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
何为“延时保帧”与“保时丢帧”?
---------------------------------------
通俗一点讲,从视觉效果上解释:
假设你的游戏里有一个方块,你想要它在1秒内横向运动500像素,你的房间速度是60,那么你可以这样在Step事件里写:
var spd_per_frame=500/(1*room_speed);//计算出1帧内运动的距离,即速度
x+=spd;//运动
因为我们知道正常情况下,room_speed即是游戏循环1秒内会执行的次数,即帧率。由于房间速度是60,所以正常情况下1秒会经过60帧,即1帧为1/60秒。方块会按照预期在1秒内经过60次运算走过500像素。
但是,什么是“正常情况”?所谓正常情况指的是你的游戏在一台配置足够的电脑上运行,游戏能够做到按房间速度1秒刷新60次。那假如在一台老爷机上或者你的游戏有超赞的特效导致“掉帧”呢?
假设此时实际fps只有30帧每秒,你的代码却仍然没有改变,此时你的方块会在1秒内经过30次运算,也就是只走过250像素。所以按照gamemaker默认的模式,游戏看起来变慢了。
故延时保帧就可以理解为,在实际帧率达不到设定的房间速度时,通过【延长】总执行完方块运动500像素的【时间】,来【保证】每一【帧】的方块的运动量都符合原定代码,掉帧时给人的视觉感受是【变慢】。
--------------------------------------
但有时我们并不希望这样的事发生——可能游戏速度变慢会导致玩家玩起来自带外挂,因为给他们的反应时间变长了,降低游戏性。
此时就有保时丢帧的出现。不同于前者,保时丢帧的模式保证游戏无论帧数多低都能在同样的现实时间内完成任务。采用这种模式的话,你要方块在1秒内运动完500像素,那么不管你fps实际上是60帧30帧2帧还是120帧,它都会在1秒内到达目的地,但代价是什么?
举个例子,假设正常60帧率的时候,每一帧的速度是spd,如果此时掉到30帧,为了仍然保证同样时间走完同样路程,是不是速度不得不变为(60/30)*spd,也就是2倍的原速度?所以相比于正常情况,掉帧时方块会“跳过”某些位置的绘制直接到预定的位置来保证按时完成任务。
故保时丢帧可以理解为,在实际帧率达不到设定的房间速度时,为了【保证】仍按照预定的【时间】执行完方块运动500像素,【丢弃】一些来不及渲染或运算的【帧】,掉帧时给人的视觉感受是【变卡】。
IP属地:上海
3楼
2018-07-09 12:12
回复(1)
收起回复
阳光-1024
软件架构
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
似乎
和我的讯飞娘一样
并无 用
IP属地:上海
来自
Android客户端
5楼
2018-07-09 19:23
回复(2)
收起回复
图Mgs
初涉算法
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
楼主,可不可以游戏开始放个计时器设定每间隔出发一次时间,把所有逻辑时间放到这里解决,这不就避开了基于帧的矛盾了吗
IP属地:辽宁
来自
Android客户端
6楼
2018-07-11 12:57
回复(1)
收起回复
图Mgs
初涉算法
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
大哥你说了这么多,其实就是利用插件把基于帧的全局事件处理为基于时间。
IP属地:辽宁
来自
Android客户端
7楼
2018-07-11 13:12
回复(4)
收起回复
图Mgs
初涉算法
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我又详细的了解了一下gm不是基于帧的,gm里帧生成是在每个step里,所以会 出现你说的第一种“延时保真”,而你给的第二种‘保时丢帧,的方法会造成,物体穿墙等bug
IP属地:辽宁
来自
Android客户端
8楼
2018-07-11 15:57
回复(7)
收起回复
微子喵
软件架构
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
Unity里的Time.deltaTime
9楼
2018-07-11 23:28
回复(2)
收起回复
梦想君
小吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
其实用draw_enable_drawevent也可以
不过缺点是,绘制事件会发生“跳帧”,如果有人在绘制事件里构筑游戏逻辑,那么会导致游戏出现一些意想不到的情况
下面是官方的例子
frame_skip ++;
if (frame_skip mod 5) == 0
{
draw_enable_drawevent(true);
}
else
{
draw_enable_drawevent(false);
}
IP属地:陕西
来自
Android客户端
10楼
2018-07-15 01:29
回复(1)
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
我发老头杯选手,你来打分
1065390
2
王力宏被曝将补位歌手
991872
3
羽毛球届的原神
922948
4
如何评价刺客信条影宣传片
907128
5
曝微软中国AI团队集体打包去美国
868923
6
俄罗斯总统普京抵达北京
860980
7
菲律宾碰瓷黄岩岛
847035
8
T1 3-1 TL
684840
9
A卡真的不能买吗?
573636
10
老头杯Uzi队AL基地集合
440916
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示