Box2D is a mature, production-grade 2D rigid-body physics engine written in C17, designed primarily for game development. It provides a comprehensive C API for simulating rigid bodies, shapes (circles, capsules, polygons, chain segments), joints (revolute, prismatic, distance, weld, wheel, motor, etc.), sensors, and continuous collision detection (CCD). The engine is data-oriented, with a focus on determinism, multithreading, and SIMD acceleration (SSE2, AVX2, NEON). It includes a built-in scheduler for parallel constraint solving using graph coloring, and supports large worlds via double-precision coordinates. The architecture is modular: the public API is defined in `include/box2d/` with separate headers for types, math, collision, and the main `box2d.h`. The implementation in `src/` is organized into subsystems: world management, body/shape/joint creation, broad-phase collision (dynamic AABB tree), narrow-phase collision (GJK, SAT, manifold generation), constraint solving (contact solver with SIMD variants), island management, and recording/replay for deterministic debugging. The engine also provides snapshot serialization for save/load. While the core is a library, the repository includes a rich set of sample applications (using GLFW, OpenGL, and ImGui) that demonstrate every feature, a comprehensive unit test suite, and performance benchmarks. The codebase is exceptionally well-crafted, with clean abstractions, extensive validation, and a strong emphasis on correctness and performance. It is actively maintained by the original author (Erin Catto) and the community.
This is the Godot Engine, a fully-featured, cross-platform 2D and 3D game engine. The repository contains the complete source code for the engine runtime, the built-in editor, and all supporting modules (rendering, physics, audio, networking, scripting, etc.). The architecture is a monolithic C++ core with a modular plugin system, supporting multiple rendering backends (Vulkan, D3D12, Metal, OpenGL), physics engines (Jolt, GodotPhysics), and scripting languages (GDScript, C# via Mono). The editor is a full-featured IDE built on the engine itself, with scene editors, debugger, asset pipeline, and export system. The codebase is exceptionally well-structured, with clear separation of concerns between core, servers, scene, and platform layers. It demonstrates world-class engineering in real-time graphics, physics simulation, audio processing, and cross-platform abstraction. While the code is tightly coupled to the Godot framework, many individual components (math libraries, spatial data structures, serialization utilities) exhibit high craftsmanship and could be extracted with moderate effort.
Webots is an open-source robot simulator providing a complete environment for modeling, programming, and simulating robots. It consists of a C++ Qt-based main application (src/webots) that manages 3D rendering via the custom WREN engine (src/wren), physics simulation via a forked ODE engine (src/ode) with fluid dynamics extensions, and a multi-language controller API (C, C++, Python, Java, MATLAB) in src/controller. The repository includes a vast library of reusable robot models, sensors, actuators, objects, vehicles, and environments under projects/, as well as extensive documentation (docs/) and a web-based streaming interface (resources/web/wwi). The architecture is modular: the simulation world is defined in VRML-based .wbt files, robots are instantiated from PROTO definitions, and controllers run as separate processes communicating via shared memory. Webots supports ROS integration, SUMO traffic simulation, and OpenStreetMap import. The project is actively maintained with comprehensive CI/CD, test suites, and packaging scripts.
libGDX is a mature, cross-platform Java game development framework supporting Windows, Linux, macOS, Android, iOS (via RoboVM), and web browsers (via GWT). The codebase is organized as a multi-project Gradle build with a core module (gdx) providing platform-agnostic APIs for graphics (2D/3D), audio, input, file handling, math, utilities, scene2d UI, asset management, and tile maps. Platform-specific backends implement these interfaces using LWJGL3 (desktop), Android SDK, RoboVM (iOS), GWT (web), and a headless backend for testing. Extensions provide Box2D (2D physics), Bullet (3D physics), FreeType (font rendering), and development tools (texture packer, particle editor, font generator). The architecture uses interface-based abstraction with platform-specific implementations, enabling write-once-run-anywhere game development. The codebase demonstrates strong engineering practices: clean separation of concerns, extensive test coverage (unit tests + integration tests across backends), native code integration via JNI/SWIG for physics engines, and a comprehensive asset pipeline. Recent commits (2026) show active maintenance with modern Gradle, Java 17+ compatibility, and ongoing MetalANGLE backend development for iOS.
Genesis is a universal physics engine designed for robotics and physical AI simulation. It provides a unified multi-physics framework supporting rigid-body dynamics, finite element method (FEM), material point method (MPM), position-based dynamics (PBD), smoothed particle hydrodynamics (SPH), and incremental potential contact (IPC) coupling. The engine is GPU-accelerated via a custom compiler (Quadrants, forked from Taichi) and scales from single-CPU laptops to multi-GPU datacenters. It features differentiable simulation with gradient tape and manual backward passes, enabling end-to-end optimization through physics. The architecture follows a scene-entity-solver pattern with pydantic-based options for configuration, a plugin-based sensor system (cameras, IMU, tactile, lidar, etc.), and multiple rendering backends (rasterizer, raytracer, batch renderer). Robotics-specific features include URDF/MJCF/USD asset import, inverse kinematics, PD control, and reinforcement learning integration via rsl-rl. The codebase is well-structured with extensive tests, CI/CD pipelines, and a large set of examples covering manipulation, locomotion, deformables, fluids, and coupling scenarios. While the engine is primarily an application library, it also serves as a research platform for differentiable physics and novel simulation techniques.
The NVIDIA-Omniverse/PhysX repository is a comprehensive physics simulation ecosystem comprising the PhysX SDK (rigid body dynamics, articulations, vehicle physics), Blast (destruction/fracture), Flow (fluid/fire simulation), and ovphysx (Omniverse integration layer with USD support and Python bindings). It provides real-time physics computation for games, VR, robotics, and virtual production workflows. The architecture features modular SDKs with C/C++ core APIs, C wrappers, and Python bindings, extensible via plugin systems (e.g., OmniPhysX for USD). Key entry points include PhysX scene creation functions, ovphysx tensor binding APIs, Blast authoring tools, and Flow context initialization. Data flows involve defining physics assets, stepping simulations, and extracting results (poses, forces, contacts) or tensor views for ML interop via DLPack. External dependencies include USD, CUDA, Vulkan, Premake, and packman for dependency management. The codebase demonstrates strong engineering practices with RAII patterns, custom allocators, handle-based resource management, and platform abstraction layers.
Phaser is a client-side 2D game engine/framework distributed as a JavaScript library. In production it provides the runtime systems game developers assemble into browser games: scene lifecycle management, game-object factories and component mixins, display lists, input processing (pointer/touch/keyboard/gamepad), asset loading/caching, tweens, animation state machines, tilemap parsing/rendering, Arcade and Matter.js physics, audio, and a dual Canvas/WebGL rendering pipeline. The engine is event-driven: core, scene, camera, physics, loader, and sound subsystems communicate through named event constants, and game objects expose component-based behavior via mixed-in plain objects. Entry points include src/phaser.js (UMD bundle), src/phaser-esm.js (ESM), src/phaser-arcade-physics.js, and src/phaser-no-physics.js build variants; package.json exposes the main library and TypeScript declarations. Architecture is modular CommonJS with heavy JSDoc. The main data flow: developer configures Phaser.Game; Config boots core systems, SceneManager instantiates scenes and injects plugins; scenes create GameObjects through factory/creator registries; game objects are added to DisplayList/UpdateList; each frame TimeStep emits STEP, camera systems transform, renderers submit object batches to WebGL drawing contexts or Canvas contexts; loader uses XHR/fetch in browser to populate texture/audio/cache managers. Runtime dependency is minimal (eventemitter3); WebGL, Canvas, WebAudio, and device APIs are browser-native; Matter.js is vendored inside src/physics/matter-js. There is no data/research content; type definitions and constants are not analytical models. The codebase is large but well-modularized: many small single-purpose utility modules (math, geometry, color, arrays) are safely reusable outside Phaser. The most notable reusable pieces are polygon triangulation, the R-tree spatial index, and seeded RNG. Maintenance is active; however the repository carries legacy API vestiges (e.g. deprecated aliases, vendor-prefixed browser checks, mixed Jasmine/Vitest test conventions) and a renderer transition from older Canvas batching to the newer WebGL render-node pipeline, so technical drift is moderate despite recent commits.
VisualPinball.Engine is a comprehensive pinball simulation engine and Unity package for authoring and playing virtual pinball tables. It provides a complete pipeline for importing Visual Pinball (.vpx) files, generating 3D meshes and physics colliders for every playfield element (bumpers, flippers, ramps, rubbers, targets, etc.), and running a Burst-compiled physics simulation with collision detection, flipper mechanics, nudge, and game logic wiring (switches, coils, lamps). The codebase is structured as a Unity package with extensive editor tooling (inspectors, manager windows, asset browser, packaging system) and a runtime player. It is not a standalone application but a library/framework that integrates deeply with Unity's editor and runtime. The architecture is modular, with clear separation of concerns: data classes with BiffAttribute-based binary serialization, mesh generators, collider generators, API interfaces for game logic, and a packaging system for distributing tables as .vpe files. The code demonstrates high craftsmanship in physics simulation, mesh tessellation, and binary format handling, though some legacy components and editor coupling exist.
Ammo.js is a JavaScript port of the Bullet Physics engine (version 2.82) compiled via Emscripten. It provides a full 3D physics simulation library for browsers and Node.js, supporting rigid bodies, soft bodies, constraints, vehicles, collision detection, and more. The repository bundles the entire Bullet source tree (C++), along with JavaScript glue code (ammo.h, ammo.idl, onload.js) that defines the WebIDL bindings and initializes the WebAssembly/asm.js module. The library is consumed via a global `Ammo` object and is used in WebGL games and simulations. External examples include Three.js integration and several standalone WebGL demos. The build system uses Docker and CMake to invoke Emscripten. While the core Bullet physics library is mature and well-tested, the ammo.js wrapper itself shows signs of low maintenance (package version 0.0.2, 175 open issues, and an old vendored Bullet release). The codebase is large due to the included Bullet extras (demos, GPU acceleration, serialization) which are not directly related to the JavaScript port.