Hey people,
Last week a great idea popped into my mind and as far as I can tell it seems rather easy to implement for the people who know how.
How it started
The last few weeks I've been looking for a new TV, comparing prices and possibilities and stuff. As 3D TVs have become rather cheap this year (<500 euros for the cheapest), I've looked more into how 3D works and, for example, if it would be possible to play downloaded 3D movies on it by connecting my laptop to the TV.
Some background information
3D is achieved by showing a slightly different image to each of your eyes. The two images are either displayed sequentially (flashing left-right really fast) or interlaced (two images simultaneously), and cover the whole screen. Special glasses seperate the two images so each eye sees only one of them.
But for my idea it's not important how the TV displays this, but rather what the 'raw' video looks like. With 3D mode disabled, the two images cover half the screen; either side by side (SBS) or above each other (TAB). Nothing difficult. If you download a 3D movie and play it on a non-3D display, you'll just see the two images next to each other. Much like JJ2's splitscreen...
All TV vendors say they have a 'unique' feature (yes, everyone calls it unique even though every 3D TV can do this) called "Two player full screen gaming". You connect a game console or PC and play a game in Splitscreen mode. But at the same time you turn on 3D mode. With special 'gaming' 3D glasses (or the 'gaming' mode of active 3D shutter glasses), each player sees only their own view but it covers the whole screen.
But... can we make special use of 3D TVs when we're not playing JJ2 in splitscreen mode?
The idea
My idea is to add a 3D mode to JJ2, which is available whenever you have 1 or 2 players playing on the same screen.
To keep it easy, for now let's say you're the only player (that is, the only one on your PC). And you're connected to a 3D TV. So you've got the whole screen for yourself.
Here comes the magic. You turn on JJ2's 3D mode. JJ2 should should now show you twice. Thus, splitscreen, but with both halves of the screen pointing at you (though with a very slight offset). You press your TV's 3D button and put up your 3D glasses. Done. Jazz Jackrabbit 2 in 3D!
Since JJ2 already has splitscreen support, implementation of this idea seems rather easy.
The implementation
Now, how would we do this, how would this turn out best, and what would it look like?
Whether horizontal or vertical splitscreen should be used depends on the TV panel (and thus should be a setting!): if the TV panel uses the polarised 3D technology with interlaced
rows of the same polarisation, the setting should be 'horizontal' (TAB). In all other cases it should be 'vertical' (SBS) since that is the most efficient use of screen space (that is, pixels). The 3D TV has a similar setting that must be set to the same value as JJ2.
The camera focus for the left eye view should be offset slightly to the left of the player. The camera focus for the right eye view should be offset slightly to the right. This creates the effect of 'looking with two eyes' which we experience as 3D. The exact offset can be adjustable, so it is possible to change the 'depth' of the 3D effect.
The HUD (chat, ammo, etc.)
should must be on both halves. If not, you can only see the HUD with one eye and that's awful. If possible, their positions may optionally be offset somewhat (left HUD slightly to the right and the right HUD slightly to the left) so they will 'come out of the screen'.
JJ2 is exceptionally awesome for 3D out-of-the-box thanks to its layer system. Since foreground layers move quicker than background layers, there is a nice difference in 'viewing angle' between the left and right views for the foreground layers, while the furthest background is pretty much the same. This is absolutely perfect for 3D perception!
The effect
The effect of this (using my imagination here) is that JJ2's tile layers 1-7 (with their X-speed set incrementally from layer 7 to layer 1, layer 4 being Xspeed=1) will look as if they are floating in the air between yourself and your TV. The relative differences between the layer speeds determine their relative 3D distances. Layer 8 can't move and therefore stays 'sticked' to the TV screen.
Textured backgrounds are probably going to look as a 'roof' and (if the bottom part is visible) a 'floor' that extend from very far 'behind' the TV screen up to as close as the edges of your 3D glasses allow.
Most Textured backgrounds simulate sky (usually some clouds), but I think it'll depend heavily on the tileset whether it will actually look sky-ish in 3D since JJ2 still renders it as a flat surface (which you'll probably see as such in 3D).
Now let's see what's needed for a two-player version.
Two players in 3D: which glasses?
If you're playing with 2 players in a splitscreen setup, without using this new 3D mode in JJ2, but with your TV's 3D mode turned on, it's possible to use the "Two player full screen gaming" feature. Both players see only their own camera view filling the entire screen, but the left and right eye of one player both see the same image (thus, it's 2D). This is currently already possible with JJ2 by simply starting a splitscreen game, pressing the TV's 3D button, and using the "Two player full screen gaming" glasses.
However, to be able to see the 3D effect I described earlier, both eyes need to see a different image. Thus, the "Two player full screen gaming" glasses are not an option as both eyes see the same image with that. But using normal 3D glasses has one drawback: both players are going to see the same thing. So it's going to be a choice for the players to make: "Two player full screen gaming", or play JJ2 in 3D but with a split screen.
Two players, four eyes
Two players make four eyes. So if we want to play JJ2 in 3D with two players, we need to split the screen into four parts. Since JJ2 can already do this, I suspect this is not very difficult to implement.
The question is: which screen part should show which image (i.e. Player 1 left, Player 1 right, Player 2 left, Player 2 right)? This depends on the horizontal/vertical 3D setting. This setting, as I told before, should depend on the type of 3D TV panel that is used.
In 'horizontal' 3D mode, the TV treats the upper half of the screen as 'Left eye' and the lower half as 'Right eye'. This means that JJ2 should display the left eye images in the upper two screen parts and the right eye images in the lower two. The player 1 images are in the left half of the screen and the player 2 images in the right half. The result is that the players see two 3D scenes next to each other (so that's actually playing like vertical splitscreen).
In 'vertical' 3D mode, the TV naturally treats the left half of the screen as 'Left eye' and the right half of the screen as 'Right eye'. Thus, JJ2 should display the left eye images in the left two screen parts and the right eye images in the right two screen parts. The player 1 images are in the upper half of the screen while the player 2 images are in the lower half. The result is that the players see two 3D scenes above each other (so, that's playing like horizontal splitscreen).
Horizontal or vertical?
As said, ideally players set their horizontal/vertical 3D setting according to the type of TV panel that is being used. However, in a two player game this forces the game to appear as splitscreen in the opposite direction. Horizontal 3D results in vertical splitscreen, vertical 3D results in horizontal splitscreen.
Players may choose not to use the 3D mode that best fits their TV panel, if they have a preference for either horizontal or vertical splitscreen. The image quality might be slightly impared, though, if they do so. Therefore, I'd recommend to save the two player 3D mode seperately so that they will use the better setting in single player in any case.
An extra 'Automatic' option causes JJ2 to switch modes according to the level's properties (like the game does currently). This comes with a little drawback; players need to manually switch their TV's 3D input setting while they cycle to a level with the opposite splitscreen direction.
This is probably my longest post in my JJ2 history. I'm curious about what you guys think of this idea. And I'm especially interested in the comments of people who know how to implement this into the game, of course! It would be awesome if this ended up in JJ2+.
I hope you all like it!
Jerry