ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> pygame-users
pygame-users
Re: [pygame] Fastest (x,y) distance calculation
by Pete Shinners other posts by this author
Sep 10 2003 10:53PM messages near this date
Re: [pygame] Fastest (x,y) distance calculation | Re: [pygame] Fastest (x,y) distance calculation
Zak Arntson wrote:
>  My Game class has the following method, called by each Mover during its
>  thinking phase. (non-pygamers: centerx and centery are the x & y values at
>  the center of the rect)

the algorithm is pretty sound, the big problem is how often this 
function is probably being called. the best bet is to think of the 
common cases where this test will fail. i'm not sure of your gameplay 
but i'd pick some of these from the list and try to apply them.


* at a close distance is "any" temple close enough?
   stop the search once you find a temple within range.

* is there often only one temple?
   no need to search, special case len(self.temples) == 1

* do the movers not need this info every frame?
   they can calculate it once every second or so and hang onto it.
   if there are many movers, stagger there calculations so they
   don't all do the calculation on the same frame.

* is map extra wide?
   keep temples sorted by x and pick a spot to start searching
   or do the opposite if map is tall and skinny. do more of a
   1 dimensional search with this.

* do temples rarely move/change?
   keep a low resolution grid over the map, find the closest
   temple to all grid coordinates. then pick the closest
   coordinate for each mover.

* are there many temples on a huge map?
   cut the map into sections and start with the closest sections.
   you could use a BSP, or something less fancy.


nitpick python optmizations

* match integer/float types
   since you are using rects this is integer, make sure 'pos' is ints

* no globals or attribute lookups in tight loop code
   this is the last thing to do, but will speed you up. especially
   as your loop goes through different test cases.
Thread:
Zak Arntson
Rene Dudfield
Niki Spahiev
Magnus Lie Hetland
Pete Shinners
Bob Ippolito
Zak Arntson
Magnus Lie Hetland
Nicola Larosa

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved