Skip to main content

A high-level 2D game framework for Python, built on Pygame, designed to simplify and speed up game development.

Project description

🎮 SpritePro

Создавайте игры на Python БЫСТРО и ПРОСТО!

Python Pygame License

Мощный игровой фреймворк, который превращает создание 2D игр из сложной задачи в удовольствие!

Demo

SpritePro — это высокоуровневая библиотека для создания 2D игр на Python, построенная на базе Pygame, которая автоматизирует рутинные задачи разработки и предоставляет готовые инструменты для быстрого создания игр.


📑 Содержание


⚡ Почему SpritePro?

🚀 Вместо этого:

# С pygame нужно писать ВСЁ самому:
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
sprite = pygame.sprite.Sprite()
# ... 50+ строк кода для базовой игры ...

С SpritePro:

# Всё работает из коробки!
import spritePro as s

s.get_screen((800, 600), "My Awesome Game")

player = s.Sprite("player.png", (50, 50), s.WH_C, speed=5)

while True:
    s.update(fill_color=(20, 20, 30))
    player.handle_keyboard_input()  # Готово! Движение работает!

Это всё! Игра готова за 5 строк кода! 🎉


🌟 Что делает SpritePro особенным?

💎 Автоматизация всего, что раздражает

Обычный pygame SpritePro
❌ Ручная отрисовка каждого спрайта ✅ Автоматическая отрисовка всех спрайтов
❌ Ручное управление камерой ✅ Камера работает автоматически
❌ Ручная обработка событий ✅ Встроенная обработка ввода
❌ Ручное управление слоями ✅ Автоматическая система слоев
❌ Ручное управление звуком ✅ Готовый AudioManager
❌ Ручная система сохранений ✅ PlayerPrefs из коробки
❌ Ручная система частиц ✅ Простой ParticleEmitter

🎯 Всё, что нужно для игры - уже внутри:

  • Автоматическая отрисовка - просто создайте спрайт, он сам отрисуется
  • Умная камера - слежение за объектами одной строкой
  • Простая физика - столкновения, гравитация, движение из коробки
  • Система частиц - красивые эффекты за 3 строки кода
  • UI компоненты - кнопки, переключатели, текст готовы к использованию
  • Анимации и твининг - плавные переходы без головной боли
  • Аудио менеджер - управление звуком и музыкой централизованно
  • Система сохранений - PlayerPrefs как в Unity!
  • Якоря позиционирования - размещайте объекты точно где нужно

🚀 Быстрый старт (30 секунд)

Установка

Способ 1: Установка через pip (рекомендуемый)

Это самый простой и быстрый способ начать работу со SpritePro.

pip install spritepro

Все зависимости, включая pygame, будут установлены автоматически.

Способ 2: Для разработчиков (из исходного кода)

Этот способ подходит, если вы хотите внести свой вклад в разработку или использовать самую последнюю, еще не опубликованную версию.

  1. Клонируйте репозиторий:

    git clone https://github.com/NeoXider/SpritePro.git
    
  2. Перейдите в папку проекта:

    cd SpritePro
    
  3. (Опционально) Установите в режиме редактирования:

    pip install -e .
    

    Это позволит вам изменять код библиотеки и сразу видеть изменения в своих проектах.

Ваша первая игра (5 строк!)

import spritePro as s

s.get_screen((800, 600), "My Game")

player = s.Sprite("", (50, 50), s.WH_C, speed=5)

while True:
    s.update(fill_color=(20, 20, 30))
    player.handle_keyboard_input()  # Готово! Игра работает!

Вот и всё! У вас уже есть игра с управлением, отрисовкой и игровым циклом! 🎮


💡 Примеры "Вау!" возможностей

🎨 Создайте игру за минуту

import spritePro as s

screen = s.get_screen((800, 600), "Platformer")

# Игрок с автоматическим движением
player = s.Sprite("player.png", (50, 50), (100, 300), speed=5)

# Платформы
platforms = [
    s.Sprite("", (200, 20), (200, 400)),
    s.Sprite("", (200, 20), (500, 350)),
]

# Камера следует за игроком
s.set_camera_follow(player)

# Частицы при движении
emitter = s.ParticleEmitter(s.ParticleConfig(
    amount=10,
    speed_range=(50, 100),
    lifetime_range=(0.5, 1.0)
))

# Настраиваем столкновения один раз (не в цикле!)
player.set_collision_targets(platforms)

while True:
    s.update(fill_color=(135, 206, 235))  # Небо
    
    player.handle_keyboard_input()  # Столкновения обрабатываются автоматически!
    
    # Частицы
    if player.velocity.length() > 0:
        emitter.emit(player.rect.center)

Результат: Полноценная платформер-игра с физикой, камерой и эффектами!

🎵 Звук и музыка - проще некуда

# Получаем готовый AudioManager
audio = s.audio_manager

# Вариант 1: Загружаем и сохраняем для многократного использования
jump_sound = audio.load_sound("jump", "sounds/jump.mp3")
jump_sound.play()  # Автоматически применяются настройки громкости!

# Вариант 2: Прямое воспроизведение по пути (без загрузки!)
audio.play_sound("sounds/jump.mp3")  # Автоматически загрузит и воспроизведет!
audio.play_sound("sounds/coin.wav", volume=0.8)  # С кастомной громкостью

# Вариант 3: В одну строку для быстрого воспроизведения
audio.load_sound("explosion", "sounds/explosion.mp3").play()

# Музыка
audio.play_music("music/background.mp3", volume=0.5)  # Сразу с нужной громкостью!
# Или установить громкость отдельно
audio.set_music_volume(0.5)  # 50% громкости

Никаких pygame.mixer.Sound(), никаких ручных настроек - всё работает!

🎯 UI за секунды

# Кнопка с автоматической анимацией
button = s.Button(
    "", (200, 50), (400, 300),
    "Начать игру",
    on_click=lambda: print("Игра началась!")
)

# Переключатель музыки
music_toggle = s.ToggleButton(
    "", (150, 40), (100, 50),
    text_on="Музыка: ВКЛ",
    text_off="Музыка: ВЫКЛ",
    on_toggle=lambda is_on: s.audio_manager.set_music_enabled(is_on)
)

# Текст с якорем (автоматическое позиционирование!)
score_text = s.TextSprite(
    "Score: 0", 36, (255, 255, 255),
    (s.WH.x - 10, 10),
    anchor=s.Anchor.TOP_RIGHT  # Прижмется к правому краю!
)

Всё работает автоматически - наведение, клики, анимации!

🎆 Частицы - это просто

# Создаем эффект взрыва
explosion = s.ParticleEmitter(s.ParticleConfig(
    amount=50,
    speed_range=(100, 300),
    angle_range=(0, 360),
    lifetime_range=(0.5, 1.5),
    gravity=s.Vector2(0, 200)
))

# Взрыв при клике
explosion.emit(mouse_pos)  # Всё! 50 частиц летят во все стороны!

3 строки кода = красивый эффект взрыва!

💾 Сохранения как в Unity

# Создаем PlayerPrefs
prefs = s.PlayerPrefs("save.json")

# Сохраняем что угодно
prefs.set_float("score", 1250.5)
prefs.set_int("level", 5)
prefs.set_string("player_name", "Hero")
prefs.set_vector2("player_pos", (400, 300))

# Загружаем
score = prefs.get_float("score", 0)
level = prefs.get_int("level", 1)
name = prefs.get_string("player_name", "Player")
pos = prefs.get_vector2("player_pos", (0, 0))

# Всё автоматически сохраняется в JSON!

Никаких ручных парсеров, никаких сложных форматов!


🎮 Что можно создать?

✅ Платформеры

  • Автоматические столкновения
  • Камера следует за игроком
  • Готовые частицы для эффектов

✅ Аркады

  • Система здоровья из коробки
  • Таймеры для событий
  • Готовые UI элементы

✅ RPG

  • Система сохранений
  • Инвентарь (через спрайты)
  • Диалоги (через TextSprite)

✅ Пазлы

  • Интерактивные элементы
  • Анимации переходов
  • Система состояний

✅ Tower Defense

  • Пути для врагов (через move_towards)
  • Система частиц для эффектов
  • UI для интерфейса

📊 Сравнение с альтернативами

Функция pygame arcade SpritePro
Автоматическая отрисовка
Готовая камера
Система частиц
AudioManager
PlayerPrefs
Якоря позиционирования
Автоматические столкновения
Простота использования ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐

SpritePro = pygame + всё необходимое для игры!


🎯 Ключевые преимущества

🚀 Скорость разработки

  • Создайте прототип игры за минуты, а не часы
  • Меньше кода = меньше багов
  • Больше времени на геймплей, меньше на инфраструктуру

🎨 Красота из коробки

  • Автоматические анимации кнопок
  • Плавные переходы (tweening)
  • Готовые эффекты частиц
  • Цветовые эффекты

🛠️ Мощность и гибкость

  • Полный доступ к pygame под капотом
  • Расширяемая архитектура
  • Можно использовать как pygame, так и высокоуровневые функции

📚 Отличная документация

  • Подробные примеры для каждого компонента
  • Демо-игры с исходным кодом
  • Понятные API

🎬 Демо-игры

Увидьте SpritePro в действии! Все демо с открытым исходным кодом:

  • 🏓 Ping Pong - Полноценная игра с меню, звуком и UI
  • 🎆 Fireworks - Красивые эффекты частиц
  • 🎨 Tween Demo - Плавные анимации
  • 🎮 Among Us Demo - Платформер с взаимодействиями
  • 💥 Particle Template Test - Интерактивные частицы

Запустите любую демо-игру и увидьте возможности!

python spritePro/demoGames/ping_pong.py

📦 Что внутри?

🎮 Основные компоненты

  • Sprite - Базовый класс с физикой, движением и визуальными эффектами
  • Button - Готовые кнопки с анимациями
  • ToggleButton - Переключатели
  • TextSprite - Текст с якорями позиционирования
  • Bar - Полосы прогресса (HP, опыт и т.д.)

🎨 Игровые системы

  • Animation - Система анимаций
  • Tween - Плавные переходы (easing функции)
  • Timer - Таймеры для событий
  • Health - Система здоровья
  • ParticleEmitter - Генератор частиц

🛠️ Утилиты

  • AudioManager - Управление звуком и музыкой
  • PlayerPrefs - Система сохранений
  • Camera - Умная камера с автоматическим слежением
  • Color Effects - Динамические цветовые эффекты

📖 Документация

🚀 Быстрый старт

📚 Полная документация


🎯 Примеры использования

Игра с меню, звуком и сохранениями

import spritePro as s

screen = s.get_screen((800, 600), "My Game")

# Аудио
audio = s.audio_manager
audio.load_sound("click", "sounds/click.mp3")
click_sound = audio.get_sound("click")
audio.play_music("music/bg.mp3")

# Сохранения
prefs = s.PlayerPrefs("save.json")
high_score = prefs.get_int("high_score", 0)

# UI
start_button = s.Button(
    "", (200, 50), s.WH_C,
    "Начать игру",
    on_click=lambda: click_sound.play()
)

# Игрок
player = s.Sprite("player.png", (50, 50), (100, 300), speed=5)

# Камера
s.set_camera_follow(player)

while True:
    s.update(fill_color=(20, 20, 30))
    player.handle_keyboard_input()
    
    # Сохраняем рекорд
    if score > high_score:
        prefs.set_int("high_score", score)

Всё работает вместе из коробки!


🆚 SpritePro vs Обычный pygame

❌ С pygame нужно писать:

# 100+ строк для базовой игры
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
sprites = pygame.sprite.Group()
# ... обработка событий ...
# ... ручная отрисовка ...
# ... ручное управление камерой ...
# ... ручная система слоев ...
# ... и так далее ...

✅ С SpritePro:

# 10 строк для той же игры!
import spritePro as s

s.get_screen((800, 600), "Game")
player = s.Sprite("player.png", (50, 50), s.WH_C, speed=5)

while True:
    s.update()
    player.handle_keyboard_input()

В 10 раз меньше кода! 🚀


🎁 Бонусы

✨ Автоматические фичи

  • Автоматическая отрисовка - создали спрайт? Он уже рисуется!
  • Автоматическое обновление - Tween, Animation, Timer обновляются сами
  • Автоматическая камера - слежение за объектами одной строкой
  • Автоматические столкновения - физика из коробки

🎨 Готовые эффекты

  • Пульсация, мерцание, волны для кнопок
  • Плавные переходы (easing)
  • Система частиц
  • Цветовые эффекты

🛠️ Удобные утилиты

  • Якоря позиционирования (как в Unity!)
  • PlayerPrefs (как в Unity!)
  • AudioManager (централизованное управление звуком)
  • Готовые компоненты (Bar, TextSprite, Button)

🚀 Начните прямо сейчас!

1. Установите

pip install pygame
git clone https://github.com/NeoXider/SpritePro.git

2. Скопируйте папку spritePro в ваш проект

3. Создайте игру!

import spritePro as s

s.get_screen((800, 600), "My Game")
player = s.Sprite("", (50, 50), s.WH_C, speed=5)

while True:
    s.update()
    player.handle_keyboard_input()

Готово! У вас уже есть игра! 🎉


📊 Статистика

  • В 10 раз меньше кода чем с чистым pygame
  • 🚀 В 5 раз быстрее разработка прототипов
  • 🎯 100% готовых компонентов для типичных задач
  • 📚 Полная документация с примерами
  • 🎮 15+ демо-игр с исходным кодом

🤝 Сообщество


📄 Лицензия

Открытый исходный код. Используйте свободно в своих проектах!


🎮 Начните создавать игры уже сегодня!

SpritePro - это не просто библиотека. Это ваш путь от идеи к игре!

📖 Документация🎮 Демо-игры💬 Вопросы

Создано с ❤️ для разработчиков игр

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spritepro-1.0.2.tar.gz (125.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spritepro-1.0.2-py3-none-any.whl (145.6 kB view details)

Uploaded Python 3

File details

Details for the file spritepro-1.0.2.tar.gz.

File metadata

  • Download URL: spritepro-1.0.2.tar.gz
  • Upload date:
  • Size: 125.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for spritepro-1.0.2.tar.gz
Algorithm Hash digest
SHA256 6069f052b16bcbc97c44e6902b10390d7e0e402fe0ddfab4dbb27d3c61e51237
MD5 7cac84df03c7729ff72f2802cffab554
BLAKE2b-256 9dc51914581ed6c3b67bc7b583a4dfd2decacae633bcd2bb60f8180c8750a62e

See more details on using hashes here.

Provenance

The following attestation bundles were made for spritepro-1.0.2.tar.gz:

Publisher: publish-to-pypi.yml on NeoXider/SpritePro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spritepro-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: spritepro-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 145.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for spritepro-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a7ae0a6fa819eeca92860e004236d588fd1d4468486b82cce4049f101360077b
MD5 de200b124aa9c3d3715864047d85fb3b
BLAKE2b-256 19217ce5bb39393ec93915f0b6a3634f137d5d25e14b9cc13f42aac03f766cad

See more details on using hashes here.

Provenance

The following attestation bundles were made for spritepro-1.0.2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on NeoXider/SpritePro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page