Py thon Ga me Server
Пакет для Python 3.6+, содержащий готовую к игре клиент-серверную архитектуру и сетевой протокол на основе UDP.
Он решает такие проблемы, как потеря пакетов или перегрузка сети, поэтому вам не придется этого делать. Вместо этого он предоставляет вам высокоуровневый API для легкого подключения клиентов и серверов, которые совместно используют синхронизированное состояние игры и обмениваются событиями. Асинхронная структура для этого — любопытная, которую я настоятельно рекомендую.
PyGaSe создан таким образом, чтобы быть простым в использовании, легким, быстрым, масштабируемым и надежным. С его помощью вы можете создать динамичную онлайн-игру в реальном времени. Если хотите, вы также можете создать крупномасштабную MMO с тысячами клиентов.
Я активно разрабатываю PyGaSe в контексте нескольких инди-игровых проектов и рад поделиться этим.
СЕРЬЕЗНОЕ ИЗМЕНЕНИЕ : Версия 0.2.0 — это, по сути, новый API, а обновление с 0.1.9 или ниже приведет к поломке вашего кода. Кроме того, он гораздо более стабильный, гибкий и мощный, поэтому обязательно используйте версию 0.2.0 или выше.
pip install pygase
или еще лучше poetry add pygase
. Серьезно, используйте стихи, это откровение.
Документацию по API и раздел «Начало работы» можно найти здесь.
В этом примере игры реализована онлайн-игра в метки, в которой игроки могут передвигаться, а один из них является преследователем, который должен поймать другого игрока. Пойманный игрок становится следующим преследователем и может поймать других игроков после обратного отсчета защиты в 5 секунд.
Сначала запустите server.py
, затем запустите client.py
в дополнительных сеансах терминала, чтобы добавить игроков. Используйте одно и то же имя игрока только один раз.
Вы можете использовать стандартный модуль logging
. На уровне INFO
вы получите данные журнала для таких событий, как запуск, завершение работы, новые подключения или отключения. На уровне DEBUG
вы получаете подробный вывод вплоть до уровня отправки, получения и обработки отдельных сетевых пакетов.
Журналы отладки также являются хорошим способом понять внутреннюю работу PyGaSe.
logging
Backend
класс для сокращения шаблонного кода на стороне сервера.