Ok, so now Breakpoint features this super-bright Full-HD 1920x1080 projector of death. So far, so good; but it isn't worth that much if there aren't any demos capable of running at this resolution and first of all widescreen aspect ratio. So here are a few tips how to make your code recognize and work in full high definition glory:
Make sure you support the necessary resolutions. The easiest way is to put a resolution selector at the beginning of your demo with a list of screen modes you got from your graphics card or 3D API. We strongly discourage simply making up a list of supported resolutions for yourself, but if you really must, do at least include the following (and live with the fact that half of them probably won't work on the average PC):
- 800x600 (for captures and TV outs)
- 1024x768 (for standard video projectors)
- 1280x720 (HDTV 720p)
- 1280x800 (some laptops)
- 1280x1024 (17" and 19" desktop LCD screens)
- 1368x768 (so-called “HD ready” TVs)
- 1440x900 (some other laptops)
- 1600x1200 (some 20" LCD screens)
- 1680x1050 (most 20"/22" desktop LCD wide screens and 17" laptops)
- 1920x1080 (HDTV 1080p, Breakpoint big screen)
- 1920x1200 (24" desktop screens, good 17" laptops)
And if you really don't want a selector window in front of your nice piece of art, there are other ways to achieve this. You could eg. go the oldschool way and make the resolution selectable via command line parameters, or how about this: You simply query the current desktop resolution and use that. This even allows for neat tricks like seamless transitions from the OS to the demo because you won't suffer from a mode switch – if you're good enough to sustain smooth visuals at these often quite high resolutions :)
Then, and this is the most important part: Be prepared to support many different aspect ratios. Aspect ratio describes the ratio between the width and the height of the screen, or to put it even more simply; what shape the screen is, how wide it is.
Luckily supporting different aspect ratios in a way that they work correctly is quite easy today. Basically, in PC graphics, you can go by one simple rule: The pixels are square. This holds true for all usual screen resolutions, and nowadays this is even true when you select a different resolution than the screen's native one – modern graphics cards scale the image in a way that the original aspect is preserved and the resulting image is somewhat smaller than the screen. And this is also what we will do at Breakpoint: Even though we have a 16:9 big screen, if you choose eg. a resolution of 1024x768, it won't be displayed as widescreen but instead with the normal proportions and black “bars” to the left and right, resulting in an image that's about as big as the years before, only somewhat brighter and sharper :). Thus, you should really consider these two big no-nos:
- DON'T assume that every resolution will be 16:9. It won't. If you set a 4:3 mode, it will be displayed as 4:3.
- And DON'T have stupid ideas like “I'll set the resolution to 1024x768 but have widescreen content with black bars at the top and the bottom”. The only thing that will happen is that we add black bars at the side and your perfect widescreen demo looks quite lost trapped in the small rectangle in the middle of the screen. No, we won't scale the image to fit the screen on a per-demo basis. This one is up to you.
There are a few helpful tips tho:
- If you already have a resolution selector, how about
adding an aspect ratio selector next to it. Per default, leave it on
“Auto” which simply means treating pixels as square and
using exactly the aspect ratio the screen mode looks like. And then
put a list below it with at least the following ratios:
- 5:4 (17"/19" screens)
- 4:3 (most CRT screens, some LCD ones, TVs)
- 16:10 (widescreen LCD screens)
- 16:9 (HD televisions, projectors)
- If you don't have an aspect ratio selector tho, you might want to find out the viewer's screen aspect ratio to display the demo in the nicest way possible. Again, the current desktop resolution is your friend – simply use it, or use another mode that has the same aspect ratio as the desktop. If for any reason this ratio is wrong – well, it won't look any more wrong than everything else that guy has been looking at for the last weeks. He's used to it. Really. :)
- And there's always the question what to do with different aspect ratios if your actual content doesn't really go well with more than one of them. Adding black bars is of course a solution, but there's also the other way around – zooming in and cutting a few edges off. Personally I'd recommend planning for a 16:10 aspect ratio, showing bars in 4:3 and 5:4 and cutting off a little bit in 16:9. Please avoid showing black bars on 16:9 and 16:10 screens – unless you really want to go for an extreme-wide look and don't simply use an internal 2:1 ratio because you're despite it being 2008 outside still afraid of non-power-of-two textures.
Another thing to consider is the so called “Title Safe Area”. Practically all older TVs and sadly even enough of the current “HD ready” (...) generation scale the image in a way that a small portion at the edge is outside the visible screen area. I won't go into any of the gory details here (just ask any console game developer... if you dare) but if you have something on screen that people are really supposed to read or see, don't put it into the outer 5 to 7 percent of the screen area. And no that doesn't mean you should paint a border around your demo (don't laugh, people actually did that), it just means you should place anything textual a bit closer to the center. As an additional bonus this also helps at Breakpoint where some people barely manage to look over their screens during the compo.
One last and important thing: Don't even think about touching the screen's refresh rate. Many demo systems seem to want to give people the ultimate choice in their selector screens and present their measly three resolutions in 10 different refresh rates each, 9 of them resulting in a demo that looks like crap (as a sidenote: One beer for the first person at BP who finds out who I'm referring to :). And especially our projection systems don't really like being switched back and forth. So just keep the refresh rate at default. If the user has some reason to try something funny with the rate – well, almost all graphics cards' control panels can override it for any resolution. There's absolutely no reason at all for a demo to change it. Just leave it at default. Or if your chosen API insists on you specifying a rate, get it from the current desktop mode. Really.
That said, we all are really looking forward to the first big high definition demo compo in scene history. Try to use it – it will make so much more of an impact at the compo, and also after the party when everyone's back at their pixel perfect LCD screens. It's worth it :)
A big screen projector is something very different from the usual cathode ray tube monitors which you most probably possess. Let's assume that beamer technology is good enough to produce a really accurate image without any brightness problems, just like your monitor does. Still, there's one major difference: Instead of lighting up a black screen, as monitors or flat panel displays do, it all comes down to lighting up a WHITE screen.
Now that would make perfect sense if it was pitch dark outside, but it isn't. The usual party hall is filled up with monitors, table lamps and weird light equipment that would be enough for three complete dance clubs. And first of all there's that nasty fusion reactor a few million kilometers away which casts a non-neglectible amount of light onto our complete world at daytime - the sun.
All of those additional light sources also try to light up our white screen, and they succeed. What the beamer wants black - it simply casts no light - becomes dark grey due to all the other light in the room. And for this reason the complete lower brightness range loses its clarity and essentially becomes one tone of dark grey.
What does this mean to you? Easy: If your demo/movie/whatever uses mostly dark colors, you won't probably see ANYTHING on the big screen. Prepare for the fact that the complete lower third of the brightness range doesn't have any mentionable contrast anymore. So if you want people to see things, light them up.
"But you can adjust the brightness and contrast of the beamer" you may say. Simple answer: No, we can't. It's not like a monitor which can simply throw more electrons at the screen to make it brighter. Projectors have a fixed light bulb and a fixed LCD or DLP matrix and thus a fixed brightness range. If we screw around with the controls, it may get better with some colors, but we will definitely cut off others. And we WON'T adjust that for every single demo. You'd be pretty upset if a big on-screen menu pops up over your work, wouldn't you? :)
Luckily there is a trick if you insist on the dark mood of your demo and don't want it to look happy-flower-meadow-like: Use gamma correction. Direct3D as well as OpenGL (via extensions) provide a means to set a "gamma ramp" which applies a transform to the final output signal and can make dark colors brighter. Just add an gamma option to the setup screen at the beginning, tell us to turn it up and your demo looks better on the big screen (and won't look to bright on a monitor). If you need further explanations, contact me at .
Amiga coders can apply gamma correction to their palette entries or as lookup table in their c2p converters, unless you're using HAM - then you're screwed, sorry ;)
C64 demos should avoid combining black with dark gray or brown unless for gradients, otherwise everything's ok.
If you provide videos for the console or wild compos, you can also use gamma correction, as every widely used video editing software (Premiere, VirtualDub, etc) supports it. If you're delivering your entry as DivX anyway, how about providing us a second file with gamma turned up a bit for the big screen.
A gamma value somewhere between 1.2 and 1.5 should be ok. If in doubt, turn your monitor's brightness back to zero and try to watch it. And before you ask: No, we won't set up any gamma correction on our PCs. This again may help a few demos/videos, but will most likely screw up ohers that already have beamer-friendly colors.
That was basically all. If there are any questions left, feel free to contact me at .