Jump to content

  • Log In with Google      Sign In   
  • Create Account

2D game and projection


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 Martin Perry   Members   -  Reputation: 1343

Like
0Likes
Like

Posted 13 July 2014 - 11:47 AM

I am doing 2D platformer game with single screen. For now, I am using classic ortho projection mapped to box with [0,0] - [w, h] of the screen and cetered to put world coordinates point (0,0) to bottom left corner of my screen.

 

Now I have problem witch changing resolution, my game looks different on every one if I calculate world coordinates to match pixels. So obviously not a way to go.

 

What is a correct way? I want to have constant world coordinates on every device and always put everything onto the screen (considering same AR.. for different AR I just will see more sky, but I need to have constant width).



Sponsor:

#2 BlackLodgeGames   Members   -  Reputation: 312

Like
0Likes
Like

Posted 13 July 2014 - 12:42 PM

In pseudo code, I do something like this:

widthratio = screenwidth / levelwidth
levelResize(widthratio)

First, my screen resolution is divided against the native width of my level.  This gives me the ratio I need to either shrink or stretch the level and make it fit within the width of the screen.  Next, I call a method I created which handles the resizing.  This method is also responsible for figuring out the correct thing to do with the height, and it also shrinks everything on the screen according to the widthratio.  That's a simplification of how I handle it.  Don't know if it will work for you, but thought I'd share how I approached the same type of problem.



#3 HappyCoder   Members   -  Reputation: 2878

Like
0Likes
Like

Posted 13 July 2014 - 04:55 PM

Your othro projection width will be fixed to your world size. To handle the aspect ratio difference, you just need to calculate the height of your projection.

 

you want the screen aspect ratio to match the world aspect ratio

worldWidth/worldHeight = screenWidth/screenHeight

 

solve for worldHeight

worldHeight = screenHeight * worldWidth / screenWidth



#4 Martin Perry   Members   -  Reputation: 1343

Like
0Likes
Like

Posted 14 July 2014 - 01:38 AM

For now, I am using this projection matrix (LH)

zFar = 1

zNear = -1

width = screen width

height = screen height

m.M[0][0] = 2.0f / width;
m.M[1][1] = 2.0f / height;
m.M[2][2] = -2.0f / (zFar - zNear);
m.M[3][2] = (zFar + zNear)  / (zFar - zNear); //for RH -1*
m.M[3][3] = 1;

So... I should change height to "screenHeight * worldWidth / screenWidth" ?






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS