-

So you aren’t projecting your 3d x,y,z movement to 2d x,y movement correctly. If you took a “top down” view of your movement vector the 2d x,y projection would have a magnitude of 1 regaurdles of the pitch, even if your ship is pointing straight up or down. The quickest answer is to factor in the pitch for your x,y movement

def spaceCraftSpeedUpTask( self, task ):
       
        dt = globalClock.getDt()
       
        self.vel = self.origVel + ( self.accel * dt )
       
        dist = self.vel
       
        correction = math.pi / 2

        angleX = math.radians( self.mSpaceShipModel.getH( ) )
        angleY = math.radians( self.mSpaceShipModel.getH( ) )
        angleZ = math.radians( self.mSpaceShipModel.getP( ) )

        dx = dist * math.cos( correction - angleX ) * math.cos( angleZ )
       
        dy = dist * -math.sin( correction - angleY ) * math.cos( angleZ )

        dz = dist * -math.sin( angleZ )
       
        self.mSpaceShipModel.setPos( Vec3( self.mSpaceShipModel.getX( ) - dx, self.mSpaceShipModel.getY( ) - dy, self.mSpaceShipModel.getZ( ) - dz ) )
       
        self.origVel = self.vel
       
        return Task.cont 

I’ve downloaded your game.
Wow.
Good graphics

Martin