Let me try to explain again - I don't want the # of updates to be ==
the # of redraws, and I'm fine with a variable # of game updates/sec,
provided that this number is greater than the fastest movement of a
sprite (e.g. 100 updates/sec for a sprite which moves at 100 px/sec).
updatePhysics will surely take the elapsed time between the last game
tick and this one, *but* then, after updatePhysics exits, if there's
no object to be redrawn (e.g. no sprite moved), I don't want to draw,
and then again I don't want to enter the next game loop either because
I don't need more than N game updates/sec.
It's OK though, I have an idea of the game loop.

Thanks to everyone who replied this thread.

Cheers

On Wed, Oct 29, 2008 at 3:25 PM, Robert Green <[EMAIL PROTECTED]> wrote:
>
> Actually the correct way is not to lock in the number of updates to
> physics at a constant rate but instead to have the physics themselves
> be defined as a rate.  For example, if you want to have a player
> moving at a rate of 1 virtual foot per second (let's say that's 5
> pixels on screen for a 2d game), you would have the physics update
> take into account the last position at the last update time and then
> figure out where they should be given the current update time.  That
> way if there are more or less calls to updatePhysics, the player will
> continue moving at a predictable, constant rate based on time, not
> tics.  More tics at this point will only smooth out the movement and
> this is the preferred way to handle different processor speeds.
>
> I used tic-rate on my game which tries to lock the game in at 20 tics
> per second but if for my next one I will be using time-based movement
> rates like I discussed.
>
> Also - Action games are going to suck 100% of the CPU.  There really
> isn't enough CPU to do simple physics and redraws and cap out at the
> refresh rate.  Unless you want a choppy game, you're going to want to
> get as many updates in as possible.
>
> On Oct 29, 4:28 am, "Stoyan Damov" <[EMAIL PROTECTED]> wrote:
>> Thanks again, yes, something like that - I realize the question was
>> more for a game development forum, not here, sorry.
>> Basically I'd like the game loop to call updatePhysics, say, exactly
>> 30 times/sec but render only when there's anything to render, sleep to
>> preserve battery otherwise.
>>
>> Cheers
>>
>> On Wed, Oct 29, 2008 at 4:10 AM, hackbod <[EMAIL PROTECTED]> wrote:
>>
>> > If you want to throttle your updates to something less than the screen
>> > refresh rate, you can just use SystemClock.uptimeMillis() to find the
>> > time between each draw and Object.sleep() or Object.wait() to suspend
>> > the thread until it is next time to draw.  Is that what you are
>> > looking for?
>>
>> > On Oct 28, 6:01 pm, "Stoyan Damov" <[EMAIL PROTECTED]> wrote:
>> >> Thanks to you and Romain!
>>
>> >> So my follow up question is what is the maximum number of vertical
>> >> syncs per second of a G1 phone?
>> >> In other words, if the drawing code is really fast (e.g. if I don't
>> >> invalidate the entire screen but just a tiny rectangle), what am I
>> >> supposed to do in order to make an animation run at no more than N
>> >> frames per second? The reason behind this is this: I don't wanna draw
>> >> a frame that has already been drawn, so I'll keep a list of "active"
>> >> or "dirty" objects (dirtyness determined in updatePhysics or
>> >> whatever), but in this case, I'll just spin the CPU waiting for the
>> >> next game update which will invalidate some objects. Hence the initial
>> >> questioning of the game's loop - what if the game's scene has to be
>> >> drawn in less than the max FPS for the device?
>>
>> >> I hope you'll understand what I mean - it's 3am here and I'm not a
>> >> native speaker :)
>>
>> >> Cheers
>>
>> >> On Wed, Oct 29, 2008 at 2:46 AM, hackbod <[EMAIL PROTECTED]> wrote:
>>
>> >> > A little more info (I missed that the app has been changed to use a
>> >> > SurfaceView) -- the call to lock will block if you are running faster
>> >> > than the maximum frame rate.  See here:
>>
>> >> >http://code.google.com/android/reference/android/view/SurfaceHolder.h...()
>>
>> >> > On Oct 28, 2:03 pm, "Stoyan Damov" <[EMAIL PROTECTED]> wrote:
>> >> >> On Tue, Oct 28, 2008 at 7:44 PM, PorkChop <[EMAIL PROTECTED]> wrote:
>>
>> >> >> > My emulator gives a result of 543.94 bogomips, better be careful
>> >> >> > coding games otherwise they are going to end up sucking on the actual
>> >> >> > device!
>>
>> >> >> > Speaking of which, has anyone noticed Lunar Lander's "game loop". 
>> >> >> > It's a
>>
>> >> >> real WTF to me:
>>
>> >> >> while (running)
>> >> >> {
>> >> >>     updatePhysics();
>> >> >>     draw();
>>
>> >> >> }
>>
>> >> >> No shit batman? At what FPS? The max possible on the device? Redrawing 
>> >> >> a
>> >> >> frame possibly hundreds of times per second w/o the physics even being
>> >> >> updated at all?
>> >> >> I expected to see some sort of a game loop with constant game update 
>> >> >> rate
>> >> >> and some target FPS (not precise of course) and some sleeping 
>> >> >> eventually so
>> >> >> CPU's not utilized at 100% because this is a MOBILE DEVICE for crying 
>> >> >> out
>> >> >> loud, and this sucks battery, and the sample is supposed to be a 
>> >> >> "reference"
>> >> >> implementation with best CODING practices, etc. (i.e. fuck graphics,
>> >> >> gameplay, etc.), *right*?
>>
>> >> >> Cheers
>>
>>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to