|
United Kingdom20263 Posts
I thought it was about time that i posted what i could to show this problem:
Sc2 has terrible motion quality. When you move the camera or do anything, it freezes slightly and jerks forward, which results in a few negative effects, but most notably confusing input, and 100fps in sc2 looking LESS SMOOTH than 40fps in some other games that scroll well - two examples would probably be CS:GO and League of Legends, though i have not checked either of them, they do not present a problem to me and seem to run butter smooth and solid, especially with higher framerates. Sc2 does not, and it's bad to the point where i feel that the playerbase as a whole is being negatively affected, and greatly worry about future blizzard games having the same types of issues.
It is much easier to see on a 120hz screen, but presents itself to everyone as far as i know. I think that a lot of people won't immediately know what i'm talking about or see a problem, but when shown what the engine "could" be in terms of smoothness etc, it should be easy for >anyone< to see a massive difference.
The biggest way to see this is probably pausing/unpausing the game in a replay. The game runs mostly (not quite entirely) smooth when paused - but has very large issues when the game is running.
----------------------------------------------
So, data.. :
Since NVENC seems to be by far the best recording method that represents >what i see on screen< and does not notably impact performance or change the feel or look of the game in terms of motion quality, i used it to record at 100fps. I got to a point in the replay at around 100fps, and then i recorded and scrolled with keyboard at 25% speed across the screen, back and forth. I looked at video, took 10 consecutive frames, replayed them quickly to make sure it accurately represented what i was seeing, and then took them into paint.net, and with some lairs magic, marked the same point on every image (from the edge of a healthbar) - until i had all of them, then counted+marked the amount of pixels that each frame had scrolled to the side. I had to use 1.5x image downscale to easily capture triple digit FPS without messing around with it, but there were no problems presented with showing results from that:
With game paused, here is what this method looks like:
I marked how many pixels each frame jumped, and recorded them, this one is:
15, 16, 16, 17, 16, 15, 18, 15, 16 pixels. There was no result lower than 15 or higher than 18, so this ends up as basically 16.5 +-1.5 pixels per frame, very little variance. The lines are all about the same size - same amount of pixels moved per frame, pretty much, so smooth motion.
Here's what fraps frametimes recording looks like for another run like this:
This is a longer recording, which lasts about ~1600 frames as opposed to 10. The variance is from switching back and forth - there are a lot of weird dips, which is odd, but mostly, the dots are very close together.
---
Now we compare what it looks like unpaused. I do the same thing, record, take 10 consecutive frames and mark them the same way:
It moves, in pixels~ 11, 21, 9, 19, 0, 10, 31, 11, 10.
The 0, i had two frames the same. They were like that in the video, so i'm not sure where the fault is, but i added a bit of detail to the pic to mark where that happened and it didn't really change anything. The other one was approx ~16.5 +-1.5px per frame, but this, i don't even know. Three of the ten frames moved ~19, 21 and 31 pixels - 5 others moved approximately 10.
It's very obvious that there are lots of lines way shorter than average, as well as some way longer. The largest difference in the game paused pic is 15 pixels vs 18 - The longest line is 1.2x as long as the shortest one. However, with the game running we get very different results: 10 vs 31. The longest line is 3.1x as long as the shortest one, +210% longer instead of +20% longer. Since they represent the amount of pixels moved on each frame, that is massive.
What does fraps frametime recording have to say about this?
Quite honestly the data is so bad i thought it was just a broken interaction somewhere in the recording process, but NVENC seems to record exactly what i see and i've reviews a bunch at various playback speeds - 1x, 2x, 1/2, 1/4, 1/8, 1/16 etc - it seems to back up this data.
Youtube only displays video at 30fps - it makes this very difficult to show, as the effect is partially hidden with such a low FPS. If anyone can give me a site to upload to that'll run 60, i can post a few videos showing scrolling so that people can hopefully see the issue. It's glaringly obvious to me - and one of the main problems it seems with the sc2 engine.
TL;DR - Sc2 engine is very unsmooth and inconsistent. It can be a pain to work with and has terrible quality of motion, even at framerates that should look awesome, and quality of gameplay is massively negatively impacted as a result. What can we do as a community to fix this?
I'm a tech person, not a writer, so apologies if this is unclear or hard to understand, etc
please comment~
|
Is this why I can't beat toss as terran?
Guess I should be glad only to have a 60Hz screen o.o
|
Well this topic is my bête noire as I've never completely understood micro-stutter, regardless how much people have tried to explain it to me. But I kind of see where you're coming from with this.
As far as I know, when the FPS varies greatly over a small period of time, you get micro-stutter, which makes a game at high FPS look like it's running at much lower FPS during a small period of time.
If I remember correctly, SC2 doesn't scale past two CPU cores. I think that this, in combination with the fact that the CPUs have a LOT of work to do (especially since they only have two threads to work with?) is what causes the FPS issue. I think this is due to the fact that in fights and whatnot, the CPU has to calculate everything from unit position, to damage done/received, to the physics effects that are also CPU-hungry. This extra work means that the game which was running at 150 fps suddenly drops for a short period of time to, let's say 90 fps. 90 fps isn't bad by any means but the sudden drop of 60 fps makes the game micro-sutter. This is because micro-stutter is caused by large drops or raises in fps.
So, when nothing is happenining or the game is paused, the game LOOKS really smooth because the FPS don't drop because the the CPU doesn't to calculate things like unit movement, damage, physics, etc.. Once you do start playing the game, the CPU has to calculate a LOT of stuff on just two threads.
Hmm, how does that sound? I guess this means that this problem can only be fixing the game engine itself, perhaps? But the community can't touch that I would think.
|
United Kingdom20263 Posts
This extra work means that the game which was running at 150 fps suddenly drops for a short period of time to, let's say 90 fps.
Averaging 120fps with one third of your frames taking 1/60'th of a second is not fun - and massive disruptions to motion such as moving 10 pixels one frame, 10 pixels the next and then 30 pixels the frame after is really, really messed up. I feel like basics such as camera and mouse movement should be done separately, if possible? I do not have an advanced knowledge of programming, but sc2 seems to be the only game with this problem
|
I don't understand for a start why they won't make a damn 64 bit update to the engine as they did for WoW. The game is CPU capped even on shitty GPUs, and it runs on 2 cores, wtf?
|
I understood the TL;DR part and want to thank you for your ambitions towards the problem . Great effort, bro!
|
On April 09 2014 20:58 Nimix wrote: I don't understand for a start why they won't make a damn 64 bit update to the engine as they did for WoW. The game is CPU capped even on shitty GPUs, and it runs on 2 cores, wtf? 64-bit might be unimportant. It should not do anything unless there's something useful you could do with some super large block of memory.
I think the game technically uses more cores, but there's some specific task it runs on a single core that at some points in the game turns into some terrible bottleneck and holds everything up. It happens whenever there's a lot of units running around. In practice that makes things look even worse than the "runs on two cores" you're thinking of. It overall turns into some sort of "runs on one-and-a-half cores".
This thing Cyro talks about seems to be something separate. It just doesn't run smooth even when there's nothing going on.
|
So do the large jumps in pixels correspond to the frames that are visible for longer? i.e. if frame X is on the screen for a long while, then frame X+1 will have jumped 30+ pixels
Maybe you could upload video to say Dropbox or a similar service so people can download rather than stream it. (or if not, some free filehosting like Mega, Mediafire, or whatever junk out there that people use)
|
SC2 is possibly the most poorly optimized game ever created. Big step back from BW. Even the menu screens are junk and laggy.
|
United Kingdom20263 Posts
So do the large jumps in pixels correspond to the frames that are visible for longer? i.e. if frame X is on the screen for a long while, then frame X+1 will have jumped 30+ pixels
I'm not really sure, there definitely seem to be multiple frames falling short of "average" distance they need to move to maintain the scroll speed, and then one jumps really far ahead
It seems more obviously broken on higher end hardware, as a 4670k/4770k @4.7ghz would be smooth, but it's just not - @100fps the game looks terrible, almost to the point where i'd rather have a consistent 50 or even 30 fps
I think that blizzard should at least be aware of the problem
|
On April 09 2014 23:21 hellokitty[hk] wrote: SC2 is possibly the most poorly optimized game ever created. Big step back from BW. Even the menu screens are junk and laggy.
Clearly you've never played CS:GO where internet connection is apparently more important than aim.
|
United Kingdom20263 Posts
On April 10 2014 11:36 wptlzkwjd wrote:Show nested quote +On April 09 2014 23:21 hellokitty[hk] wrote: SC2 is possibly the most poorly optimized game ever created. Big step back from BW. Even the menu screens are junk and laggy. Clearly you've never played CS:GO where internet connection is apparently more important than aim.
I had no issues with CS:GO, though the rates thing seems like a bit of a mess
|
The rates are just setting the max bandwith the game can use, it's kind of odd they didn't add it to the options menu though. The interp commands are already less straightforward.. but that's not a default in the engine, just things you need to setup. And in any FPS your connection's quality makes a lot of difference. Just by curiosity, isn't SC2 basically using WC3 engine with updated graphics? Someone told me it does, I was a bit skeptical, but seeing how badly it runs this could actually be true...
|
Fascinating research. It really puts a magnifying glass on how bad microstutter is and how SC2 is sick with it.
|
United Kingdom20263 Posts
Just by curiosity, isn't SC2 basically using WC3 engine with updated graphics?
I think WoW took a base on wc3 engine ages ago (like a decade) but not sc2
|
So they made a new engine that bad? damn
|
What can realistically be done to improve the sc2 engine? Is there any likelihood to see optimizations in LotV through updating the engine?
Quad core utilization in the engine and reduction of microstutter/lag spikes could change the entire game. Is it possible that any changes could be made by blizzard or by the community to update it to include these features? Is it too much labor to make such an immense change? Is it flat out impossible without writing a new engine?
Cheers!
|
United Kingdom20263 Posts
On April 15 2014 03:07 Lothor wrote: What can realistically be done to improve the sc2 engine? Is there any likelihood to see optimizations in LotV through updating the engine?
Quad core utilization in the engine and reduction of microstutter/lag spikes could change the entire game. Is it possible that any changes could be made by blizzard or by the community to update it to include these features? Is it too much labor to make such an immense change? Is it flat out impossible without writing a new engine?
Cheers!
What can realistically be done to improve the sc2 engine?
In terms of how the game runs, there is probably a lot that could be done to increase performance if the focus was on performance, instead of raw framerate, because they are not the same thing
If blizzard was willing to port to dx11, there could probably be significant performance changes too, but i don't really understand the API and game enough to say that
Is there any likelihood to see optimizations in LotV through updating the engine?
Quad core utilization in the engine and reduction of microstutter/lag spikes could change the entire game. Is it possible that any changes could be made by blizzard or by the community to update it to include these features? Is it too much labor to make such an immense change? Is it flat out impossible without writing a new engine?
If blizzard wants to put in a little work, maybe. If they want to put in a lot of work, most definately - i don't think anyone else can do much here, and it feels like the kinda unfortunate position of blizzard never fixing it because of A; Not being aware of the problem to it's fullest extent and B; being unwilling to commit manpower without direct profit return (they would not port to dx11 like 3 years ago to improve performance for players while streaming, i was told)
I'd worry about using 2 cores before 4 too, in the really intense fights i get ~99%/20%/0%/0% on quadcore
|
I'd like to see what settings can help eliminate this as much as possible?
|
On April 21 2014 21:25 y0su wrote: I'd like to see what settings can help eliminate this as much as possible?
I'm guessing turning off / lowering the following settings would work:
Reflections, effects, physics and models are all CPU taxing so lowering those might help the stutter problem, SC2 being CPU demanding above anything else.
|
|
|
|