I recently downloaded "Tutorial 6 - Huge Dungeons" It works for the dungeon that came with it but it doesn't read any new lines for my own dungeons. my source code is below
`© Copyright Cretinous™ / Matt Moyes
set display mode 800,600,0
set text size 30 : set text font "arial"
`load object "shotgun.3ds",3
`load sound "fire.wav",1 : load sound "reload.wav",2
make object cube 1,100 : hide object 1
make object sphere 2,200
green=RGB(0,72,0)
color backdrop green
mapsize=32
dim map$(mapsize,mapsize)
maxcubes=16
cubesize=200
`fog on : fog color green
`fog distance 500
`set ambient light 33
`color light 0,green
`set camera range 1,(maxcubes*cubesize)
loadfok("caves\cave1.fok",mapsize)
load image "caves\wall1.jpg",2
load image "caves\ground.jpg",3
load image "caves\wall2.jpg",4
`Walls
for i=1 to maxcubes*maxcubes
make object cube 100+i,cubesize
texture object 100+1,2
next i
`Floor
for i=1 to maxcubes*maxcubes
make object plain 10000+i,cubesize,cubesize
rotate object 10000+i,90,0,0
texture object 10000+i,3
next i
`roof
for i=1 to maxcubes*maxcubes
make object plain 20000+i,cubesize,cubesize
rotate object 20000+i,270,0,0
texture object 20000+i,4
next i
`start
for z=1 to mapsize
for x=1 to mapsize
if map$(x,z)="s"
cx=x*cubesize
cy=z*cubesize
endif
next x
next z
position object 1,cx,0,cz
`end
for z=1 to mapsize
for x=1 to mapsize
if map$(x,z)="e"
cx=x*cubesize
cy=z*cubesize
endif
next x
next z
do
`camera
ry#=wrapvalue(ry#+mousemovex())
rotate camera rx#,ry#,0
position camera object position x(1),object position y(1),object position z(1)
`move
if upkey()=1 then move object 1,maxcubes
if downkey()=1 then move object 1,-maxcubes
if leftkey()=1 then move object left 1,maxcubes
if rightkey()=1 then move object right 1,maxcubes
rotate object 1,camera angle x(),camera angle y(),camera angle z()
cx#=int(camera position x()/cubesize)-int(maxcubes/2)
cz#=int(camera position z()/cubesize)-int(maxcubes/2)
tx#=camera position x()
tz#=camera position z()
zzz=0
for zz=1 to maxcubes
for xx=1 to maxcubes
zzz=zzz+1
curposx=int(cx#)+xx
curposz=int(cz#)+zz
if curposx<=1 then curposx=1
if curposx>=mapsize then curposx=mapsize
if curposz<=1 then curposz=1
if curposz>=mapsize then curposz=mapsize
` wall
if map$(int(curposx),int(curposz))="#" or map$(int(curposx),int(curposz))="S"
show object 100+zzz
position object 100+zzz,curposx*cubesize,0.0,curposz*cubesize
else
` hide object 100+zzz
endif
` floor
if map$(int(curposx),int(curposz))=":" or map$(int(curposx),int(curposz))="D" or map$(int(curposx),int(curposz))="S" or map$(int(curposx),int(curposz))="T"
show object 10000+zzz
position object 10000+zzz,curposx*cubesize,(cubesize/2)*(-1),curposz*cubesize
else
`hide object 10000+zzz
endif
` ceiling
if map$(int(curposx),int(curposz))=":" or map$(int(curposx),int(curposz))="D" or map$(int(curposx),int(curposz))="S" or map$(int(curposx),int(curposz))="T"
show object 20000+zzz
position object 20000+zzz,curposx*cubesize,(cubesize/2),curposz*cubesize
else
`hide object 20000+zzz
endif
next xx#
next yy#
oldpositionx#=camera position x()
oldpositionz#=camera position z()
loop
loop
function loadfok(filename$,size)
open to read 1,filename$
for y=1 to size
for x=1 to size
read byte 1,tmp
map$(x,y)=chr$(tmp)
next x
next y
close file 1
endfunction
It always puts the walls/floors/foofs on the same line.