Metadata-Version: 2.5
Name: SimVX-Core
Version: 0.0.0.dev3104
Summary: The SimVX engine with no renderer attached: nodes, signals, animation, audio, UI and physics.
Project-URL: Homepage, https://simvx.com
Project-URL: Documentation, https://simvx.com/docs/core/index.html
Project-URL: Source, https://git.simvx.com/simvx/simvx
Project-URL: Issues, https://git.simvx.com/simvx/simvx/issues
Project-URL: Changelog, https://git.simvx.com/simvx/simvx/commits/branch/main
Author-email: SimVX <contact@simvx.com>
License-Expression: AGPL-3.0-or-later
License-File: LICENSE
License-File: NOTICE
License-File: THIRD_PARTY_LICENSES.md
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.14
Requires-Dist: freetype-py>=2.5.0
Requires-Dist: miniaudio>=1.60
Requires-Dist: numpy
Provides-Extra: graphics
Requires-Dist: pillow; extra == 'graphics'
Requires-Dist: simvx-graphics==0.0.0.dev3104; extra == 'graphics'
Requires-Dist: trimesh; extra == 'graphics'
Provides-Extra: pymunk
Requires-Dist: pymunk>=7.0; extra == 'pymunk'
Description-Content-Type: text/markdown

# SimVX Core

The SimVX engine with no renderer attached: nodes, signals, properties, input, UI, audio, animation
and physics, plus the `simvx` command. Most users want `simvx`, which includes it.

> **Pre-alpha.** SimVX publishes development releases only (`0.0.0.devN`) and is under active
> development; the API changes between builds. Once stable versions ship to PyPI, development
> builds continue on pypi.simvx.com.

## Install

```bash
pip install --pre simvx          # the whole engine (recommended)
pip install --pre simvx-core     # core alone: headless simulation, servers and tests
```

Latest development build: add `--extra-index-url https://pypi.simvx.com/`.

## Use

A scene runs headless with no window and no GPU:

```python
from simvx.core import Node, Timer
from simvx.core.testing import SceneRunner

class Countdown(Node):
    def on_ready(self):
        self.ticks = 0
        timer = self.add_child(Timer(duration=0.5, one_shot=False, autostart=True))
        timer.timeout.connect(self.on_tick)

    def on_tick(self):
        self.ticks += 1

runner = SceneRunner().load(Countdown())
runner.advance_time(2.2)
print(runner.root.ticks)  # 4
```

## What's in it

- **Nodes, signals and `Property`:** the scene tree and its lifecycle, groups, coroutines, and
  validated, serialisable properties; scenes are Python files.
- **Input:** typed actions over keyboard, mouse, controllers, pens and touch, with contexts,
  rebinding and local multiplayer.
- **Physics:** 2D and 3D rigid bodies, character controllers, areas, joints and spatial queries.
- **Audio and animation:** 2D and 3D spatial audio with buses; tweens, sprite sheets, keyframe
  clips and state machines.
- **UI:** controls, containers, theming and focus, the same widgets the editor is built on.
- **Tilemaps and navigation:** auto-tiled grid levels, A* pathfinding in 2D and 3D, and steering
  agents.
- **Testing:** a headless scene runner, input simulation and a UI test harness.

[Documentation](https://simvx.com/docs/core/index.html) ·
[Source](https://git.simvx.com/simvx/simvx/src/branch/main/packages/core) ·
Licence: AGPL-3.0-or-later with [Additional Terms](https://git.simvx.com/simvx/simvx/src/branch/main/LICENSE-ADDENDUM.md),
including the Game-Distribution Exception.
