• 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.

3 replies to this topic

### #1Martin Perry  Members

1477
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).

### #2BlackLodgeGames  Members

438
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.

### #3HappyCoder  Members

4736
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

My current game project Platform RPG

### #4Martin Perry  Members

1477
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.