[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] frame independant movement



On Wed, Feb 3, 2010 at 7:06 PM, DR0ID <dr0id@xxxxxxxxxx> wrote:
> On 03.02.2010 11:25, inigo delgado wrote:
>>
>> "Another thing you can do is just use Clock to limit the FPS to 60 or
>> something, but then your game will run slower if you're not getting 60 fps."
>>
>> Well, true, but you MUST determine the framerate that  you want for your
>> game, otherway you will get a 60 FPS in your PC, 70 in another and 120 in
>> another one that is much more faster/newer than yours and in witch your game
>> will turn unusable at this framerate....
>>
>> I do this:
>>
>> while(true): #principal loop
>>    # get current time
>>    t = time.time()
>>    ....
>>    doAll()
>>    ....
>>    #At the end i get the time needed to do the calculatons & flip
>>    T = t - time.time()
>>    delta = T - 1/desiredFrameRate
>>    if (delta > 0): # if the cycle has been done too fast
>>        time.wait(delta)
>>    ####This way you have your desired framerate or the maximum possible.
>> Additionally you can do this:
>>    else:
>>        GLOBAL_T = GLOBAL_STANDAR_T - delta # delta is <= 0, - and - is +
>>
>> Being GLOBAL_T the t that you use for your position calculations and
>> global_standar_t the value of global_t if delta is 0.
>
> Hi
>
> You will get different framerates only if you don't limit the fps. Using
> http://www.pygame.org/docs/ref/time.html#Clock.tick you will have always the
> specified framerate except if the cpu can not keep up (then it will run
> slower), but on faster machines tick will wait, similar to what you do (tick
> might be more accurate).
>
> ~DR0ID
>


Just another note... use Clock.tick_busy_loop if you don't mind
burning a bit of cpu to get far more accurate sleeping.  The OS sleep
is often a bit random - and not really meant for accurate sleeping.


cu,