I am currently thinking about a shmup I want to do. The target platforms are Android, PC, Mac and Linux. The focus right now is on Android though. The game itself is a pixel graphics based game.
Since there are so many different screen sizes on the Android Platform and scaling the graphics with a non-factor-of-2 leads to really nasty scaling artifacts I am wondering how this is done.
This is my current approach:
I have a base resolution, that's the minimum resolution I want to support (for example 320x480). Every other resolution that lies between that and the next scaling factor (2) will just increase the area of the game. If the resolution is higher (e.g. min 640x960) the game will be scaled by two.+
no scaling artifacts+
easy to implement-
the playable game area is different for every player depending on the resolution they support-
this leads to some nasty design issues with levels, see screenshot below
This is an image of my bezier editor. I use it to create the paths the enemies will use later in the game. The rectangles show the min/max resolution within the same scaling factor. If the resolution is near the maximum of one scaling factor the area of the game is almost twice as big as with the minimum resolution
This makes it really hard to use one set of paths for all resolutions, I think I have to do at least two sets of paths. One for small and one for big resolutions...
Other approaches I have considered but rejected:
So far not many. As stated above, since it's a pixel based game scaling with non-factor-of-2 is not an option.
Also restricting the player to be able to fly only within certain areas of the screen is not an option, because players with a high resolution don't know about the issues with low resolutions so for them there is no reason why they shouldn't be able to fly there..
Have you run into similiar problems? How did you solve them?