This page is incomplete! You can contribute information using GitHub issues or pull requests.

The physics engine of Halo 1 is an in-house implementation which simulates the movement of dynamic objects like units, items, projectiles, and point_physics dynamics systems like particle_system and weather_particle_system. Unlike Halo 2 and later titles, Halo 1 does not use any middleware like Havok.

Different object interactions are simulated in different ways. For example, vehicles use physics to drive themselves, collide with scenery and the BSP, and collide with other vehicles, but their model_collision_geometry is used in collisions with projectiles, bipeds, and particles. The scenario_structure_bsp collision BSP is tested differently for vehicles and projectiles than it is for players, making phantom BSP more apparent.


Vehicles cannot exist below approximately -4,950 world units in the Z (vertical) axis. Vehicles spawned at this extreme distance will sit on an invisible floor and return to the floor if moved below. This is not far from the -5,000 world unit limit for the game camera. Vehicles can freely move beyond 5,000 units in a horizontal axis.

Related script functions and globals

The following are related functions that you can use in your scenario scripts and/or debug globals that you can enter into the developer console for troubleshooting.



(<void> physics_constants_reset)

Resets all physics constants to earthly values.

(<real> physics_get_gravity)

Get the current global gravity acceleration relative to Halo standard gravity.

(<void> physics_set_gravity <real>)

Set global gravity acceleration relative to Halo standard gravity. The change in gravity is NOT network synchronized.