A real-time physics engine organized as an Entity-Component System (ECS) using EnTT, designed for multi-threaded and networked simulation.
Edyn is a real-time physics engine organized as an Entity-Component System (ECS) using the EnTT library. It simulates rigid body dynamics, collision detection, and constraints in multi-threaded and networked environments. The engine is designed to handle large dynamic worlds efficiently, making it suitable for games and simulations requiring scalable physics.
Game developers and simulation engineers working with C++ and ECS architectures who need a performant, multi-threaded physics engine with networking capabilities.
Developers choose Edyn for its deep integration with ECS via EnTT, built-in multi-threading and networked physics support, and flexibility in defining physics objects through components, offering a modern alternative to traditional physics engines.
Edyn is a real-time physics engine organized as an ECS.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses EnTT to define physics objects implicitly through components, enabling seamless integration with existing ECS workflows and easy addition of custom components, as shown in rigid body creation examples.
Designed for parallel simulation using islands and background worker threads, making it efficient for large dynamic worlds with many entities without manual threading effort.
Provides a client-server model with client-side extrapolation and server-side state application, reducing the need for custom network synchronization code in multiplayer games.
Supports spheres, cylinders, capsules, boxes, convex polyhedra, and more, with specialized narrow-phase collision detection for complex interactions.
Requires Conan 2.0, CMake 3.23+, and platform-specific steps like linking winmm.lib on Windows, adding significant integration overhead compared to drop-in libraries.
Developers must explicitly notify Edyn of component changes using edyn::refresh() or dirty components, increasing the risk of synchronization errors if overlooked.
Heavy reliance on EnTT and ECS concepts makes it challenging for developers not already familiar with entity-component systems, limiting accessibility.