Back to Home

Gravity for sphere in Godot 4.5: jump mechanics

The article describes the mathematical gravity model for walking on the inner surface of a sphere in Godot 4.5. Linear g(h) dependence, numerical solution by Euler method, and jump dynamics analysis. Suitable for unconventional worlds like hollow Earth.

Walking inside a sphere: physics in Godot Engine
Advertisement 728x90

Gravity Mechanics for Walking on the Inner Surface of a Sphere in Godot 4.5

In Godot Engine 4.5, implementing a first-person controller for walking on the inner surface of a hollow sphere requires a non-standard gravity model. The gravity direction is always oriented along the surface normal, meaning towards the center of the sphere. This defines the gravity vector as a function of position \vec{g}(\vec{r}).

A simplified model assumes constant acceleration g_0 on the surface (h=0), but for realistic jumps up to 0.3R height, a dependency on height h = R - |\vec{r}| is needed. The sphere is symmetric, so g depends only on h: \vec{g} = g(h) \frac{\vec{r}}{|\vec{r}|}.

Model Principles:

Google AdInline article slot
  • No gravity at the center: g(R) = 0.
  • Continuity and smooth changes in g(h).
  • No extrema on [0, R].

The linear function g(h) = g_0 \frac{R - h}{R} simplifies to \vec{g} = g_0 \frac{\vec{r}}{R}. This ensures intuitive physics: slow hovering near the center and standard falling near the surface.

Jump Dynamics and Numerical Integration

Vertical motion is described by the equation \ddot{h} = -g_0 (1 - \frac{h}{R}). To calculate the trajectory with initial conditions h(0)=0, \dot{h}(0)=v_0, the Euler method is used.

Advantages of the Euler method for game physics:

Google AdInline article slot
  • Compact code with simple iteration.
  • Low computational load per frame.
  • Acceptable error margin at 60 FPS and float32.

The analytical solution is more complex but useful for analysis. Graphs show that for v_0 < 80% of the speed to the center, the dynamics are close to parabolic on Earth.

Jump Limit Analysis

A jump to the center with a stop requires speed dependent on R and g_0. For human capabilities (v_0 ≤ 5 m/s, g_0=9.8 m/s²), the sphere radius is limited to ~5 m. Larger spheres require reducing g_0 or make reaching the center impossible.

Impact of parameters on h(t):

Google AdInline article slot
  • Increasing R makes dynamics closer to flat gravity.
  • High v_0 near the center causes unusual hovering.
  • For R ≥ 20 m, jumps feel standard at typical speeds.

Boundaries of "special" dynamics: v_0 < 0.8 v_center or R > 2R_ref.

Key Takeaways

  • Linear model g(h): Simple implementation \vec{g} = g_0 \frac{\vec{r}}{R}, smooth change from g_0 to 0.
  • Euler method: Suitable for real-time, minimal load.
  • Realistic limits: Jumping to the center is only possible for R < 10 m at g_0=9.8 and v_0=5 m/s.
  • Game feel: Unusual physics manifest only when approaching the center.
  • Godot 4.5: Similar to the Möbius strip controller, focusing on local vertical.

Controller Implementation

In the controller, gravity determines the "head-to-feet" orientation. For flight during a jump, only gravity is considered; aerodynamics are optional. Special handling of the sphere center prevents division by zero.

For large R (world scales), the model maintains symmetry but requires integration optimization at low FPS. Testing on float32 confirms stability.

— Editorial Team

Advertisement 728x90

Read Next