About the FPS, most commercial games run at 30fps and we cannot really see any difference.
The difference between 30 and 60 fps is not what we necessarily see, but what happens in the game code itself. Obviously looping the game 60 times per second will create smoother movement of objects, especially fast moving ones. I mean updating 800m/s bullet in 60fps will find more waypoints than one updated 30fps.
(Assuming that there is global timer based speed, bullets move at the same rate)
Btw. I thought that DarkBASIC is a game engine, isn't this called something else?
(Base of a game etc.)
As you already know that you should limit the weapon floating, to for example 10 degrees.
I have same type of system in my game and I limit it like this:
GunXAng = curveangle(wrapvalue(MouseX#/10),GunXAng,10)
GunYAng = curveangle(wrapvalue(MouseY#/10),GunYAng,10)
if wrapvalue(GunXAng)>FloatLim# and wrapvalue(GunXAng)<180
GunXAng=FloatLim#
endif
if wrapvalue(GunXAng)<360-FloatLim# and wrapvalue(GunXAng)>180
GunXAng=360-FloatLim#
endif
if wrapvalue(GunYAng)>FloatLim# and wrapvalue(GunYAng)<180
GunYAng=FloatLim#
endif
if wrapvalue(GunYAng)<360-FloatLim# and wrapvalue(GunYAng)>180
GunYAng=360-FloatLim#
endif
Offset limb ObjPlayerView,0,GunOffsetX,GunOffsetY,GunOffsetZ
rotate limb ObjPlayerView,0,GunYAng,GunXAng,0
FloatLim# is just constant, in my case it's 5.