Hello,

I have a fairly frustrating problem I am trying to solve. It's pretty
complicated to explain, so I'll do my best.

I am trying to use the depth effect of StarPusher (
http://inventwithpython.com/blog/2011/06/13/new-game-source-code-star-pusher-sokoban-clone/)
to make my own game. I'm not using their code exactly, just the method of
blitting images in a grid, where the images are taller than the grid to
create depth. However, I wish to use large maps (60x60 tiles) which means
that iterating over the entire dict of tiles each frame takes a long time
to blit.

Of course, I could only redraw the map when I need to, but this means that
I couldn't have units of tiles animated as I'd have to draw the whole map
each frame of animation (which is SLOW). I'd like to be able to simply pick
a tile from the dict and call a render method on it, and it only blit that
tile (or nesc. area). The problems come when trying to render just a single
tile due to a unit moving onto it (or appearing and disappearing in my
case).

One solution may just be to blit the entire column if anything in that
column has changed, but if I have a unit in every column animating, I may
as well just redraw the entire map each frame, which takes AGES.

At the moment I'm trying:

Draw the originally rendered map with unit onto the tile and the tile below
Draw the unit onto the tile
Draw any unit onto the tile below

However, this doesn't work as the first tile's head gets left behind. If I
then extend the first erase to cover the head, I lose the feet of any unit
standing in the tile above!

I know all this sounds a bit weird, but its very hard to explain without
seeing it in action.

The code is fairly big (about 5 files of python, 500 lines max) of
unfinished code. It can be downloaded from here;
https://dl.dropboxusercontent.com/u/8301679/BlttingIssue.zip

I hope I've vaguely explained it - maybe its simply not possible trying to
do what i'm trying to do - but some advise would be hugely welcome!

Cheers,

Andy

Reply via email to