#169720 - genecyst - Fri Jul 31, 2009 2:51 pm
hi, it's a lot of time that i thik about a rail shooter - racing game in mode7, but i need to understand very well this method capabilities before starting studying mode 7 extensively...
how much can i use it as a 3d space? i mean, i was thinking about zooming in and out around my player, turning around and so on so i wish to know what are the most influent limitations i can find using mode 7...
i hope my question is clear enough, thanks a lot
g
#169723 - Kyoufu Kawa - Fri Jul 31, 2009 6:05 pm
Mode 7 can only do floors and ceilings, no walls. It's kinda limited like that.
#169740 - Karatorian - Sat Aug 01, 2009 7:17 am
The way mode 7 style effects work is kinda limited, so you can't do full fledged 3d enviroments with it. The way it works is by using a rot/scale tile layer and dynamically changing the transformation matrix during the horizontal blank to simulate a 3d transform using a (varying) 2d transform.
What that basically means is that you've got a single plane (or two if you use both rot/scale layers) that you can project in three dimensions (with some limitations). If you wish to think of it in terms of a 3d engine, it's pretty limited. Imagine a 3d engine with only one primative (the plane), of which you can have (at most) two. If you can build your game using just that (and sprites, of course), it'll work for you, otherwise, it wont.
Usually in a game that uses mode 7, it's used in an outdoors enviroment. The ground is the projected plane, sky is a normal (or scaled) tile layer (which basically simulates a cylinder), and everthing else is done with properly positioned and scaled sprites. Also, keep in mind that while the GBA has four tile layers, each rot/scale layer basically counts as two, so you're limited in how much you can do.
There are some options to explore though. Some ray casting engines (as used by Wolfenstine and Doom) have been written for the GBA, which while not fully 3d, do offer more flexibility. This sort of thing may be more suited for what you have in mind. However, I don't know much about the details, but I get the impression that it's about at the limit of the GBA's power and requires tight code and a low framerate to pull off.
I'm not much of an expert on the subject, but it may be possible to fake a more complex 3d enviroment using mode 7 effects. I've had two ideas, but I don't know how feasable they are, so they may not work, but they're ideas to think about.
Firstly, you might be able to similate a more complex 3d enviroment using sprites. The GBA has a lot of sprites availible but properly positioning them would be a pain. Bascially sprites in a mode 7 game work like little planes oriented perpendicular to the camera's viewpoint. However with scaling, you can draw make them appear to be closer or farther away and with the proper images, you can make them appear to be rotated, even though they are not.
However, the problem with this is that things drawn with sprites cannot appear to be at an arbitrary angle. For any angle you wish to have an object viewable from, you must have a sprite image of the object from that angle. Furthermore, you can't smoothly transition from one angle to another. The transitions can only be as smooth as you have discrete images for. You could probably make realistic looking scenes this way while the view point was static or only moving forwards or back, but rotating the camera would be choppy.
(As an aside, it may be theoretically possible to do mode 7 type tricks on sprites, but given the limited amount of H blank time and complexity involved, it's probably unworkable for anything beyond a tech demo.)
That said, as a rail shooter, you have control over the camera, rather than the player, so it might work out ok.
The other idea I had was to use a projected plane for the floor and a normal (or projected) layer for the walls. The wall (in reality there's only one) would always be oriented facing the camera, but with the proper pre-rendered graphics on it, it could be made to look as though it was more complex and 3d. Anything closer to the camera would be done with sprites.
Again, the limitation is with rotation. Any angle things are viewed from would have to be prerendered and rotations would either require individual graphics per frame or be choppy. Basically the limitation becomes how much graphics you can cram into cart ROM and how fast you can stuff them into VRAM during the V blank.
A similar idea would be to use pre-rendered movies for the background. There are a lot of movie playback options out there, but I imagine the size of the data needed and the proccessing time required to display it would render this an idea unworkable in practice. It does seem like an easy way to "cheat" at making a rail shooter though. (Perhaps you could use movies for turns and static images for still and forward motions. But I still think size would be an issue.)
Or you could use a platform with real 3d capabilites (or more power to fake it with). I did see a tech demo of a real 3d engine on the GBA somewhere, but I doubt it's really suitable for a whole game. The DS seems to be a popular option these days.
I guess it really depends on your game design. The easiest option is to set the game outdoors in a fairly barren landscape (like Mario Kart and other mode 7 games). If your ideas are amendable to that sort of setting (post-apocalyptic perhaps), it should be fairly easy to make mode 7 style effects do what you need. If you want the enviroment to be more complex, you'll have to explore the various options and see what is feasable and works with your design.
Keep in mind that all of this is fairly advanced on the technical end. I don't know what your skillset is, but be aware that these sorts of things are on the deeper end of GBA tech and require more skills to properly implement.
Do you have any mock-ups, concept art, or similar for your game? It's a lot easier to know if what you imagine is feasable with a better idea of exactly you have in mind.
#169772 - genecyst - Mon Aug 03, 2009 10:57 am
I've got some studies about characters and mecha but nothin more...
anyway, this is the main idea:
[img]http://farm3.static.flickr.com/2609/3784722322_eefe17b7cd.jpg[/img]
it "tries" to show various camera angle and between any changes i don't want to put any enemy on the screen to simplify the process...
about my skills: i'm not so good at coding, but i continue studying and coding the more i can so i've got no doubt in the end i'll make it work... maybe after 3 years of work, but it's an hobby, and time variable isn't so important.
the real thing is that i'm trying to undestand if it's better that i create this game on gba with mode 7 or starting a 3d game for the dreamcast (in the second case i'm not alone)...
#169774 - Dwedit - Mon Aug 03, 2009 1:07 pm
People got Doom and Doom II working on the GBA, but that kind of thing would take a LOT of work.
_________________
"We are merely sprites that dance at the beck and call of our button pressing overlord."
#169871 - Karatorian - Sat Aug 08, 2009 1:59 am
From what you've posted there, it looks like mode 7 effects should be able to do what you need.