Metadata-Version: 2.4
Name: aether-engine
Version: 1.1.0
Summary: 3D/2D игровой движок на Python с OpenGL, физикой, FPS и редактором моделей
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: full
Requires-Dist: imageio>=2.31; extra == "full"
Requires-Dist: freetype-py>=2.4; extra == "full"
Requires-Dist: pyyaml>=6.0; extra == "full"
Requires-Dist: pymunk>=6.0; extra == "full"
Requires-Dist: pygame-ce>=2.5; extra == "full"
Requires-Dist: trimesh>=3.21; 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.
Версия: 1.1.0 | MIT | Автор: entiti937


УСТАНОВКА
---------

    pip install aether-engine

С физикой и моделями:

    pip install aether-engine[full]


ЧТО НОВОГО В 1.1.0
------------------

- Загрузка моделей почти любых форматов (OBJ/STL/PLY/GLB/glTF/FBX/…) через ModelLoader
- Встроенный 3D редактор моделей (воксели → OBJ): `python -m aether.editor`
- Режим от первого лица: `engine.enable_first_person(camera)`
- 2D рендер (спрайты) + 2D физика (pymunk)
- Улучшенная 3D физика (rigidbody, AABB/sphere, raycast, земля)


ИГРА
----

    python games/orb_rush.py


РЕДАКТОР МОДЕЛЕЙ
----------------

    python -m aether.editor

Или из кода:

    from aether import Engine
    Engine.open_model_editor()

Управление редактором:
  Стрелки / PgUp/PgDn — курсор
  E / ЛКМ — поставить блок
  Q / ПКМ — удалить
  1-8 — цвет
  S / L — save/load JSON
  O — экспорт OBJ
  Tab — обзор мышью
  ESC — выход


ПРИМЕРЫ
-------

    python examples/01_hello_cube.py
    python examples/02_sphere_scene.py
    python examples/03_first_person.py
    python examples/04_physics2d.py


БЫСТРЫЙ СТАРТ 3D + FPS
----------------------

    from aether import Engine, Scene, Entity, MeshFactory, Material, Camera, ModelLoader
    from aether.scene.component import Transform, MeshRenderer

    engine = Engine(1280, 720, "My Game")
    scene = Scene("Main")
    camera = Camera(position=(0, 1.7, 5), yaw=-90)
    scene.set_main_camera(camera)

    floor = Entity("Floor")
    floor.add_component(Transform())
    mat = Material(); mat.albedo[:] = (0.4, 0.45, 0.5)
    floor.add_component(MeshRenderer(mesh=MeshFactory.create_plane(20), material=mat))
    scene.spawn(floor)

    # Любая модель:
    # mesh = ModelLoader.load("hero.glb")

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


БЫСТРЫЙ СТАРТ 2D
----------------

    from aether import Engine, Sprite

    engine = Engine(800, 600, "2D")
    engine.set_mode("2d")
    engine.renderer2d.add_sprite(Sprite(x=0, y=0, width=40, height=40, color=(1,0.3,0.2,1)))
    engine.physics2d.create_box(0, -100, 400, 20, static=True)
    engine.run()


ЗАВИСИМОСТИ
-----------

Обязательные: numpy, glfw, PyOpenGL, Pillow
Модели: trimesh
2D физика: pymunk
Аудио: pygame-ce
