Metadata-Version: 2.5
Name: sceneify
Version: 0.0.5
Summary: Build interactive browser-based 3D worlds and games from Python, with a Streamlit-like API and a bundled web editor.
Project-URL: Homepage, https://pypi.org/project/sceneify/
Project-URL: Repository, https://github.com/KlajdiBeqiraj/sceneify
Project-URL: Issues, https://github.com/KlajdiBeqiraj/sceneify/issues
Project-URL: Documentation, https://github.com/KlajdiBeqiraj/sceneify#readme
Project-URL: Changelog, https://github.com/KlajdiBeqiraj/sceneify/releases
Author-email: Klajdi Beqiraj <klousebeqiraj@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: 3d,editor,game,glb,gltf,mcp,ply,python,scene,three.js,visualization,webgl,websocket
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: fastapi>=0.116
Requires-Dist: httpx>=0.28
Requires-Dist: parso>=0.8.4
Requires-Dist: pydantic>=2.11
Requires-Dist: python-multipart>=0.0.20
Requires-Dist: uvicorn[standard]>=0.35
Provides-Extra: llm
Provides-Extra: mcp
Requires-Dist: mcp<3,>=2; extra == 'mcp'
Provides-Extra: mesh
Requires-Dist: numpy>=2.2; extra == 'mesh'
Requires-Dist: trimesh>=4.6; extra == 'mesh'
Provides-Extra: rl
Description-Content-Type: text/markdown

# sceneify

[![PyPI](https://img.shields.io/pypi/v/sceneify.svg)](https://pypi.org/project/sceneify/)
[![Python](https://img.shields.io/pypi/pyversions/sceneify.svg)](https://pypi.org/project/sceneify/)
[![License: MIT](https://img.shields.io/pypi/l/sceneify.svg)](https://pypi.org/project/sceneify/)

Build interactive browser-based 3D worlds and games from Python.

`sceneify` is a Streamlit-like authoring API: Python defines the scene and game
behavior, while a bundled web viewer provides view, edit, and play modes. The
published wheel includes the viewer, so Node.js is not required to install or
run a world.

## Features

- Author 3D scenes from Python (primitives, GLB/GLTF/PLY assets, materials, physics)
- Live world editor in the browser, with save/load of versioned `.sceneify.json` scenes
- Gameplay helpers: controllers, follow camera, HUD, timer, collectibles, hazards
- Semantic events over WebSocket so Python stays in the loop
- Agent tools and an optional MCP server for coding agents
- Remote CC0 assets (Poly Haven models/HDRIs, OS3A environments)

## Install

```bash
pip install sceneify
```

With uv:

```bash
uv add sceneify
```

Requires Python 3.12+.

Optional extras:

```bash
pip install "sceneify[mesh]"   # local geometry with trimesh and NumPy
pip install "sceneify[mcp]"    # MCP stdio server for coding agents
```

`sceneify[llm]` and `sceneify[rl]` are compatibility markers and do not install
extra runtimes. RL training lives in
[scenegym](https://github.com/KlajdiBeqiraj/scenegym).

## Quickstart

```python
import sceneify as sf

scene = sf.Scene("my-level")
scene.create_primitive(
    "ground",
    "plane",
    size=(16, 1, 16),
    material=sf.Material("#344054"),
    physics=sf.Physics(body="fixed", collider="cuboid"),
)
scene.save("world.sceneify.json")
scene.run()  # opens the world editor
```

Load a saved level and handle game events:

```python
import sceneify as sf

scene = sf.Scene.load("world.sceneify.json")


@scene.on_event
def game_event(current: sf.Scene, event: sf.SemanticEvent) -> None:
    print(event.name, event.node_id)


scene.play()
```

CLI:

```bash
sceneify tool-spec
sceneify search-remote barrel
sceneify fetch-remote Barrel_01 --id barrel
```

## Links

- [Source](https://github.com/KlajdiBeqiraj/sceneify)
- [Issues](https://github.com/KlajdiBeqiraj/sceneify/issues)
- [Releases](https://github.com/KlajdiBeqiraj/sceneify/releases)
- [Documentation](https://github.com/KlajdiBeqiraj/sceneify#readme)

## License

MIT. Copyright (c) 2026 Klajdi Beqiraj.
