Questions tagged «frame-rate»

成像设备产生唯一连续图像的频率。通常以每秒帧数(FPS)表示。

11
什么时候应该使用固定或可变时间步长?
游戏循环应该基于固定时间段还是可变时间段?一个人永远是上等的,还是正确的选择会因游戏而异? 可变时间步长 物理更新传递了“自上次更新以来经过的时间”参数,因此与帧速率有关。这可能意味着要进行计算position += distancePerSecond * timeElapsed。 优点:流畅,更易于编码 缺点:不确定性,无论步长或步长都是不确定的 deWiTTERS示例: while( game_is_running ) { prev_frame_tick = curr_frame_tick; curr_frame_tick = GetTickCount(); update( curr_frame_tick - prev_frame_tick ); render(); } 固定时间步 更新可能甚至不接受“经过的时间”,因为它们假定每次更新都是在固定的时间段内进行的。计算可以按进行position += distancePerUpdate。该示例包括渲染期间的插值。 优点:可预测,确定性(更容易进行网络同步?),更清晰的计算代码 缺点:不同步以监控垂直同步(除非进行插值,否则会引起抖动的图形),最大帧速率受限(除非进行插值),难以在框架内工作采取可变的时间步长(例如Pyglet或Flixel) deWiTTERS示例: while( game_is_running ) { while( GetTickCount() > next_game_tick ) { update(); next_game_tick += SKIP_TICKS; } interpolation …

8
他们是如何做到的:Terraria中的数百万块瓷砖
我一直在开发类似于Terraria的游戏引擎,这主要是一个挑战,尽管我已经弄清了其中的大部分内容,但我似乎并没有真正为它们如何处理数百万个可交互/可收割的图块而费心游戏一次完成。在我的引擎中,创建约500.000个图块,这是Terraria可能生成的图块的1/20,导致帧速率从60下降到约20,即使我仍然只在视图中渲染图块。请注意,我没有对磁贴做任何事情,只是将其保留在内存中。 更新:添加代码以显示我的操作方式。 这是类的一部分,它处理并绘制图块。我猜想罪魁祸首是“ foreach”部分,该部分会迭代所有内容,甚至是空索引。 ... public void Draw(SpriteBatch spriteBatch, GameTime gameTime) { foreach (Tile tile in this.Tiles) { if (tile != null) { if (tile.Position.X < -this.Offset.X + 32) continue; if (tile.Position.X > -this.Offset.X + 1024 - 48) continue; if (tile.Position.Y < -this.Offset.Y + 32) continue; if (tile.Position.Y > -this.Offset.Y …

3
团队如何防止覆盖源文件中的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 在我看来,有一种可能性,例如由多个人同时处理游戏引擎时,如何防止覆盖? 假设开发者一在工作,Audio.cpp而开发者二也在工作Audio.cpp,这在大型团队中通常如何进行管理以应对覆盖?(换句话说,要阻止开发人员2打开文件,直到开发人员1完成)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

2
尽管使用了Time.deltaTime,但移动似乎与帧速率有关。
我有以下代码来计算在Unity中移动游戏对象所需的转换LateUpdate。据我了解,我对的使用Time.deltaTime应使最终的翻译帧速率独立(请注意CollisionDetection.Move(),仅用于进行射线广播)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

5
每秒设置帧上限有什么好处?(如果有)
我正在使用OpenGL开发一个简单的游戏,使用SDL进行显示初始化和输入,从时间的角度来看,我有两个选择。当以秒为单位的optimableTimePerFrame = 1 / theFramerateCap时,排名第一的仅是为optimizeTimePerFrame休眠的-theTimeTakenToRender。(我不完全确定这是否必要,因为这等效于使用vsync,这可能更准确。如果我的假设正确,请告诉我SDL + OpenGL是否默认具有vsync,如果没有,另一种方法是测量自渲染最后一帧以来的时间,并仅相应地调整运动。(渲染框架所花费的时间越短,实体在该框架中移动的距离越少)。在性能,减少闪烁等方面,这两种方法的优缺点是什么?
13 opengl  sdl  frame-rate  vsync 

2
在XNA / MonoGame中解锁帧率会告诉我代码的效率如何吗?
我一直在通过以下方式解锁MonoGame中的帧率: this.graphics.SynchronizeWithVerticalRetrace = false; base.IsFixedTimeStep = false; 并以此作为我更新和绘制游戏效率的基础。 在240 x 160的分辨率下,除了帧计数器外,什么都没有绘制或更新,我得到的FPS值为9,000到11,000 FPS。 如果我重新添加所有代码,它的速度将下降到约1,100 FPS。 这是否很好地表明我的代码显着降低了GPU的速度(10倍),我是否应该担心?该游戏将以60 FPS的速度运行,所以我离它还差得很远,但是我应该关注解锁帧速率的哪一点? GPU:AMD FirePro W5000(FireGL V)

5
使用大量的多维数据集。改善效能?
编辑:总而言之,我有一个基于体素的世界(《我的世界》风格(感谢共产主义鸭子)),其性能不佳。我对消息来源并不满意,但希望获得关于如何摆脱它的任何建议。 我正在一个项目中,世界由大量的多维数据集组成(我会给你一个数字,但这是用户定义的世界)。我的测试之一是(48 x 32 x 48)块。 基本上,这些块本身不会做任何事情。他们只是坐在那里。 当涉及到玩家互动时,便开始使用它们。 我需要检查用户鼠标与哪些多维数据集交互(鼠标悬停,单击等),以及在玩家移动时进行碰撞检测。 现在我一开始有大量的滞后,遍历每个块。 我设法通过遍历所有块并找到哪些块在字符的特定范围内,然后仅遍历那些块以进行碰撞检测,来减少这种滞后。 但是,我仍然要压低2fps。 有人对我如何减少这种滞后有其他想法吗? 顺便说一句,我正在使用XNA(C#),是的,它是3d。
12 xna  3d  frame-rate  voxels 

4
像SmoothVideo Project所使用的那样,帧插值是否可以在不影响性能的情况下增加游戏的帧率?
SmoothVideo项目使用帧插值将视频的fps从24提高到60。结果非常令人印象深刻。我想知道这是否可以应用,在电子游戏中看起来是否不错? 与渲染所有帧相比,它使用的资源要少得多,因此在某种程度的折衷下,允许较低端的装备以更好的装备的质量进行渲染。我知道它不会那么精确,并且会稍稍增加输入等待时间,因为它需要保持最新的帧才能生成和插入内插的帧。不过,这还不如全帧那么糟糕,根据我的推理,仅滞后时间就是插值时间加上原始fps刷新时间的一半。因此,对于30 fps,这将是33ms / 2 +内插时间。 也许这种滞后将使其不适用于快速过去的第一人称游戏,但我怀疑这会在节奏较慢的游戏中成为障碍。 在较高的启动速度时,延迟会变小,因此,我认为从60fps到100 + fps时值得这样做,虽然会稍有增加,但仍会给系统带来极大的负担,但可以改善用户体验。

3
框架独立运动
我还阅读了有关运动的其他两个主题: 基于时间的运动与基于帧频的运动?, 什么时候应该使用固定或可变时间步长? 但是我认为我对框架独立运动缺乏基本的了解,因为我不了解这些线程在说什么。 我跟着lazyfoo的SDL教程一起学习了框架无关的课程。http://lazyfoo.net/SDL_tutorials/lesson32/index.php 我不确定代码的运动部分在说什么,但是我想是这样的(如果我错了,请纠正我):为了使帧独立运动,我们需要找出一个物体有多远(例如精灵)在特定时间范围内移动,例如1秒。如果点以每秒200像素的速度移动,那么我需要通过将200 pps乘以1/1000秒来计算该点在该秒内移动了多少。 那正确吗?本课说: “速度(以每秒像素数为单位*自上一帧以来的时间,以秒为单位。因此,如果程序以每秒200帧的速度运行:200 pps * 1/200秒= 1像素”) 但是...我以为我们将200 pps乘以1/1000秒。每秒帧数是什么业务? 如果有人可以给我一些关于框架独立运动如何工作的详细解释,我将不胜感激。 谢谢。 加成: SDL_Rect posRect; posRect.x = 0; posRect.y = 0; float y, yVel; y = 0; yVel = 0; Uint32 startTicks = SDL_GetTicks(); bool quit = false; SDL_Event gEvent; while ( quit == false …
11 frame-rate 

6
使pygame的帧速率更快
通过对游戏进行性能分析,我发现我的爱好游戏的绝大部分执行时间都在blit和flip调用之间。目前,它仅以13fps的速度运行。我的显卡相当不错,所以我猜想pygame没有使用它。 有人知道我需要在pygame中设置任何图形/显示选项以使其更快吗?还是自选择pygame以来我必须忍受的东西?

2
帧率限制
最成功的竞技游戏引擎喜欢id Tech,GoldSrc,Source和这样的允许帧率限制。 您可以玩30、60、99、72、68等。总之,您可以设置其上限并控制上限。 我想知道如何限制帧率? 对代码不感兴趣,但对理论不感兴趣。

1
使用sleep在单个线程中将逻辑/更新与渲染/绘制代码分开
我读过,游戏对象的速度不应该受到FPS的阻碍,而应该基于时间。如何分隔更新/绘制代码以在不限制绘制速率的情况下最大化性能,并提供基于时间的恒定逻辑更新速率? 我当前的伪代码如下 loop { draw(); if (ticksElapsed() > 100) { update(); ticks+= ticksElapsed(); } } 问题在于绘图代码阻碍了update()速率的性能。而且它消耗了100%的cpu,因为如果引发了睡眠,它将同时中断两个绘图/逻辑功能。 我也在使用SDL,它似乎没有vsync选项。我也听说过固定和可变时步的术语,但是我不确定用sleep()如何做到这一点。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.