mechanicsdsl-unity
Physically accurate simulation components for Unity and Unreal Engine, compiled from DSL notation.
Overview
mechanicsdsl-unity provides Unity MonoBehaviour components generated from MechanicsDSL DSL specifications. All components bypass PhysX with Lagrangian equations of motion, include Noether-based energy monitoring, and expose parameters in the Unity Inspector for real-time tuning.
Components
Classical Mechanics
| Component | System | Conserved | Gizmos |
|---|---|---|---|
PendulumComponent |
Simple pendulum | Energy (Noether) | Pivot, rod, bob |
DoublePendulumComponent |
Double pendulum (chaotic) | Energy (Noether) | Full double pendulum |
CoupledPendulumsComponent |
Coupled pendulums | Energy (Noether) | Both pendulums + spring |
Utilities
| Component | Description |
|---|---|
ConservationMonitor |
On-screen HUD for energy drift across any MechanicsDSL component |
PhaseSpaceTrail |
Renders θ vs ω phase portrait as a LineRenderer trail |
MechanicsDSLMath |
Generic RK4, symplectic Euler, angle wrap, bob position helpers |
Editor
| Script | Description |
|---|---|
PendulumComponentEditor |
Live state readout (θ, ω, t, E, |ΔE/E₀|) + Reset button |
DoublePendulumComponentEditor |
Dual-angle live readout + Reset button |
Repository Structure
mechanicsdsl-unity/
├── Runtime/
│ ├── Components/
│ │ ├── PendulumComponent.cs
│ │ ├── DoublePendulumComponent.cs
│ │ └── CoupledPendulumsComponent.cs
│ ├── Utilities/
│ │ ├── ConservationMonitor.cs
│ │ ├── PhaseSpaceTrail.cs
│ │ └── MechanicsDSLMath.cs
│ └── com.mechanicsdsl.unity.runtime.asmdef
├── Editor/
│ ├── PendulumComponentEditor.cs
│ ├── DoublePendulumComponentEditor.cs
│ └── com.mechanicsdsl.unity.editor.asmdef
├── Tests/Runtime/
│ ├── TestPendulumEOM.cs
│ ├── TestDoublePendulumEOM.cs
│ └── MechanicsDSL.Tests.Runtime.asmdef
├── Samples~/
│ ├── SimplePendulum/README.md
│ └── DoublePendulum/README.md
├── docs/
│ ├── getting_started.md
│ ├── components_reference.md
│ └── adding_systems.md
└── package.json (UPM manifest)
Installation
Via UPM (Unity Package Manager):
- Open Window → Package Manager
- Click + → Add package from git URL
- Enter:
https://github.com/MechanicsDSL/mechanicsdsl-unity.git
Quick Start
- Add MechanicsDSL → Classical → Pendulum to any GameObject
- Create a Sphere child and drag to Bob Transform
- Press Play — the sphere is driven by MechanicsDSL-generated Lagrangian equations
The Inspector shows live θ, ω, E, and |ΔE/E₀| during Play Mode. Click Reset to return to initial conditions without stopping.
Running Tests
Window → General → Test Runner → PlayMode → Run All
Tests cover energy conservation (5–10 s), reset/initial conditions, equilibrium stability, and bob Transform updates.
Generating New Components
pip install mechanicsdsl-core
mechanicsdsl generate my_system.msl --target unity --out Assets/Physics/
See docs/adding_systems.md for the full workflow.
Contributing
See CONTRIBUTING.md.
License
MIT License — see LICENSE.
Metadata
Release files for mechanicsdsl-unity 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mechanicsdsl_unity-0.1.0.tar.gz | 19.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mechanicsdsl_unity-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.2 kB
Release files / mechanicsdsl_unity-0.1.0.tar.gz
| Download URL | mechanicsdsl_unity-0.1.0.tar.gz |
|---|---|
| Size | 19.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3bc099444b7d4154a5a211ca2674134aa758afece37612f7be485ba53dd9eec1
|
|
BLAKE2b-256 checksum How to use checksums |
e9f11b281ea18dc623e7881a8274887d76a67ea80936d1653ea988586eceaf98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.
Transparency logRelease files / mechanicsdsl_unity-0.1.0-py3-none-any.whl
| Download URL | mechanicsdsl_unity-0.1.0-py3-none-any.whl |
|---|---|
| Size | 6.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
53628c390765bc3d026aebc64f83eb75b3c28341406dad78b0c7eebee123d476
|
|
BLAKE2b-256 checksum How to use checksums |
25277d34090a2304d80c1dfd5b61bef2250a7a7f0c7bdbe6d17494adca24f943
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.
Transparency log