One reason FPSC levels are so slow is that DBP does not hide and show limbs that are out of view
If 1 poly of an object is on screen it seems to be calcing all of them even if the object is setup with limbs.
DBP example code. (This is how FPSC levels are setp appx)
sync on : sync rate 0
autocam off
set camera range 1, 1000
position camera 0, 500, 0
point camera -400, 0, 1800
for i = 1 to 500
if i = 1
make object plain 1, 10, 10, 1
else
make object plain 2, 10, 10, 1
position object 2, rnd(500)-250, rnd(200)-100, rnd(500)
make mesh from object 1, 2
add limb 1, i-1, 1
offset limb 1, i-1, object position x(2), object position y(2), object position z(2)
delete object 2
delete mesh 1
endif
next i
do
rotate camera camera angle x()+(mousemovey()/2),camera angle y()+(mousemovex()/2),0
if camera angle x()>90 then xrotate camera 90
if camera angle x()<-90 then xrotate camera -90
cx#=camera angle x() : cy#=camera angle y() : cz#=camera angle z()
if upkey()=1
move camera 3
endif
if downkey()=1
move camera -3
endif
if spacekey()=1 then exit
if rightkey()=1
xrotate camera 0: yrotate camera cy# + 90: move camera 3: xrotate camera cx#: yrotate camera cy#
endif
if leftkey()=1
xrotate camera 0: yrotate camera cy# - 90: move camera 3: xrotate camera cx#: yrotate camera cy#
endif
set cursor 5,5
print "polys : ", statistic(1), " FPS : ", screen fps()
sync
loop
end
Move your camera around and angle it differently while watching the poly count. Then run this code with seperate objects as see the difference.
sync on : sync rate 0
autocam off
set camera range 1, 1000
position camera 0, 500, 0
point camera -400, 0, 1800
for i = 1 to 500
make object plain i, 10, 10, 1
position object i, rnd(500)-250, rnd(200)-100, rnd(500)
next i
do
rotate camera camera angle x()+(mousemovey()/2),camera angle y()+(mousemovex()/2),0
if camera angle x()>90 then xrotate camera 90
if camera angle x()<-90 then xrotate camera -90
cx#=camera angle x() : cy#=camera angle y() : cz#=camera angle z()
if upkey()=1
move camera 3
endif
if downkey()=1
move camera -3
endif
if spacekey()=1 then exit
if rightkey()=1
xrotate camera 0: yrotate camera cy# + 90: move camera 3: xrotate camera cx#: yrotate camera cy#
endif
if leftkey()=1
xrotate camera 0: yrotate camera cy# - 90: move camera 3: xrotate camera cx#: yrotate camera cy#
endif
set cursor 5,5
print "polys : ", statistic(1), " FPS : ", screen fps()
sync
loop
end
And the load times are terrible due to several things. Mainly the files are all compressed and have to be decompressed to load and delete object is terribly slow. I think mainly the file de-compression.