[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[pygame] Re: Tile scrolling game
- To: pygame-users@seul.org, oygreggers@hotmail.com
- Subject: [pygame] Re: Tile scrolling game
- From: Pete Shinners <pete@shinners.org>
- Date: Fri, 17 Sep 2004 22:28:14 -0700
- Delivered-to: archiver@seul.org
- Delivered-to: pygame-users-outgoing@seul.org
- Delivered-to: pygame-users@seul.org
- Delivery-date: Sat, 18 Sep 2004 01:26:29 -0400
- In-reply-to: <20040917114842.8306433B7C@moria.seul.org>
- References: <20040917114842.8306433B7C@moria.seul.org>
- Reply-to: pygame-users@seul.org
- Sender: owner-pygame-users@seul.org
- User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040820 Debian/1.7.2-4
I'm currently attempting to write a top down scrolling RPG type game in 
Pygame, using tiles.
Of course, problems arise with large maps filled with tiles, as the frame 
rate plummets.  I'd like the game to be set on a single island, meaning that 
the amount of tiles in memory at once is currently huge (for the moment I'm 
working with 50*50, since that leaves me with a workable framerate of 17).  
The framerate needn't be too perfect, but obviously it'd be nicer to make it 
smoother and have bigger islands.
Basically, two questions:
1) What is it that slows down the redraw - attemping 2500 blits per cycle, 
or attemping 2500 * 40 * 40 (sprites) per cycle?  In other words - could I 
create a bigger (more tiles) island by decreasing the tile size?
2) How easy would it be to implement a system where it only keeps tiles in 
memory which are, say, within 20 tiles distance from the player?
Alex, the Sprite system won't be that efficient for a tiled background. 
A tiled background is a more defined set of data that can be more 
efficiently handled.
Just so you know, when SDL does a blit to a position outside the 
destination image, it does not actual blitting. Still, rectangle bounds 
much be checked and doing that a significan number of times will begin 
to be visible.
If you are doing a vertical scroller, it shouldn't be difficult to 
isolate the map into smaller sections. The map can likely only scroll in 
one direction, so once something passes off the bottom it can be 
discarded. Plus, given the position of the player it should be simple to 
know which tiles will be visible, and only deal with rendering those.
Fullscreen scrolling is possible with SDL and pygame, and should be able 
to run at higher framerates than you are seeing. Still, it takes a bit 
of care to make sure Python doesn't get in the way of these sorts of 
things, performance wise.