1. You use a modeling application, there are plenty of free oens on the net, check out www.wings3d.com for a good starter. Also check out the 3d Chat board on this forum for more links to other modelers.
2. Theres no one true method of programming, well, anything for that matter. So the same goes for gravity, theres lots of ways and each one suits different needs. For example, if you just wanted your objects to stay on the ground and never move upward, you could just do this every single loop:
POSITION OBJECT Object, OBJECT POSITION X(Object), 0, OBJECT POSITION Y(Object)
Replacing Object with the object number, and changing 0 to be your ground level. But that would be a very very basic level of gravity, if you could even call it gravity. If you wanted to move an object downwards constantly, you could change the above code to this:
POSITION OBJECT Object, OBJECT POSITION X(Object), OBJECT POSITION Y(Object)-Speed, OBJECT POSITION Z(Object)
Changing Speed to be the speed the object falls at. But this could pose two problems, 1. being that the object will constantly move down and likely fall below your map, especially if you haven't figured out collision yet, and 2. being that this will interfere with any upward movement code you have such as ground collision or jumping. This could be solved by adding a simple condition check, like so:
IF CanFall = 1
<Fall Code>
ENDIF
Then you'd switch CanFall to 1 when the object can fall and 0 when the object cant. For example, if you wanted to stop the object from falling below 0 on the Y axis, you could do this:
IF OBJECT POSITION Y(Object) <= 0
CanFall = 0
ELSE
CanFall = 1
ENDIF
Then calling the gravity code from before. This would move the object downwards until it reached Y position 0.
Alternatively you could change this to allow the user to fall when they're not colliding with the ground incase you have a map, or disallow the user to fall when they're jumping. They're all conciderations to be taken in.
If you wanted to add physics to the falling, you could set the speed at which the object falls at to a variable, and then increase this variable every loop the object is in the air.
Speed# = 1
Rate#=.01
MAKE OBJECT SPHERE 1,10
POSITION OBJECT 1,0,100,0
POSITION CAMERA 0,200,-300
POINT CAMERA 0,0,0
CanFall = 1
DO
INC Speed#,Rate#
IF CanFall = 1
POSITION OBJECT 1,OBJECT POSITION X(1),OBJECT POSITION Y(1)-Speed#,OBJECT POSITION Z(1)
ENDIF
IF OBJECT POSITION Y(1) <= 0
CanFall = 0
Speed# = 3
ENDIF
SYNC
LOOP
Basically we define two variables, Speed# and Rate#. Speed# is the speed the object moves down at, we set it at 3 to begin with. Rate# is the rate at which speed increases at, in this case .01. Every loop we increase Rate# by Speed#. Then we check if the object can fall like before, if it can we position it at it's current y position minus speed. Since speed is constantly increasing, the object will speed up as it falls, giving a sense of realism or physics.
I think thats enough for you to bite off on gravity for now, if not just ask and Ill further explain better methods of gravity.
3. Yes its very possible to create a Doom-Style game with a 3D world with 2D characters. As with gravity, there are many ways in which you could do this. Off the top of my head however, this would be how I would do it, to begin with atleast:
Create your 3D world using your preffered modeling program
For the characters, create plain objects. Texture these plains with an image of your doom character.
Use the LOCK OBJECT TO SCREEN command to make sure the plains always face the screen. This way the characters will look 2D as no matter what you do you wont be able to see their sides or back, just their fronts.
4. As for the presentation it depends on what you're trying to present and your programming experience. The possibilities are endless so yes I suppose you could. For example, for history class you could create a program with advanced A.I that simulates World War I's Blitzkrieg or some other famous battle, for Science you could create a program that simulates cell duplication. It all really does depend on what you want to do. When it comes to programming, especially with DB, your skill and your computer's speed is your limit.
Goodluck, feel free to ask anything else if you're still confused/wondering something.
- RUC'