Programming PhysX Worlds

For PhysX objects to be simulated, they must exist inside a world. Multiple worlds can have uses like the following:

  • To simulate the result of an action in the first world. For example, the second world might show what a tower of blocks might look like five seconds from now if it were knocked over in the first world.
  • To simulate a subset of objects that you don’t want to interact with the rest of the world. For example, you could simulate the movement of objects attached to a player’s belt.
  • To overcome hardware or software limits on a single large world. By tiling the single world into multiple smaller worlds and moving objects among them, you can create the illusion of a single large world.

World ID

Every world created in the PhysX gem is addressable by an ID of type AZ::Crc32. Use this ID to address the WorldRequestBus.

If you have a single world in your game, you can use BroadcastResult to invoke WorldRequestBus, as in the following example:

// Single world setup
RayCastHit choose;
WorldRequestBus::BroadcastResult(choose, &WorldRequests::RayCast, request);

If you have a multi-world game, use EventResult and pass in the world ID, as in the following example:

// Multiple world setup
RayCastHit choose;
WorldRequestBus::EventResult(choose, AZ_CRC("AZPhysicalWorld"), &WorldRequests::RayCast, request);
Note:
If your game creates multiple worlds, it must manage the objects that are added into those worlds.

Time step constants

You can configure step constants for Physics::WorldSettings when PhysXWorld is created. For more information, see PhysX System Global Configuration.


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.