I would model the level first, then make a matrix for the terrain - or if your feeling brave, a memblock mesh terrain. Either way, your gonna have to make a little level editor thingy that will let you edit the terrain heights and save the whole lot for loading into your engine.
Too many people think that making a terrain editor is time consuming or difficult, but it's really easy. In fact, this is the basic psuedo code principle (assuming a tile size of 100 btw):
Dim height#(128,128)
sync on : sync rate 0 : autocam off
make object cube 1,1
hide object 1
make matrix 1,12800,12800,128,128
Do
mx=mousex()
my=mousey()
mc=mouseclick()
if mc=0
selx=-1
selz=-1
for tz=0 to 127
for tx=0 to 127
position object 1,tx*100,height#(tx,tz),tz*100
if object in screen(1)=1
stx=object screen x(1)
sty=object screen y(1)
ink rgb(255,0,0),0
if mx>(stx-3) and my>(sty-3) and mx<(stx+3) and my<(sty+3)
selx=tx
selz=tz
ink rgb(255,255,0),0
endif
box stx-3,sty-3,stx+3,sty+3
endif
next tx
next tz
endif
if mc=1
if selx>-1 and selz>-1 then height#(selx,selz)=height#(selx,selz)+(mousemovey()/4.0)
endif
if mc=2
rotate camera camera angle x()+(mousemovey()/2.0),camera angle y()+(mousemovex()/2.0),0
endif
if spacekey()=1
for tz=0 to 127
for tx=0 to 127
set matrix height 1,tx,tz,height#(tx,tz)
next tx
next tz
update matrix 1
endif
if upkey()=1 then move camera 2
if downkey()=1 then move camera -2
sync
Loop
That above, or something like it would give a basic matrice editor, left click a red box and drag the height to change it, right click to rotate the camera, up and down arrows to move the camera, and space to update the matrice. It is psuedo code because I don't have DBPro handy, so there's no guarantee that it'll work straight off.
Van-B