https://github.com/neoxider/spritepro
High-level cross-platform 2D game framework for Python. Built on Pygame with scenes, camera, tweens, UI, physics, multiplayer, editor, and mobile/web workflows.
https://github.com/neoxider/spritepro
game library pygame python
Last synced: 3 months ago
JSON representation
High-level cross-platform 2D game framework for Python. Built on Pygame with scenes, camera, tweens, UI, physics, multiplayer, editor, and mobile/web workflows.
- Host: GitHub
- URL: https://github.com/neoxider/spritepro
- Owner: NeoXider
- Created: 2025-04-06T12:10:55.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-07T22:57:50.000Z (4 months ago)
- Last Synced: 2026-03-07T23:20:36.678Z (4 months ago)
- Topics: game, library, pygame, python
- Language: Python
- Homepage:
- Size: 47 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# SpritePro
Высокоуровневый 2D game framework на Python (поверх pygame). Desktop, web и mobile из одной кодовой базы.
[](https://www.python.org/)
[](LICENSE)
[](CHANGELOG.md)

---
## Установка
```bash
pip install spritepro
```
Для mobile: `pip install "spritepro[kivy]"`
Шаблон проекта: `python -m spritePro.cli --create`
### Обновление
```bash
pip install --upgrade spritepro
```
---
## Почему SpritePro
| Обычно приходится | В SpritePro |
|-------------------|-------------|
| Ручной игровой цикл | `s.run(scene=...)` — сцена + auto-render |
| Своя камера | Camera API, follow, zoom, shake |
| UI с нуля | `Button`, `ToggleButton`, `TextSprite`, `Slider`, `TextInput`, `Layout` |
| Физика отдельно | `pymunk`-интеграция, типы тел, коллизии |
| Визуальный editor | Sprite Editor → JSON → `spawn_scene(...)` |
| Сохранения парсить | `PlayerPrefs` → JSON |
| Мультиплеер с нуля | TCP, лобби, ChatScene, синхронизация |
| Mobile отдельно | `platform="kivy"` — та же логика |
| Скроллируемый UI | `ScrollView` + `ClipMask` — готовый клиппинг |
**SpritePro = pygame + физика, Layout, ScrollView, ClipMask, редактор сцен, мультиплеер, UI.**
---
## Быстрый старт
```python
import spritePro as s
class MainScene(s.Scene):
def __init__(self):
super().__init__()
self.player = s.Sprite("", (50, 50), s.WH_C, speed=5, scene=self)
def update(self, dt):
self.player.handle_keyboard_input()
s.run(scene=MainScene, size=(800, 600), title="My Game")
```
Всё: окно, сцена, игровой цикл, управление.
---
## Что внутри
- **Sprite** — базовый класс с движением, эффектами, иерархией parent-child
- **UI**: Button, ToggleButton, Slider, TextInput, TextSprite, Layout (flex/grid/circle/line)
- **ClipMask** — маска обрезки для viewport, инвентарей, чатов
- **ScrollView** — скроллируемый контент с колёсиком и drag-and-drop
- **Физика**: pymunk, DYNAMIC/STATIC/KINEMATIC тела, коллизии
- **Анимации**: Tween, Fluent API (`DoMove`, `DoScale`, `SetEase`...)
- **Частицы**: ParticleEmitter, шаблоны, пулы
- **Мультиплеер**: TCP, лобби, ChatScene, синхронизация
- **Audio**: звук и музыка
- **Save/Load**: PlayerPrefs в JSON
- **Sprite Editor**: визуальная сборка сцен → JSON
---
## Sprite Editor
Визуальный редактор сцен с иерархией, инспектором, gizmo.

```
python -m spritePro.cli --editor
```
Собираете сцену → сохраняете в JSON → загружаете в игре:
```python
rt = spawn_scene("level.json", scene=self)
player = rt.exact("player").Sprite(speed=5)
```
---
## Мультиплеерный чат
Готовая сцена чата с маской обрезки и скроллом:
```python
from spritePro.readyScenes import ChatScene, ChatStyle
import spritePro as s
s.run(scene=ChatScene, multiplayer=True, use_lobby=True, title="Chat")
```
---
## Сравнение
| Функция | pygame | arcade | SpritePro |
|---------|--------|--------|-----------|
| Авто-рендер | ❌ | ✅ | ✅ |
| Готовая камера | ❌ | ✅ | ✅ |
| Физика (pymunk) | ❌ | ✅ | ✅ |
| Layout (flex/grid) | ❌ | ❌ | ✅ |
| Редактор сцен (JSON) | ❌ | ❌ | ✅ |
| Маска обрезки / ScrollView | ❌ | ❌ | ✅ |
| Мультиплеер (TCP) | ❌ | ❌ | ✅ |
| PlayerPrefs | ❌ | ❌ | ✅ |
---
## Что создать
- Платформеры, аркады, RPG
- Пазлы, tower defense
- Мультиплеерные игры
- Мобильные игры (`platform="kivy"`)
---
## Демо-игры
```bash
python -m spritePro.demoGames.physics_demo # физика
python -m spritePro.demoGames.fluent_tween_demo # твины
python -m spritePro.demoGames.layout_demo # лейауты
python -m spritePro.demoGames.local_multiplayer_demo --quick
```
[Все 54 демо](docs/demo_games/demo_games.md)
---
## Mobile и Web
```python
s.run(scene=MainScene, platform="kivy") # Android/iOS
```
```bash
python -m spritePro.cli --android . --android-orientation portrait
```
Web: [docs/builds/building_web.md](docs/builds/building_web.md)
---
## Документация
| Что | Где |
|-----|-----|
| Полный индекс | [DOCUMENTATION_INDEX.md](DOCUMENTATION_INDEX.md) |
| API Reference | [docs/API_REFERENCE.md](docs/API_REFERENCE.md) |
| Для новичков | [docs/GETTING_STARTED.md](docs/GETTING_STARTED.md) |
| Физика | [docs/core/physics_guide.md](docs/core/physics_guide.md) |
| UI/Layout | [docs/ui/layout_ui.md](docs/ui/layout_ui.md) |
| ClipMask | [docs/ui/clip_mask.md](docs/ui/clip_mask.md) |
| Мультиплеер | [docs/systems/networking_guide.md](docs/systems/networking_guide.md) |
| Sprite Editor | [docs/editor/sprite_editor.md](docs/editor/sprite_editor.md) |
| Mobile | [docs/builds/mobile_kivy.md](docs/builds/mobile_kivy.md) |
---
## Вклад
- [CONTRIBUTING.md](CONTRIBUTING.md) — как внести вклад
- [ROADMAP.md](ROADMAP.md) — планы развития
- [CHANGELOG.md](CHANGELOG.md) — история изменений
---
[📖 Документация](DOCUMENTATION_INDEX.md) · [💬 GitHub Issues](https://github.com/NeoXider/SpritePro/issues)