I start my programs by setting out this kind of framework:
Camera settings
define variables
make objects
do
call subroutines
loop
Then I think what subroutines I will need, and just write in names for them, like for example, if I was making a racing game;
Camera settings
define variables
make objects
do
gosub controller_input
gosub move-car
gosub check_collision
gosub move_camera
loop
You don't need to worry about how they will work yet, you just need to know what you want the program to do. Once I have this framework, I go about writing the subroutines;
controller_input:
if upkey()=1 then inc speed#
return
move_car:
move object 1,speed#
return
etc.
Then, once the basic elements are in place, the programming begins to find it's own direction - you test, you refine, you debug, you add more features....it evolves.
eg.
`*** camera settings ***
sync on
autocam off
color backdrop 0
`*** define variables ***
maxspeed#=1
acceleration#=0.001
`*** make objects ***
make object box 1,2,1,4
make matrix 1,100,100,20,20
position matrix 1,-50,0,0
`*** main program loop ***
do
gosub controller_input
gosub move_car
gosub check_collision
gosub move_camera
sync
loop
`*** subroutines ***
controller_input:
if upkey()=1 and speed#<maxspeed# then inc speed#,acceleration#
if downkey()=1 and speed#>0 then dec speed#,acceleration#
return
move_car:
move object 1,speed#
return
check_collision:
`come to this bit later.....
return
move_camera:
position camera object position x(1),object position y(1)+2,object position z(1)-10
return
I'd agree with what's been said above - don't waste time with 2-d, because 3-d really isn't any harder.