Working on a Zelda Clone, Part 29

I’m still feeling a little burned out, so today I decided to tackle the issue of how to make the game play properly in full screen. I tried this a while back, but the game was automatically stretched out in an ugly way then.

After looking around online, it sounded like getting XNA games to not stretch games out in full screen like that is tough, and that making your game scale to the user’s resolution is a big pain in the butt (and apparently impossible according to some people). Luckily I was able to get it working with almost no trouble at all.

The problem, though, is that monitors come in all shapes and sizes, so I still had to do some simple magic to scale things up or down properly. What’s more, since I kind of half hope to release this on the Xbox indie games service sometime (and maybe other stuff), I have to adhere to some annoying rules about “safe areas” of the screen. This means that on the Xbox, I can only use 80% of the screen – no important stuff can be on the outside edges.

So, to deal with this all, I made it so that the game will scale up as far as possible depending on the player’s system/screen resolution, and if there’s any extra blank space, a simple background is shown there.

And since I only have one monitor to test on right now, I made some simple tests to see how different screen sizes might look. The video above was just one small test.

All of this required me to create two more giant full-screen textures that stay permanently in memory, and a bunch of extra code, so I’m surprised there isn’t much lag at all, even on my cheapo computer. Even so, I might need to optimize how this works at some point.

Download
Here’s the current build – to switch between full screen and normal mode, press the 0 button (the one in above the letter keys, I dunno if the numpad 0 works or not)

Both comments and pings are currently closed.

3 Responses to “Working on a Zelda Clone, Part 29”

  1. Carl says:

    NES-era games would typically fill the screen, but with important information like the health meter, life count, etc., far enough from the edge of the screen that it wouldn’t be cut off by overscan. I think that’s a more elegant solution than putting things at the extreme edge of your screen then scaling the whole thing down, though I understand your reluctance to tailor your game for something that ideally shouldn’t be much of an issue anymore.

    That said, I think your approach would definitely work best with a simple black border. I don’t know if that purple/white gradient is just for testing or if you had it in mind for the final background, but I think an unobtrusive black area would be the most unobtrusive and inconspicuous solution.

    Just my two cents.

    • Mato says:

      I haven’t actually gone and looked to see how much I’d have to cut off for an Xbox version, it’s definitely possible that I don’t need to do much to support it. I think having doors and stuff on the very edge might be a little iffy though, I’ll have to look at it at some point. They say the screen needs to be 80% the size of the full screen, I don’t know how many pixels from the display edge that would be in this case.

      I had considered doing the black background at first, but while looking around I’d read from a few people with the same problem that people complained that the black background was boring and ugly 😛 I think black would look best, so I’m leaning toward that. Or I could do what the Super Game Boy does, I dunno.

      • I do think a black border would be the least obtrusive, however using a Super Game Boy-esque solution would be more interesting, in my opinion, and I do believe there are some games on xbox live arcade (I think Duke Nukem 3D has an interesting border like that if I recall correctly) that do just that. Either solution would be fine.

Subscribe to RSS Feed Follow me on Twitter!