Here's a good video if you want to pick up the basics Mark:
http://code.google.com/events/io/2009/sessions/WritingRealTimeGamesAndroid.html

Includes coverage of the GC issue by a Googler.

On Mar 14, 11:10 am, Mark Murphy <mmur...@commonsware.com> wrote:
> WARNING: this is a rant, because blaming Google for technical problems
> based on limited analysis is a bit of sore spot with me. This is not a
> rant against you as a person, nor against your game (I don't even know
> what game it is). It is, however, a rant against your methodology, at
> least to the extent that you described in your two posts on this thread.
> If you have done much more analysis than what you have described, and
> just failed to mention any of that, I apologize in advance.
>
> markusn82 wrote:
> > From what you guys have said so far, it really does seem like the main
> > problem is the GC randomly executing from other processes.
>
> And your proof of this is...what, exactly? You haven't supplied any.
>
> > This seems
> > to be a big issue for real-time games on the platform.
>
> And your proof of this is...what, exactly? You haven't supplied any.
>
> > I actually
> > noticed that most of the top paid games on the Android market aren't
> > real-time games... I guess this is due to lag issues dragging down the
> > ratings.
>
> And your proof of this is...what, exactly? You haven't supplied any.
>
> At this point, you may sense a theme. :-) FWIW, if you keep reading, I
> have some suggestions of how you can try to get this proof.
>
> > The way I see it, there are several possible solutions in the future:
>
> > 1) Improved virtual machine with less intrusive GC (concurrent/
> > incremental).
>
> As of Android 1.6, "background threads now get placed in a scheduling
> class that together can't use more than 5-10% of the CPU; this helps a
> lot in keeping the foreground responsive."
>
> http://groups.google.com/group/android-developers/browse_thread/threa...
>
> > In any case, having the GC "stop the world" at random points in time
> > is really a blocker right now for real-time games.
>
> And your proof that this is occurring is...what, exactly? You haven't
> supplied any.
>
> By your own admission, you haven't figured out where the lags are *in
> your own game on your own hardware*:
>
> "I tested the game on both a Motorola Milestone and an HTC Magic and
> I don't experience any noticeable input lag (except perhaps when the
> GC is executed by other processes) "
>
> "Perhaps" is not what I would consider much in the way of proof.
>
> There probably is something going on that is affecting your users. If
> you find proof that it is *PURELY GC* (i.e., it's not other apps doing
> work, it is other apps doing work that generates garbage and it is the
> GC operation that is the frame rate thief, not the work itself),
> document it, preferably in an issue onhttp://b.android.com. Heck,
> forward me the link for it, if you'd like.
>
> Now, I don't write real-time games. Frankly, I wouldn't know where to
> begin. However, I've played with enough games that I know you can
> somehow determine your frame rate dynamically.
>
> Since GC operations get logged in logcat with timestamps, determining if
> it is GC itself, therefore, should be matter of:
>
> -- Paying attention to your frame rates
> -- Making a record (in memory) of the timestamp your frame rate drops
> below some threshold (and, perhaps, the timestamp of when the frame rate
> returns to normal)
> -- On game end, dump those records to logcat or the SD card or something
> -- Compare timestamps to see if the frame rate drops coincide with GC
> going on
>
> Since GC is normally asynchronous and delayed from background processing
> work, what I would expect to see is a close correlation if it is GC
> itself that is the problem and a leading effect (frame rate drops before
> GCs) if it is more tied to background work being done.
>
> You might also consider adding this sort of instrumentation to the
> production app. In that case, you would dump some sort of lag report
> (including device and firmware rev) to yourself via Flurry or email or
> whatever at the end of a game. That way, you can start getting much more
> concrete data from the field of what your users experience, rather than
> relying purely on comments. Timestamps of the lags may or may not prove
> relevant, but the number and frequency of such lags will give you a
> sense of scope.
>
> You could even perhaps include in the lag report some information on
> where in the game the user was when the lag occurred (e.g., certain
> functions or rooms or actions), to see if you deduce a pattern that
> might indicate the problem is actually in the game itself, rather than
> coming from outside forces.
>
> In other words, get scientific about this. You can find the culprit, or
> at least get closer than you have so far.
>
> These are just some possibilities -- I am sure there are others, and
> probably better ones, that you can come up with, given your knowledge of
> your game. And, FWIW, if you do the analysis and come up with stronger
> proof of where the problem is, not only will you help your game and your
> users, but if you write up your techniques, you can help Android game
> developers as a whole, and perhaps Android itself.
>
> > Google, do you have
> > any plans to address this in future Android releases?
>
> Until such time as you have demonstrated what is the source of your
> problem, could you please stop casting blame?
>
> --
> Mark Murphy (a Commons 
> Guy)http://commonsware.com|http://twitter.com/commonsguy
>
> Android Consulting/App Development:http://commonsware.com/consulting

-- 
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
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to