hey all, i made a galaxy engine that shows to people how to create a good galaxy view with full camera movement. (A/S/D/W keys + Shift to speed up) and Mouse to rotate the camera.
anyways, in this snippet it shows how to:
1) create an images with inside the darkbasic pro without using some extra media files and no memblocks at all.
2) shows how to make full functional camera movement
3) shows how to use RND command clearly.
4) and also shows how to use the "Object In Screen" command to save FPS rate.
sync on
sync rate 100 : autocam off
a as dword
b as word
c as dword
d as byte
backdrop on
color backdrop 0
randomize timer()
set camera range 1,2
b = rnd(1000)+700
c = rnd(5000)+10000
d = 50
position camera 0,100000,100000,100000
for a=1 to d
CreateSpark()
text 0,0,"Texture Load: "+str$((a*100)/d)+"%"
sync
next a
for a=1 to b
make object plain a,rnd(60)+40,rnd(60)+40
position object a,-(c*0.5)+rnd(c),-(c*0.5)+rnd(c),-(c*0.5)+rnd(c)
texture object a,rnd(d-1)+1
ghost object on a
set object light a,0
set object cull a,0
text 0,0,"Game Load: "+str$((a*100)/b)+"%"
sync
next a
set camera range 1,50000
position camera 0,0,0
do
set cursor 0,0
print "FPS: "+str$(Screen fps())
print "Polygons: "+str$(statistic(1))
CameraControl()
for a=1 to b
if object exist(a)=1
Os = Object in Screen(a)
Vis = object visible(a)
if Os = 1 then point object a,camera position x(),camera position y(),camera position z()
if Os = 0 and Vis = 1 then hide object a
if Os = 1 and Vis = 0 then show object a
endif
next a
sync
loop
function CameraControl()
if keystate(17)=1 then move camera 1
if keystate(31)=1 then move camera -1
if keystate(17)=1 and shiftkey()=1 then move camera 3
if keystate(31)=1 and shiftkey()=1 then move camera -3
if keystate(30)=1
cx = camera angle x()
cz = camera angle z()
rotate camera 0,camera angle y(),0
yrotate camera camera angle y()-90
move camera 1
yrotate camera camera angle y()+90
rotate camera cx,camera angle y(),cz
endif
if keystate(32)=1
cx = camera angle x()
cz = camera angle z()
rotate camera 0,camera angle y(),0
yrotate camera camera angle y()-90
move camera -1
yrotate camera camera angle y()+90
rotate camera cx,camera angle y(),cz
endif
xrotate camera camera angle x()+(mousemovey()*0.4)
yrotate camera camera angle y()+(mousemovex()*0.4)
endfunction
function CreateSpark()
for a=1 to 4
if image exist(a)=1 then delete image a
next a
ImgSizeX = 320
ImgSizeY = 240
sp1 = rnd(255)
sp2 = rnd(255)
sp3 = rnd(255)
create bitmap 1,ImgSizeX,ImgSizeY
box 0,0,ImgSizeX,ImgSizeY,0,RGB(sp1,sp2,sp3),0,0
get image 1,0,0,ImgSizeX*0.5,ImgSizeY*0.5,1
delete bitmap 1
create bitmap 1,ImgSizeX,ImgSizeY
box 0,0,ImgSizeX,ImgSizeY,RGB(sp1,sp2,sp3),0,0,0
get image 2,0,ImgSizeY*0.5,ImgSizeX*0.5,ImgSizeY,1
delete bitmap 1
create bitmap 1,ImgSizeX,ImgSizeY
box 0,0,ImgSizeX,ImgSizeY,0,0,RGB(sp1,sp2,sp3),0
get image 3,ImgSizeX*0.5,ImgSizeY*0.5,ImgSizeX,ImgSizeY,1
delete bitmap 1
create bitmap 1,ImgSizeX,ImgSizeY
box 0,0,ImgSizeX,ImgSizeY,0,0,0,RGB(sp1,sp2,sp3)
get image 4,ImgSizeX*0.5,0,ImgSizeX,ImgSizeY*0.5,1
delete bitmap 1
imgnum = GetNewImageNumber()
create bitmap 1,ImgSizeX,ImgSizeY
paste image 1,ImgSizeX*0.5,ImgSizeY*0.5,1
paste image 2,ImgSizeX*0.5,0,1
paste image 3,0,0,1
paste image 4,0,ImgSizeY*0.5,1
get image imgnum,0,0,ImgSizeX,ImgSizeY,1
delete bitmap 1
endfunction imgnum
function GetNewImageNumber()
a = 0
repeat
inc a
until image exist(a)=0
endfunction a
- 120 lines of code.
no gray comments. just ask questions here..
enjoy =]