求助,如何实现游戏倍速
gamemaker吧
全部回复
仅看楼主
level 2
shwshark 楼主
尝试了调整roomspeed.正常情况下是60,调成30会变慢,但60时往上怎么调都没有变化,只有按每秒帧数播放的精灵变了[委屈]
2023年09月09日 06点09分 1
吧务
level 13
首先,GM引擎最核心的时间轴是步循环。room speed是游戏运行时的目标速度(步/秒)。如果你游戏实际没有“运行缓慢的函数”、重复次数太高的循环、数量过多的实例、未优化的检索机制等东西,提高这个参数确实会提高运行速度。如果游戏本身已经运算吃紧,提高这个数字并不会提高速度,甚至本身就会降到60以下。S2版本可以在debug窗口(或调用内置变量)查看real fps的值。当然,这个数字还和机器配置有关。
其次,room speed只是目标值,并不是游戏运行的真实速度,在60step per second运行的时候,两个step的时间间隔并不会是完美的16.667ms,而是会在一定范围内跳动。每个循环完成后(draw事件结束后)的等待时间就会根据之前的情况进行弥补。比如上一个step因为什么其他因素(比如其他程序的硬盘读写)导致持续时间到达了20ms,那这一step的时间补偿就会接近13ms。这个机制无法弥补过长的间隔,比如某个step时长达到了500ms(比如玩家拖动游戏窗口),也只会在下一个step尝试在0ms之后立刻进入下一step,并不会连续跳过很多个。换句话说就是用step来计时存在一些单向的,会累计的偏差。
所以,建议的方案是根据声音开始播放时记录的时间和当前时间的时间差来进行各种活动(无论常规速度还是倍速),注意相关函数获得的时间有些单位是毫秒,有些单位是微秒,使用时单位别用错。
之前在别的游戏里见过一项设置是时间判定基准,除了时间以外还可以是“声音波形的采样位置”,理论上更适合音游。不过咱sound/audio方面的函数没怎么用过,没办法给出进一步的建议。
2023年09月09日 07点09分 2
可是我的real fps一直很高,但fps一直在60左右,看不明白啊。另外这种根据声音计时具体怎么实现呢,能不能推荐一下相关教程[乖]
2023年09月09日 08点09分
@shwshark real fps“很高”是多少呢?根据声音计时是咱在别的游戏里看到的机制,有必要的话可以查查audio函数里有没有获取“当前播放到哪里”的函数。至于教程,咱的看法是如果啥都等教程,就永远只能做别人做过的东西。
2023年09月13日 00点09分
level 2
shwshark 楼主
2023年09月09日 08点09分 3
1