Question about framerate.
Sorry to ask this question so bluntly, but why is MMF's screen display even worse than an NES? Every app I make or play on MMF has this cheap laggy or "sketchy" look to it when scrolling. I've seen some other posts about this, and everyone says just make the frame rate higher and set v-sync on. All this does is make the game super fast, or super slow when in fullscreen, and it makes the display even worse imo. I know its not my computer because any game I play that was made with Game Maker runs just as smooth as a console game. Also yes, I use many layers, but even without them the display is about the same. Is there a way to fix this, or is it just a con with MMF?
Re: Question about framerate.
games running at 60FPS look a lot smoother than those running at 50 to me
generally you should have the game set at the desired framerate before you even program it (or have things like object speed automatically adjust to the framerate), so you don't run into speed problems
HWA should help if scrolling is causing your framerate to drop
Re: Question about framerate.
Not sure I got this right, but is your problem related to a drop in framerate or are you speaking about the general effect?
In general, all 2d games are a bit glitchy when scrolling on my computer - which has more to do with the way Windows (and the current state of the graphic industry) work than anything else than with my hardware configuration. 3d and movies run silk smooth, vectors no problems whatsoever... but the most standard 2d scrolling is twitchy. Even my Amiga had smoother scrolling ;_;
Same with GM games - those that are vector / 3d run smooth, but as soon as there's scrolling, there's this twitchy effect.
Re: Question about framerate.
Well thats the thing, I always set my games to 60 FPS. A previous game I was working on was 75 FPS and yes it was a bit smoother but still nowhere near as nice as GM. What is HWA btw? Also when scrolling the frame rate doesn't drop by much. The biggest problem is the whole glitchy look. V-sync gets rid of it for the most part, but then low FPS does become a problem, and graphics don't look smooth at all. So I guess the most I could do is slow down all movement speeds, increase FPS, and add/use HWA? If so then I'm too late lol. There is a 10 min. cutscene in my game and over 5 levels already
Re: Question about framerate.
Can you describe further what you mean by a 'glitchy' look?
HWA is the hardware-accelerated runtime (in beta at the moment, see the forum a couple below this one) - I think it's actually likely that this will fix whatever problems you're having, as it allows MMF to use DirectX in what I think is the same way that GM does.
I wouldn't recommend building anything huge in it as it's still in development, but you could try downloading it, switching the display method over (it'll be a new option in the application properties) and seeing if that makes a difference for you.
Re: Question about framerate.
Well to be honest I don't think HWA is the ultimate solution, but it is still only Beta so maybe the final release will be. I tried Direct3D 8 & 9 for some of my games that have only 1 layer, and it definately improved the graphical quality. As for the games with more than 1 layer, it did practically nothing. To further describe my problem I should have said "shakiness" instead of "glitchy". Lets just say that for every 5 pixels the screen scrolls to the left, all of the platforms jump 2 pixels to the right, making all backdrops "shake". Maybe there is a better code for scrolling that will fix this? All I'm using now is
Always: Set center display at X=X("active")
Set center display at Y=((Global Value A-Alterable Value A( "Active 2" ))+((Y Top Frame+115)*9))*0.1
Abs((Y Top Frame+180)-(Y( "Active 2" )))>1: Set global value A to Y=("active")
Most of the shakiness is from scrolling horizontally, so maybe I could improve that rather than simply center display at X of active. Any suggestions? Thanks
Re: Question about framerate.
I usually center the screen on a separate, invisible AO (call it "Scroller"), which follows the player sprite once the distance between them is, say 20+ pixel. It gives a smoother look, because not every little player movement moves the whole screen. Additionally, I vary the speed of the Scroller depending on the distance to the player, so there's a nice acceleration/deceleration effect. See the simple code below, it just requires the Advanced Direction Object.
If LongDist( "Advanced Direction Object", X( "Scroller" ), Y( "Scroller" ), X( "Player Sprite" ), Y( "Player Sprite" ))>20 then
+ Scroller look at 0,0 from Player Sprite
+ Set maximum speed of Scroller to LongDist( "Advanced Direction Object", X( "Scroller" ), Y( "Scroller" ), X( "Player Sprite" ), Y( "Player Sprite" ))
Re: Question about framerate.
random idea, try updating your videocard driver for hwa
also try enabling v-sync in mmf app properties
oh and fullscreen hwa once its available should also help
EDIT: sorry just read you tried vsync
Re: Question about framerate.
Very nice scrolling effect JoKa, but I am missing one thing. For
If LongDist( "Advanced Direction Object", X( "Scroller" ), Y( "Scroller" ), X( "Player Sprite" ), Y( "Player Sprite" ))>20 then
How do you make the "if expression is greater than 20"? There isn't an option to select if that expression is greater or less than another value, and > or < doesn't work.
Re: Question about framerate.
Compare two general values.
Re: Question about framerate.
Alright Im starting to get confused lol. Comparing 2 general values isn't working at all, it just makes the scroller go nuts and fly off the screen. For some reason the event is saying:
If distance between "scroller 0,0" and "Player 0,0" IS LOWER OR EQUAL to LongDist( "Advanced Direction Object", X( "Scroller" ), Y( "Scroller" ), X( "Player Sprite" ), Y( "Player Sprite" ))
There isn't anywhere to tell if the position is Greater/Lower/Equal than the expression. I have tried all of the conditions for the Advanced direction object and the only one I'm getting that compares distance between 2 objects makes me select the coordinates of both objects, and then enter an expression. It automatically says "is lower or equal" and won't let me change it.