Does this work?
sync on
sync rate 60
autocam off
rem floor
MAKE OBJECT BOX 1,500,0,500
rem light
SET POINT LIGHT 0,0,30,100
position light 0,0,30,100
`SET SHADOW LIGHT light number,X,Y,Z,RANGE
set shadow light 0,0,30,100,10000
rem make lots of spheres
for s = 2 to 12
ang#=ang#+(360/10)
MAKE OBJECT SPHERE s,10
position object s,100*SIN(ang#),5,100*COS(ANG#)
set shadow shading on s
next s
make object sphere 13,25
position object 13,0,5,0
set shadow shading on 13
rem Make a ghosted cube to symbolize the light source
MAKE OBJECT cube 300,5
ghost object on 300
position object 300,light position x(0),light position y(0),light position z(0)
position camera 0,100,0
xrotate camera 90
do
turn object left 300,3
pitch object up 300,1.5
rotate camera camera angle x()+mousemovey()/8,camera angle y()+mousemovex()/8,0
move camera 5*(Upkey()-Downkey())
sync
loop
Or this? (same thing but uses shaders instead)
sync on
sync rate 60
autocam off
rem floor
MAKE OBJECT BOX 1,500,0,500
rem light
SET POINT LIGHT 0,0,30,100
position light 0,0,30,100
`SET SHADOW LIGHT light number,X,Y,Z,RANGE
set shadow light 0,0,30,100,10000
rem make lots of spheres
for s = 2 to 12
ang#=ang#+(360/10)
MAKE OBJECT SPHERE s,10
position object s,100*SIN(ang#),5,100*COS(ANG#)
set shadow shading on s,-1,100,1
next s
make object sphere 13,25
position object 13,0,5,0
set shadow shading on 13,-1,100,1
rem Make a ghosted cube to symbolize the light source
MAKE OBJECT cube 300,5
ghost object on 300
position object 300,light position x(0),light position y(0),light position z(0)
position camera 0,100,0
xrotate camera 90
do
turn object left 300,3
pitch object up 300,1.5
rotate camera camera angle x()+mousemovey()/8,camera angle y()+mousemovex()/8,0
move camera 5*(Upkey()-Downkey())
sync
loop