Metadata-Version: 2.4
Name: aether-engine
Version: 1.8.2
Summary: 3D/2D game engine by entiti937 — OpenGL, physics, FPS, mandatory branding splash
Home-page: https://pypi.org/project/aether-engine/
Author: entiti937
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
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 Rendering
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: glfw>=2.6
Requires-Dist: PyOpenGL>=3.1.7
Requires-Dist: Pillow>=10.0
Provides-Extra: audio
Requires-Dist: pygame-ce>=2.5; extra == "audio"
Provides-Extra: physics
Requires-Dist: pymunk>=6.0; extra == "physics"
Provides-Extra: models
Requires-Dist: trimesh>=3.21; extra == "models"
Provides-Extra: build
Requires-Dist: pyinstaller>=6.0; extra == "build"
Provides-Extra: full
Requires-Dist: pymunk>=6.0; extra == "full"
Requires-Dist: pygame-ce>=2.5; extra == "full"
Requires-Dist: pyyaml>=6.0; extra == "full"
Requires-Dist: imageio>=2.31; extra == "full"
Requires-Dist: trimesh>=3.21; extra == "full"
Requires-Dist: pyinstaller>=6.0; extra == "full"
Requires-Dist: freetype-py>=2.4; extra == "full"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Aether Engine

**3D / 2D игровой движок на Python + OpenGL**  
**Разработчик:** entiti937 · **Версия:** 1.8.1 · **Лицензия:** MIT  
**PyPI:** https://pypi.org/project/aether-engine/

> Полное руководство: [`docs/GUIDE.md`](docs/GUIDE.md) · сайт: `aether website`

---

## Установка

```bash
pip install -U "aether-engine[full]"
```

```python
import aether          # правильно
# import aether_engine  # НЕПРАВИЛЬНО — такого модуля нет
```

## Что нового в 1.8.1

- `Hud.draw_bar(x, y, w, h, value, max_value, color)` — простой и понятный вызов
- `aether docs` печатает **полный** GUIDE.md (гайд вшит в пакет)
- Координаты HUD явно: (0,0) = центр экрана

## Что нового в 1.8.0

- `Scene.remove()` / `despawn()` / `find()`
- `MeshFactory.create_cylinder(...)`
- `Camera.look_at(target)` + безопасное присвоение `cam.position = (x,y,z)`
- HUD: `draw_rect`, `draw_panel`
- Полный **API Reference** в документации (и `/plain/all` для ИИ)

## Минимальный код

```python
from aether import (
    Engine, Scene, Entity, Transform, MeshRenderer,
    MeshFactory, Material, Camera,
)

engine = Engine(1280, 720, "Game by you — engine by entiti937")
scene = Scene("Main")
camera = Camera(position=(0, 2, 6), yaw=-90)
scene.set_main_camera(camera)

cube = Entity("Cube")
cube.add_component(Transform(position=(0, 1, 0)))
mat = Material()
mat.albedo[:] = (0.2, 0.85, 1.0)
cube.add_component(MeshRenderer(mesh=MeshFactory.create_cube(), material=mat))
scene.spawn(cube)

engine.load_scene(scene)
engine.enable_first_person(camera)
engine.run()
```

## Частые операции

```python
scene.remove(entity)                 # удалить объект
MeshFactory.create_cylinder(0.5, 2)  # цилиндр
cam.look_at(player_tf.position)      # смотреть на игрока
engine.free_camera = False           # своя камера (не WASD fly)
```

## Возможности

- PBR 3D + sprites 2D + HUD overlay
- FPS / free-look / `look_at` follow-камера
- Физика 2D (pymunk) + лёгкий 3D solver
- `AssetLoader` — модели и спрайты
- `aether website` + plain docs для LLM

---

Aether Engine © **entiti937**
