Members - Reputation: 100
Posted 03 April 2012 - 06:47 PM
Ok so, I'm relatively new to XNA and I'm not 100% sure of all the optimization features and support included out of the box.
I'm interested in creating a 2d game with a fair sized world map. I plan on using a customized tile engine to reduce memory consumption and not waste resources on parts of the map that aren't even within the view port.
What I would like to do is make heavy use of layer depth when rendering textures and the idea I'm rolling around right now is the following.
The view port will be a birds-eye view at all times in game. To simulate the effect of a 3d world environment, heavy use of layer depths would be employed. Basically, a base-value would be established (example: sea level would be say 0.5 layer depth). Things rendered in the view port would determine their "world z" value in relation to the base value.
As a player's character sprite (approx 15 layers of textures, also employing layer depth) navigates through the world, basic bounding box collision detection would be used. In the event of collisions, a specialized per pixel collision detection would be used to not only determine if a non-transparent pixel collision has occurred, but to compare the layer depths of the collided pixels. If the players sprite is "higher" than the other texture, the player sprite would be able to pass over, but if the players sprite is lower, it would determine how much lower, and if the "height" difference is of a certain amount higher, the collision would be treated as a collision and the player sprite would not be able to pass.
As the player navigates the world, all of the players characters textures would have their layer depths adjusted accordingly depending on the layer depth of the terrain the players center is currently over.
I'm aware that shaders will be a pain in this type of idea, but at this point, I'm not really concerned about shader's. I'll cross that bridge when I get there.
The layer depth use I'm talking about would be breaking the layer depth value down into hundredths rather than simply tenths. The uppermost layers would be reserved for UI element textures, etc. This doesn't mean there will be thousands upon thousands of overlapping textures lol. It just provides the desired effect of simulating terrain height from a birds eye view.
My questions are:
1. Is this possible? (regardless of how much work it may be...)
2. Is there any engines out there that already do this?
3. What types of optimization should I be looking at?
Also, I don't know if xna has a default method of pixel culling for overlapping non-transparent pixels or if I will have to create my own algorithm for this.