• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

Design Low-res pixel game: Scaling across multiple resolutions/platforms

vdweller

Member
Hi all, I'd like to hear your opinions on a certain matter!

So Gleaner Heights uses a 384x216 "internal" resolution. So far the fullscreen scaling design was as follows:

PC / Xbox One / Switch TV mode: Full scaling. This means 1920x1080 gets a perfect game area/GUI display, but in 1280x720p resolutions for instance the game doesn't look very good. For other display ratios like 4:3, originally the internal resolution changed in order to try to match the aspect ratio. This means that, for instance, in 1024x768 resolutions the view area was different than the 16:9 counterpart. However I think that it didn't work perfectly for all cases, like 16:10. I might be mistaken here.

For the Switch in handheld mode: Switch handheld resolution is 1280x720p. I didn't want the game to look jaggy in this case, so I opted to do the following:
1280/384=3.33. So, Zoom the surface 4 times and draw it centered. This looked pretty good with a minor loss in viewable game area. The GUI was a bit more tricky, it is drawn in a fixed size (426x240) which sadly doesn't perfectly fit horizontally but the error margin is so little that in most cases it's invisible to the eye. The downside is that the game area and the GUI are drawn in different resolutions which breaks the illusion of a pixel art game but that was the best I could come up with at the time.

So now that I am working on Season 2 for Gleaner Heights, I wanted to implement a unified display mode, without any handheld edge cases. What I am considering is to add an in-game option across all platforms called Display Scaling with the following things to choose:
  • Stretch: The display surface stretches across the screen regardless if the scaling is perfect or not. If the scaling is perfect, this is selected by default and the other 2 options are greyed out as they produce the same effect.
  • Scale Min: Suppose you have a 1280x720 resolution. 1280/384=3.33. This option scales the display surface floor(3.33)=3 times and draws it centered. So the total play area drawn on the screen is a bit smaller than the screen itself (i.e. black borders around) but there is no loss in what the player sees, i.e. the game is not "zoomed in".
  • Scale Max: Same example as above, but ceil(3.33)=4 is chosen and again the display area is drawn centered. The disadvantage is that players do lose some viewable area.
In cases of imperfect scaling the GUI will have to be drawn to the next best fit, like I described for the Switch in handheld mode scenario.

Do you think this is a good set of options which cover most cases? How do other commercial pixel-y games deal with this issue?

PS1 I want to keep the internal resolution/viewport strictly to 384x216, I don't want to alter it for 4:3 or other resolutions, horizontal black bars in 4:3 resolutions is fine .
PS2 I really don't want to draw any border picture around the play area as they tend to suffocate it in my opinion.
PS3 Incidentally, Stardew Valley seems to do the same thing for the Switch in handheld mode: It just zooms in.
 
Last edited:

flyinian

Member
An aspect ratio of 16:9 is ideal for most cases.

Giving the player as many options as you can for adjusting the ratio is best.

Sometimes you can't avoid all issues associated with ratios and pixel perfection.

You pick your desired native resolution and design your game to that resolution.

The bigger the resolution the more pixels which means more detail you'll need to add to your game.

Its entirely depends on your game and what you want to achieve.

Sometimes you'll need to add those pesky black bars around your game to maintain the pixel perfection in some screen resolutions.

Most people using 1920 x 1080 resolutions according to steam.

I'm currently using 640 x 360. I like it but space is very limited. Especially when using size 10 font.

I'd use a smaller ratio(the smallest you'll want to go) and then scale up as desired and automatically detect the player's screen resolution. This has been recommended to me in the past.
 
Top