Sign in to follow this  
Followers 0
Impervious

Platforming Game Level Programming

7 posts in this topic

Hey Everyone,

I have a question which I believe should be relatively simple for someone with experience. I am planning to make a 2D platformer (like Mario or Super Meat Boy) in Java. Why Java? Well, I'm familiar with graphics in Java and feel comfortable with the language in general. While I know languages like C and C++, I have not done graphics programming in them.

Anyway, for the sake of brevity and hopefully clarity I am leaving out some other possibilities. My platformer world will be made of blocks similar to Terraria, and I was first wondering if it is reasonable to use sprites to represent each block, or if I may come into problems with that method. In other words, each block represented on the screen would be a block sprite. Would that become very taxing if I end up having something like 200 sprites on the screen? I don't have a good concept of how taxing representing sprites repeatedly can be.

Also I want the levels to be relatively large... in other words they won't entirely fit on the screen. Would it be best to keep track of the entire level all the time (or at least reasonable if not the best), or would it be highly advisable that I only worry about sprites in range of the screen?

Alternatives to handling this situation are also appreciated. As a quick recap I'd like to know, is representing many sprites on a screen very taxing and a bad way to design a level, and is keeping track of the entire level (even if it is off screen) a bad method? Also, are there any better alternatives?

Thanks in advance!
0

Share this post


Link to post
Share on other sites
With the sake of taxing the system, if you have several of the same sprite drawn to the screen, it shouldn't be very taxing at all. I would say the best bet for drawing these is to keep an array (if you are doing 200 sprites, something like a 10x20 since you have 2 dimensions, it will depend on your width and height of the levels). For the sake of what to keep track of, you can load the full level if you have just an array to fill referencing each sprite that goes there, and then just draw what is within screen view, or screen view with a few off screen sprites surrounding the screen view.
2

Share this post


Link to post
Share on other sites
I appreciate both responses, though they seem a bit conflicting. Many of the sprites will be the same. Similar to Terraria, there will only be a few different types of blocks, which will be repeated several times.

It sounds like I can always go back and find more efficient methods of displaying many sprites later on, if it comes down to them causing too much of a problem, so perhaps I can just see what happens when I place all of them, and change it if needed.

Once again thank you for your responses, though I am still open to more opinions... especially if someone feels there is a much more efficient way to solve this problem.
1

Share this post


Link to post
Share on other sites
If you use hardware accelerated rendering (StrategyBuffer or something like that?), a few hundred tiles should be quite easy.

Even better if it has batching.
0

Share this post


Link to post
Share on other sites
I tried to make a RPG in C++ and did not have any problems with rendering a large amount of tiles. I used SDL.
0

Share this post


Link to post
Share on other sites
You could use RLE/quadtree to render big areas of same type as a repeating texture to reduce draw calls but that wouldnt probably work with texture atlas textures. (unless you somehow do the repeating in a shader???)
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0