aether-engine 1.0.2__tar.gz → 1.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aether_engine-1.0.4/PKG-INFO +149 -0
- aether_engine-1.0.4/README.md +108 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/engine.py +3 -3
- aether_engine-1.0.4/aether_engine.egg-info/PKG-INFO +149 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether_engine.egg-info/requires.txt +5 -10
- aether_engine-1.0.4/setup.py +76 -0
- aether_engine-1.0.2/PKG-INFO +0 -500
- aether_engine-1.0.2/README.md +0 -449
- aether_engine-1.0.2/aether_engine.egg-info/PKG-INFO +0 -500
- aether_engine-1.0.2/setup.py +0 -132
- {aether_engine-1.0.2 → aether_engine-1.0.4}/LICENSE +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/MANIFEST.in +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/ai/behavior_tree.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/ai/navmesh.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/animation/skeleton.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/assets/asset_pipeline.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/audio/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/audio/audio_manager.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/audio/music.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/audio/sound.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/achievement_system.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/application.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/config.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/console.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/event_bus.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/input.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/plugin_system.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/save_system.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/time_manager.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/core/window.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/editor/gizmo.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/editor/imgui_integration.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/environment/environment_system.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/camera.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/framebuffer.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/light.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/lod_system.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/material.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/mesh.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/mesh_factory.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/particle_system.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/post_process.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/renderer.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/shader.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/shader_library.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/sky_atmosphere.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/terrain.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/texture.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/graphics/water.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/network/network_manager.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/physics/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/physics/bullet_backend.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/physics/collider.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/physics/physics_world.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/physics/raycast.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/physics/rigidbody.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/platform/steam_api.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/resources/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/resources/asset_database.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/resources/loaders/obj_loader.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/resources/loaders/texture_loader.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/resources/resource_manager.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/resources/serialization.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/scene/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/scene/component.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/scene/entity.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/scene/scene.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/scene/scene_graph.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/scene/scene_manager.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/ui/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/ui/button.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/ui/canvas.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/ui/text.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/utils/__init__.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/utils/logger.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/utils/math_utils.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/utils/object_pool.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether/utils/profiler.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether_engine.egg-info/SOURCES.txt +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether_engine.egg-info/dependency_links.txt +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/aether_engine.egg-info/top_level.txt +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/examples/01_hello_cube.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/examples/02_sphere_scene.py +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/pyproject.toml +0 -0
- {aether_engine-1.0.2 → aether_engine-1.0.4}/setup.cfg +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aether-engine
|
|
3
|
+
Version: 1.0.4
|
|
4
|
+
Summary: Полноценный 3D игровой движок на Python с OpenGL
|
|
5
|
+
Home-page: https://pypi.org/project/aether-engine/
|
|
6
|
+
Author: entiti937
|
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Requires-Python: >=3.10
|
|
14
|
+
Description-Content-Type: text/plain
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: numpy>=1.24
|
|
17
|
+
Requires-Dist: glfw>=2.6
|
|
18
|
+
Requires-Dist: PyOpenGL>=3.1.7
|
|
19
|
+
Requires-Dist: Pillow>=10.0
|
|
20
|
+
Provides-Extra: audio
|
|
21
|
+
Requires-Dist: pygame-ce>=2.5; extra == "audio"
|
|
22
|
+
Provides-Extra: physics
|
|
23
|
+
Requires-Dist: pymunk>=6.0; extra == "physics"
|
|
24
|
+
Provides-Extra: full
|
|
25
|
+
Requires-Dist: imageio>=2.31; extra == "full"
|
|
26
|
+
Requires-Dist: freetype-py>=2.4; extra == "full"
|
|
27
|
+
Requires-Dist: trimesh>=3.21; extra == "full"
|
|
28
|
+
Requires-Dist: pyyaml>=6.0; extra == "full"
|
|
29
|
+
Requires-Dist: pygame-ce>=2.5; extra == "full"
|
|
30
|
+
Requires-Dist: pymunk>=6.0; extra == "full"
|
|
31
|
+
Dynamic: author
|
|
32
|
+
Dynamic: classifier
|
|
33
|
+
Dynamic: description
|
|
34
|
+
Dynamic: description-content-type
|
|
35
|
+
Dynamic: home-page
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
Dynamic: provides-extra
|
|
38
|
+
Dynamic: requires-dist
|
|
39
|
+
Dynamic: requires-python
|
|
40
|
+
Dynamic: summary
|
|
41
|
+
|
|
42
|
+
AETHER ENGINE
|
|
43
|
+
============
|
|
44
|
+
|
|
45
|
+
Полноценный 3D игровой движок на Python с OpenGL 4.6
|
|
46
|
+
Автор: entiti937 | Версия: 1.0.4 | Лицензия: MIT
|
|
47
|
+
PyPI: https://pypi.org/project/aether-engine/
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
УСТАНОВКА
|
|
51
|
+
--------
|
|
52
|
+
|
|
53
|
+
Базовая:
|
|
54
|
+
pip install aether-engine
|
|
55
|
+
|
|
56
|
+
С аудио:
|
|
57
|
+
pip install aether-engine[audio]
|
|
58
|
+
|
|
59
|
+
С физикой:
|
|
60
|
+
pip install aether-engine[physics]
|
|
61
|
+
|
|
62
|
+
Полная:
|
|
63
|
+
pip install aether-engine[full]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
БЫСТРЫЙ СТАРТ
|
|
67
|
+
-------------
|
|
68
|
+
|
|
69
|
+
from aether.core.engine import Engine
|
|
70
|
+
from aether.scene.scene import Scene
|
|
71
|
+
from aether.scene.entity import Entity
|
|
72
|
+
from aether.scene.component import Transform, MeshRenderer
|
|
73
|
+
from aether.graphics.mesh_factory import MeshFactory
|
|
74
|
+
from aether.graphics.material import Material
|
|
75
|
+
from aether.graphics.camera import Camera
|
|
76
|
+
|
|
77
|
+
engine = Engine(width=800, height=600, title="Моя игра")
|
|
78
|
+
scene = Scene("MainScene")
|
|
79
|
+
camera = Camera(position=(0, 2, 8))
|
|
80
|
+
scene.set_main_camera(camera)
|
|
81
|
+
|
|
82
|
+
cube = Entity("Player")
|
|
83
|
+
cube.add_component(Transform(position=(0, 1, 0)))
|
|
84
|
+
cube.add_component(MeshRenderer(mesh=MeshFactory.create_cube(), material=Material()))
|
|
85
|
+
scene.spawn(cube)
|
|
86
|
+
|
|
87
|
+
engine.load_scene(scene)
|
|
88
|
+
engine.run()
|
|
89
|
+
|
|
90
|
+
Управление: WASD - движение, мышь - поворот, ESC - выход.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
ВОЗМОЖНОСТИ
|
|
94
|
+
-----------
|
|
95
|
+
|
|
96
|
+
- PBR-рендеринг с HDR
|
|
97
|
+
- Система Entity-Component
|
|
98
|
+
- Физика (AABB, Sphere, Box, pymunk)
|
|
99
|
+
- Скелетная анимация
|
|
100
|
+
- Система частиц
|
|
101
|
+
- Террайн с LOD
|
|
102
|
+
- Вода с волнами и отражениями
|
|
103
|
+
- Небо и атмосфера
|
|
104
|
+
- Система окружения (погода, время суток, сезоны)
|
|
105
|
+
- AI (NavMesh, деревья поведения)
|
|
106
|
+
- Сетевой мультиплеер
|
|
107
|
+
- Steam API
|
|
108
|
+
- UI система
|
|
109
|
+
- Аудио система
|
|
110
|
+
- ImGui редактор
|
|
111
|
+
- Консоль разработчика
|
|
112
|
+
- Профилировщик
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
ЗАВИСИМОСТИ
|
|
116
|
+
-----------
|
|
117
|
+
|
|
118
|
+
Обязательные: numpy, glfw, PyOpenGL, Pillow
|
|
119
|
+
Аудио: pygame-ce (автоматически)
|
|
120
|
+
Физика: pymunk (автоматически)
|
|
121
|
+
Опционально: freetype-py, imgui-bundle, pyyaml, imageio, trimesh
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
ПРИМЕЧАНИЯ ПО ВЕРСИЯМ PYTHON
|
|
125
|
+
----------------------------
|
|
126
|
+
|
|
127
|
+
Python 3.10-3.12: все пакеты доступны
|
|
128
|
+
Python 3.13+: pygame-ce вместо pygame
|
|
129
|
+
Python 3.14+: pymunk вместо PyBullet
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
СИСТЕМНЫЕ ТРЕБОВАНИЯ
|
|
133
|
+
--------------------
|
|
134
|
+
|
|
135
|
+
Python 3.10+
|
|
136
|
+
OpenGL 4.6
|
|
137
|
+
Windows 10+ / Linux / macOS
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
ИСТОРИЯ ВЕРСИЙ
|
|
141
|
+
--------------
|
|
142
|
+
|
|
143
|
+
1.0.4 - Исправлен порядок аргументов Engine, убраны проблемные зависимости
|
|
144
|
+
1.0.3 - Автоопределение pygame-ce/pymunk
|
|
145
|
+
1.0.1 - Исправлен импорт Engine, документация
|
|
146
|
+
1.0.0 - Первый публичный релиз
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
Автор: entiti937
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
AETHER ENGINE
|
|
2
|
+
============
|
|
3
|
+
|
|
4
|
+
Полноценный 3D игровой движок на Python с OpenGL 4.6
|
|
5
|
+
Автор: entiti937 | Версия: 1.0.4 | Лицензия: MIT
|
|
6
|
+
PyPI: https://pypi.org/project/aether-engine/
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
УСТАНОВКА
|
|
10
|
+
--------
|
|
11
|
+
|
|
12
|
+
Базовая:
|
|
13
|
+
pip install aether-engine
|
|
14
|
+
|
|
15
|
+
С аудио:
|
|
16
|
+
pip install aether-engine[audio]
|
|
17
|
+
|
|
18
|
+
С физикой:
|
|
19
|
+
pip install aether-engine[physics]
|
|
20
|
+
|
|
21
|
+
Полная:
|
|
22
|
+
pip install aether-engine[full]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
БЫСТРЫЙ СТАРТ
|
|
26
|
+
-------------
|
|
27
|
+
|
|
28
|
+
from aether.core.engine import Engine
|
|
29
|
+
from aether.scene.scene import Scene
|
|
30
|
+
from aether.scene.entity import Entity
|
|
31
|
+
from aether.scene.component import Transform, MeshRenderer
|
|
32
|
+
from aether.graphics.mesh_factory import MeshFactory
|
|
33
|
+
from aether.graphics.material import Material
|
|
34
|
+
from aether.graphics.camera import Camera
|
|
35
|
+
|
|
36
|
+
engine = Engine(width=800, height=600, title="Моя игра")
|
|
37
|
+
scene = Scene("MainScene")
|
|
38
|
+
camera = Camera(position=(0, 2, 8))
|
|
39
|
+
scene.set_main_camera(camera)
|
|
40
|
+
|
|
41
|
+
cube = Entity("Player")
|
|
42
|
+
cube.add_component(Transform(position=(0, 1, 0)))
|
|
43
|
+
cube.add_component(MeshRenderer(mesh=MeshFactory.create_cube(), material=Material()))
|
|
44
|
+
scene.spawn(cube)
|
|
45
|
+
|
|
46
|
+
engine.load_scene(scene)
|
|
47
|
+
engine.run()
|
|
48
|
+
|
|
49
|
+
Управление: WASD - движение, мышь - поворот, ESC - выход.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
ВОЗМОЖНОСТИ
|
|
53
|
+
-----------
|
|
54
|
+
|
|
55
|
+
- PBR-рендеринг с HDR
|
|
56
|
+
- Система Entity-Component
|
|
57
|
+
- Физика (AABB, Sphere, Box, pymunk)
|
|
58
|
+
- Скелетная анимация
|
|
59
|
+
- Система частиц
|
|
60
|
+
- Террайн с LOD
|
|
61
|
+
- Вода с волнами и отражениями
|
|
62
|
+
- Небо и атмосфера
|
|
63
|
+
- Система окружения (погода, время суток, сезоны)
|
|
64
|
+
- AI (NavMesh, деревья поведения)
|
|
65
|
+
- Сетевой мультиплеер
|
|
66
|
+
- Steam API
|
|
67
|
+
- UI система
|
|
68
|
+
- Аудио система
|
|
69
|
+
- ImGui редактор
|
|
70
|
+
- Консоль разработчика
|
|
71
|
+
- Профилировщик
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
ЗАВИСИМОСТИ
|
|
75
|
+
-----------
|
|
76
|
+
|
|
77
|
+
Обязательные: numpy, glfw, PyOpenGL, Pillow
|
|
78
|
+
Аудио: pygame-ce (автоматически)
|
|
79
|
+
Физика: pymunk (автоматически)
|
|
80
|
+
Опционально: freetype-py, imgui-bundle, pyyaml, imageio, trimesh
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
ПРИМЕЧАНИЯ ПО ВЕРСИЯМ PYTHON
|
|
84
|
+
----------------------------
|
|
85
|
+
|
|
86
|
+
Python 3.10-3.12: все пакеты доступны
|
|
87
|
+
Python 3.13+: pygame-ce вместо pygame
|
|
88
|
+
Python 3.14+: pymunk вместо PyBullet
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
СИСТЕМНЫЕ ТРЕБОВАНИЯ
|
|
92
|
+
--------------------
|
|
93
|
+
|
|
94
|
+
Python 3.10+
|
|
95
|
+
OpenGL 4.6
|
|
96
|
+
Windows 10+ / Linux / macOS
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
ИСТОРИЯ ВЕРСИЙ
|
|
100
|
+
--------------
|
|
101
|
+
|
|
102
|
+
1.0.4 - Исправлен порядок аргументов Engine, убраны проблемные зависимости
|
|
103
|
+
1.0.3 - Автоопределение pygame-ce/pymunk
|
|
104
|
+
1.0.1 - Исправлен импорт Engine, документация
|
|
105
|
+
1.0.0 - Первый публичный релиз
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
Автор: entiti937
|
|
@@ -33,10 +33,10 @@ class Engine:
|
|
|
33
33
|
return cls._instance
|
|
34
34
|
|
|
35
35
|
def __init__(self,
|
|
36
|
-
config: Optional[EngineConfig] = None,
|
|
37
36
|
width: int = 1920,
|
|
38
37
|
height: int = 1080,
|
|
39
|
-
title: str = "Aether Engine"
|
|
38
|
+
title: str = "Aether Engine",
|
|
39
|
+
config: Optional[EngineConfig] = None):
|
|
40
40
|
|
|
41
41
|
if hasattr(self, '_initialized'):
|
|
42
42
|
return
|
|
@@ -49,7 +49,7 @@ class Engine:
|
|
|
49
49
|
self.config.graphics.width = width
|
|
50
50
|
self.config.graphics.height = height
|
|
51
51
|
|
|
52
|
-
print(f"[Aether] Initializing Engine v1.0.
|
|
52
|
+
print(f"[Aether] Initializing Engine v1.0.4...")
|
|
53
53
|
|
|
54
54
|
self.window = Window(
|
|
55
55
|
self.config.graphics.width,
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aether-engine
|
|
3
|
+
Version: 1.0.4
|
|
4
|
+
Summary: Полноценный 3D игровой движок на Python с OpenGL
|
|
5
|
+
Home-page: https://pypi.org/project/aether-engine/
|
|
6
|
+
Author: entiti937
|
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Requires-Python: >=3.10
|
|
14
|
+
Description-Content-Type: text/plain
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: numpy>=1.24
|
|
17
|
+
Requires-Dist: glfw>=2.6
|
|
18
|
+
Requires-Dist: PyOpenGL>=3.1.7
|
|
19
|
+
Requires-Dist: Pillow>=10.0
|
|
20
|
+
Provides-Extra: audio
|
|
21
|
+
Requires-Dist: pygame-ce>=2.5; extra == "audio"
|
|
22
|
+
Provides-Extra: physics
|
|
23
|
+
Requires-Dist: pymunk>=6.0; extra == "physics"
|
|
24
|
+
Provides-Extra: full
|
|
25
|
+
Requires-Dist: imageio>=2.31; extra == "full"
|
|
26
|
+
Requires-Dist: freetype-py>=2.4; extra == "full"
|
|
27
|
+
Requires-Dist: trimesh>=3.21; extra == "full"
|
|
28
|
+
Requires-Dist: pyyaml>=6.0; extra == "full"
|
|
29
|
+
Requires-Dist: pygame-ce>=2.5; extra == "full"
|
|
30
|
+
Requires-Dist: pymunk>=6.0; extra == "full"
|
|
31
|
+
Dynamic: author
|
|
32
|
+
Dynamic: classifier
|
|
33
|
+
Dynamic: description
|
|
34
|
+
Dynamic: description-content-type
|
|
35
|
+
Dynamic: home-page
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
Dynamic: provides-extra
|
|
38
|
+
Dynamic: requires-dist
|
|
39
|
+
Dynamic: requires-python
|
|
40
|
+
Dynamic: summary
|
|
41
|
+
|
|
42
|
+
AETHER ENGINE
|
|
43
|
+
============
|
|
44
|
+
|
|
45
|
+
Полноценный 3D игровой движок на Python с OpenGL 4.6
|
|
46
|
+
Автор: entiti937 | Версия: 1.0.4 | Лицензия: MIT
|
|
47
|
+
PyPI: https://pypi.org/project/aether-engine/
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
УСТАНОВКА
|
|
51
|
+
--------
|
|
52
|
+
|
|
53
|
+
Базовая:
|
|
54
|
+
pip install aether-engine
|
|
55
|
+
|
|
56
|
+
С аудио:
|
|
57
|
+
pip install aether-engine[audio]
|
|
58
|
+
|
|
59
|
+
С физикой:
|
|
60
|
+
pip install aether-engine[physics]
|
|
61
|
+
|
|
62
|
+
Полная:
|
|
63
|
+
pip install aether-engine[full]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
БЫСТРЫЙ СТАРТ
|
|
67
|
+
-------------
|
|
68
|
+
|
|
69
|
+
from aether.core.engine import Engine
|
|
70
|
+
from aether.scene.scene import Scene
|
|
71
|
+
from aether.scene.entity import Entity
|
|
72
|
+
from aether.scene.component import Transform, MeshRenderer
|
|
73
|
+
from aether.graphics.mesh_factory import MeshFactory
|
|
74
|
+
from aether.graphics.material import Material
|
|
75
|
+
from aether.graphics.camera import Camera
|
|
76
|
+
|
|
77
|
+
engine = Engine(width=800, height=600, title="Моя игра")
|
|
78
|
+
scene = Scene("MainScene")
|
|
79
|
+
camera = Camera(position=(0, 2, 8))
|
|
80
|
+
scene.set_main_camera(camera)
|
|
81
|
+
|
|
82
|
+
cube = Entity("Player")
|
|
83
|
+
cube.add_component(Transform(position=(0, 1, 0)))
|
|
84
|
+
cube.add_component(MeshRenderer(mesh=MeshFactory.create_cube(), material=Material()))
|
|
85
|
+
scene.spawn(cube)
|
|
86
|
+
|
|
87
|
+
engine.load_scene(scene)
|
|
88
|
+
engine.run()
|
|
89
|
+
|
|
90
|
+
Управление: WASD - движение, мышь - поворот, ESC - выход.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
ВОЗМОЖНОСТИ
|
|
94
|
+
-----------
|
|
95
|
+
|
|
96
|
+
- PBR-рендеринг с HDR
|
|
97
|
+
- Система Entity-Component
|
|
98
|
+
- Физика (AABB, Sphere, Box, pymunk)
|
|
99
|
+
- Скелетная анимация
|
|
100
|
+
- Система частиц
|
|
101
|
+
- Террайн с LOD
|
|
102
|
+
- Вода с волнами и отражениями
|
|
103
|
+
- Небо и атмосфера
|
|
104
|
+
- Система окружения (погода, время суток, сезоны)
|
|
105
|
+
- AI (NavMesh, деревья поведения)
|
|
106
|
+
- Сетевой мультиплеер
|
|
107
|
+
- Steam API
|
|
108
|
+
- UI система
|
|
109
|
+
- Аудио система
|
|
110
|
+
- ImGui редактор
|
|
111
|
+
- Консоль разработчика
|
|
112
|
+
- Профилировщик
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
ЗАВИСИМОСТИ
|
|
116
|
+
-----------
|
|
117
|
+
|
|
118
|
+
Обязательные: numpy, glfw, PyOpenGL, Pillow
|
|
119
|
+
Аудио: pygame-ce (автоматически)
|
|
120
|
+
Физика: pymunk (автоматически)
|
|
121
|
+
Опционально: freetype-py, imgui-bundle, pyyaml, imageio, trimesh
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
ПРИМЕЧАНИЯ ПО ВЕРСИЯМ PYTHON
|
|
125
|
+
----------------------------
|
|
126
|
+
|
|
127
|
+
Python 3.10-3.12: все пакеты доступны
|
|
128
|
+
Python 3.13+: pygame-ce вместо pygame
|
|
129
|
+
Python 3.14+: pymunk вместо PyBullet
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
СИСТЕМНЫЕ ТРЕБОВАНИЯ
|
|
133
|
+
--------------------
|
|
134
|
+
|
|
135
|
+
Python 3.10+
|
|
136
|
+
OpenGL 4.6
|
|
137
|
+
Windows 10+ / Linux / macOS
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
ИСТОРИЯ ВЕРСИЙ
|
|
141
|
+
--------------
|
|
142
|
+
|
|
143
|
+
1.0.4 - Исправлен порядок аргументов Engine, убраны проблемные зависимости
|
|
144
|
+
1.0.3 - Автоопределение pygame-ce/pymunk
|
|
145
|
+
1.0.1 - Исправлен импорт Engine, документация
|
|
146
|
+
1.0.0 - Первый публичный релиз
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
Автор: entiti937
|
|
@@ -4,20 +4,15 @@ PyOpenGL>=3.1.7
|
|
|
4
4
|
Pillow>=10.0
|
|
5
5
|
|
|
6
6
|
[audio]
|
|
7
|
-
pygame>=2.5
|
|
7
|
+
pygame-ce>=2.5
|
|
8
8
|
|
|
9
9
|
[full]
|
|
10
|
-
trimesh>=3.21
|
|
11
|
-
imgui-bundle>=1.0
|
|
12
|
-
noise>=1.2
|
|
13
|
-
pymunk>=6.0
|
|
14
|
-
pyyaml>=6.0
|
|
15
10
|
imageio>=2.31
|
|
16
|
-
pygame>=2.5
|
|
17
11
|
freetype-py>=2.4
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
trimesh>=3.21
|
|
13
|
+
pyyaml>=6.0
|
|
14
|
+
pygame-ce>=2.5
|
|
15
|
+
pymunk>=6.0
|
|
21
16
|
|
|
22
17
|
[physics]
|
|
23
18
|
pymunk>=6.0
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"""Aether Engine - 3D Game Engine"""
|
|
2
|
+
from setuptools import setup, find_packages
|
|
3
|
+
import sys
|
|
4
|
+
import subprocess
|
|
5
|
+
import importlib.util
|
|
6
|
+
|
|
7
|
+
with open("README.md", "r", encoding="utf-8") as f:
|
|
8
|
+
long_description = f.read()
|
|
9
|
+
|
|
10
|
+
python_version = sys.version_info
|
|
11
|
+
|
|
12
|
+
def is_installed(package_name):
|
|
13
|
+
name = package_name.split(">=")[0].split("[")[0].replace("-", "_")
|
|
14
|
+
return importlib.util.find_spec(name) is not None
|
|
15
|
+
|
|
16
|
+
install_requires = [
|
|
17
|
+
"numpy>=1.24",
|
|
18
|
+
"glfw>=2.6",
|
|
19
|
+
"PyOpenGL>=3.1.7",
|
|
20
|
+
"Pillow>=10.0",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
print(f"Python {python_version.major}.{python_version.minor} detected")
|
|
24
|
+
print("Checking available packages...")
|
|
25
|
+
|
|
26
|
+
audio_requires = ["pygame-ce>=2.5"]
|
|
27
|
+
print(" audio: pygame-ce")
|
|
28
|
+
|
|
29
|
+
physics_requires = ["pymunk>=6.0"]
|
|
30
|
+
print(" physics: pymunk")
|
|
31
|
+
|
|
32
|
+
imgui_requires = []
|
|
33
|
+
if is_installed("imgui_bundle"):
|
|
34
|
+
print(" imgui-bundle: already installed (skipping imgui dependency)")
|
|
35
|
+
else:
|
|
36
|
+
print(" imgui: not required (install imgui-bundle manually if needed)")
|
|
37
|
+
|
|
38
|
+
full_requires = audio_requires + physics_requires + [
|
|
39
|
+
"freetype-py>=2.4",
|
|
40
|
+
"pyyaml>=6.0",
|
|
41
|
+
"imageio>=2.31",
|
|
42
|
+
"trimesh>=3.21",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
full_requires = list(set(full_requires))
|
|
46
|
+
|
|
47
|
+
extras_require = {
|
|
48
|
+
"audio": audio_requires,
|
|
49
|
+
"physics": physics_requires,
|
|
50
|
+
"full": full_requires,
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
print(f"Audio: {audio_requires}")
|
|
54
|
+
print(f"Physics: {physics_requires}")
|
|
55
|
+
|
|
56
|
+
setup(
|
|
57
|
+
name="aether-engine",
|
|
58
|
+
version="1.0.4",
|
|
59
|
+
author="entiti937",
|
|
60
|
+
description="Полноценный 3D игровой движок на Python с OpenGL",
|
|
61
|
+
long_description=long_description,
|
|
62
|
+
long_description_content_type="text/plain",
|
|
63
|
+
url="https://pypi.org/project/aether-engine/",
|
|
64
|
+
packages=find_packages(),
|
|
65
|
+
install_requires=install_requires,
|
|
66
|
+
extras_require=extras_require,
|
|
67
|
+
python_requires=">=3.10",
|
|
68
|
+
classifiers=[
|
|
69
|
+
"Development Status :: 4 - Beta",
|
|
70
|
+
"Programming Language :: Python :: 3.10",
|
|
71
|
+
"Programming Language :: Python :: 3.11",
|
|
72
|
+
"Programming Language :: Python :: 3.12",
|
|
73
|
+
"Programming Language :: Python :: 3.13",
|
|
74
|
+
"Programming Language :: Python :: 3.14",
|
|
75
|
+
],
|
|
76
|
+
)
|