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
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.
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?
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)
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.
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...
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?
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
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.
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.
My testing was done with Models high, but reflections off and effects medium (which are required to see some things like mocore building, as far as i know)
Physics off, too. I showed it with the game at about 100fps - but by the time it's down to 60, it feels like a weirdly messed up ~30-40
It was pretty much strongest system available for the game too, Haswell @4.5 or 4.7ghz with very fast RAM (faster than most 2133/2400mhz XMP's by a decent margin)
Hey. I noticed this happening in replays too and I think I know the reason.
In HotS (or perhaps even before HotS?) Blizzard added extra data/information to replays. Replays now track and log certain events every 10th ingame second (supply counts etc). When watching a replay you can clearly notice a microstutter at regular 10 ingame second intervals (00:10, 00:20, 00:30, 00:40, etc...).
I am pretty sure the microstutters in replays are somehow connected to the changes to replay files.
Hey LaLuSh! I think the general microstutter happened long before that, but the pauses, that definitely sounds plausible.
Let me know if you want to talk more about this with community/blizzard, i'd love to play their rts/moba engine but i already ripped out half of my hair over it, i'm too sensitive to things like input latency, stutter (macro or micro) and FOV so stuff like this occasionally destroys a great game for me
#fixsc2
To be clear, i know what you mean on the 10 second pauses 100000%, but i don't call that microstutter. Those are long pauses, they take like 60ms lol which is ~4 frames @60hz or ~8.6 frames @144hz. It's not a "micro" stutter, it's a full on stutter/pause.
What i call microstutter is the massive variance in the amount of pixels per frame that the camera or units move (it seems like the game runs on an update loop as you get the same behavior either scrolling the camera or just watching units move under it) which destroys quality of motion and makes things slightly jump/skip around
Yes now that you mention it... I remember recording my SC2BW "trailer" video before HotS was released and wondering why the hell my recording was stuttering.
When I look back at that video now I can see that the microstuttering occured whenever I was recording off replays. Doesn't seem to be happening in real games.
Are you sure this was present early on in WoL? I seem to recall Blizzard changing replay files in a patch months before HotS, which makes me unsure.
*edit: I realized now you seem to be referring to a different, much more frequently occuring kind of stutter. The 10s interval stutter doesn't explain your recorded frame stutters.
Early on in WOL, i'm not sure. I don't remember the pauses every 10 seconds, in particular (it's actually like 8 times per real minutes, super annoying)
The frametime inconsistency i think was a big thing as early as 2011 or earlier though. I used to get frustrated with how the game felt, especially when i had lower FPS due to streaming.
*edit: I realized now you seem to be referring to a different, much more frequently occuring kind of stutter. The 10s interval stutter doesn't explain your recorded frame stutters.
I'm refering to both, the sc2 engine has the constant microstutter problem when the game is unpaused and simulating, but it also has the big pauses every 10 game seconds. Both of them are big issues, i think the microstutter is a bigger issue, but the pause one is more noticable because the game just stops dead for like 1/15'th of a second and it does it often (~8x per real minute sometimes, so often 100 times in a single game)
Just based on what I've read in the thread, this seems like an issue with streaming a replay file, which isn't really a huge deal gameplay wise. Is any of your data based on actual gameplay?
Yes, all of the issues happen just as much in the actual game when you're trying to play competitively as they do in replays - that much is extremely obvious. It's easier to see in a replay because you can pause simulation which makes the issues go away, but with simulation unpaused (watching a replay or playing/spectating a game) the issues are there all the same. Both of them - the constant microstuttering, and when the game freezes for ~1/15'th of a second about 8 times per minute often (sometimes this doesn't happen if it's early in the game and there's not a lot of units? I don't remember)
The game saves data to replays and for spectators as you play, which is why they could be connected
I feel like this is being felt even more in LotV beta, we need to get someone from Blizzard to acknowladge this issue and at the very least explain why they can't fix it. It's pretty embarassing that this is still an issue, and as far as I'm aware will continue to be so.
How can we make our voice heard about this? Engine fixes I feel would be my most wanted feature of all in LotV and I bet that our community leaders didn't even bring it up at the summit..
Perhaps it's enough with a video that explains the issue with the graphs and such, doesn't necessarily have to show sc2 footage of it as I'm sure most people can relate already.