Metadata-Version: 2.4
Name: pharos-engine
Version: 0.0.1a1
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Rust
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Requires-Dist: numpy>=1.24
Requires-Dist: pillow>=10.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: lz4>=4.0
Requires-Dist: pygltflib>=1.16 ; extra == 'assets'
Requires-Dist: trimesh>=4.0 ; extra == 'assets'
Requires-Dist: imageio>=2.34 ; extra == 'assets'
Requires-Dist: sounddevice>=0.4 ; extra == 'audio'
Requires-Dist: soundfile>=0.12 ; extra == 'audio'
Requires-Dist: pytest>=7.0 ; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21 ; extra == 'dev'
Requires-Dist: watchdog>=3.0 ; extra == 'dev'
Requires-Dist: maturin>=1.5 ; extra == 'dev'
Requires-Dist: pharos-editor==0.0.1a1 ; extra == 'editor'
Requires-Dist: imgui[glfw]>=2.0 ; extra == 'hud'
Requires-Dist: kademlia>=2.2.2 ; extra == 'network'
Requires-Dist: aioice>=0.9.0 ; extra == 'network'
Requires-Dist: zeroconf>=0.131 ; extra == 'network'
Requires-Dist: websockets>=12.0 ; extra == 'network'
Requires-Dist: av>=12.0 ; extra == 'video'
Requires-Dist: imageio-ffmpeg>=0.4 ; extra == 'video'
Provides-Extra: assets
Provides-Extra: audio
Provides-Extra: dev
Provides-Extra: editor
Provides-Extra: hud
Provides-Extra: network
Provides-Extra: video
License-File: LICENSE
Summary: A Rust + wgpu game engine with a Python authoring surface. Headless-runnable; the desktop editor is a separate optional wheel.
Keywords: game-engine,wgpu,vulkan,rust,pyo3,3d,2d
Author: Andrew Watts
License: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Changelog, https://github.com/andrewkwatts-maker/Pharos-Engine/blob/master/CHANGELOG.md
Project-URL: Editor, https://github.com/andrewkwatts-maker/Pharos-Editor
Project-URL: Homepage, https://github.com/andrewkwatts-maker/Pharos-Engine
Project-URL: Issues, https://github.com/andrewkwatts-maker/Pharos-Engine/issues
Project-URL: Repository, https://github.com/andrewkwatts-maker/Pharos-Engine

# Pharos-Engine

[![PyPI](https://img.shields.io/pypi/v/pharos-engine.svg)](https://pypi.org/project/pharos-engine/)
[![Python](https://img.shields.io/pypi/pyversions/pharos-engine.svg)](https://pypi.org/project/pharos-engine/)
[![Licence: MIT](https://img.shields.io/badge/licence-MIT-blue.svg)](LICENSE)
[![CI](https://github.com/andrewkwatts-maker/Pharos-Engine/actions/workflows/ci.yml/badge.svg)](https://github.com/andrewkwatts-maker/Pharos-Engine/actions/workflows/ci.yml)

**A Rust + wgpu game engine with a Python authoring surface.** Runs headless from `pip install pharos-engine`; add the optional imgui-bundle editor with `pip install pharos-engine[editor]`.

```
pip install pharos-engine
```

```python
import pharos_engine as ph

engine = ph.Engine()
scene = ph.Scene()
engine.load_scene(scene)
scene.add(ph.Entity(name="player", position=(0.0, 0.0)))

# The engine works headless — no window, no GPU init required.
# For a live tick loop, iterate the entities:
for _ in range(60):
    dt = 1.0 / 60.0
    for entity in scene.entities:
        entity.tick(dt)
```

## Optional desktop editor

```
pip install pharos-engine[editor]     # pulls pharos-editor transitively
pharos-edit                           # boots a Nova3D-parity docked editor
```

Editor source and issues: [andrewkwatts-maker/Pharos-Editor](https://github.com/andrewkwatts-maker/Pharos-Editor).

## Architecture

| Layer | Language | Contents |
|-------|----------|----------|
| Core simulation | **Rust** | `pharos_core` — physics, fluid (PBF), softbody (XPBD), geometry, IK |
| Renderer | **Rust + wgpu** (→ Vulkan / D3D12 / Metal) | `pharos_render` — VCR pipeline, CSM shadows, skinning, GPU compute |
| Python bindings | **Rust cdylib (PyO3)** | `pharos_py` — the `_core` extension module |
| Engine API | **Python** | `pharos_engine` — thin authoring surface |

Python is a *wrapper*, not a runtime. Every hot path is Rust.

## Status: alpha (v0.0.1a1)

- Rust simulation kernels (physics / fluid / softbody)
- wgpu render backend (VCR pipeline scaffold, CSM, skinning)
- Python engine surface (`Engine`, `Scene`, `Entity`)
- 2D CPU raster path
- 2D GPU pipeline (numpy → wgpu texture blit) — in progress
- 3D scene draw calls (renderer scaffold only clears today) — in progress
- glTF import wiring end-to-end — in progress

See [`CHANGELOG.md`](CHANGELOG.md) for the alpha changelog.

## Licence

MIT.

