Today I finally got to the bottom of a strange case of the jitters that Blackshift would often come down with on Windows.
I'd just rewritten my profiling code, because it's time to get serious about performance, and here is the graph it presented me with. Can you see the problem?
If you're not used to reading this sort of chart, it shows how long the game engine spends doing each task for every frame. The Y axis is in milliseconds, and the coloured areas are different tasks. Blackshift runs at 60 frames per second so ideally each frame completes in 1000 / 60 = 16.6ms, which as you can see is usually the case.
As you can see, the graph is dominated by the render task (violet) waiting for vsync, and a rather heavy maroon task which turns out to be... wait... that can't be right. "Read gamepads"?
I did some research and it turns out   that, yes, windows' gamepad routines can take a shocking 8ms just to tell you if any buttons are being pressed. 8ms! If you've got a decent Internet connection you can play Counterstrike with an 8ms ping, which means your inputs are going out of your computer, all the way to s0ulb0y_3edgy420me's house and back quicker than they can get from your joystick, through winmm into Blackshift.
In fact, that's not quite accurate. It turns out, this delay is only incurred if there isn't a gamepad plugged in to your computer. If you actually use one, winmm behaves like a sane library designed by proper people at an actual company and returns its results almost instantaneously.
My solution: If winmm ever reports that there is no gamepad plugged in, simply stop calling joyGetPosEx, which is the devil, until you get a WM_DEVICECHANGE message. You'd think Windows could do something like that internally.
Anyway. Suffice it to say the next Blackshift update will contain Windows performance fixes.
Can't exactly tell by the colours but it looks like "Draw Game" is whackin' the processor. Either way, still having trouble with the pick up an item and going left as I stall. I think I tried it with WASD and it was better. Not the keyboard because I have the game loaded on 3 computers.ReplyDelete
If you mean the big spikes those are just when levels load, you can ignore those.Delete
That going left thing... I moved it to Done because I thought I'd fixed it but I guess not. Does it only happen with the arrow keys?
I am not good at WASD as I am right handed. You will have ask Moviette Goaway (Bibbythedark) about that but I think it works better that way.Delete
Did you notice the latest update has redefinable keys?Delete
Play "Bibby the Hard". When you pick up something and have to go left I stall and have to double click to move. Bibby does it with ease so, just wondering! He beat my score by 2 minutes! Your program is right oriented and I have to force the issue to make enemies go left. Just sayin'.Delete
Sure, but what I'm saying is, if you set your keys to, say IJKL, which you can still use with your right hand, does the problem still happen?Delete
Redefinable keys - nope - will check! Obviously in options but didn't look - building a new left handed level for the noobs!Delete
Ha ha ha, just looked at a replay on Obie2 which I messed up. Bobby found the secret (which I messed up) He will soon take top score.Delete
I will try that Rob - get back to you later. Need bacon now! Being Canadian eh!Delete
BTW, Obie2 is "Adam", slightly modified (which I screwed up) from the old Blackshift game. I forgot to fix levels 2 and 3 with directional gun in 2 and a deflector in 3 where the permanent guns keep shooting. Damn!Delete
Nice work on Obie2 Moviette, but you could have done better! Let's see what Bobby can do!Delete
I've just noticed a minor bug while playing the new "Sorry4delay".ReplyDelete
When you walk on a "zen" tile (the blue neon yin-yang one) while carrying a key, you got a shadow surrounding you... It only happen when you're carrying a key, I've tried with other items available on that level.
Eagle eyes! Thanks, I'll get this fixed.Delete
Crashed 3 times this morning. Don't know why. Using OpenGL so will try something else.ReplyDelete
DX11 didn't crash but then had a problem with instancing!ReplyDelete
Hell yeah! I've completed Impossible City. That was truly a journey!ReplyDelete
Btw, this prove that the save function in the level pit really do work. Because I've used a lot of saves and restarted many times to complete this level (without mentioning that my score is almost 1 hour long).
Whoa, nice one Adam! I was wondering if anyone would. Yeah, the main reason I made it was to exercise the Pit's handling of big levels and long plays. One day I'll introduce prizes for difficult feats, but for now you'll have to make do with bragging rights :)Delete
Just looking at your replay, you found a very laborious solution, much harder than the one I had in mind.Delete
I know! xDDelete
I'll redo it with a better solution one day.
While doing it I didn't think of a better way, but now that I know the level, I could certainly do better ;P
That one needs to be Level 100! I think Level 100 of the original Blackshift took me a week to finish Ha ha ha Been crashing all day on all computers since the latest update. Have no idea why. Used OpenGL and DX11, I am sure you got the crash reports. Figure it out Rob!Delete
With a improvement of... 30 minutes ;P
New weapon Rob - machine gun!ReplyDelete
Like one of the regular guns except it keeps firing regular bullets if you stay on it?Delete
That sounds cool.Delete
Ha ha ha Wunk, I spend half my time figuring out how to stop Bibbythedark and Bobby from committing suicide for the win!ReplyDelete
Crashed again tonite Rob on the AcerWin8.1 on my new level. Usually happens when a rolling sausage kills me. I am sure you got the crash reports.