I decided to see what would happen in my FPS super toy with the outside world.
and found a small FPS and a small closed world ..
I am delicious two examples, and the result does not please me.
I will appreciate if you tell me what is the reason for this drop FPS.
i have 45 fps only
rem Please wait
set text font "verdana" : s$="generating clouds...please wait"
center text screen width()/2,screen height()/2,s$ : sync
autocam off
load image "sunFlare.png",100
load image "Moon.png",110
load image "Rain.jpg",150
load image "Cirrus.jpg",210
load image "stars.jpg",220
set camera range 0.5, 1000
rem init app at 60fps
sync on : sync rate 200
rem half-fill the sky with clouds
dc set cloudy 0.5
rem add a high-altitude cloud layer
rem dc set cirrus clouds 0.5
rem dc set cirrus image 21
rem clouds at 3 km
dc set cloud height 3
rem set sky brightness to 1
brightness#=1.0
dc set brightness brightness#
rem adjust brightness based on time of day
dc set auto brightness 1
rem set wind to 30 mph at 270 degrees (heading west)
dc set wind 30,270
rem init with texture number 1, and number of keyframes per hour
dc init 1,0
rem modify rayleigh scattering(optional) default: 7,11,24
dc set scattering 25,50,100
rem a slightly yellow sun:
dc set sun color 1.0,1.0,0.9
rem starting at 6am
time#=16.0
rem the update command creates the cloud texture
dc update time#
rem show texture 1 as the backdrop
texture backdrop 1
rem draw the sun
dc set sun image 10,.2
rem draw the moon - three times!
dc set planet image 1,110,.2,1
dc set planet direction 1,0.0,0.2,1.0
dc set planet image 2,110,.15,1
dc set planet direction 2,0.9,0.4,-0.5
dc set planet image 3,110,.05,1
dc set planet direction 3,0.9,0.4,0.5
dc set planet image 22,220,10,0
dc set planet direction 22,0.2,0.5,0.2
dc set planet image 23,220,10,0
dc set planet direction 23,-0.2,0.5,-0.2
dc set planet image 24,220,10,0
dc set planet direction 24,-0.2,0.5,0.2
dc set planet image 25,220,10,0
dc set planet direction 25,0.2,0.5,-0.2
rem create rain (rain will only appear when clouds are heavy)
rem dc set rain 1,1
rem dc set rain image 15
rem create a 3D object in the scene
rem load object "pelican.dbo",1
rem scale object 1,1000,1000,1000
rem set normalization on
rem place camera for best view
rem position camera 0,50,-200
rem Vehicle Physics
rem Init
phy start
autocam off : set text font "verdana"
set text size 24
rem Lights and camera
rem make light 1 : set directional light 1, -5, -5, 5
rem position camera -20, 20, -25 : point camera 0, 10, 0
rem Load scene
set dir "Scene"
load object "levelbank\testlevel\universe.dbo",1
scale object 1,10,10,10 : phy make rigid body static mesh 1
set dir ".."
rem Load buggy
load object "beach.x", 2
load image "beachBu2.tga",2
load image "dbprocubemap.dds",3
texture object 2,2 : set blend mapping on 2,1,3,2,16
position object 2, 15, 4, -25
offset limb 2,0,0,-0.5,0
rotate limb 2,0,0,-90,0
rem Create vehicle physics body
width# = 0.75
height# = 0.4
length# = 2.2
wheelX# = 1.1
wheelY# = 0.3
wheelZ# = 1.5
radius# = 0.6
wheelHeight# = 0.2
rem Be aware the vehicle width and length orientation
phy create vehicle 2
phy add vehicle body 2, length#, height#, width#, 0.0, height#, 0.0
phy add vehicle body 2, width#, height#, width#, 0.0, height#*2, 0.0
phy add vehicle wheel 2, 5, wheelZ#, wheelY#, wheelX#, radius#, wheelHeight#, 0, 0
phy add vehicle wheel 2, 7, wheelZ#, wheelY#, -wheelX#, radius#, wheelHeight#, 0, 1
phy add vehicle wheel 2, 3, -wheelZ#, wheelY#, -wheelX#, radius#, wheelHeight#, 1, 0
phy add vehicle wheel 2, 9, -wheelZ#, wheelY#, wheelX#, radius#, wheelHeight#, 1, 1
phy set vehicle max motor 2, 200.0
steeringDelta# = 0.1 : phy set vehicle steering delta 2, steeringDelta#
phy set vehicle max steering angle 2, 0.4
phy set vehicle auto 2, 0
phy set vehicle wheel multiplier 2,0
phy set vehicle suspension spring 2,100
phy build vehicle 2
rem follower object invisible
make object sphere 3,10 : hide object 3
rem Particles from exhaust
phy make smoke emitter 4, 32, 10, 5, -10
load image "smoke2.bmp",4
texture object 4, 4
ghost object on 4, 0
rem Simple crates
objid=10 : load object "crate_h.x",10
scale object objid,4,4,8
make mesh from object 10,10
delete object 10
load image "crate_h_d2.dds",10
make object 10,10,10
hide object 10
for y=0 to 9
for z=0 to 7
inc objid : instance object objid,10
position object objid,70,y,-65+(z*3)
phy make rigid body dynamic box objid
phy set rigid body mass objid,5
next z
next y
rem Some sounds
load sound "Sounds\idle.wav",1 : loop sound 1
load sound "Sounds\bump.wav",2
rem Load logo sprite
rem load image "logo.png", 100000
rem sprite 1, 0, 600 - 60, 100000
t11=0
rem Main
do
`
rem Follow buggy
position object 3,object position x(2),object position y(2),object position z(2)
set object to object orientation 3,2
move object 3,-10
point object 3,object position x(2),object position y(2),object position z(2)
dist#=5.0 : high#=2.5 : angle#=object angle y(3)+90
set camera to follow object position x(2), object position y(2), object position z(2), angle#, dist#, high#, 1, 0
`
rem Control buggy
phy set vehicle motor force 2,0.0
gosub driveCar
`
rem Place exhaust smoke
if boost>1
exy#=object position y(2)
exx#=newxvalue(object position x(2),angle#,-1.0)
exz#=newzvalue(object position z(2),angle#,-1.0)
phy set emitter position 4,exx#,exy#-(abs(boost*0.1)),exz#
else
phy set emitter position 4,-50,-50,50
endif
`
rem Prompt
center text screen width()/2,30,"ARROWKEYS TO DRIVE SPACE TO BOOST & SELF-RIGHT"
ttt#=time#
rem step through the day at 20 times speed; 24 hours, 60 minutes, 60 seconds.
time#=time#+100.0/(24.0*60.0*60.0)
if time#>24.0 then time#=time#-24.0
set cursor 0,0
print time#
rem if time#-ttt#>0.01
rem update clouds
dc update time#
rem endif
rem rotate the object
rem yrotate object 1,a# : inc a#,0.1
rem apply a real-time clouds as a cube map on the object
dc make cubemap 1,2,3,4,5,6,7
rem set cube mapping on 1,2,3,4,5,6,7
set cursor 100,0
print "fps="; str$(screen fps())
`
rem Update physics and screen
phy update
sync
`
loop
driveCar:
`
rem movement
key = 0 : force#=0.0
if upkey ( ) = 1 then force#=300 : key = 1 : phy set vehicle wheel multiplier 2,50
if downkey ( ) = 1 then force#=-200.0 : key = 1 : phy set vehicle wheel multiplier 2,-50
if spacekey ( ) = 1 and boost=0 then boost=50 : forcenoise#=2000.0
if boost>1 then dec boost : force#=1200 : key = 1 : phy set vehicle wheel multiplier 2,200
if spacekey ( ) = 0 and boost=1 then boost=0
if key = 0 then force#=0.0
phy set vehicle motor force 2,force#
if force#>0
forcenoise#=forcenoise#+(force#/10.0)
if forcenoise#>4000.0 then forcenoise#=4000.0
else
if force#<0
forcenoise#=forcenoise#-20.0
if forcenoise#<-500.0 then forcenoise#=-500.0
else
forcenoise#=forcenoise#-50.0
if forcenoise#<0.0 then forcenoise#=0.0
endif
endif
`
rem steering
steeringAngle# = phy get vehicle steering angle ( 2 )
key = 0
if keystate ( 205 ) = 1
if steeringAngle# > ( -1.0 + steeringDelta# )
steeringAngle# = steeringAngle# - ( steeringDelta# / 2 )
endif
key = 1
endif
if keystate ( 203 ) = 1
if steeringAngle# < ( 1.0 - steeringDelta# )
steeringAngle# = steeringAngle# + ( steeringDelta# / 2 )
endif
key = 1
endif
if key = 0
if steeringAngle# > 0.0
steeringAngle# = steeringAngle# - steeringDelta# * 2
if steeringAngle# < 0
steeringAngle# = 0.0
endif
endif
if steeringAngle# < 0.0
steeringAngle# = steeringAngle# + steeringDelta# * 2
if steeringAngle# > 0
steeringAngle# = 0.0
endif
endif
endif
phy set vehicle steering angle 2, steeringAngle#
phy set vehicle steering value 2, -( steeringAngle# * 45 )
`
rem set sound based on vehicle speed
set sound speed 1,18000+(forcenoise#*10)
`
rem collision feedback
zerohit=0
while phy get collision data ( )
a = phy get collision object a ( )
b = phy get collision object b ( )
if (a=2 and b>10) or (b=2 and a>10)
rem buggy object(2) hits any crate object(>10)
if vehiclenothitting=1
forcenoise#=forcenoise#/2.0
if sound playing(2)=0 then play sound 2 : set sound speed 2,22000
vehiclenothitting=0
endif
zerohit=1
endif
endwhile
if zerohit=0 then vehiclenothitting=1
if zerohit=1 then vehiclenothitting=0
`
return