I'd say there is no need to replace the whole physics engine only because the direction of gravity doesn't suit your needs. :)
If the gravity vector stays the same throughout the game then you can change the default gravity vector in the projects settings. (Should be normalized imho)
Or, you can calculate the gravity (alone) indidually for each RigidBody:
a) Set the objects "Gravity Scale" to 0
b) Put some code in the RigidBodies "_fixed_process" method. Roughly like this:
func _fixed_process(delta):
#change this vector according to your needs. "* delta" scales it to the time-interval of fixed_process
var gravity=Vector3(0,get_mass() * -9.8,0)*delta
#
#local coordinates of objects center of gravity
var local_cog = Vector3(0,0,0)
#
#apply one gravity "impulse" per process interval
apply_impulse(local_cog, gravity)
If nothing happens, then the Body might be "sleeping" and be woken up with set_sleeping(false)
Code should work. I just tested it.