Architecture¶
JSim is organized as a modular monorepo with clear separation between core physics, bindings, runtime applications, and documentation.
High-Level Structure¶
core/driver/: Primary C++ engine headers and implementation.core/python/: Python-side bindings and integration code.core/java/: Java-side bindings and API surface.core/bindings-java/: Java/JNI binding support.core/gamepiece-models/: Gamepiece and simulation object models.apps/sim-runtime/: Runtime integration for robot simulation workflows.apps/viewer-plugin/: Visualization and timeline tooling.cad-import/: CAD/geometry import utilities (URDF/STL processing).examples/: Language-specific examples.scripts/: Project scripts including test orchestration.vendordep/tests/: Native unit and integration test sources.
Physics Core Design¶
Key components include:
- Math primitives: vectors, quaternions, matrices, and integrators.
- Rigid-body modeling and assemblies.
- Force generators and aerodynamic models.
- Physics world orchestration.
The architecture is designed to support extension through additional force models, body types, and runtime integrations.
Build and Test¶
- Gradle drives native, JNI, and Java builds.
vendordep/gradlew testexecutes Java tests and native verification binaries.scripts/run-tests.shenforces Java 21 and runs the vendordep test workflow from repo root.
Documentation Strategy¶
Documentation is authored in Markdown under mkdocs/docs/ and published with MkDocs Material.